Dicewareパスフレーズを生成する
Diceware方式を使用してパスフレーズを生成します — サイコロを振って7,776語のリストから単語を選択する技術。Dicewareのセキュリティの数学と実際のアプリケーションを理解します。
Passphrase
詳細な説明
Diceware方式
Dicewareは1995年にArnold Reinholdによって作成されたパスフレーズ生成方法です。物理的なサイコロを使用して、正確に7,776エントリを含む特別に設計された単語リストから単語を選択します(6^5 = 7,776、5つのサイコロのすべての可能な組み合わせを表す)。
Dicewareの仕組み
- 5つのサイコロを振る(または1つのサイコロを5回振る)5桁の数字を得る
- Diceware単語リストで番号を検索する
- パスフレーズに必要な各単語について繰り返す
例:
振り: 1-6-2-3-4 → "apple"
振り: 3-5-1-2-6 → "hammer"
振り: 4-2-4-5-1 → "ocean"
振り: 5-3-1-6-2 → "plaza"
振り: 2-4-1-5-3 → "tiger"
パスフレーズ: apple hammer ocean plaza tiger
デジタルDiceware
元の方法は物理的なサイコロを使用しますが、暗号学的に安全な乱数生成器(CSPRNG)は同等のランダム性を提供します。Web Crypto APIのcrypto.getRandomValues()が適しています:
// 0から7775のランダムなインデックスを選択
const array = new Uint32Array(1);
crypto.getRandomValues(array);
const index = array[0] % 7776;
セキュリティ分析
各単語はlog2(7776) = 12.9ビットのエントロピーを提供します:
| 単語数 | エントロピー | クラック時間(1兆/秒) |
|---|---|---|
| 4 | 51.7ビット | 約26日 |
| 5 | 64.6ビット | 約584年 |
| 6 | 77.5ビット | 約450万年 |
| 7 | 90.5ビット | 約350億年 |
毎秒1兆回の推測速度で、6語のDicewareパスフレーズは解読に数百万年かかります。
Diceware単語リストの特徴
公式Diceware単語リストは特定の特性を持って設計されています:
- 短い単語 — ほとんどが3-6文字で入力しやすい
- 一般的な単語 — 認識しやすく覚えやすい
- 一意のスペル — 同音異義語や混同しやすい単語なし
- 不快な単語なし — プロフェッショナルな使用に安全
強化されたDiceware
一部のユーザーは追加のセキュリティ対策を加えます:
- 追加の記号:2つの単語の間にランダムな記号を追加
- ランダムな大文字化:1つのランダムな単語を大文字に
- 追加の数字:ランダムな数字を追加
- これらは記憶しやすさを大きく損なうことなく、数ビットの追加エントロピーを提供
ユースケース
DicewareはElectronic Frontier Foundation(EFF)によって推奨されており、マスターパスワード、フルディスク暗号化パスフレーズ、および人間が書き留めずに高セキュリティの資格情報を記憶する必要があるシナリオに使用されます。物理的なサイコロオプションは、ソフトウェアのランダム性が疑問視される高セキュリティ環境で評価されています。