---
title: "ブルートフォース攻撃とは？総当たり・辞書攻撃・暗号解読法の違い【基本情報技術者試験】"
description: "ブルートフォース攻撃を「考えられる鍵やパスワード候補をすべて試す総当たり攻撃」として整理し、辞書攻撃、線形解読法、差分解読法、オンライン攻撃とオフライン攻撃、代表的な対策をFE試験向けに解説します。"
last_modified_at: "2026-07-20"
canonical_url: "https://stemtazoo.github.io/fe/brute-force-attack/"
section: "fe"
---

## まず結論

ブルートフォース攻撃とは、**考えられる鍵やパスワードの候補を、順番にすべて試す攻撃**です。

日本語では、**総当たり攻撃**と呼ばれます。

基本情報技術者試験では、次の表現が出たらブルートフォース攻撃を疑います。

```text
すべての候補を試す
一つずつ順番に試す
総当たり
全探索
```

判断基準は次の一文です。

> **候補を絞るのではなく、可能性のあるものを全部試すならブルートフォース攻撃。**

## 直感的な説明

番号式の南京錠を考えると分かりやすいです。

3桁の暗証番号なら、候補は次のように並びます。

```text
000
001
002
003
...
999
```

正しい番号が分からなくても、最初から順番に全部試せば、いつかは正しい番号に当たります。

暗号鍵やパスワードでも考え方は同じです。

```text
候補1を試す
候補2を試す
候補3を試す
...
正しい候補が見つかるまで続ける
```

ブルートフォース攻撃は、暗号方式の数学的な弱点を見つけなくても実行できます。

必要なのは、**候補を大量に試すための時間と計算能力**です。

## 定義・仕組み

ブルートフォース攻撃では、候補空間の中から正しい鍵やパスワードを探します。

候補数は、使用できる文字の種類と文字数によって大きく変わります。

例えば、数字だけの4桁なら候補数は次のとおりです。

```text
10種類 × 10種類 × 10種類 × 10種類
＝ 10^4
＝ 10,000通り
```

英数字を使える8文字のパスワードなら、候補数は一気に増えます。

```text
候補数
＝ 使用できる文字種類数 ^ 文字数
```

そのため、一般に次のような傾向があります。

| 条件 | ブルートフォース攻撃への強さ |
|---|---|
| 文字数が短い | 弱い |
| 使用文字の種類が少ない | 弱い |
| 文字数が長い | 強い |
| 大文字・小文字・数字・記号を組み合わせる | 強くなりやすい |

ただし、単に文字種類を増やすだけでなく、十分な長さを確保することが重要です。

## 科目Aでどう出る？

科目Aでは、攻撃方法の説明を選ぶ問題として出題されやすいです。

次のように切り分けます。

| 問題文・選択肢の表現 | 攻撃方法 |
|---|---|
| すべての鍵候補を一つずつ試す | ブルートフォース攻撃 |
| よく使われる単語や既知の候補を試す | 辞書攻撃 |
| 線形的な関係や近似を利用する | 線形解読法 |
| 平文の差と暗号文の差の関係を見る | 差分解読法 |
| 関係する鍵や統計的特徴を利用する | 関連鍵攻撃など |

特に、ブルートフォース攻撃の決め手は次の表現です。

```text
全候補を試す
総当たりで調べる
可能な組合せを順番に確認する
```

一方、暗号の性質や統計的な関係を利用して鍵を絞り込む説明なら、ブルートフォース攻撃ではありません。

## オンライン攻撃とオフライン攻撃

ブルートフォース攻撃は、実行する場所によって考え方が変わります。

| 種類 | 特徴 |
|---|---|
| オンライン攻撃 | 実際のログイン画面や認証サーバに対して試す |
| オフライン攻撃 | 入手した暗号文やパスワードハッシュを手元で解析する |

オンライン攻撃では、次の対策が効きやすいです。

- 一定回数の失敗でアカウントをロックする
- 試行回数を制限する
- CAPTCHAを使う
- 多要素認証を使う

一方、オフライン攻撃では、攻撃者が手元の環境で何度でも候補を試せるため、試行回数制限は効きません。

この場合は、次の対策が重要です。

- 十分に長いパスワード
- ソルト付きハッシュ
- 反復回数の多いパスワードハッシュ方式
- 漏えいを前提にした多要素認証

## どんな場面で使われる？

ブルートフォース攻撃は、次のような場面で使われます。

```text
暗号鍵の探索
ログインパスワードの推測
暗証番号の試行
パスワードハッシュの解析
```

実務では、オンラインで無制限に試せることは少なくなっています。

そのため、実際には次のような組合せで攻撃されることがあります。

- 辞書攻撃で有力候補を先に試す
- ルールベースで文字を変形する
- その後にブルートフォースで残りを試す

つまり、攻撃者は必ずしも最初から完全な総当たりをするとは限りません。

試験では、**候補の選び方が網羅的か、よく使われる候補に限定しているか**を見ます。

## よくある誤解・混同

### 誤解1：辞書攻撃とブルートフォース攻撃は同じ

どちらも候補を試す攻撃ですが、候補の作り方が違います。

| 攻撃 | 試す候補 |
|---|---|
| ブルートフォース攻撃 | 可能な組合せを網羅的に試す |
| 辞書攻撃 | よく使われる単語やパスワード候補を試す |

```text
0000から9999まで全部試す
→ ブルートフォース攻撃

password、admin、123456などを試す
→ 辞書攻撃
```

### 誤解2：ブルートフォース攻撃は暗号方式の欠陥を利用する

ブルートフォース攻撃は、暗号方式の欠陥がなくても実行できます。

暗号方式が安全でも、鍵が短すぎれば、総当たりで見つけられる可能性があります。

公開鍵と秘密鍵の役割や、共通鍵暗号方式との違いは、[公開鍵暗号方式とは？](https://stemtazoo.github.io/fe/public-key-cryptography/)で整理しています。

### 誤解3：長いパスワードなら必ず安全

長いパスワードでも、推測されやすい単語や規則的な文字列だけでは、辞書攻撃やルールベース攻撃に弱いことがあります。

```text
passwordpassword
1234567890123456
```

長さだけでなく、使い回しを避けることや多要素認証も重要です。

### 誤解4：アカウントロックですべて防げる

アカウントロックはオンライン攻撃には有効です。

しかし、漏えいしたパスワードハッシュを攻撃者が手元で解析するオフライン攻撃には効きません。

### 暗号解読法との違い

| 方法 | 中心となる考え方 |
|---|---|
| ブルートフォース攻撃 | 全候補を試す |
| 線形解読法 | 線形的な関係や近似を利用する |
| 差分解読法 | 入力差と出力差の関係を分析する |

試験では、次の一文で切り分けると分かりやすいです。

> **全部試すならブルートフォース、暗号の性質を分析するなら暗号解読法。**

## まとめ（試験直前用）

- ブルートフォース攻撃は、可能な鍵やパスワード候補をすべて試す総当たり攻撃
- 判断ワードは「すべての候補」「一つずつ試す」「総当たり」「全探索」
- 辞書攻撃は、よく使われる単語や有力候補を試す
- 鍵長やパスワード長が短いほど、総当たりに弱くなる
- オンライン攻撃には試行回数制限やアカウントロックが有効
- オフライン攻撃には、長いパスワード、ソルト、強いハッシュ方式、多要素認証が重要

試験直前には、次の一文を思い出してください。

> **候補を絞らず、可能性のあるものを全部試すならブルートフォース攻撃。**
