ハッシュ衝突 | 応用情報技術者試験
ハッシュ衝突とは
ハッシュ衝突とは、異なるデータ(入力値)をハッシュ関数と呼ばれる計算式に通した結果、偶然にも「全く同じハッシュ値(出力されるコード)」が生成されてしまう現象のことです。
ハッシュ関数は、どんな長さのデータからも、固定された短い長さ of ランダムな値(ハッシュ値)を作り出す便利な仕組みです。しかし、入力できるデータのパターンは無限にあるのに対し、出力されるハッシュ値のパターンは有限であるため、異なるデータから同じハッシュ値が生まれる可能性(衝突)はゼロにはできません。ハッシュ衝突が起きると、データの検索でエラーになったり、セキュリティ上の脆弱性に繋がったりするため、衝突したデータを別の場所に格納する仕組み(オープンアドレス法やチェイン法)が必要になります。
具体例
会員制のWebサイトで、ユーザーIDを元に特定の「ロッカー(ハッシュ値に対応する保存場所)」を割り当てるシステムを考えます。「田中さん」と「鈴木さん」という異なる名前の2人が登録した際、ハッシュ計算によって2人とも「15番のロッカー」が指定されてしまうのがハッシュ衝突です。この場合、15番にすでに荷物があるため、システムは「隣の16番に入れる(オープンアドレス法)」などの対策をとります。
もう少し詳しく