Secure_Hash_Algorithm
[Wikipedia|▼Menu]
.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}

「SHA」はこの項目へ転送されています。その他の用法については「SHA (曖昧さ回避)」をご覧ください。

Secure Hash Algorithm(セキュアハッシュアルゴリズム)、略称SHAは、一群の関連した暗号学的ハッシュ関数であり、アメリカ国立標準技術研究所(NIST)によって標準のハッシュ関数Secure Hash Standardに指定されている。
概要

(2017年現在)SHA-0、SHA-1SHA-2SHA-3の4種類(ないし、SHA-0はSHA-1に含めて3種類)に大別される。SHA-2まではMD5などと同じ Merkle?Damgard construction(en:Merkle?Damgard construction)のバリエーションと言える構造だが、SHA-3 は全く別の構造となっている。SHA-2 以降はハッシュサイズを大きくしたバリエーションが用意されており、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、SHAKE128、SHAKE256 がある。

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については、2015年8月にNISTがSecure Hash Standard (SHS) とは独立した標準としてSHA-3を含むFIPS 202を発行した[1]

SHA-0およびSHA-1が最も古く、(さらにそれ以前のMD5を置き換えて)以前はTLSSSLPGPSSHS/MIMEIPSecなど、さまざまなアプリケーションソフトウェアプロトコルに採用されていたが、2004年のCRYPTO2004におけるXiaoyun Wang(王小雲)らの発表以降、広く知られるようになった研究の進展により、2017年2月には実際に衝突攻撃の成功が示されている。よって、2017年初頭の段階でこれらを情報セキュリティの目的で使用しているのは無謀である。

SHA-2までは国家安全保障局 (NSA) によって開発された。

1993年に発表された最初のものは、公式には単にSHAと呼ばれていた。しかし現在は、その後のものと区別するためにもっぱらSHA-0と呼ばれている。1995年に弱点を修正したSHA-1が発表された。

SHA-2は、Merkle?Damgard construction を採用している点は同じだが、SHA-1 とは異なり、2020年の時点で有望な攻撃法は発表されていない。2001年に発行されたのは SHA-224、SHA-256、SHA-384、SHA-512という4種類のバリエーションで、2012年には SHA-512/224、SHA-512/256 も加えられた。

SHA-3は、これまでのものとは異なりアメリカ国立標準技術研究所 (NIST) による公募によるもので、Keccakが新しいハッシュ関数として選出された。前述のCRYPTO2004によってMerkle?Damgard constructionそのものが不安視されたことから別の構造を採用しているが、前述のようにSHA-2への攻撃は進展しなかったため、SHA-3の普及はほとんど進んでいない。

MD4とMD5は、前述のCRYPTO2004によって衝突の実例が示された。SHA-0はそれらより強いことが期待されていたハッシュ関数であったが、同様に衝突の実例が示された。SHA-1は修正版であるため、それらよりは強かったものの有効な攻撃法の研究が2004年から発展し、2017年には衝突の実例が示された。
SHA-0詳細は「SHA-1#SHA-0」を参照

SHA-0はSHAシリーズの最初の規格である。発表から間もなくして欠点が発見された。ハッシュ値の長さは、160ビット
SHA-1詳細は「SHA-1」を参照

SHA-0の欠点を修正した。SHA-1のハッシュ値の長さは、SHA-0と同じく160ビット。

2017年に、衝突攻撃の成功と実例が報告された[2]
SHA-2詳細は「SHA-2」を参照

SHA-1を改良し、また、出力されるハッシュ値の長さも長くしたものが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-3詳細は「SHA-3」を参照

SHA-3としてKeccakが、アメリカ国立標準技術研究所 (NIST) による公募において、2012年10月2日に選出された[3]。2015年8月に、正式版が発行された。これまでのSHAの Merkle?Damgard construction(en:Merkle?Damgard construction)とは異なり、ハッシュ値よりも大きな内部状態を持ち、ハッシュ値はその内部状態から「絞り出される」という、「スポンジ構造」を採用している。

