Secure Hash Algorithm

出典: フリー百科事典『ウィキペディア(Wikipedia)』
SHAから転送)
移動: 案内検索

Secure Hash Algorithm(セキュアハッシュアルゴリズム)、略称SHAエスエイチエーシャー)は、一群の関連したハッシュ関数であり、アメリカ国立標準技術研究所 (NIST) によってアメリカ政府標準のハッシュ関数 Secure Hash Standard (SHS) として採用されている。

概要[編集]

アルゴリズムはMD4を元にしており、MD5よりも攻撃に対して強いと考えられている。

2013年現在、SHAはSHA-0、SHA-1、SHA-2 (SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256)、SHA-3 (SHA3-224、SHA3-256、SHA3-384、SHA3-512)の4種類が存在している。このうちSHA-1、SHA-256、SHA-384、SHA-512は2002年8月のFIPS Publication 180-2の初版に含まれている。SHA-224はChange Notice 1として、2004年2月に同規格に追加された。SHA-512/224、SHA-512/256は2012年のFIPS 180-4で追加された。SHA-3については、2014年4月にNISTがSecure Hash Standard (SHS) とは独立した標準としてSHA-3を含むFIPS 202の草稿を発表している。

もっともよく使われる関数SHA-1でTLS、SSL、PGP、SSH、S/MIME、IPSecなど、さまざまなセキュリティアプリケーションプロトコルに採用されている。 SHA-1は、以前から広範囲に使われているハッシュ関数であるMD5に代わるものであると考えられている。SHAアルゴリズムは国家安全保障局 (NSA) によって開発され、アメリカ政府の標準として発表された。グループのメンバーで1993年にはじめに発表されたものは、公式にはSHAと呼ばれている。しかしその後のものと区別するためにしばしばSHA-0と呼ばれている。2年後、SHAに初めての後継となるSHA-1が発表された。

さらにSHA-224SHA-256SHA-384SHA-512と4つの変形が、増加する出力の範囲とわずかなデザインの違いで2001年に発行されている。2012年に加えられたSHA-512/224SHA-512/256と合わせてそれらはまとめてSHA-2といわれている。

また、SHA-3としてKeccakが、アメリカ国立標準技術研究所 (NIST) が公募した新しいハッシュ関数アルゴリズムとして、2012年10月2日に選出された。

SHA-0、SHA-1ともに、対象とした攻撃(ハッシュ値の強衝突耐性突破)が見つかっているが、SHA-2には攻撃された記事はまだない。「MD5」の「ハッシュの衝突耐性について」の項も参照。

SHA-0[編集]

SHA-0はSHAシリーズの最初の規格である。発表から間もなくして脆弱性が発見されたため、改訂版としてSHA-1が発表された。ハッシュキーの長さは、160ビット= 2160(約 1.4615×1048)通りのハッシュ値をとり、40桁の16進数で表される。

SHA-1[編集]

SHA-1のハッシュキーの長さは、160ビット= 2160(約 1.4615×1048)通りのハッシュ値をとり、40桁の16進数で表される。

SHA-2[編集]

SHA-256、SHA-512は、それぞれ32ビット、64ビットのワードサイズを持ち、出力されるハッシュ値の長さは256ビット、512ビットである。SHA-224、SHA-384はそれぞれSHA-256、SHA-512を切り詰めたものであり、ワードサイズはそれぞれ32ビット、64ビット、出力長はそれぞれ224ビット、384ビットである。SHA-512/224、SHA-512/256はSHA-512を切り詰めたものであり、ワードサイズは64ビット、出力長はそれぞれ224ビット、256ビットである。

SHA-2のハッシュキーの長さは以下の通りである。

  • SHA-224: 224ビット=2224(約 2.696×1067)通りのハッシュ値をとり、56桁の16進数
  • SHA-256: 256ビット=2256(約 1.579×1077)通りのハッシュ値をとり、64桁の16進数
  • SHA-384: 384ビット=2384(約 3.940×10115)通りのハッシュ値をとり、96桁の16進数
  • SHA-512: 512ビット=2512(約 1.341×10154)通りのハッシュ値をとり、128桁の16進数
  • SHA-512/224: 224ビット=2224(約 2.696×1067)通りのハッシュ値をとり、56桁の16進数
  • SHA-512/256: 256ビット=2256(約 1.579×1077)通りのハッシュ値をとり、64桁の16進数

SHA-3[編集]

SHA-3としてKeccakが、アメリカ国立標準技術研究所 (NIST) が公募した新しいハッシュ関数アルゴリズムとして、2012年10月2日に選出された[1]。2014年4月に、FIPS 202として草稿が発表された。

SHA-3は64ビットのワードサイズを持ち、出力されるハッシュ値の長さは224ビット、256ビット、384ビット、512ビットの4種類である。SHA-2と同様、SHA3-224はSHA3-256を、SHA3-384はSHA3-512を切り詰めたものである。

SHA-3のハッシュキーの長さは以下の通りである。

  • SHA3-224: 224ビット=2224(約 2.696×1067)通りのハッシュ値をとり、56桁の16進数
  • SHA3-256: 256ビット=2256(約 1.579×1077)通りのハッシュ値をとり、64桁の16進数
  • SHA3-384: 384ビット=2384(約 3.940×10115)通りのハッシュ値をとり、96桁の16進数
  • SHA3-512: 512ビット=2512(約 1.341×10154)通りのハッシュ値をとり、128桁の16進数

SHAシリーズの比較[編集]

[編集]

アルゴリズムと
バリエーション
出力長 (bits) 内部状態長 (bits) ブロック長 (bits) 最大メッセージ長 (bits) ラウンド数 ビット演算 セキュリティ強度 (bits) パフォーマンスの例 (MiB/s)[2]
MD5(参照) 128 128
(4×32)
512 264 − 1 64 add mod 232, and, or, xor, rot <64(強衝突 335
SHA-0 160 160
(5×32)
512 264 − 1 80 add mod 232, and, or, xor, rot <80(強衝突 -
SHA-1 160 160
(4×32)
512 264 − 1 80 add mod 232, and, or, xor, rot <80(261の試行で理論的に可能)[3] 192
SHA-2 SHA-224
SHA-256
224
256
256
(8×32)
512 264 − 1 64 add mod 232, and, or, xor, shr, rot 112
128
139
SHA-384
SHA-512
SHA-512/224
SHA-512/256
384
512
224
256
512
(8×64)
1024 2128 − 1 80 add mod 264, and, or, xor, shr, rot 192
256
112
128
154
SHA-3 SHA3-224
SHA3-256
SHA3-384
SHA3-512
SHAKE128
SHAKE256
224
256
384
512
d(可変長)
d(可変長)
1600
(5×5×64)
1152
1088
832
576
1344
1088
24 and, xor, not, rot 112
128
192
256
d/2と128のいずれか小さい方
d/2と256のいずれか小さい方

関連項目[編集]

脚注[編集]

  1. ^ NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition”. NIST. 2012年10月2日閲覧。
  2. ^ Crypto++ 5.6.0 Benchmarks”. 2014年1月1日閲覧。
  3. ^ Cryptanalysis of MD5 & SHA-1 (PDF)”. 2014年1月1日閲覧。

外部リンク[編集]