パスワード生成 — 長さが強さを決めます
英大文字・小文字・数字・記号を選んで、指定した長さのパスワードを作ります。生成はブラウザの中だけで行われ、作ったパスワードはどこにも送信されません。推測されにくさをビット数で表示します。
パスワードの強さを決めるのは、記号の派手さではなく長さです。使える文字の種類をN、長さをLとすると、組み合わせはNのL乗になります。指数にあるのは長さのほうなので、1文字増やすほうが文字種を増やすより効きます。
画面に出る「ビット」はこの組み合わせの多さを対数で表した数字です。1ビット増えると総当たりに必要な回数が倍になります。オンラインの認証なら60ビット、長く使う大事な鍵なら80ビット以上が一つの目安です。
長さとビット数(英大小文字+数字+記号)
| 長さ | おおよそのビット数 | 評価 |
|---|---|---|
| 8文字 | 約52ビット | 短い。使い回さない前提でも心もとない |
| 12文字 | 約78ビット | 実用的な下限 |
| 16文字 | 約104ビット | 十分に強い |
| 20文字以上 | 約129ビット以上 | 長期保管する鍵や管理者用 |
記号を足すより1文字伸ばすほうが効きます
英小文字だけの12文字と、四種類すべてを混ぜた8文字を比べると、前者のほうが強くなります。文字種を増やす効果は一度きりですが、長さの効果は文字ごとに掛かり続けるからです。
「紛らわしい文字を除く」を選ぶと、0とO、1とlとIのように読み間違えやすい文字が外れます。紙に書き写したり口頭で伝えたりする場面では便利ですが、使える文字が減るぶんビット数もわずかに下がります。その分は長さで取り返してください。
サイトによっては使える記号が制限されていたり、長さの上限が決まっていたりします。上限が短いサイトほど、そのサイト専用の別のパスワードにしておく価値が上がります。
強さより使い回しのほうが危険です
実際に被害が出る経路のほとんどは、総当たり攻撃ではなく漏えいしたパスワードの使い回しです。どこかのサービスから流出した組み合わせを、別のサービスで片端から試す攻撃が日常的に行われています。
どんなに強いパスワードでも、二つのサービスで同じものを使っていれば、片方が破られた時点で両方が破られます。サービスごとに違うものを使い、覚えられない分はパスワード管理ソフトに任せるのが現実的です。
二段階認証を設定できるサービスでは必ず設定してください。パスワードが漏れても、もう一つの要素があれば入られません。SMSより認証アプリのほうが安全です。
このツールの作り
- •乱数はブラウザの暗号用の乱数生成器から取っています。JavaScript の Math.random のような予測できる乱数は使っていません。
- •選んだ文字種がすべて1文字以上入るまで作り直します。偏りが出ないよう、途中の文字を差し替えるのではなく全体を引き直しています。
- •生成したパスワードは画面の外に出ません。送信も保存もしないので、閉じれば残りません。
- •覚えて使うパスワードが必要なときは、無関係な単語を4つ以上つなげる方法もあります。長さが稼げて、記号混じりの短い文字列より覚えやすくなります。
よくある質問
何文字にすればよいですか?
12文字を下限に、重要なものは16文字以上をおすすめします。管理ソフトに保存するなら覚える必要がないので、長くして困ることはありません。
定期的に変更したほうがよいですか?
今は推奨されていません。定期変更を求めると使い回しや規則的な変更を招くためです。漏えいの兆候があったときに変えてください。
生成したパスワードは保存されますか?
されません。ブラウザの中で作られ、画面を離れると消えます。
日本語を含むパスワードは作れますか?
作れません。多くのサービスが受け付けないうえ、入力環境によって打てないことがあるためです。
