ds security design
DS検定トップ
> レインボーテーブル攻撃とは?(ソルトとの関係)【DS検定】
まず結論
レインボーテーブル攻撃とは、事前に計算しておいたハッシュ値の一覧を使って、元のパスワードを推測する攻撃手法です。
DS検定では「なぜソルトが必要か」を判断させる文脈で問われることが多いです。
直感的な説明
ハッシュ関数は元に戻せません。
ではどうやって破るのか?
答えはシンプルです。
よく使われるパスワードを先に全部ハッシュ化して保存しておく。
例えば:
- 123456 → ハッシュ値A
- password → ハッシュ値B
- qwerty → ハッシュ値C
この対応表(巨大な辞書)が「レインボーテーブル」です。
もしデータベースから漏れたハッシュ値が「A」だったら、 表を見れば「123456」と分かります。
つまり、 逆算ではなく“照合”で破る攻撃です。
定義・仕組み
レインボーテーブル攻撃は、
- よく使われるパスワード候補を大量に用意
- それらを事前にハッシュ化
- ハッシュ値と元のパスワードの対応表を作る
- 漏えいしたハッシュ値と照合する
という流れで行われます。
ポイントは、
- 毎回計算しなくてよい
- 事前計算済みなので高速
という点です。
どんな場面で使う?
攻撃側の場面
- パスワードデータベースが漏えいした場合
- ソルトが使われていない場合
防御側の対策
- ソルトを使う
- ストレッチングを使う
- 安全なハッシュ関数を使う(例:bcrypt, Argon2)
特に重要なのはソルトです。
ソルトがあれば、
同じパスワードでも ユーザーごとに違うハッシュになります。
つまり、
事前に作った表が使えなくなります。
よくある誤解・混同
① 総当たり攻撃との違い
❌ レインボーテーブル攻撃=総当たり攻撃
⭕ 事前計算している点が違う
総当たりは毎回計算します。
レインボーテーブルは「先に計算しておく」。
ここが判断ポイントです。
② ソルトとの関係
DS検定では
- 「ソルトは暗号化のため」
- 「ソルトは計算を重くする」
といった選択肢が出やすいです。
正しくは:
- ソルトはレインボーテーブル対策
- 計算を重くするのはストレッチング
③ ハッシュが不可逆なら安全という誤解
不可逆でも、 照合されれば意味がありません。
不可逆=絶対安全
ではない点が重要です。
まとめ(試験直前用)
- レインボーテーブル=事前計算済みハッシュ辞書
- 逆算ではなく照合攻撃
- ソルトがあれば無効化できる
- 計算を重くするのはストレッチング
- 「事前計算」という言葉があれば正解方向
対応スキル項目(AI利活用スキルシート)
- AIを支えるデータと技術の理解
- セキュリティ・リスク理解
★ AI・データ活用に伴うセキュリティリスクを理解している
★ データの適切な管理・保護の重要性を理解している
🔗 関連記事
- アクセス制御リスト(ACL)とは?ファイル権限の基本を整理【DS検定】
- 中間層で使用される活性化関数とは?(ReLU・シグモイド・ソフトマックスの違い)【DS検定】
- アジャイル開発とは?ウォーターフォール開発との違いを整理【DS検定】
- 分析アプローチ設計とは?(分析プロジェクトを成功させる設計プロセス)【DS検定】
- 必要なデータ・分析手法・可視化を適切に選択する力とは?【DS検定】