ハッシュ値についてまとめ
投稿日: 更新日:
ハッシュ値とは
ハッシュ関数を利用し任意のデータから求められる固定長の値のことです。「データの指紋」と例えられます。ファイルの改ざん検出、パスワードの保存、デジタル署名などに使われています。
ハッシュ値から元のデータには復号化できないので「暗号化」ではありません。
ハッシュ値の特徴
- 固定長
データの大きさによらず一定の長さです。 - 一方向性
ハッシュ値から元のデータを復元することはできません。 - 入力が異なればハッシュ値も異なる
異なる入力に関しては高確率で異なる値が出力されます。
この3つが特徴としてあげられます。
ハッシュ値を求めるにはハッシュ関数を利用します。MD5、SHA-256など種類があり、ハッシュ値の長さも異なります。
衝突について
衝突・・・異なるデータでハッシュ値が一致すること。
ハッシュ値のパターンは有限なため衝突を起こす場合があります。
SHA-256の場合ハッシュ値の長さはbitより、衝突を起こす確立はです。
です。1無量大数がなので衝突はかなり低い確立であることが分かります。
強衝突耐性と弱衝突耐性
耐性が強い、弱いという意味ではありません。
強衝突耐性・・・「同じハッシュ値になるデータの組」の見つけにくさを言います。
弱衝突耐性・・・「あるデータと同じハッシュ値になるデータ」の見つけにくさを言います。
強衝突耐性とは、ハッシュ値はなんでもいいから同じ値になるデータの組を探すのに対し、弱衝突耐性とは、一致させたいハッシュ値が決まっているのが違いです。
まとめ
ハッシュ値の特徴について分かってもらえたら嬉しいです。衝突耐性と弱衝突耐性は混乱しないよう気をつけてください。
参考文献
結城浩(2015)暗号技術入門 第3版