FE EXAM

ブルートフォース攻撃(総当たり攻撃)

考えられるすべての組合せを総当たりで試してパスワードを破る攻撃。

INTERACTIVE VISUALIZATION
攻撃者
試行
ログイン画面
フェーズ
idle
試行回数
0
突破状況
未突破
シナリオ
ステップ1 / 6
STEP 1/6攻撃が始まる前まだ攻撃は始まっていません。攻撃対象は数字3桁のPIN(=暗証番号)で、正解は伏せられています。ブルートフォース攻撃では、考えられる組合せを最初から1つずつ順番に試していきます。
候補を入力攻撃者総当たり試行ログイン画面* * *待機1,000通り中の進捗
試行回数の見積もり
試行回数 = 文字種 ^ パスワード長
     = 10 ^ 3 = 1,000通り
※桁数が1つ増えるごとに、試行回数は文字種(10倍)に膨らむ
解説

📌
ブルートフォース攻撃とは

攻撃者000001002...ログイン当たるまで試す

ブルートフォース攻撃(総当たり攻撃)とは、考えられるすべての組合せを総当たりで試してパスワードを破る攻撃のことです。ブルートフォース(brute force)は「力ずく」という意味で、頭を使わず端から全部試す点が特徴です。

身近な例で考えると、ダイヤル式の南京錠を000、001、002…と全部回して開けるのと同じです。番号が分からなくても、根気よく全パターンを試せばいつか必ず開きます。人間には骨が折れますが、コンピュータは1秒間に膨大な回数を試せます。

上のツールで▶ボタンを押すと、攻撃者が000から順に候補を入力し、正解と一致するまで試行回数を積み上げていく流れを確認できます。

⚙️
攻撃の仕組み

3桁 → 10^3 = 1000通り0-9×0-9×0-9=1000桁が増えるほど組合せが爆発

ブルートフォースは、システムが「入力が正解かどうかを判定してくれる」ことを利用します。攻撃者は当たり外れを考えず、ただ全候補を順に入力するだけで、いつかは正解にたどり着きます。

試行回数は次の式で見積もれます。
試行回数 = 文字種 ^ パスワード長
・数字3桁なら 10^3 = 1,000通り
・英小文字4桁なら 26^4 = 約46万通り
・英数字記号8桁なら膨大で、現実的な時間では破れない

ポイントは、桁数が1つ増えるだけで試行回数が文字種の倍数で膨らむ(指数的に増える)ことです。だから「短いパスワードは危険、長いパスワードは安全」と言われます。上のツールの進捗バーで、全1000通りのうちどこまで進んだかを確認してみてください。

🛡️
対策(アカウントロック等)

連続失敗5回失敗でロック🔒試行を打ち切り守られる

ブルートフォースは「当たるまで何度でも試す」攻撃なので、対策は試行を増やしにくくする・試行を途中で止める方向で考えます。

主な対策は次のとおりです。
アカウントロック:一定回数(例:5回)連続で失敗したら、一時的にログインを止める。総当たりを途中で打ち切れる
長く複雑なパスワード:文字種を増やし桁数を長くして、組合せを爆発的に増やす
多要素認証(MFA):パスワードに加えてスマホの確認コードなど別の要素も求め、パスワードだけでは突破できなくする
ログイン試行の監視:短時間に大量の失敗があれば検知して警告・遮断する

南京錠でいえば、「何回か間違えたら一定時間ダイヤルが回せなくなる」仕組みを足すイメージです。これだけで、総当たりは現実的に成立しなくなります。なお、辞書攻撃のように「ありがちな単語」を狙う攻撃もあるため、推測されやすい単語を避けることも大切です。

📌
ブルートフォース vs 辞書攻撃

全パターンか・よく使う単語かブルートフォース000,001…全パターン必ずいつか当たる時間がかかる辞書攻撃password,1234…よく使う単語を試す少ない試行で当たりやすいどちらも「パスワードを総当たりで推測」する点は同じ

ブルートフォース攻撃と似た攻撃に辞書攻撃があります。2つの違いを整理しましょう。
ブルートフォース(総当たり)000から始まってすべての組み合わせを順に試す。必ずいつか当たるが、時間がかかる
辞書攻撃password12345qwertyなど、人がよく使いそうな単語の一覧(辞書)から試す。ヒットすれば少ない試行で突破できる

なぜ2種類必要なのか。「よく使われる単語」だけを狙う辞書攻撃は、弱いパスワードに対して非常に速く動作します。でも、完全にランダムなパスワードには歯が立ちません。そこで、辞書攻撃が失敗したあとにブルートフォースで全パターンを試すという使い分けがされます。

どちらにも共通する対策は「推測されにくい長いパスワード」と「アカウントロック」です。辞書攻撃を防ぐには辞書に載っていない組み合わせを使う、ブルートフォースを防ぐには桁数を長くして試行回数を現実的でない数まで増やすことが有効です。

📌
なぜ長いパスワードが安全なのか

桁数が1増えると試行回数が文字種倍に膨らむ3桁(数字)1,000通り4桁(数字)10,000通り5桁100K通り1桁増えるたびに10倍(数字の場合)

なぜ桁数を増やすだけで安全になるのか。試行回数の計算式を思い出してください。試行回数 = 文字種 ^ パスワード長です。桁数(パスワード長)が増えると、試行回数は指数的(べき乗で)に増えます

数字だけのパスワードで比べると、次のようになります。
3桁10^3 = 1,000通り(コンピュータで一瞬)
4桁10^4 = 10,000通り(1桁増えただけで10倍)
英数字混在8桁62^8 ≒ 218兆通り(現実的な時間では破れない)

さらに記号を加えると文字種が増え、組み合わせはさらに爆発的に増えます。たとえば記号を含む94種類の文字を使うと、8桁で約94^8 ≒ 6京(6,000兆)通りになります。「長く、文字種が多い」パスワードほど、ブルートフォースを無力化できる理由がここにあります。

練習問題

🎯
基本情報技術者 練習問題

Q1.ブルートフォース攻撃の説明として最も適切なものはどれか。
A.考えられるすべての組合せを総当たりで試してパスワードを破る攻撃
B.大量アクセスでサービスを停止させる攻撃
C.よく使われる単語の一覧を使って推測する攻撃
D.通信を盗聴して内容を読み取る攻撃
Q2.英数字(62種類)8文字のパスワードに対する総当たりの試行回数を表す式はどれか。
A.62 × 8
B.8 ^ 62
C.62 ^ 8
D.62 + 8
Q3.ブルートフォース攻撃への対策として適切なものはどれか。
A.パスワードを短く単純にする
B.一定回数連続で失敗したらアカウントをロックする
C.誰でも何回でもログインを試せるようにする
D.ログイン履歴を一切残さない

関連コンテンツ