ダイジェストアルゴリズム

ダイジェストアルゴリズム (ハッシュ関数)には,入力データの変換処理にブロック暗号を用いる方法と換字と置換を繰り返す専用のアルゴリズムを用いる方法とがある.前者の方法は ISO で標準化されているが,ブロック暗号として何を用いるかは規定されていない.後者の代表的なハッシュ関数には,以下に概要を示す SHA がある (ハッシュ関数の種類). SHA は,米国の標準技術研究所 (NIST)によって政府標準のハッシュ関数 Secure Hash Standard (SHS) として採用されているものである.

SHA には,生成するビット長が異なる SHA-1 (160ビット),SHA-224,SHA-256,SHA-384,SHA-512 の 5種類がある.このうち SHA-224 以外は 2002年8月の FIPS Publication 180-2の初版に含まれている.SHA-224 は 2004年2月に同規格に追加されている.SHA-224,SHA-256,SHA-384,SHA-512 は,まとめて SHA-2 と言われている.

SHA-1 は,以前から広範囲に使われていたハッシュ関数である MD5 に代わるものとして現在も広く使われているが,SHA-1 に対する攻撃(ハッシュ値の強衝突耐性突破)が見つかっていることから,現在では SHA-2 への移行が推奨されている.

また,ハッシュ関数に対する攻撃の進展に対応するため,SHA-2 の次の世代のハッシュ関数アルゴリズムが 2007年より NIST により公募され,2012年10月 SHA-3 として選定された (SHA-3 アルゴリズム).但し,SHA-2 を置き換える位置付けではなく,補完的,バックアップ的位置付けである.すなわち,当面 SHA-2 でも問題がないという判断である.

SHA-1

SHA-2

SHA-2 は.SHA-224,SHA-256,SHA-384,SHA-512 の総称であり.ハッシュ長は順に 224ビット,256ビット,384ビット,512ビットである.

これらのハッシュ関数は,ハッシュ長の違いよりむしろ利用環境でのCPU基本演算系の違いを意識したものである.32ビット演算系での利用を前提とする場合には SHA-224 と SHA-256 を,64ビット演算での利用を前提とする場合には SHA-384 と SHA-512 を使うことが想定されている(SHA-256は 32ビット単位の処理,SHA-512 は64ビット単位の処理). SHA-224 と SHA-384 は,それぞれ SHA-256 または SHA-512 と同様の演算をした後に,それらのハッシュ値の一部(下位32ビットまたは 128ビット)を切り捨てる形でハッシュ長を短くしている.そのため,処理性能的には SHA-224 と SHA-256,SHA-384 と SHA-512 はそれぞれ同等である.

NIST は 2012年3月に FIPS PUB 180-4 において,SHA-2ファミリーとして SHA-512/224 と SHA-512/256 を追加している.これらは,SHA-2ファミリーの一つである SHA-384 と同じ考え方で作られたアルゴリズムで,SHA-512 をベースに計算したのちハッシュ長としてそれぞれ 224ビット,256ビットに切り出すハッシュ関数である.64ビットCPUで高速に演算できるように作られている SHA-512 を使って 224ビットや 256ビットのハッシュ関数を新たに作るアルゴリズムであり,主流となりつつある 64ビットCPU向けに SHA-2ファミリーの環境を拡充したものと言える.

inserted by FC2 system