メインコンテンツへ
セキュリティセキュリティ実践

レインボーテーブル攻撃への対策としてソルト(salt)を使用する目的として、最も適切なものはどれか。

ア.パスワードをより長くすることで、ハッシュ計算にかかる時間を増やし攻撃を困難にする。
イ.同じパスワードでも利用者ごとに異なるランダム値を付加してハッシュ化することで、事前計算済みハッシュテーブルを使った攻撃を無効にする。正解
ウ.パスワードを暗号化するための共通鍵として機能し、復号時に使用する。
エ.ソルトを秘密にすることでハッシュ値自体が漏洩しても元のパスワードが推測できなくなる。

解説

レインボーテーブルは「ハッシュ→パスワード」の逆引き辞書。ソルトは「同じ材料でも毎回違う料理を作る隠し調味料」で、辞書を丸ごと無意味にします。

なぜ イ が正解か

イが正解。レインボーテーブルは「パスワード→ハッシュ値」を大量に事前計算したテーブルで、ハッシュ値から逆引きしてパスワードを特定する。ソルトはユーザーごとに異なるランダム文字列をパスワードに付加してハッシュ化するため、同じパスワード「password」でも生成されるハッシュが全員異なる。事前計算テーブルが役に立たなくなる。

なぜ ア は間違いか

ソルトはパスワードを長くするものではなく、パスワードに付加するランダム値。計算時間を増やすのはbcryptなどのストレッチング(key stretching)の目的。ソルトとは別の対策。

なぜ ウ は間違いか

ソルトは暗号化の鍵ではない。ハッシュ関数は一方向変換であり復号しない。ソルトはハッシュ入力の多様化が目的であり、暗号鍵とは根本的に異なる概念。

なぜ エ は間違いか

ソルトは通常、ハッシュ値とともにデータベースに平文で保存される。秘密にする必要はなく、ソルトの価値は「ユーザーごとに異なること」であり、秘匿性ではない。

出典: AI生成問題(学習用)