エントロピーの数値の読み方
以下の区分はビット数を表示上まとめたもので、オフライン攻撃で破られるパスワードとそうでないものを分ける狙いで境界を置いています。隣に示す帰結はエントロピーから計算したものであり、割り当てたものではありません。
| エントロピー | 区分 | 実際の意味 |
|---|---|---|
| 40ビット未満 | 弱い | オフライン攻撃ならほぼ即座に探索し尽くされる |
| 40 – 59ビット | まずまず | 場当たりの攻撃は防げるが、本気のオフライン攻撃には破られる |
| 60 – 79ビット | 強い | 良質なハッシュに対する通常のオフライン攻撃の射程外 |
| 80ビット以上 | 非常に強い | 総当たりは弱点ではない。弱点は使い回しとフィッシング |
- パスワードはプラットフォームの暗号学的に安全な乱数源を使ってブラウザー内で生成され、本サイトのあらゆる分析機能やAI機能から意図的に除外されています。送信されることは一切ありません。
- NIST SP 800-63B は検証側に対し、異なる文字種の混在を求めないこと、定期的な変更を強制しないことを勧めつつ、漏えいの兆候がある場合には変更を求めるべきだとしています。
パスワードのエントロピーが測るもの
エントロピーは、その生成器が同じ確からしさで生み出しえたパスワードの総数をビットで表したものです。N文字の集合から各文字を独立に取り出して長さLのパスワードを作る生成器のエントロピーは L x log2(N) ビットで、1ビット増えるごとに攻撃者が試すべき候補は2倍になります。
エントロピーは生成器の性質であって、生み出された文字列の性質ではありません。特定のパスワード自体にエントロピーがあるわけではなく、問われるのはそれがどれだけ大きな空間から引かれたかだけです。だからこそ、自分で考えたパスワードにビット数を正直に割り当てることはできず、生成されたパスワードには割り当てられるのです。
長さが複雑さに勝るのも同じ理由です。76種類の記号から作った20文字のパスワードに1文字足すと約6.2ビット増えますが、短いパスワードに文字種を丸ごと1つ足しても増分ははるかに小さくなります。NISTの指針もこれを反映しています。SP 800-63B は検証側に対し、異なる文字種の混在を求める構成規則を課すべきではないとし、少なくとも64文字のパスワードを許容すべきだとしています。
使い方
- 長さを選びます。長くすることが、単独の変更としては最も効果があります。
- 含める文字種を選びます。1種増えるごとに文字集合が広がり、1文字あたりのエントロピーが上がります。
- 読み上げたり手で書き写したりするパスワードなら、紛らわしい文字を除いてください。わずかなエントロピーと引き換えに転記ミスが減ります。
- エントロピーの数値を読み取ります。これが強度の正直な指標で、年数はその同じ数値を時間として表したものです。
- パスワードは使い回さず、パスワードマネージャーに保管してください。使い回しはどれだけのエントロピーも台無しにします。
エントロピーの計算式
各文字は文字集合から独立かつ一様に取り出されるため、ありうるパスワードの総数は文字集合の大きさの長さ乗になります。エントロピーはその総数の2を底とする対数です。
時間の数値は、防御の弱い高速なハッシュに対して毎秒1兆回の試行で行うオフライン攻撃を想定し、空間の半分を探索するのに要する期待時間を示したものです。規模感を示す例であって予測ではありません。適切に強化されたパスワードハッシュは攻撃速度が桁違いに遅く、平文で漏れたパスワードは時間をまったく要しません。
よくある間違い
- 長さではなく文字種を足すこと。長さのほうがエントロピーをはるかに速く押し上げます。
- 強いパスワードを複数のサイトで使い回すこと。エントロピーがいくら高くても、1つのサービスの漏えいが他のすべてを危険にさらします。
- よく知られた語の文字を置き換えること。password を P@ssw0rd と書くようなものです。解析ツールはまさにその置き換えを試します。
- 自分で考えたパスワードに対する強度メーターの判定を、エントロピーの測定値だと思うこと。エントロピーは生成器を表すもので、文字列を表すものではありません。
- 意味なく暦にしたがってパスワードを変えること。NISTはこれを勧めていません。変えるのは漏えいの兆候があるときです。
よくある質問
パスワードはどのくらいの長さにすべきですか?
NIST SP 800-63B は利用者が選ぶパスワードに8文字の下限を定め、検証側には少なくとも64文字を許容するよう求めています。生成されたパスワードでは長さが最も効く要素です。76文字の集合なら1文字増えるごとに約6.2ビットのエントロピーが加わり、探索空間はおおむね1文字ごとに倍増します。
ビットで表すパスワードのエントロピーとは?
その生成器が生み出しえたパスワードの総数の2を底とする対数、すなわち 長さ x log2(文字集合の大きさ) です。76文字の集合から作った20文字のパスワードは 20 x log2(76) = 125 ビットになります。1ビット増えるごとに攻撃者が試すべき候補は倍になります。
文字種を混ぜるとパスワードは強くなりますか?
文字集合が広がるので1文字あたりのエントロピーは上がります。ただし長さに比べれば効果ははるかに小さく、NIST SP 800-63B は検証側がそうした混在を求める構成規則を課すことを明確に戒めています。1種類の文字だけの長いパスフレーズが、4種類を使った短いパスワードに勝ります。
パスワードはどこかに送信されますか?
されません。OSの暗号学的に安全な乱数源を使ってブラウザー内で生成され、本ツールはサイトの他機能に供給される結果の配信対象から明示的に除外されているため、送信も記録もされません。
パスワードは定期的に変えるべきですか?
NIST SP 800-63B は、予測しやすい変形へ人を追いやるという理由で、無条件の定期変更を勧めていません。一方、認証情報が漏えいした兆候がある場合には変更を求めます。サイトごとに固有のパスワードをパスワードマネージャーで保管するほうが、変更の予定表よりも役に立ちます。
参考文献
- Grassi PA, Garcia ME, Fenton JL. NIST Special Publication 800-63B: Digital Identity Guidelines — Authentication and Lifecycle Management. National Institute of Standards and Technology, 2017 (with subsequent errata). Section 5.1.1 on memorized secrets.
- Shannon CE. A Mathematical Theory of Communication. Bell System Technical Journal 1948; 27(3): 379-423 — entropy as a measure of uncertainty.
- World Wide Web Consortium. Web Cryptography API — Crypto.getRandomValues(), the cryptographically strong random source used here. w3.org.
- National Cyber Security Centre (UK). Password policy: updating your approach. ncsc.gov.uk.