安全なパスワードの条件
パスワードの強度はおおむね「使用する文字の種類数 × 長さ」で決まり、長さを1文字増やすほうが文字種を1種類増やすより効果が大きいのが実際のところです。記号が使えないサービスでも、長さを16〜20文字にすれば十分な強度を確保できます。
| 構成 | 強度の目安 | 評価 |
|---|---|---|
| 英小文字のみ 8文字 | 約38ビット | 数時間で破られうる |
| 英大小+数字 12文字 | 約71ビット | 実用的な下限 |
| 英大小+数字 16文字 | 約95ビット | 推奨 |
| 英大小+数字+記号 20文字 | 約130ビット | 長期保管用にも十分 |
なお、強いパスワードを作ること以上に重要なのが使い回しをしないことです。1つのサービスから漏れたパスワードは他のサービスへの攻撃(パスワードリスト攻撃)にそのまま使われます。サービスごとに生成し、パスワードマネージャーで管理するのが現実的な運用です。
このツールの乱数について
JavaScriptのMath.random()は予測可能性があるためパスワード生成には不適切です。このツールはブラウザ標準のWeb Crypto API(crypto.getRandomValues)を使用しており、暗号用途に耐える乱数で生成しています。また剰余演算による偏り(modulo bias)を排除する実装にしています。