Passphrase Generator:強くて覚えやすいパスフレーズ
XKCD方式(correct horse battery staple)のパスフレーズを生成。複数の単語辞書、カスタマイズ可能な区切り文字、リアルタイムのエントロピー表示付き。
Passphrase Generator とは?
Passphrase Generator は、XKCD の「correct horse battery staple」方式で覚えやすい複数単語パスフレーズを作るツールです。単語数を選び、辞書を1つか2つ選ぶと、ツールは crypto.getRandomValues で結合プールからランダムに単語を引き、エントロピーをビットで表示し、Weak から Ludicrous までの7段階で強度をラベル付けします。私はパスワードマネージャーのマスターパスワード、暗号化のリカバリーフレーズ、いずれスマホで打つことになるであろう各種クレデンシャルを設定するときにこれを使います。ランダムな文字列の方が文字あたりは強いですが、そういう用途には実用に耐えません — 7,776語の EFF リストから4単語を引けば、エントロピー51ビットと、3日後に本当に思い出せる文字列が手に入ります。
主な機能
- 複数の単語辞書 — EFF Diceware long list(7,776語)、Common English、Technical、Nature の各リスト、加えてドイツ語・スペイン語・フランス語・ポルトガル語・ロシア語・ヒンディー語・日本語・中国語・韓国語のロケール固有リスト。
- 単語数スライダー(3-10) — ドラッグして最低単語数を設定。3単語は素早く打てますが小さなリストでは ~38 ビットしか出ず、6-7単語がマスターパスワードの現実的なスイートスポットです。
- 任意の最低長 — 2本目のスライダーが文字数フロア(0-50)を設定します。20文字の最低長を要求するサービスで、短い4単語では届かないときに便利。
- 5種類の区切り文字 — None(camelCase風)、Space、Hyphen、Underscore、Period。区切り文字はエントロピーには寄与しませんが読みやすさに影響します。
- Capitalize each word — 各単語の先頭を大文字化します。実エントロピーは増えませんが「大文字を含むこと」というルールを満たせます。
- Append random number — 設定可能な範囲(初期値 1-999)から乱数を末尾に追加。追加ビット数の表示は範囲に応じてリアルタイムで更新されます。
- リアルタイムのエントロピー計算 — エントロピーパネルは合計ビット、プールサイズ、単語あたりビット、カラー分けされた強度ラベルを表示し、設定変更ごとに即時更新します。
- 最大100まで一括生成 — カウントスライダーをドラッグすれば1クリックで最大100個のパスフレーズを生成、各個にエントロピー表示が付きます。
- ブラウザ側の乱数源 — 乱数源は
crypto.getRandomValues、Web Crypto API が内部で使うのと同じ CSPRNG でありMath.random()ではありません。
Passphrase Generator の使い方
ステップ1:単語数と長さを選ぶ
上部の「Words」スライダーで最低単語数を3から10に設定します。ラベルはリアルタイムで更新されます(「4 words」「7 words」)。その下の「Minimum length」スライダーで文字数フロアを0から50に設定します。ターゲットシステムが特定の最低長を要求する場合以外は0のままで構いません。最低長を設定すると、単語数と文字数の両方の閾値を満たすまでジェネレーターは単語を引き続けます。
ステップ2:区切り文字と大文字化を選ぶ
「Separator」の下の5つのラジオボタンが単語の連結方法を決めます:None、Space、Hyphen、Underscore、Period。その下の2つのチェックボックス —「Capitalize each word」「Append random number」— がそれらの修飾を切り替えます。大文字化は初期 ON、数字追加は初期 OFF です。「Append random number」にチェックを入れると Min/Max フィールドとライブの「+ X.X bits」表示を備えた範囲ボックスが現れ、エントロピーへの寄与を示します。
ステップ3:辞書を選ぶ
「Dictionaries」の下にツールはあなたのロケールに該当するリストを表示します — 日本語の場合は Diceware Japanese(romaji-modified)、EFF Diceware(英語)、Common English です。各エントリは単語数と1行説明を表示します。複数チェックも可能で、プールはそれらを結合します。最低1つはチェックしてください(最後の1つを外そうとするとツールがブロックしてトーストを出します)。リストを増やすと結合プールが大きくなる一方で比例しないため、単語あたりビットはわずかに下がるのが普通です — エントロピーパネルにライブの数値が出ます。
ステップ4:エントロピーパネルを読む
辞書の下のグレーパネルには3つの数値が出ます:合計エントロピー(強度ティアでカラー分け)、単語プールサイズ、単語あたりビット。強度ティアは合計ビットから決まります:
- Weak(赤):40ビット未満
- Fair(オレンジ):40-49ビット
- Good(黄):50-59ビット
- Strong(ライム):60-79ビット
- Very Strong(シアン):80-99ビット
- Fortress(バイオレット):100-149ビット
- Ludicrous(レインボー):150ビット以上
本当に守りたいものには60ビットが下限です。マスターパスワードの目標は80ビットです。
ステップ5:生成してコピー
「Generate」のカウントスライダー(1-100)を設定し、Generate ボタンを押します。結果は下のリストに表示され、各行に単語数とエントロピーが付きます。各行のコピーアイコンはその1つをクリップボードへ送り、上部の Copy All は全行を改行で連結してコピーします。Clear はリストを空にします。お気に入りがまだ決まらないなら、もう一度 Generate を押してください。スライダーの設定はそのまま、単語だけが変わります。
実用例
パスワードマネージャーのマスターパスワード
設定:7単語、EFF Diceware リスト、Hyphen 区切り、Capitalize オン、数字なし、Generate count 5。
出力(5候補のうちの1つ):
Tropical-Dapper-Backboard-Skating-Roving-Reproach-Cubical
これは 90.5 ビット — Very Strong です。5候補から好きなものを選び、覚えるあいだ1週間だけ紙に書いておき、覚えたら紙はシュレッドします。ハイフンがあれば、最初の数日のスマホでの入力もそれなりに耐えられます。
暗号化のリカバリーフレーズ
設定:6単語、EFF Diceware、Space 区切り、Capitalize オフ、数字なし。
出力:
gallant pelt anguish flagstone graveness scorch
77.5 ビット、Strong。家族に電話で読み上げるとき、空白はハイフンよりも声に出して読みやすく、打ち間違いも少ないです。BIP39 形式のリカバリーフレーズの標準推奨は6単語 — 同じ考え方で、単語リストが違うだけです。
日常的に使うサーバーの SSH キーパスフレーズ
設定:5単語、Common English、Hyphen 区切り、Capitalize オン、Append number(1-99)。
出力:
Brisk-Marble-Quill-Vintage-Oasis-47
およそ56ビット。マスターパスワード例よりはエントロピーが低めですが、ディスク上で 4096 ビット RSA 鍵によっても保護される鍵の保護として、これが正しいトレードオフです:1日30回タイプしてもストレスにならない短さで、id_rsa が盗まれてもすぐに詰みにはならない強さ。末尾の数字は数ビットを足し、単語を変えずにサーバーごとに別パスフレーズを保てます。
ヒントとベストプラクティス
価値あるものには60ビットが下限。 60ビットを下回ると、潤沢な GPU リグはキースペースを数週間で舐め尽くせます。80を超えれば国家アクターでも忍耐が切れます。強度ラベルはこの境界線に合わせてあります:Strong(60-79)はほとんどのアカウントに十分、Very Strong(80-99)がマスターパスワードの目標。
XKCD 方式は記憶のしやすさで乱数文字列に勝ちます。 qP$7zR!2mK#x のような12文字の乱数列は約79ビットでも覚えられません。EFF Diceware の6単語は約77ビットで、1度復唱すれば暗唱できます。一度も打たないクレデンシャルなら乱数文字でも構いませんが、打つものなら単語が勝ちます。
長さを足し、複雑さを足さない。 「大文字小文字+数字+記号を混ぜろ」という助言は8文字パスワードの時代の遺物です。パスフレーズではノブは長さだけ。7,776語のリストで単語を1つ足せば ~12.9 ビットの上昇で、これは記号置換の総和を超えます。
リストを混ぜると単語1個あたりは弱まりがち。 7,776語のリスト2つを足しても 15,552 のユニーク語にはならず、重複除去後で ~14,000 程度です。単語あたりビットの上昇は約0.8なので、2つ目のリストを有効にするより1単語追加する方が効きます。リスト併用は美観目的(技術系のみ、自然系のみ)で使い、エントロピー目的では使わない。
価値あるクレデンシャルごとに別パスフレーズ。 1つの漏洩が他のアカウントを巻き込んではいけません。10個まとめて生成し、パスワードマネージャー、ディスク暗号化、リカバリーコード、SSH キーにそれぞれ1つずつ割り当てます。
よくある問題とトラブルシューティング
「Please select at least one wordlist」 — 辞書のチェックを全部外しています。最低1つはチェックしてください。ツールは最後の1つを外せないようにブロックします(トースト表示)。
設定した最低長より短いパスフレーズが出る。 最低長スライダーは文字数フロアを課すだけで、ぴったりの目標値ではありません。最低30で、ランダムに引いた単語が33文字になれば結果は33文字、30に詰める処理は入りません。単語数と最低長を100回試行内で同時に満たせない場合、ジェネレーターは止まり手元のものを返します — より現実的な組み合わせを選んでください。
2つ目のリストにチェックを入れたらエントロピー表示が下がる。 結合プールが大きくなるため、単語あたりのビットは合計に対して相対的に下がります — これは数学的に正しい挙動です。単語あたりビットは log2(プールサイズ) で、14,000語のプールは ~13.8 ビット/語、7,776 語なら ~12.9 ビット/語。合計エントロピーは増えますが、感覚ほどには増えません。
パネル上で大文字化はエントロピーを足さない。 各単語先頭の大文字化は予測可能(攻撃者は最初にそのパターンを試します)なので、計算機は0ビットとして数えます。固定の区切り文字も同じです。エントロピー合計に寄与するのは乱数の範囲と単語の抽選だけです。
1つのパスフレーズに同じ単語が2回出る。 7,776語プールから4-7単語を引くと、誕生日問題の意味で重複の確率は小さいながらゼロではありません。重複が出てもパスフレーズ自体は無効になりません — エントロピー計算は最初から独立な抽選を仮定しています。見た目が嫌なら、もう一度 Generate を押してください。
プライバシーとセキュリティ
パスフレーズの生成はすべて crypto.getRandomValues(Web Crypto API が提供する暗号学的に安全な疑似乱数生成器)を使ってブラウザ内で完結します。生成したパスフレーズはサーバーに送られることはなく、辞書はページ JavaScript にバンドルされてツール本体と一緒に読み込まれます。ツール下の履歴パネルは直近の生成結果をブラウザのローカル IndexedDB だけに保存します — 終わったら消すか、ローカルにも痕跡を残したくないならプライベート/シークレットウィンドウで使ってください。
よくある質問
XKCD パスフレーズ方式とは?
XKCD の strip 936(「Password Strength」)が出典で、ありふれた4単語(「correct horse battery staple」)が Tr0ub4dor&3 のような典型的な8文字「複雑」パスワードよりも強くて覚えやすい、と主張しています。計算上は、2,048語のリストから4単語で44ビット。一方で人々が使いがちな置換パターンを差し引くと、複雑な8文字列は約28ビット相当です。Passphrase Generator はこれを直接実装しています。
Diceware とは何か、EFF リストはどう違うか?
Diceware は Arnold Reinhold(1995)による元のパスフレーズ方式で、5個の物理サイコロを振って 7,776 語のリストから単語を選び、必要な単語数だけ繰り返します。EFF は2016年に同じ 7,776 語サイズで単語選びを刷新したリストを公開しました — 発音しやすく、稀少語や攻撃的な語が減り、1文字ミスによる衝突を避けるための最低単語長を設けています。Passphrase Generator は EFF リストを既定の英語辞書に採用しています。
強いパスフレーズには何単語必要?
EFF リストから4単語で 51.7 ビット — Good ですが Strong には届きません。6単語で 77.5 ビット(Strong)。7単語で 90.5 ビット(Very Strong)に到達し、これがマスターパスワードの正しい目標値です。4単語より短ければランダム8文字パスワードよりも弱く、7単語より長くすると記憶コストの割にリターンが減ります。
パスワードマネージャーのマスターパスワードに使える?
はい — 推奨される用途です。マスターパスワードはマネージャーの中に保存できない唯一のクレデンシャルなので、覚えやすさが効きます。EFF Diceware の6-7単語、77-90 ビットが標準推奨です。
大文字化が0ビット扱いなのはなぜ?
大文字化のパターンが固定で既知だからです。本当のエントロピー寄与には、攻撃者が予測できないかたちでの大文字化が必要です。「各単語の先頭を大文字化」は明白なパターン — 攻撃者は最初の1試行でそれを試します。0ビットと数えるのが誠実な計上です。
「Append random number」は使うべき?
ターゲットシステム次第です。「数字を含むこと」が必須なら、チェックを入れて 0-99 のような小さい範囲にします(約6ビット)。そうでなければ、エントロピーは1単語追加に投じる方が効率的です:7単語パスフレーズは6単語+3桁の数字よりエントロピーが大きく、しかも覚えやすい。
関連ツール
- パスワードジェネレーター — 手で打つことのないクレデンシャル用に密度の高いランダム文字列パスワードを生成。
- UUID Generator — パスフレーズではなくグローバル一意の識別子が必要なら v4 UUID を生成。
- Base64 エンコーダー/デコーダー — 暗号化済みデータを含む任意のバイナリを安全にテキスト輸送するためエンコード。
- AES 暗号化 — いま生成したパスフレーズをパスワードに使い、機密メモやファイルを暗号化。
- ハッシュスイート — フレーズ自体ではなく検証用の値を保管したいときに、パスフレーズの SHA-256・SHA-512 などのハッシュを計算。
Passphrase Generator を試す:Passphrase Generator