
パスワード強度とエントロピー — Shannon と NIST SP 800-63B の数学
「大文字・小文字・数字・記号を全部入れて 12 文字以上にしてください」— サインアップ画面で何度も見たこの要件。しかし、実は 2017 年の NIST SP 800-63B 改訂以降、「複雑性ルール」も「定期変更」も非推奨に変わっています。Shannon (1948) の情報エントロピー理論に立ち返り、パスワード強度を数式で定量化し、現代の推奨方式を整理します。
パスワードエントロピーの基本式
Claude Shannon が 1948 年の論文 "A Mathematical Theory of Communication" で定式化した情報エントロピーを、パスワードに適用すると:
エントロピー (bits) = log₂(候補数^長さ)
= 長さ × log₂(候補数)
候補数は使用文字の種類数。具体例:
| 構成 | 候補数 | log₂(候補数) | 8文字時のエントロピー |
|---|---|---|---|
| 数字のみ | 10 | 3.32 | 26.6 bit |
| 小文字のみ | 26 | 4.70 | 37.6 bit |
| 小文字+数字 | 36 | 5.17 | 41.4 bit |
| 大小+数字 | 62 | 5.95 | 47.6 bit |
| 大小+数字+記号(32) | 94 | 6.55 | 52.4 bit |
この表から読み取れること:
- 記号混在は log₂(94) − log₂(62) = 0.6 bit/文字 しか増えない
- 大文字混在は log₂(52) − log₂(26) = 1 bit/文字
- 長さを1文字増やすほうが、記号を入れるより効果的 (小文字のみでも 4.7 bit 増加)
必要エントロピーの目安 — 攻撃コストで逆算
攻撃側の視点で「何ビットあれば安全か」を計算します。
オンライン攻撃: Webサーバーに毎回HTTPリクエストを飛ばす。レート制限や IP BAN があるため、秒間 10 回が上限の目安。
1年で試行可能: 10 × 60 × 60 × 24 × 365 ≈ 3 × 10⁸ 回
必要エントロピー: log₂(3 × 10⁸) ≈ 28 bit で平均1年
オフライン攻撃: ハッシュ化されたパスワードDBが漏洩した場合の総当たり。GPU/ASIC による並列計算で劇的に高速化。
GPU 1枚のSHA-256試行速度: 約 10^10 hash/秒
1年で試行可能: 10^10 × 3.15 × 10^7 ≈ 3 × 10^17 回
必要エントロピー: log₂(3 × 10^17) ≈ 58 bit で平均1年
Bitcoin マイニングプール全体: 約 4 × 10^20 hash/秒
必要エントロピー: log₂ ≈ 68 bit
NIST の推奨は 2024 年時点でメモラブル(人間が覚える)パスワード: 64 bit 以上、ランダム生成: 80 bit 以上。オフライン攻撃への耐性を確保するためです。
ハッシュアルゴリズムの選び方 — bcrypt/Argon2 の意義
パスワード保存側は、単純に SHA-256 でハッシュするのではなく、計算コストを意図的に高くしたパスワードハッシュ専用アルゴリズムを使います。
- MD5, SHA-1, SHA-256: 高速すぎて総当たりに脆弱 → パスワード保存には使ってはいけない
- bcrypt (Provos & Mazières, 1999): コスト係数でイテレーション回数を調整。1ハッシュ 100ms 程度に調整するのが慣例
- scrypt (Percival, 2009): メモリハード化 (GPU/ASIC で並列化しにくい)
- Argon2 (Password Hashing Competition, 2015 優勝): 現代の推奨。メモリハード + 並列耐性
- PBKDF2 (RFC 2898): 古いが広く使われる。NIST では最低線として許容
1ハッシュ 100ms の bcrypt であれば、GPU の実効試行速度は 10^10 → 10 hash/秒 まで劇的に下がります。つまりアルゴリズム選択でパスワード要件が数十ビット分緩和されるという考え方もできます。
NIST SP 800-63B (2017年改訂) の衝撃
NIST (米国国立標準技術研究所) は 2017 年 6 月、SP 800-63B を大幅改訂し、長年の "常識" を覆しました。
禁止・非推奨になったもの
- 定期パスワード変更の強制: 90日ごとなどの強制変更はむしろ脆弱化する (ユーザーは記号を番号で差し替える等、予測可能パターンを使うため)
- 複雑性ルール: 「大文字・小文字・数字・記号すべて含む」要求は非推奨
- 秘密の質問: 母親の旧姓等は SNS で調べられるため非推奨
- SMS 二要素認証: SIM スワップ攻撃に脆弱 — 可能なら認証アプリ or FIDO2 へ
推奨されるもの
- 最低8文字、理想は 15 文字以上
- 全 Unicode 文字の許可 (絵文字・日本語含めて)
- 既知漏洩パスワード DB との照合 (Have I Been Pwned API 等)
- 貼り付け (パスワードマネージャー) の許可 — ペースト禁止は逆効果
- 認証試行レート制限でオンライン攻撃防止
- FIDO2 / Passkey — パスワードレス認証への移行
この改訂を主導した Bill Burr (旧ガイド著者) 自身が 2017 年に "自分の元の推奨は間違っていた" とウォールストリートジャーナルで謝罪したのが印象的でした。
Diceware 方式 — 単語パスフレーズの理論
長くて覚えやすいパスワードを作る代表的手法が Diceware (Arnold Reinhold, 1995) です。
仕組み:
- サイコロを5回振って5桁の数字を作る (例: 42163)
- Diceware ワードリスト (7,776語) から該当単語を引く
- これを N 回繰り返して N 単語のパスフレーズ
1単語のエントロピー: log₂(7776) ≈ 12.9 bit。
6単語パスフレーズ: 77.7 bit
例: "clap velvet orchid forest bathtub muffin"
7単語パスフレーズ: 90.6 bit (超堅牢)
"clap velvet orchid..." のような6単語パスフレーズは、ランダム 12 文字の大文字+数字+記号の英数パスワード (47.6 bit) より格段に強く、かつ覚えやすいのが特徴。
日本語ワードリストを使った日本語 Diceware も存在します。
パスワードマネージャーとマスターパスワード
実用的には、サービス毎に全く違うランダムパスワードを使うのが最善で、これは人間が覚えるには無理があります。パスワードマネージャーがほぼ必須です。
- 1Password, Bitwarden, KeePassXC: 主要製品
- ブラウザ内蔵 (Chrome, Safari Keychain): 手軽だがクラウド依存
- 各サービスのパスワードは 20+ 文字のランダムに、マスターパスワードは Diceware 7 単語で
パスワードマネージャー自体の漏洩事例はごく稀ですが、2022 年の LastPass 事件 (暗号化データの一部漏洩) は教訓になります。マスターパスワードを極めて強固にしておけば、たとえ漏洩しても総当たり突破は困難です。
2段階認証 (2FA) との組合せ効果
パスワード単独では破られるリスクを残しますが、二要素認証 (2FA) を追加すると実質的な安全性が跳ね上がります。
- TOTP (Google Authenticator 等): 30 秒毎に6桁ワンタイムパスワード — 推奨
- FIDO2 / WebAuthn (YubiKey, Passkey): 物理キー + 公開鍵暗号 — 最強
- SMS OTP: SIM スワップ攻撃に弱い — 可能なら避ける
Microsoft の 2019 年の統計では、MFA 導入によりアカウント乗っ取り被害の99.9% が防げたとされています。
実用的なチェックリスト
- パスワードマネージャー (1Password, Bitwarden等) を導入
- マスターパスワードは Diceware 6単語以上 (77+ bit)
- 各サービス用は 20文字以上のランダム (パスワードマネージャーで自動生成)
- 重要アカウント (メール・銀行・SNS) は 2FA を必ず有効化、可能なら FIDO2/Passkey
- 既知漏洩パスワードは Have I Been Pwned で確認
- 定期変更は不要 — 漏洩時や不審アクセス時のみ変更
- 「複雑性ルール」を盲信せず、長さ重視
まとめ
- エントロピー = 長さ × log₂(候補数)
- 記号混在より長さを増やすほうが効率的
- NIST SP 800-63B (2017) 以降、定期変更・複雑性ルールは非推奨
- オフライン攻撃想定で 64+ bit (メモラブル)、80+ bit (ランダム) を推奨
- bcrypt/scrypt/Argon2 で保存側のコストを上げる
- Diceware 6単語で 77 bit の覚えやすい強固パスフレーズ
- パスワードマネージャー + 2FA (FIDO2/Passkey) の組合せが現代の最適解
参考文献・ソース
- NIST Special Publication 800-63B Digital Identity Guidelines ↗
- Shannon C.E. A Mathematical Theory of Communication. Bell System Technical Journal. 1948;27:379-423 ↗
- RFC 4086 - Randomness Requirements for Security ↗
- OWASP Password Storage Cheat Sheet ↗
- Diceware Passphrase (Reinhold A., 1995) ↗
- Have I Been Pwned API ↗
記事作成に関する注記
本記事は AI(大規模言語モデル)を編集補助として活用して作成しています。 公開前に編集者が内容を確認していますが、事実誤認・仕様の解釈ミス・最新情報との齟齬が含まれる可能性があります。 重要な判断を行う際は、本文中の一次ソースや公式ドキュメントを必ずご自身でご確認ください。 誤りにお気づきの場合は、お問い合わせフォームよりご連絡いただけると助かります。


