ブルートフォース攻撃の仕組み
なぜ長さが重要なのか:計算例と対策
Bei ブルートフォース攻撃では、攻撃者はパスワードを可能なすべての文字の組み合わせを総当たりで試すことによって推測しようとします。その基本的な考え方はシンプルです。1秒あたりにできるだけ多くの組み合わせを試すことで、理想的にはGPUや分散システム上で実行されます。これは全数探索(総当たり探索)。
実際には、このような攻撃が成功してしまうケースは残念ながら少なくありません。多くのパスワードが 短すぎる、使用文字種が限られている(文字のみ)か、単語リストに含まれているためです。これにより探索空間が大幅に縮小され、推測が容易になります。さらに重要なのは、オンライン攻撃(ログインフォームを狙う攻撃で、レート制限やアカウントロックが有効)と、オフライン攻撃(盗まれたパスワードハッシュを対象とする攻撃で、ハッシュ関数とパスワード強度が攻撃に要する時間を左右する)を区別することです。
パスワードの解読(オフライン)≠「復号」
パスワードは復号されるのではなく、ハッシュ値として保存され、推測+ハッシュ化(ブルートフォース、辞書攻撃/マスク攻撃)によって探索されます。計算速度現代のハードウェアの1秒あたり数十億回(高速なハッシュ方式の場合)に達するため、長いパスワードと、低速な方式(例:Argon2、scrypt、PBKDF2、bcrypt)でハッシュ化されたパスワードが決定的に重要です。
歴史的・現在的な観点: distributed.netのRC5プロジェクトは、鍵空間に対する総当たり探索の純粋な計算力を示しています。56ビットは1997年に250日後、64ビットは2002年に1,757日後に発見されました。現在は、プロキシステータス RC5-72 の場合毎秒約2.38兆鍵(本日時点での取得値)。これは鍵のブルートフォースであり、パスワードハッシュ化ではありませんが、分散コンピューティングの処理能力がどれほど大きくスケールするかを示しています。
パスワードの組み合わせと長さ
以下の例は、長さと文字種が与える影響を示しています。説明のため、毎秒20億回の試行を前提としています(非常に高性能な単体マシン。実際の値は、ハードウェアや、オフラインの場合は、ハッシュ方式によって大きく異なります)。
一般的な文字グループ:
- 数字(10: 0~9)
- 英字(52: A~Z および a~z)
- 特殊文字(約32。サービスで許可される文字セットに依存)
可能な組み合わせ数は次の式で求められます:
重要: この表は最大探索時間を示しています。実際の時間は平均するとその約半分です。さらに、辞書攻撃、ルールベース攻撃、マスク攻撃によって探索空間は大幅に縮小される一方、低速なパスワードハッシュ方式は実効レートを大幅に低下させます。
| Passwort besteht aus | Mögliche Kombinationen (Formel) | Benötigte Zeit (bei 2 Mrd./s) |
|---|---|---|
| 5 Zeichen 3 Kleinbuchstaben, 2 Zahlen | (53) × 263 × 10217.576.000 | 0,009 Sekunden |
| 7 Zeichen 1 Großbuchstabe, 6 Kleinbuchstaben | (71) × 261+656.222.671.232 | ≈ 28 Sekunden |
| 8 Zeichen 4 Kleinbuchstaben, 2 Sonderzeichen, 2 Zahlen | (84) × (42) × 264 × 322 × 10219.653.623.808.000 | ≈ 2,73 Stunden |
| 9 Zeichen 2 Groß-, 3 Kleinbuchstaben, 2 Zahlen, 2 Sonderzeichen | (92) × (73) × (42) × 262+3 × 102 × 3229.197.895.942.144.000 | ≈ 53 Tage |
| 12 Zeichen 3 Groß-, 4 Kleinbuchstaben, 3 Sonderzeichen, 2 Zahlen | (123) × (94) × (53) × 263+4 × 323 × 1027,30 × 1021 | ≈ 115.591 Jahre |
| 14 Zeichen 4 Groß-, 4 Kleinbuchstaben, 3 Zahlen, 3 Sonderzeichen | (144) × (104) × (63) × 264+4 × 103 × 3232,88 × 1025 | ≈ 455.812.388 Jahre |
結論: 文字が1つ増えるごとに探索空間は倍々に拡大します。長さは複雑性ルールより重要です。特に、オフライン攻撃 ― サービスが 適切で低速なハッシュアルゴリズム をSaltとともに使用していることが前提です。
ブルートフォース攻撃からの保護
最も効果的な ユーザー側の対策 は 長くランダムなマスターパスワード または パスフレーズ(例:複数のランダムな単語)です。サービスごとに固有であることが重要です。Password Depot は生成を支援し、推定攻撃所要時間を表示します。これは長さや文字種に加え、辞書攻撃に対する脆弱性も考慮しています。
- MFA/2FAを有効化(例:TOTPアプリやハードウェアトークン)。可能であれば、Passkeysの方がさらに優れています。BSIのガイドライン.
- パスワードの使い回しは避けてください。 すべてのアカウントに固有で強力なパスワードが必要です。
- 必須の複雑性より長さを優先。 サービスは長いパスワード/パスフレーズ(最低64文字)を許可し、漏えいしたパスワードをブロック(ブラックリスト化)すべきです。
- 低速なハッシュアルゴリズム をサーバー側で(例:Argon2、scrypt、PBKDF2、bcrypt)Salt と適切なワークファクターとともに使用します。MD5/SHA-1 のような高速ハッシュは、パスワード保存には不適切です。
- レート制限/スロットリングとロックアウト: オンライン攻撃は、試行失敗回数の制限、段階的な待機時間、必要に応じてCAPTCHAによって抑止する必要があります。
さらにPassword Depotでは、誤った入力があった場合にマスターパスワードの入力画面を短時間ロックすることで、オンラインでのレート試行を困難にします ― 待機時間が段階的に延長される 再度の入力失敗があるたびに。
サービス提供事業者(技術チーム)向け実践ガイド
- スペースやUnicodeを含むすべての印字可能文字を受け入れ、コピー&ペーストを許可してください。
- ブロックリスト (漏えいした/ありふれたパスワード)とレート制限 を、ユーザーへの明確な案内とともに実装してください。
- パスワードは必ずソルトを付加してハッシュ化した 値としてのみ保存し、低速な KDFを使用し、Work Factorを定期的に見直してください。
参考情報
- NIST SP 800–63B (Rev. 4), Appendix: Strength of Passwords ― 長さ、パスフレーズ、オフライン攻撃(毎秒数十億ハッシュ)およびレート制限の概念。
- NIST SP 800–63B (Rev. 3) ― 例:最小長、長いパスワードの許可(≥ 64)、ブラックリスト、ペーストの許可;レート制限/スロットリング により、連続する失敗試行を最大100回に制限。
- OWASP Password Storage Cheat Sheet ― 適切な方式(Argon2、scrypt、PBKDF2、bcrypt)、Salt/Work Factor。
- OWASP Authentication Cheat Sheet ― パスワード入力、長さ、ブラックリスト、ロック機構に関するガイドライン。
- BSI: 安全なパスワードの作成 – 長く複雑なパスワードやパスフレーズなど、実践的なヒント。
- BSIプレス 31.01.2025 – 定期的なパスワード変更の強制は不要。2FA/Passkeysを優先。
- distributed.net RC5 / 現在のプロキシステータス – 総当たり探索と分散コンピューティングの具体例。