認証などで使用されるハッシュ関数の以下の3つの特性についてそれぞれの違いを図を用いてまとめてみました。
- 原像計算困難性(一方向性)
- 第二原像計算困難性(弱衝突耐性)
- 衝突発見困難性(強衝突耐性)
原像計算困難性(一方向性)
原像計算困難性とは一方向性とも言われ、その名の通りハッシュ値から元の入力値を見つけることが困難なことを言います。
第二原像計算困難性(弱衝突耐性)
第二原像計算困難性とはある入力値(A)に対するハッシュ値Aが与えられた時に、そのハッシュ値Aと一致する別の入力値(B)を見つけることが困難なことを言います。
つまりハッシュ値Aはここでは既知であり、その既知のハッシュ値Aから別の入力値Bを求めるのが困難なことを言います。
ここでの入力値Aを第一原像、入力値Bを第二原像と呼びます。そのため第二原像計算困難性と呼ばれています。
衝突発見困難性(強衝突耐性)
衝突発見困難性とはハッシュ値が一致する二つの異なる入力値Aと入力値Bを見つけることが困難なことを言います。
第二原像計算困難性とは異なり、この場合のハッシュ値はなんでもいいです。
まとめ
弱衝突耐性と強衝突耐性の違いは、ハッシュ値が既知かどうかということです。