パスワードの解読にどれだけかかるのか
答えはほぼ 2 つの要素で決まります。パスワードがどう保存されているか、そしてどれだけ長いかです。
2 つの攻撃速度、10 桁の差
オンライン攻撃は、実際のログイン画面に対する推測です。レート制限とロックアウトによって、最善でも毎秒数回に抑えられます。40 bit のエントロピーを持つパスワードは、この方法では事実上破れません。オフライン攻撃は、盗み出したハッシュに対して自分の管理下のマシンで推測するもので、現代のマルチ GPU 構成なら高速ハッシュに対して毎秒 10^11 回に達します。
「パスワードが数秒で破られた」という見出しのほとんどは、2 つ目のケースを指しています。同じパスワードがあるサイトでは安全で、別のサイトでは破滅的になり得るのは、ひとえに保存方法の違いです。
長さごとの解読時間
下の表は、印刷可能な文字をすべて使う前提(88 文字、1 文字あたり約 6.46 bit)、毎秒 10^11 回の推測、攻撃者が平均して探索空間の半分を調べたところで見つけるという条件で計算しています。
| 長さ | エントロピー | オフライン解読時間 |
|---|---|---|
| 8 | 52 bit | 約 6 時間 |
| 10 | 65 bit | 約 2 か月 |
| 12 | 78 bit | 約 4 万年 |
| 14 | 90 bit | 約 3 億年 |
| 16 | 103 bit | 意味のある尺度を超える |
| 20 | 129 bit | 意味のある尺度を超える |
複雑さより長さが勝つ理由
1 文字増えると探索空間は 88 倍になります。小文字だけのパスワードに記号クラスを 1 つ足しても、約 1.35 倍にしかなりません。論点はこれだけです。大きな指数を持つレバーは長さだけです。
大文字 1 つ、数字 1 つ、記号 1 つといった複雑さの強制が、長さの要件より弱いパスワードを生むのも同じ理由です。人は「Password1!」のような予測可能な型へ誘導され、エントロピーはほとんど増えません。
実際にパスワードが破られる経路
実際には、総当たりが最も少ない手法です。他の漏洩で出た認証情報の使い回し(credential stuffing)、フィッシング、個人情報に基づく推測のほうが、はるかに多くのアカウント侵害を生んでいます。103 bit のパスワードを 5 つのサイトで使い回すほうが、60 bit のパスワードを 1 か所だけで使うより実務的には弱いのです。
したがって防御の優先順位は、パスワードを唯一にする、パスワード管理ツールに入れる、長さを確保する、複雑さは最後、という順になります。
よくある質問
12 文字あれば十分ですか?
オンライン攻撃には余裕があります。高速ハッシュに対するオフライン攻撃では、78 bit は本気のハードウェアが届く範囲の境界です。既定は 16 文字にするほうが安全です。
記号入りのパスワードは解読が遅くなりますか?
少しだけです。文字種が 62 から 88 に増え、1 文字あたりのエントロピーは約 8% 上がります。4 文字増やすほうがはるかに効きます。
8 文字は数秒で破れるという説明があるのはなぜ?
MD5 や SHA-1 のような高速ハッシュと、GPU 1 枚を前提にしているからです。作りが粗末なサイトには現実的なモデルで、bcrypt や Argon2 には非現実的です。