ランダム文字列、または覚えやすいパスフレーズを、安全な乱数から自動生成します。
手入力・目視確認が必要な場面で見分けにくい文字(小文字l・数字1・大文字I・数字0・大文字O)をまとめて除外します。
correct-horse-battery-staple方式。単語リスト(約300語)から安全な乱数で選んでつなげます。大文字化・数字追加はいずれも推測されにくさを上げるオプションです。
本ツールは、一般的なプログラムの乱数(Math.random()等)ではなく、ブラウザのcrypto.getRandomValues()という暗号用途向けのAPIを使ってパスワードを生成しています。一般的な乱数は予測されるリスクがあるのに対し、暗号学的に安全な乱数は推測が極めて困難なため、パスワードや鍵の生成に適しているとされています。さらに、剰余演算による偏り(modulo bias)を取り除く棄却法(rejection sampling)も使っており、文字の出現確率が偏らないよう配慮しています。
強度は「エントロピー(ビット数)」という指標で判定しています。ランダム文字列モードでは「文字数 × log2(使用している文字種の総数)」、パスフレーズモードでは「単語数 × log2(単語リストの語数)」を基本に、ランダム大文字化や数字追加の分を加算して算出し、ビット数に応じて「弱い」〜「非常に強い」の4段階で表示します。文字種を増やす、文字数(単語数)を増やすことが、強度を上げる最も基本的な方法です。
ランダム文字列は短い文字数でも強度を確保しやすい一方、覚えるのは困難です。パスフレーズ(単語を組み合わせた形式)は、十分な単語数(目安5語以上)を使えば同程度の強度を保ちながら、人間が覚えやすいという利点があります。使い分けの目安として、パスワード管理ツールに保存するならランダム文字列、自分で記憶する必要があるならパスフレーズが向いています。