SHA-1

読み:エスエイチエイワン
外語:SHA-1: Secure Hashing Algorithm 1
品詞:名詞

一方向ハッシュ関数の一つ。同一性確認(改竄されてないことの確認)や認証などに利用されている。

原文の長さなどに関係なく、160ビットの固定長データ列を生成する。

1996(平成8)年に有名な一方向ハッシュ関数MD5に弱点が発見されたため、NSAが[/TECH/NIST]]用にSHS(Secure Hash Standard)を考案し、この修正版が1994(平成6)年にSHAとなった。

更に1995(平成7)年にこの修正版が公表されSHA-1と呼ばれている。

このような経緯から、現在NISTの推奨する標準となっていて、この仕様はFIPS PUB 180-1として規定されている。

このハッシュ値には、MD5と同様に次のような特徴がある。

  • ハッシュ値から原文を得ることはできない
  • 異なる原文から同一のハッシュ値が得られる可能性は非常に低い
  • 僅かな原文の差でも、出力されるハッシュ値は大きく異なったものになる

また、MD5と比較し、次のメリットがある。

  • ハッシュ値が160ビットに拡張された

クラッキング

ラウンド数80回のフルスペックSHA-1は、Brute force attack(総当たり攻撃)においては、280回の演算が必要である。

しかし2005(平成17)年、支那の研究チームにより、ラウンド数80回のSHA-1を269回の演算で、ラウンド数58回のSHA-1を233回の演算で、衝突を発生させることが可能とされた。

この時点では、ある程度効率的な攻撃方法が見つかったという段階であり、具体的に衝突を起こす例が求まったわけではないが、SHA-1の安全性が大幅に低下したことは間違いがない。

NISTの対応

そこで、国立標準技術研究所(NIST)は、SHA-1に更に大きな問題が生じるより前に、対策を講じることにした。

SHA-1の新規の採用は縮小し、2010(平成22)年までにSHA-2、より具体的にはそのうちのSHA-256へと移行する、としている。

ただ、移行先がMD5やSHA-1の延長上にあるSHA-2で本当に良いのかという議論はあり、DESに対するAES選定と同じように新規のハッシュ関数を公募すべきではないか、という意見も少なくない。