SHAシリーズでは初めて開発に国家安全保障局 (NSA) が関わっていない。

SHA-3は64ビットのワードサイズを持ち、出力されるハッシュ値の長さは224ビット、256ビット、384ビット、512ビットの4種類、もしくは可変長(SHAKE128、SHAKE256 の2種類が選択可能)である。
比較.mw-parser-output .hlist ul,.mw-parser-output .hlist ol{padding-left:0}.mw-parser-output .hlist li,.mw-parser-output .hlist dd,.mw-parser-output .hlist dt{margin-right:0;display:inline-block;white-space:nowrap}.mw-parser-output .hlist dt:after,.mw-parser-output .hlist dd:after,.mw-parser-output .hlist li:after{white-space:normal}.mw-parser-output .hlist li:after,.mw-parser-output .hlist dd:after{content:" ・\a0 ";font-weight:bold}.mw-parser-output .hlist dt:after{content:": "}.mw-parser-output .hlist-pipe dd:after,.mw-parser-output .hlist-pipe li:after{content:" |\a0 ";font-weight:normal}.mw-parser-output .hlist-hyphen dd:after,.mw-parser-output .hlist-hyphen li:after{content:" -\a0 ";font-weight:normal}.mw-parser-output .hlist-comma dd:after,.mw-parser-output .hlist-comma li:after{content:"、";font-weight:normal}.mw-parser-output .hlist-slash dd:after,.mw-parser-output .hlist-slash li:after{content:" /\a0 ";font-weight:normal}.mw-parser-output .hlist dd:last-child:after,.mw-parser-output .hlist dt:last-child:after,.mw-parser-output .hlist li:last-child:after{content:none}.mw-parser-output .hlist dd dd:first-child:before,.mw-parser-output .hlist dd dt:first-child:before,.mw-parser-output .hlist dd li:first-child:before,.mw-parser-output .hlist dt dd:first-child:before,.mw-parser-output .hlist dt dt:first-child:before,.mw-parser-output .hlist dt li:first-child:before,.mw-parser-output .hlist li dd:first-child:before,.mw-parser-output .hlist li dt:first-child:before,.mw-parser-output .hlist li li:first-child:before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child:after,.mw-parser-output .hlist dd dt:last-child:after,.mw-parser-output .hlist dd li:last-child:after,.mw-parser-output .hlist dt dd:last-child:after,.mw-parser-output .hlist dt dt:last-child:after,.mw-parser-output .hlist dt li:last-child:after,.mw-parser-output .hlist li dd:last-child:after,.mw-parser-output .hlist li dt:last-child:after,.mw-parser-output .hlist li li:last-child:after{content:")\a0 ";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li:before{content:" "counter(listitem)" ";white-space:nowrap}.mw-parser-output .hlist dd ol>li:first-child:before,.mw-parser-output .hlist dt ol>li:first-child:before,.mw-parser-output .hlist li ol>li:first-child:before{content:" ("counter(listitem)" "}.mw-parser-output .navbar{display:inline;font-size:75%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}.mw-parser-output .infobox .navbar{font-size:88%}.mw-parser-output .navbox .navbar{display:block;font-size:88%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}








暗号学的ハッシュ関数の比較 [編集]アルゴリズムとバリエーション出力長
(bits)内部状態長
(bits)ブロック長
(bits)最大メッセージ長
(bits)ラウンド数ビット演算セキュリティ強度
(bits)パフォーマンスの例[5]
(MiB/s)
MD5128128
(4 × 32)512264 ? 164And, Xor, Rot,
Add (mod 232),
Or<64(強衝突)335
SHA-0160160
(5 × 32)512264 ? 180And, Xor, Rot,
Add (mod 232),
Or<80(強衝突)-
SHA-1160160
(5 × 32)512264 ? 180<63
(衝突発見[6])192
SHA-2SHA-224
SHA-256224
256256
(8 × 32)512264 ? 164And, Xor, Rot,
Add (mod 232),
Or, Shr112
128139
SHA-384
SHA-512
SHA-512/224
SHA-512/256384
512
224
256512
(8 × 64)10242128 ? 180And, Xor, Rot,
Add (mod 264),
Or, Shr192
256
112
128154
SHA-3SHA3-224
SHA3-256
SHA3-384
SHA3-512224
256
384
5121600
(5 × 5 × 64)1152
1088
832
576制限なし[7]24[8]And, Xor, Rot,
Not112
128
192
256-
SHAKE128
SHAKE256d(可変長)
d(可変長)1344
1088d/2と128のいずれか小さい方
d/2と256のいずれか小さい方-

関連項目

MD2

MD4

MD5

HMAC

脚注^ “ ⇒SHA-3 Standardization”. Computer Security Division - Computer Security Resource Center. NIST. 2015年8月6日閲覧。
^ SHAttered
^ “ ⇒NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition”. NIST. 2012年10月2日閲覧。
^ “ ⇒Crypto++ 5.6.0 Benchmarks”. 2014年1月1日閲覧。
^ AMD Opteron 8354 2.2 GHzプロセッサと64ビット版Linuxによる計測[4]
^ “Announcing the first SHA1 collision”. 2017年2月23日閲覧。
^ “ ⇒The Sponge Functions Corner”. 2016年1月28日閲覧。
^ “ ⇒The Keccak sponge function family”. 2016年1月28日閲覧。

外部リンク

FIPS PUB 180-1, SECURE HASH STANDARD

(PDF) ⇒FIPS PUB 180-2, SECURE HASH STANDARD

SHA-0、MD5、 MD4にコリジョン発見、reduced SHA-1も スラッシュドットジャパン

オンラインでSHA256ハッシュ関数ツール

オンラインでSHA512ハッシュ関数ツール

SHA1, SHA-256, SHA-384, SHA-512 Online Calculator Calculate SHA file hashes using an on-line web form.










暗号学的ハッシュ関数メッセージ認証コード
セキュリティ要約(英語版)
一般的関数

MD5

SHA-1

SHA-2

SHA-3/Keccak

SHA-3最終候補(英語版)

BLAKE

Grostl(英語版)

JH(英語版)

Skein(英語版)

Keccak (勝者)

その他の関数

FSB(英語版)

ECOH(英語版)

GOST(英語版)

HAS-160(英語版)

HAVAL(英語版)

Kupyna(英語版)

LMハッシュ

MDC-2(英語版)

MD2

MD4

MD6(英語版)

N-Hash(英語版)

RadioGatun

RIPEMD

SipHash(英語版)

Snefru(英語版)

Streebog(英語版)

SWIFFT(英語版)

Tiger(英語版)

VSH(英語版)

WHIRLPOOL

crypt(3)(英語版) (DES)

MACアルゴリズム

DAA(英語版)

CBC-MAC

HMAC

OMAC(英語版)/CMAC

PMAC(英語版)

VMAC(英語版)

UMAC(英語版)

Poly1305

認証付き暗号モード

CCM

CWC(英語版)

EAX(英語版)

GCM

IAPM(英語版)

OCB(英語版)

攻撃

衝突攻撃(英語版)

原像攻撃

誕生日攻撃

総当たり攻撃

レインボーテーブル

サイドチャネル攻撃

伸長攻撃(英語版)

差分解読法

設計

アバランシェ効果(英語版)

ハッシュ衝突

Merkle?Damgard構成法(英語版)

標準化

CRYPTREC

NESSIE

NISTハッシュ関数コンベンション(英語版)

利用

ソルト

キーストレッチ(英語版)

メッセージ認証(英語版)

パスワードハッシュ関数

bcrypt

PBKDF2

scrypt

Argon2



カテゴリ:ハッシュ関数メッセージ認証コード認証付き暗号












暗号


暗号史

暗号解読

Cryptography portal

en:Outline of cryptography



共通鍵暗号

ブロック暗号

ストリーム暗号

暗号利用モード

公開鍵暗号

暗号学的ハッシュ関数


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:21 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef