単語は crypto.getRandomValues と棄却サンプリングで抽出されるため、7,776 語の EFF long リストから一様に選ばれます。モジュロバイアスも統計的な偏りもありません。ローカルで生成され、どこにも送信されません。 単語リスト: EFF Diceware (CC BY 3.0 US)。
機能の説明
EFF diceware ロング単語リスト — 7,776 語の一般的な英単語(6⁵ で、5 個の 6 面ダイスを振った結果 1 通りにつき 1 語) — を使って、覚えやすく高エントロピーなパスフレーズを生成します。各単語はブラウザーの暗号論的乱数生成器(crypto.getRandomValues)とリジェクションサンプリングで選ばれるため、単語インデックスはリスト全体に対して厳密に一様になります。単純な random % 7776 では先頭の約 2,048 語に偏りますが、モジュロを取る前に 62,208 以上のドローを棄却することで、そのバイアスを完全に取り除きます。
生成したパスフレーズごとに、リアルタイムのエントロピー(ビット) — words × log₂(7776)、つまり 1 語あたり 12.9 ビット — と、1 秒あたり 1 兆回の推測(本格的なオフライン攻撃)に対する平均解読時間を表示します。解読時間は 2^(bits−1) / rate、すなわち鍵空間の半分を掻き切るまでの期待時間として計算されます。6 語なら約 77.5 ビットで、その攻撃者に対して約 3.5 千年に相当します。すべての生成はブラウザー内でローカルに行われ、何もどこにも送信されません。
パスフレーズが「工夫した」パスワードに勝る理由:P@55w0rd! は辞書語へのいくつかの変形に過ぎません。攻撃者はまずそうした変換を試すため、ミリ秒で生き残れなくなります。correct horse battery staple(XKCD 936 のアイデア)のようなランダムな 6 語のパスフレーズは、13 文字のランダム文字列と同じだけの予測不可能性を持ちます。しかも実際に覚えられる「物語」になるため、打ち間違いなく入力するのもはるかに簡単です。
使い方
- 単語数(3〜10)を設定します。1 語追加するごとに約 12.9 ビット増えます。ほとんどのアカウントには 6 語が最適で、重要なものには 7 語以上を。
- 区切り文字を選びます — スペース、ハイフン、ドット、アンダースコア、なし。どれでも問題ありません。キーボード(とサイトのパスワード規則)に合うものを選んでください。
- Capitalize をオンにすると各単語がタイトルケースになり、+ Digit をオンにするとランダムな数字 1 桁が末尾に追加されます。どちらも強度を実質的に変えずに「〜を含むこと」系のポリシーを満たす助けになります。
- パスフレーズを確認し、Copy するか、Regenerate(Shuffle)で引き直します。
URL はそのまま共有できます。オプションはクエリパラメータ(?words=8&sep=dash&cap=1)としてエンコードされるため、ブックマークから正確な設定が復元されます。パスフレーズそのものが URL に入ることは決してありません。
例
| 設定 | 出力の形 | エントロピー | 解読時間 @ 10¹² 回/秒 |
|---|---|---|---|
| 6 語、スペース | rebuffer marrow paprika rivalry backfield unmask |
77.5 ビット | 約 3.5 千年 |
| 4 語、ハイフン、タイトルケース | Puzzle-Overfeed-Correctly-Grotto |
51.7 ビット | 約 30 分 |
| 8 語、ドット、+ 数字 | lurch.zealot.stomp.vixen.prow.tufted.madam.chili7 |
103.4 ビット | 約 21 億世紀 |
| 10 語、アンダースコア | mutate_versa_biceps_unlit_spraying_proviso… |
129.2 ビット | 約 128,000 兆世紀 |
目安:表示されるエントロピーは単語のみをカウントしています(N × log₂ 7776)。オプションの数字はその上にさらに約 3.3 ビットを上乗せするもので、このスケールでは誤差の範囲です。
補足事項
- セキュリティの核心は単語リストです。 Diceware の強度は一様なランダム選択から生まれるものであり、マニアックな単語から生まれるものではありません。単語を自分で選んではいけません。人間はランダム性が絶望的に苦手で、攻撃者は人間の選択をモデル化しています。
- 7,776 語、重複の心配は無用。 重複は許されており、それで問題ありません。各ドローは独立なので、エントロピーはどちらの場合も正確に
N × 12.925ビットです。 - 攻撃モデル。 10¹² 回/秒という推測速度は、攻撃者がハッシュ化済みデータベースをすでに盗み出し、高速なオフライン攻撃を実行していることを仮定しています。オンライン攻撃はレート制限され、はるかに遅いです。
- 使い回しをしない。 サイトごとに 1 つのパスフレーズを。パスワードマネージャーと組み合わせれば、覚えやすさはボーナスであって必須要件ではありません。
- クレジット。 単語リスト:EFF Diceware ラージリスト(2016)、CC BY 3.0 US ライセンス。パスフレーズの概念は XKCD 936 で広く知られるようになりました。
- このツールの Go CLI 双子と各言語のソーススニペットはロードマップ上にあります —
src/lib/passphrase-generator.tsの純粋ロジックが、それらが従う契約です。