セキュリティ
誕生日問題(birthday problem)のハッシュ衝突への応用に関する記述として、最も適切なものはどれか。
ア.nビットのハッシュ関数で衝突確率が50%を超えるのに必要なメッセージ数は、約2^n個である。
イ.nビットのハッシュ関数で衝突確率が50%を超えるのに必要なメッセージ数は、約n/2個である。
ウ.nビットのハッシュ関数で衝突確率が50%を超えるのに必要なメッセージ数は、約2^(n/2)個であり、128ビットハッシュの場合約2^64個のメッセージで衝突が期待できる。正解
エ.ハッシュの衝突確率は使用するメッセージ数に比例して線形に増加し、2^n個を超えると初めて衝突が発生する。
解説
誕生日のパラドックスは「クラスに23人いれば同じ誕生日の人がいる確率は50%超」という驚き。365日から366人必要と思いがちですが半分以下で済む。これと同じ原理でハッシュも「全空間の平方根(2^(n/2))」で衝突が期待できます。
なぜ ウ が正解か
ウが正解。誕生日問題より、N種類の値がある空間で衝突確率が50%を超えるのに必要なサンプル数は約√N個。nビットハッシュはN=2^n個の異なるハッシュ値を持つため、衝突が50%以上になるメッセージ数 ≈ √(2^n) = 2^(n/2)個。128ビットハッシュ:2^(128/2) = 2^64 ≒ 1.8×10^19個で衝突50%。このため誕生日攻撃に対してはn/2ビットのセキュリティ強度しか持たないとされる。
出典: AI生成問題(学習用)