SHA-2 【Secure Hash Algorithm 2】
概要
SHA-2(Secure Hash Algorithm 2)とは、任意の長さの原文から特徴的な固定長のハッシュ値を算出するハッシュ関数(要約関数)の標準規格の一つ。SHA-1の後継規格で、ハッシュ値の長さは224ビット、256ビット、384ビット、512ビットから選べる。ハッシュ関数とは
ハッシュ関数は任意の長さの入力データを元に数十バイト程度までの短い固定長のデータを算出する関数で、同じ入力値からは必ず同じ値が得られる一方、わずかでも入力値が異なるとまったく違う出力値になる。
SHA-2はいわゆる「暗号学的ハッシュ関数」の一つで、出力値には規則性がなく、計算過程に逆算困難な一方向関数を含むため、ハッシュ値から入力値を割り出したり、同じハッシュ値となる別の入力値を生成するのは容易ではない。
データの伝送や複製を行なう際、入力側と出力側でハッシュ値を求めて照合すれば同一性を簡単に確認でき、途中でデータの改竄や欠落、破損などが起こっていないことが分かる。また、暗号や認証、デジタル署名などの要素技術として様々な場面で利用されている。
SHA-2とは
SHA-2はNSA(米国家安全保障局)が考案し、2001年にNIST(米国標準技術局)によって連邦情報処理標準の一つ(FIPS 180-4)として標準化された。1995年に標準化されたSHA-1(160ビット)の後継規格である。民間や米国外でも広く利用されており、日本のCRYPTRECやヨーロッパのNESSIEなどでも推奨される暗号技術の一つとして選定されている。
SHA-224、SHA-256、SHA-384、SHA-512の4種類があり、これらの末尾の数字がそれぞれが出力するハッシュ値のビット長を表している。計算の過程自体は概ね同じである。SHA-512/224、SHA-512/256というバリエーションもあり、SHA-512の算出値を224ビットおよび256ビットに切り詰めたものである。最長のSHA-512が最も安全性が高く、一般的にはSHA-256が最もよく利用されている。
2005年頃からSHA-1に対する効率的な攻撃手法がいくつか発見され十分な安全が保てなくなってきたため、これまでSHA-1を利用してきたSSL/TLSなどの技術やソフトウェアではSHA-2への移行が進められている。2015年には後継の「SHA-3」が策定されているが、現在でもSHA-2は十分な安全性を確保しているとされる。