---
title: "レインボーテーブル攻撃とは？（ソルトとの関係）【DS検定】"
description: "レインボーテーブル攻撃とは、事前に計算しておいたハッシュ値の一覧を使って、元のパスワードを推測する攻撃手法です。DS検定で問われる定義、具体例、似た概念との違い、選択肢の見分け方を整理します。主要な混同パターンや実務での読み取り方も確認します。"
canonical_url: "https://stemtazoo.github.io/ds/rainbow-table-attack/"
section: "ds"
---

<div style="font-size: 14px; margin-bottom: 12px;">
  <a href="/ds/">DS検定トップ</a>
  ＞ レインボーテーブル攻撃とは？（ソルトとの関係）【DS検定】
</div>

## まず結論

レインボーテーブル攻撃とは、**事前に計算しておいたハッシュ値の一覧を使って、元のパスワードを推測する攻撃手法**です。  
DS検定では「なぜソルトが必要か」を判断させる文脈で問われることが多いです。


## 直感的な説明

ハッシュ関数は元に戻せません。  
ではどうやって破るのか？

答えはシンプルです。

> よく使われるパスワードを先に全部ハッシュ化して保存しておく。

例えば：

- 123456 → ハッシュ値A
- password → ハッシュ値B
- qwerty → ハッシュ値C

この対応表（巨大な辞書）が「レインボーテーブル」です。

もしデータベースから漏れたハッシュ値が「A」だったら、
表を見れば「123456」と分かります。

つまり、
**逆算ではなく“照合”で破る攻撃**です。


## 定義・仕組み

レインボーテーブル攻撃は、

1. よく使われるパスワード候補を大量に用意
2. それらを事前にハッシュ化
3. ハッシュ値と元のパスワードの対応表を作る
4. 漏えいしたハッシュ値と照合する

という流れで行われます。

ポイントは、

- 毎回計算しなくてよい
- 事前計算済みなので高速

という点です。


## どんな場面で使う？

### 攻撃側の場面

- パスワードデータベースが漏えいした場合
- ソルトが使われていない場合

### 防御側の対策

- ソルトを使う
- ストレッチングを使う
- 安全なハッシュ関数を使う（例：bcrypt, Argon2）

特に重要なのはソルトです。

ソルトがあれば、

同じパスワードでも
ユーザーごとに違うハッシュになります。

つまり、  
**事前に作った表が使えなくなります。**


## よくある誤解・混同

### ① 総当たり攻撃との違い

❌ レインボーテーブル攻撃＝総当たり攻撃  
⭕ 事前計算している点が違う

総当たりは毎回計算します。  
レインボーテーブルは「先に計算しておく」。

ここが判断ポイントです。


### ② ソルトとの関係

DS検定では

- 「ソルトは暗号化のため」
- 「ソルトは計算を重くする」

といった選択肢が出やすいです。

正しくは：

- ソルトはレインボーテーブル対策
- 計算を重くするのはストレッチング


### ③ ハッシュが不可逆なら安全という誤解

不可逆でも、
照合されれば意味がありません。

不可逆＝絶対安全  
ではない点が重要です。


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

- レインボーテーブル＝事前計算済みハッシュ辞書
- 逆算ではなく照合攻撃
- ソルトがあれば無効化できる
- 計算を重くするのはストレッチング
- 「事前計算」という言葉があれば正解方向


## 対応スキル項目（AI利活用スキルシート）

- AIを支えるデータと技術の理解
- セキュリティ・リスク理解  
★ AI・データ活用に伴うセキュリティリスクを理解している  
★ データの適切な管理・保護の重要性を理解している

<hr>

<div style="margin-top: 16px;">
  🏠 <a href="/ds/">DS検定トップに戻る</a>
</div>
