この記事でわかること
- ✓エントロピーは「パスワードの推測しにくさ」を表すビット数で、長さと使用文字種から計算できる
- ✓文字種を増やすより文字数を増やす方がエントロピーへの貢献が大きい
- ✓NIST SP 800-63Bは定期変更や複雑さ強制より「十分な長さ」と「使い回しをしないこと」を重視する
パスワード強度チェッカーを使うと「エントロピー:72 bit」のような数値が表示されます。この「エントロピー」とは何を意味し、どう計算されているのでしょうか。仕組みを理解すると、なぜ「長いパスワード」が強いのかが具体的な数値で実感できます。
1. エントロピーとは何か
情報理論における「エントロピー」は、ある情報の「不確かさ」や「予測しにくさ」を数値化したものです。パスワードの文脈では、攻撃者がパスワードを総当たりで試す際に必要な試行回数の対数(log₂)として表現されます。
単位はビット(bit)です。エントロピーが1bit増えるごとに、総当たりに必要な試行回数が2倍になります。つまり、10bit増えれば試行回数は1,024倍(2¹⁰)、20bit増えれば約100万倍(2²⁰)になります。
エントロピーの計算式
エントロピー(bit)= 文字数 × log₂(使用できる文字の総数)
例:小文字26種のみ・8文字のパスワード → 8 × log₂(26) ≈ 37.6 bit
2. 文字の種類(文字集合)がエントロピーに与える影響
使用できる文字の種類が増えると、1文字あたりの情報量(log₂ の値)が増加します。主な文字集合とそのサイズは以下のとおりです。
| 文字の種類 | 文字数 | 1文字あたりのエントロピー |
|---|---|---|
| 小文字(a〜z) | 26種 | 約4.7 bit |
| 小文字 + 大文字 | 52種 | 約5.7 bit |
| 小文字 + 大文字 + 数字 | 62種 | 約5.95 bit |
| 小文字 + 大文字 + 数字 + 記号 | 94種 | 約6.55 bit |
たとえば、小文字のみ(26種)と全種類(94種)では1文字あたり約1.85 bitの差があります。一方、文字数を1文字増やすと全種類の場合で約6.55 bit増加します。「数字を1種類加える(8文字で約2 bit増)」といった1種類だけの追加より、1文字増やす方がエントロピーへの貢献が大きいことが多いのはこのためです。NIST SP 800-63Bが複雑さより長さを重視する理由もここにあります。
3. 文字数とエントロピーの関係(具体例)
| パスワードの条件 | エントロピー | 評価の目安 |
|---|---|---|
| 数字のみ・8文字 | 約27 bit | 非常に弱い |
| 小文字のみ・6文字 | 約28 bit | 弱い |
| 小文字+数字・8文字 | 約41 bit | 普通 |
| 小文字+大文字+数字・12文字 | 約71 bit | 強い |
| 全種類(小大数記号)・20文字 | 約131 bit | 非常に強い |
4. エントロピーの安全な目安
米国国立標準技術研究所(NIST)が発行する「NIST SP 800-63B」(デジタルアイデンティティガイドライン)は、パスワード強度に関する代表的な公的指針のひとつです。同ガイドラインでは、定期的な変更の強制や大文字・記号の必須化よりも、十分な長さの確保と流出済みパスワードとの照合を重視する方向を示しています。
エントロピーについて一般的に言われる目安は以下のとおりです。ただしこれは総当たりに対する耐性の理論値であり、辞書攻撃や漏洩パスワードリストへの対策は別途必要です。
非常に弱い
現代のPCで数秒以内に総当たり可能
弱い
数時間〜数日で解読される恐れがある
普通
一般的な用途では許容範囲だが、重要なアカウントには不十分
強い
現実的な総当たり攻撃への耐性が十分ある
非常に強い
現在の技術で総当たりは事実上不可能
5. エントロピーだけでは測れないリスク
エントロピーはあくまで「総当たり攻撃への理論的な耐性」を示す指標です。以下のリスクはエントロピーの高さで防ぐことができません。
- 辞書攻撃:「password123」や「qwerty」のような一般的な文字列は、エントロピー計算上は「普通」程度でも辞書攻撃で瞬時に破られます
- 漏洩パスワードリスト:過去の情報流出で外部に知られたパスワードは、再利用していれば即座に試されます
- フィッシング:どれほど強いパスワードでも、偽サイトに入力すれば意味がありません
- パスワードの使い回し:1か所で漏洩すると、他のすべてのサービスに不正アクセスされるリスクがあります
強いパスワードとは、エントロピーが高く、かつ辞書に載らないランダムな文字列を、サービスごとに異なるものを使う——という条件を同時に満たすものです。
6. 安全なパスワードを作るための実践
理論を踏まえると、安全なパスワードを作るうえで重要なのは以下の点です。
- 12文字以上を目安にする:多くの場合、十分なエントロピーを確保できます
- ランダムに生成する:意味のある単語や誕生日の組み合わせは辞書攻撃に弱い
- サービスごとに異なるパスワードを使う:1か所の漏洩が他に波及しない
- パスワードマネージャーを活用する:ランダムな長いパスワードを安全に管理できる
自分でランダムなパスワードを考えるのは難しいため、ツールを使って生成するのが確実です。
