ハッシュ関数

ハッシュ関数とは、任意長のデータ “x” から、固定長のデータ “h(x)” に変換する関数のことを指す。このハッシュ関数で求められる値をハッシュ値という。

ハッシュ値は人間でいうDNAや指紋に相当し、非常に高い固有性を持っている。フォレンジック業界では、このハッシュ値の同一性をもって、データの改ざんや改変が生じていないことを担保している。

ハッシュ関数には大きな2つの特徴がある。一つはハッシュ関数によって求められた値“h(x)”から“x”を逆算することは非常に困難であるという点。もう一つはたとえ“x” が与えられたとしても、”h(x)=h(y)” となる “y” を求めることが困難である点である。ゆえにハッシュ関数によって求められたハッシュ値は非常に高い固有性を持ち、データの同一性を担保する値となりうる。

ハッシュ関数の代表例としては、MD5、SHA-1、SHA-256などがあるが、MD5は脆弱性が認められており、また日本においては2013年にSHA-1のアルゴリズムにも脆弱性があるとして、SHA-1を電子政府推奨暗号リストから運用監視暗号リスト入りされている。

MD5は異なるデータA・Bから同じハッシュ値を算出する方法は出回っているが、任意のハッシュ値からデータ列を再現することは容易に行えないことから、フォレンジック業界では現状においてもMD5がデータ同一性検証に用いられている。

巡回冗長検査(CRC)はハッシュ値の一種として扱われることもあるが、誤り検出符号の一種であるため、データ改ざんに対する耐性がない。

類義語

  • ハッシュ値
  • Hash値