Skip to the content.

DS検定トップ > レインボーテーブル攻撃とは?(ソルトとの関係)【DS検定】

まず結論

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

直感的な説明

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

答えはシンプルです。

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

例えば:

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

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

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

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

定義・仕組み

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

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

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

ポイントは、

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

という点です。

どんな場面で使う?

攻撃側の場面

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

防御側の対策

  • ソルトを使う
  • ストレッチングを使う
  • 安全なハッシュ関数を使う(例:bcrypt, Argon2)

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

ソルトがあれば、

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

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

よくある誤解・混同

① 総当たり攻撃との違い

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

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

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

② ソルトとの関係

DS検定では

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

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

正しくは:

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

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

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

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

まとめ(試験直前用)

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

対応スキル項目(AI利活用スキルシート)

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

🔗 関連記事


🏠 DS検定トップに戻る