メインコンテンツへスキップ
  1. ブログ/

総当たり攻撃の最大時間を計算してみた

·
セキュリティ
目次

初めに
#

ネットワークやWebサービスのセキュリティ対策を学び始めた方なら、一度は耳にする「総当たり攻撃(ブルートフォース攻撃)」。

これは、あらゆる文字の組み合わせを機械的に試してパスワードを突破しようとする攻撃手法となります。

この記事では、パスワードがどのくらいの時間で解読され得るのかを具体的な数字とともに解説していきます。

本記事はセキュリティ教育を目的とし、攻撃を推奨する内容ではありません。

総当たり攻撃とは
#

総当たり攻撃(Brute Force Attack)とは、考えられるすべてのパスワードの組み合わせを順番に試していく攻撃方法です。

総当たり攻撃にはいくつかの「」が存在します。

1. ピュア型
#

ピュア型のブルートフォース攻撃は最も基本的な型で、あらゆる文字のすべての組み合わせを1文字目から順番に試していきます。

たとえば「0000」「0001」「0002」…と全パターンを1つずつ試すことで、正解となるパスワードを見つけ出す手法となります。

2. 辞書型
#

これは実在する単語や一般的なパスワードリストを使って試行するタイプとなります。

例えばパスワードが「password」や「admin」などといった初期設定によく流用されるものを設定している場合はこれらの攻撃で突破されるリスクが高まります。

3. ハイブリッド型
#

これは辞書攻撃とブルートフォースを組み合わせた手法となります。

具体的には「admin123」や「password2025」などのように辞書的な語句に数字や文字を組み合わせる形式となります。

4. 避けるべきパスワード
#

以下は避けるべきパスワードの一例となっております。

パスワード例 リスク
password 一般的で最も予測しやすいパスワード
admin 管理者アカウントに使われやすい初期設定パスワード
123456 数字のみの単純なパスワード
qwerty キーボードの並び順をそのまま使ったパスワード
letmein よく使われるフレーズ
welcome 初期設定や一般的に使用されやすいフレーズ
monkey 辞書攻撃で狙われやすいパスワード
password1 パスワードに数字を追加しただけの単純な変更
123123 繰り返しの数字パスワード
admin123 管理者アカウント用としてよく使われる組み合わせ
111111 さらに簡単な数字パスワード

仮定条件
#

本記事では以下の条件に基づいて、パスワードが突破されるまでの最大時間を試算しています。

  • 1秒間に100回のパスワード試行が行われる
  • アカウント名は既知とし、推測対象はパスワードのみとする
  • 同一の文字を複数回使用可能とする

計算方法
#

本記事で示す最大解読時間は、以下の計算方法に基づいて試算されています。

$$ \frac{\text{総パターン数}}{100 \times 60} = \text{最大解読時間(分)} $$

なお、これはあくまで理論上の計算であり、実際の攻撃環境や制限(ログイン試行制限、IPブロックなど)によって大きく異なる場合があります。

数字のみのパスワード(0〜9)
#

桁数 総パターン数 最大解読時間(分)
4 10,000 1.67
6 1,000,000 166.67
8 100,000,000 16,666.67
10 10,000,000,000 1,666,666.67

4桁や6桁の数字のみのパスワードは、ATMの暗証番号などでも利用されることがあります。

しかし本条件では、コンピューターによる試行で数分〜数時間で解読可能な水準でとなっており非常に危険なレベルとなります。

実際のATMなどでは、試行回数制限によるロック機能や、防犯カメラ、カードの物理保持など複数の安全措置が取られているため、不正利用がしずらい構成となっています。

一方で、匿名性の高いインターネット上のログインフォームなどでは、こうした制限がない場合、数字のみのパスワードは極めて脆弱となります。

英数字(大文字+小文字+数字)
#

桁数 総パターン数 最大解読時間(分)
6 56,800,235,584 9.47億
8 218,340,105,584,896 3.64兆
10 839,299,365,868,340,224 約1.4京

この結果から桁数が少し増えるだけで、解読にかかる時間が急激に伸びていくことがわかります。

これは、使える文字の種類の増加と、桁数が増えるごとに総パターン数が掛け算形式で増加するためとなります。

パスワードの「長さ」と「複雑さ」がセキュリティ上、極めて重要と言われる理由は、パターン数が指数的に増加するためとなります。

英数字+記号(ASCII記号含む全94文字)
#

桁数 総パターン数 最大解読時間(分)
6 689,869,781,056 1.15億
8 6,095,689,385,410,816 約1.02兆
10 53,861,511,409,489,973,376 約8.98京

さらにパスワードに記号を加えることで、組み合わせの数は急激に増加し、総当たり攻撃に対する耐性が飛躍的に向上します。

このように、記号を含むパスワードは解読にかかる時間が桁違いに長くなり、実質的に総当たり攻撃が現実的でなくなるため、セキュリティの強化に非常に効果的となります。

そのため、多くのインターネット上のサービスでは、記号を含むパスワードの設定が必須条件となっています。

有効な対策
#

パスワードの強化は最も基本的な対策ですが、以下のようなシステム側での対策も合わせて行うことで、より強固なセキュリティを実現することができます。

  • パスワードポリシーの実施
  • アカウントロックアウト機能
  • 二要素認証
  • reCAPTCHAの実装
  • IPアドレス制限

システム側で手軽に実施できるセキュリティ対策としては、Fail2banの導入があります。

Fail2banは、不正アクセスの試行が多発したIPアドレスを自動的にブロックするツールとなります。

関連記事

【初心者向け解説】SELinuxの状態を確認する方法
Linux SELinux セキュリティ
Linux CLIから「Zed Attack Proxy」でセキュリティテストを実行する方法
セキュリティ
cyrus-sasl(サイラスサスル)とは
Linux セキュリティ
SPFレコードのルール(qualifier )を指定する方法
セキュリティ DNS
【コピペ可】インフラエンジニアの為のSQLシート
データベース MySQL SQL
PostfixにおけるSMTPUTF8エラーとは
Postfix メール Linux