パスワードエントロピー:「長さは複雑さに勝る」背後の本当の数学
パスワードのアドバイスは 20 年間、「大文字、小文字、数字、記号を使いましょう」という類いのものに固まったままです。数学が言うには、それはほとんど間違っています——少なくとも優先順位が大きく間違っています。ランダムに生成されたパスワードの強度は単一の数式に支配されており、その数式は文字セットの拡大よりも長さをはるかに強く報います。これは偶然ではなく、NIST が SP 800-63B(2017 年、2024 年改訂)以来ずっと言い続けてきたことでもあります。
この記事では、実際の数学を順を追って説明し、実際のエントロピー値を計算し、仮定を明示したブルートフォース推定を示し、それを適用可能なルールに落とし込みます。
エントロピーの公式
サイズ P の文字プールから一様ランダムに選ばれた長さ L のパスワードについて、可能なパスワードの数は P^L で、ビット単位のエントロピーは:
H = log2(P^L) = L × log2(P)
これがモデルのすべてです。エントロピーは攻撃者が列挙しなければならない探索空間の大きさを測ります。1 ビット増えるごとに作業量は倍になります。
2 つのレバーは P(プールサイズ)と L(長さ)で、これらは対等ではありません。1 文字追加すると探索空間は P 倍になり、プールを広げると比率倍になります。重要なプールとその 1 文字あたりのエントロピー寄与は次のとおりです:
| 文字プール | サイズ (P) | 1 文字あたりのビット数 log2(P) |
|---|---|---|
数字のみ(0–9) | 10 | 3.32 |
小文字(a–z) | 26 | 4.70 |
小文字 + 大文字(a–zA–Z) | 52 | 5.70 |
英数字(a–zA–Z0–9) | 62 | 5.95 |
| 印刷可能な全 ASCII(記号含む 94 文字) | 94 | 6.55 |
プール拡大の収穫逓減に注目してください:小文字のみ(26)から印刷可能な全セット(94)へは、プールはほぼ 4 倍になるのに、1 文字あたりのエントロピーは 4.70 から 6.55 ビットへ——1 文字あたり 39% の増加にすぎません。一方、どんなプールサイズでも 8 文字から 16 文字にすればエントロピーは正確に 2 倍になります。長さは天井なく線形に伸びますが、プールサイズは標準キーボードでは約 94 が上限です。
実際のエントロピー値、計算済み
H = L × log2(P) を適用すると:
印刷可能な全 ASCII プール(94 文字):
| 長さ | エントロピー(ビット) | 探索空間 |
|---|---|---|
| 8 | 52.4 | ~6.1 × 10^15 |
| 10 | 65.5 | ~4.4 × 10^19 |
| 12 | 78.7 | ~4.8 × 10^23 |
| 14 | 91.8 | ~5.1 × 10^27 |
| 16 | 104.9 | ~3.7 × 10^31 |
| 20 | 131.1 | ~2.9 × 10^39 |
小文字のみのプール(26 文字):
| 長さ | エントロピー(ビット) |
|---|---|
| 8 | 37.6 |
| 12 | 56.4 |
| 16 | 75.2 |
| 20 | 94.0 |
英数字プール(62 文字):
| 長さ | エントロピー(ビット) |
|---|---|
| 8 | 47.6 |
| 12 | 71.5 |
| 16 | 95.3 |
| 20 | 119.1 |
さて、要点を示す比較です。次の 3 つのパスワードを見てください。すべて異なるポリシーの出力としてあり得るものです:
xQ9#mK2!— 8 文字、94 文字のフルプール:52.4 ビットhkbwvztdpqrm— 12 文字、小文字のみ:56.4 ビットhkbwvztdpqrmjfyc— 16 文字、小文字のみ:75.2 ビット
「単純な」12 文字の小文字パスワードはすでに「複雑な」8 文字のものに勝っており、16 文字の小文字パスワードは 23 ビット上回ります——探索空間で約 800 万倍——しかも入力も記憶も劇的に簡単です。4 文字の追加は、記号セット全体よりも価値があるのです。
これが 長さは複雑さに勝る という意味です:複雑さが無価値というわけではなく(プールを広げれば固定長では常に有利)、人間はランダムな複雑さを生み出すのがひどく苦手であり、現実的なプールでは、1 文字追加の限界エントロピーがプール拡大の限界エントロピーを上回る、ということです。
巨大な注意点:これはランダムなパスワードにのみ有効
公式 H = L × log2(P) は 一様ランダムな抽選 を仮定しています。人間が選ぶパスワードはそのようなものではありません。Summer2026! は約 90 文字のプールからの 11 文字——名目上は約 71 ビット——ですが、どんなクラッキングツールも最初の数千回の推測で試します。辞書の単語、年号、最も一般的な記号が、最も一般的な配置で並んでいるからです。
人間のパスワードエントロピーは公式ではなく予測可能性に支配されます。漏洩したパスワードコーパスの実証分析では一貫して、一般的なパスワードの小さな辞書にマングリングルール(先頭を大文字化、数字を付加、! を付加)を組み合わせたものが、実際のパスワードの大部分をカバーすることが示されています。だからこそ:
- エントロピーの数学は生成されたパスワードに適用されます——単語リストからのパスフレーズやマネージャーが作成したシークレットに。人が独力で考えたものには適用されません。
- 人間が選んだパスワードに対する防御はエントロピー推定ではなく、既知の漏洩リスト・共通パスワードリストとの照合 です——これはまさに NIST が義務付けていることです。
パスフレーズと Diceware
Diceware 法は、記憶可能なシークレットの数学を具体的にします:サイコロを振って 7,776 語のリスト(6^5)から一様に単語を選びます。各単語は log2(7776) ≈ 12.9 ビットを担います:
- 5 語:64.6 ビット
- 6 語:77.5 ビット
- 7 語:90.4 ビット
correct horse battery staple スタイルの 6 語パスフレーズ(有名な XKCD の例は同じ数学を説明しています)は約 77 ビットを提供し、78.7 ビットのランダムな 12 文字列よりはるかに記憶しやすいものです。同じセキュリティ水準で、使いやすさは劇的に違います。
ブルートフォース時間推定——仮定を明示して
「クラックにかかる時間」は、攻撃モデルなしには意味を持ちません。ここに明示します:
仮定: ソルトなしの高速ハッシュ(例:生の MD5/SHA-1)に対するオフライン攻撃で、毎秒 10^10(100 億)回 の推測——控えめなマルチ GPU リグで達成可能。全空間の総当たり探索で、パスワードを発見する期待時間はその半分。スロットリングなし、漏洩リストの近道なし(ランダムなパスワードを仮定するため有効)。
| パスワードのクラス | 探索空間 | 総当たり時間 @ 10^10/秒 |
|---|---|---|
| 8 文字、小文字(26) | 2.1 × 10^11 | 約 21 秒 |
| 8 文字、フルプール(94) | 6.1 × 10^15 | 約 7 日 |
| 12 文字、小文字(26) | 9.5 × 10^16 | 約 110 日 |
| 12 文字、フルプール(94) | 4.8 × 10^23 | 約 150 万年 |
| 16 文字、小文字(26) | 4.4 × 10^22 | 約 14 万年 |
| 16 文字、フルプール(94) | 3.7 × 10^31 | 約 1.2 × 10^14 年 |
これらは 説明用のオーダー(桁)であって保証ではない ものとして扱ってください。両方向に変動します:
- 実際にはより遅くなるのは、 サイトが適切なパスワードハッシュ関数を使っている場合。bcrypt、scrypt、Argon2 を適切なパラメータで使えば、生の MD5 と比べて推測スループットを 4〜7 桁削減でき、「約 7 日」が「誰も気にしない時間尺度」に変わります。だからこそハッシュアルゴリズムの選択は、ユーザーが行うほぼすべてのことより重要です。
- より速くなるのは、 パスワードがランダムでない場合(辞書攻撃)、攻撃者が国家レベルのハードウェアを持つ場合、または盗まれたハッシュが価値を保つ年月の間にムーアの法則的な改善が積み重なる場合。
- オンライン攻撃(稼働中のログインエンドポイントへの推測)はまったく別のモデルです:レート制限とロックアウトが攻撃者を多くて数百回の推測に制限するため、約 20 ビットのシークレットでも生き残れます——これが NIST がスロットリングを要求する理由であり、パスワードマネージャーのサイト別パスワードがどの単一パスワードの強度よりも重要である理由です。
表からの実践的な教訓:8 文字は、高速にハッシュされるものには何であれ十分ではない。12 文字以上のランダムな文字列は快適。16 文字は良い意味で過剰。 そして繰り返しになりますが、16 文字の小文字列は 12 文字のフルプール列より長持ちします——長さの勝利です。
NIST SP 800-63B が実際に言っていること
NIST のデジタルアイデンティティガイドライン(SP 800-63B、初版 2017 年、Revision 4 は 2024 年公開)は、この多くを米国連邦ポリシーに成文化しました。パスワード(「記憶シークレット」)検証者向けの重要な推奨事項:
- 複雑さではなく最小長。 ユーザーが選ぶパスワードには最低 8 文字を要求(Revision 4 では、単一要素として使うパスワードは 15 文字、第二要素がある場合は 8 文字に引き上げ)。少なくとも 64 文字まで許可。構成ルールを課さないこと(「大文字・数字・記号を含むこと」などは不可)——それらはユーザーを予測可能なパターン(
Password1!)に追いやり、現実世界のセキュリティを弱めます。 - 強制的な定期変更は禁止。 2017 年の改訂ですでに古い「90 日ごとにローテーション」というドグマは廃止され、Revision 4 もそれを再確認しています。侵害の証拠がある場合にのみパスワードを変更します。強制ローテーションは確実に
Summer2026!→Autumn2026!を生み出します——クラッキングルールが容易にカバーする増分です。 - 漏洩リスト・共通パスワードリストとの照合。 検証者は候補パスワードを、既知の侵害済みパスワード、辞書の単語、反復的/連続的な文字列、コンテキスト固有の単語(サービス名、ユーザー名)の辞書と照合すべきです。これが構成ルールに代わる、人間が選ぶシークレットの本当の防御です。
- ペーストとパスワードマネージャーの許可。 検証者はペースト入力を許可しなければなりません——これはパスワードマネージャーの明示的な承認です。生成された 20 文字のランダム文字列はまさにガイドラインがユーザーに持たせたいものだからです。
- 知識ベースのヒントや秘密の質問は禁止。 パスワードヒントと KBA(「母親の旧姓」など)は、シークレットを漏洩させるか自明に暴くため禁止されています。
- 保存にはソルト付きメモリハードハッシュ。 検証者は適切な一方向関数——Argon2、bcrypt、十分なワークファクターの PBKDF2 など——でハッシュし、ユーザーごとに少なくとも 32 ビットのソルトを付けてパスワードを保存しなければなりません。
これらがエントロピーの数学とどう整合するかに注目してください:構成ルールは人間にとって実質的なエントロピーを増やさないが、長さは増やす。ローテーションはユーザーをパターンに追いやり、持っていたエントロピーを破壊する。漏洩リスト照合は、人間のエントロピーが測定不能であるという事実に対処する。この標準は、制度化された数学なのです。
実際に使えるルール
- 生成ツールにパスワードを作らせる。 ランダム生成だけが、エントロピーの公式があなたに適用される唯一の方法です。当サイトの パスワード生成ツール はブラウザ内で暗号学的にランダムなパスワードを作成します——どこにも送信されません。16 文字以上に設定して、あとは考えるのをやめましょう。
- 重要なものにはデフォルトで 16 文字。 小文字のみでも 95 ビット以上あり、適切にハッシュされたストアに対する考えうるあらゆるブルートフォース予算を超えています。
- 記憶しなければならないものには 6 語のパスフレーズ。 約 77 ビット、入力可能、記憶可能。同じツールのパスフレーズ/単語リストモード(あれば)で候補を生成するか、Diceware を使います。
- サイトごとに一意に、常に。 エントロピーは 1 つのサイトを守ります。使い回しは 1 件の侵害をすべての侵害に変えます。これこそがパスワードマネージャーの存在理由です。
- 提供されている場所では第二要素を追加。 NIST の長さ要件は MFA がある場合に明示的に緩和されます。第二要素は、パスワードエントロピーを増やすよりはるかに安価に攻撃者の作業を倍増させるからです。
- 複雑さの劇場は無視する。 「大文字 1 つ、数字 1 つ、記号 1 つ」を要求しながら 12 文字に制限するサイトは、ポリシーが逆です。機械的に従いつつも、それを強度と誤解しないでください。
まとめ
- ランダムパスワードのエントロピーは
H = L × log2(P):各文字はプールサイズのみで決まる固定ビット数を追加します。 - プール拡大(26 → 94 文字)の利得は 1 文字あたり約 1.85 ビット。1 文字追加の利得は 4.7〜6.6 ビット。長さの圧勝です。
- ランダムな 8 文字 ≈ 52 ビット ≈ 高速オフラインハッシュに対して数日でクラック可能。ランダムな 12 文字 ≈ 78 ビット以上 ≈ そのモデルでは事実上クラック不可能。
- この公式はランダム生成にのみ適用されます。人間が選ぶパスワードは辞書で敗北します。だからこそ NIST は漏洩リスト照合を義務付け、構成ルールと強制ローテーションを禁止しています。
- パスワード生成ツール で 16 文字のランダムパスワードを生成し、マネージャーに保存し、MFA を有効にする。そのスタックこそが数学の推奨です。