ノウハウ / パスワードセキュリティ

ブルートフォース攻撃の仕組み

なぜ長さが重要なのか:計算例と対策

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。サービスで許可される文字セットに依存)

可能な組み合わせ数は次の式で求められます:

Mögliche Kombinationen = (Zeichenmenge)Passwortlänge

重要: この表は最大探索時間を示しています。実際の時間は平均するとその約半分です。さらに、辞書攻撃、ルールベース攻撃、マスク攻撃によって探索空間は大幅に縮小される一方、低速なパスワードハッシュ方式は実効レートを大幅に低下させます。

Passwort besteht ausMögliche Kombinationen (Formel)Benötigte Zeit (bei 2 Mrd./s)
5 Zeichen
3 Kleinbuchstaben, 2 Zahlen
(53) × 263 × 10217.576.0000,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を定期的に見直してください。

参考情報

安全なパスワードの作成

ブルートフォース攻撃に耐えられるパスワードの作り方をご紹介します。

安全なパスワードのヒント