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

ハッシュ関数の誕生日攻撃(衝突探索)において、n ビットのハッシュ値で衝突を見つけるのに必要な試行回数の期待値として最も適切なものはどれか。

ア.2ⁿ回
イ.n²回
ウ.n回
エ.2ⁿ/²回正解

解説

誕生日攻撃は「クラスに何人いれば2人が同じ誕生日?」問題の暗号版。全探索空間2ⁿのうち平方根(2ⁿ/²)試行するだけで衝突が期待できる——だから128ビットでも実質64ビット分の強度しかない。

なぜ エ が正解か

エが正解。誕生日問題(Birthday Paradox)により、サイズNの集合からランダムに選んだ要素が衝突する期待試行回数はO(√N)。nビットのハッシュ値の全体空間はN=2ⁿ。衝突探索の期待試行回数=√(2ⁿ)=2ⁿ/²回。例:MD5(128ビット)の衝突探索は2⁶⁴回、SHA-256(256ビット)は2¹²⁸回で期待できる。

なぜ ア は間違いか

2ⁿ回。これは原像攻撃(特定ハッシュ値を持つメッセージを探す)の計算量。衝突探索は誕生日攻撃により2ⁿ/²で済む。

なぜ イ は間違いか

n²回。ビット長の二乗を試行回数とした誤り。探索空間は2ⁿであり、nの多項式ではなく指数関数。n=128なら n²=16,384 だが、実際の衝突探索は2⁶⁴≈1.8×10¹⁹回必要。

なぜ ウ は間違いか

n回。ビット長そのものを試行回数と誤った選択肢。指数的な探索空間を線形で表現した誤解。

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