コンテンツにスキップ

SHA-3

出典: フリー百科事典『ウィキペディア(Wikipedia)』
SHA-3[1] (Keccak)
一般
設計者 Guido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche.
初版発行日 2015-08-05[2]
認証 FIPS PUB 202[1]
詳細
ダイジェスト長 224, 256, 384, 512 bits
または可変 (SHAKE128, SHAKE256)
速度 Core 2 上にて 12.5 en:Cycles_per_byte [r=1024,c=576][3]

SHA-3Keccak ([ˈkætʃæk][kɛtʃɑːk])[4][5]SHA[6]SHA-3SHA-2en:MerkleDamgård constructionRadioGatúnGuido BertoniJoan DaemenMichaël PeetersGilles Van Assche

SHA-32004CRYPTOMD5[7]SHA-1[8](NIST)SHA-22017SHA-2[9]SHA-120172SHA-22017

2012102Keccak[4]201585 FIPS PUB 202 [2]

Keccak[10][11]XORSHA-3645×51600KeccakIntel Core 212.5 cycles per byte[3][12]

Keccak[13]Keccak2使 w=20 = 1 25w=4100w=32800

ハッシュ関数の構造

[編集]
スポンジ構造の模式図
ハッシュ関数のスポンジ構造
pi:入力
zi:ハッシュ出力
使われない「キャパシティ」 cは、衝突攻撃原像攻撃に対して望む耐性の2倍必要である。

Keccak

 r r

 c=25wr 調SHA-3 n c=2n 1 r224256384512r 11521088832576SHA-2SHA-3224256384512SHAKE128SHAKE256

 0  rr   nr  n

パディング

[編集]

 rSHA-3  100....001 1100 r - 1 11

1 r[1]:5.1100...001 r  r-1 1 r00...001 r

1

112 r=1152  r=1088 

ブロック置換

[編集]

 w5×5×w  2 w=2 SHA-3 w=64 (= 6) 使

5×5×wA[x][y][z]  (5y + x)×w + z2 modulo 53 modulo w

5 12+2  A A 

θ

5×ww = 643205 (5) 2

A[x][y][z] = A[x][y][z]  parity(A[x-1][0...4][z])  parity(A[x+1][0...4][z1])

ρ

25 0, 1, 3, 6, 10, 15, .... 

A[0][0]A 0t23 A[x][y][z] = A[x][y][z(t+1)(t+2)/2]  

π

25

A[x][y] = A[y][2x+3y]

χ

a = a (¬b & c) 

A[x][y] = A[x][y]  (¬A[x+1][y] & A[x+2][y])

SHA-3

ι



 ir0j  A[0][0][2j1]  degree-8 LFSR sequence j+7ir 

修正

[編集]

NISTKeccak[14][15]

 12+  12+2 



 r

変更に関する論争

[編集]

KeccakSHA-320132RSA Conference20138CHESNISTSHA-3[16][17]



NIST使[18]

Paul Crowley


KeccakSHA-3



Keccak

[19]


Keccak576

KeccakNISTNIST[20]512[21]

201311NISTJohn KelseyCHES稿[22]201445FIPS 202稿[23]稿[23][1]

ハッシュ値の例

[編集]

SHA3-n  Keccak-n n = 224, 256, 384, 512 

 SHA-3 201

2 c=2n 

 r=1600c 




Keccak-224("")
0x f71837502ba8e10837bdd8d365adb85591895602fc552b48b7390abd
Keccak-256("")
0x c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
Keccak-384("")
0x 2c23146a63a29acf99e73b88f8c24eaa7dc60aa771780ccc006afbfa8fe2479b2dd2b21362337441ac12b515911957ff
Keccak-512("")
0x 0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e
SHA3-224("")
0x 6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7
SHA3-256("")
0x a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a
SHA3-384("")
0x 0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004
SHA3-512("")
0x a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26


SHA3-224("The quick brown fox jumps over the lazy dog")
0x d15dadceaa4d5d7bb3b48f446421d542e08ad8887305e28d58335795
SHA3-224("The quick brown fox jumps over the lazy dog.")
0x 2d0708903833afabdd232a20201176e8b58c5be8a6fe74265ac54db0

SHA-3 SHAKE128  SHAKE256 2 SHA-3  SHAKE128  256 SHAKE256  512 4 1111 2 SHAKE  SHA-3 2 Sakura [24] SHA-3 

SHAシリーズの比較

[編集]
暗号学的ハッシュ関数の比較 [編集]
アルゴリズムとバリエーション 出力長
(bits)
内部状態長
(bits)
ブロック長
(bits)
最大メッセージ長
(bits)
ラウンド数 ビット演算 セキュリティ強度
(bits)
パフォーマンスの例[26]
(MiB/s)
MD5 128 128
(4 × 32)
512 264 − 1 64 And, Xor, Rot,
Add (mod 232),
Or
<64(強衝突 335
SHA-0 160 160
(5 × 32)
512 264 − 1 80 And, Xor, Rot,
Add (mod 232),
Or
<80(強衝突 -
SHA-1 160 160
(5 × 32)
512 264 − 1 80 <63
(衝突発見[27])
192
SHA-2 SHA-224
SHA-256
224
256
256
(8 × 32)
512 264 − 1 64 And, Xor, Rot,
Add (mod 232),
Or, Shr
112
128
139
SHA-384
SHA-512
SHA-512/224
SHA-512/256
384
512
224
256
512
(8 × 64)
1024 2128 − 1 80 And, Xor, Rot,
Add (mod 264),
Or, Shr
192
256
112
128
154
SHA-3 SHA3-224
SHA3-256
SHA3-384
SHA3-512
224
256
384
512
1600
(5 × 5 × 64)
1152
1088
832
576
制限なし[28] 24[29] And, Xor, Rot,
Not
112
128
192
256
-
SHAKE128
SHAKE256
d(可変長)
d(可変長)
1344
1088
d/2と128のいずれか小さい方
d/2と256のいずれか小さい方
-

実装ライブラリ

[編集]

SHA-3をサポートしているライブラリは以下の通り。

脚注

[編集]

出典

[編集]


(一)^ abcdSHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions. FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION.  NIST (20158). 201586

(二)^ abSHA-3 Standardization. Computer Security Division - Computer Security Resource Center.  NIST. 201586

(三)^ abKeccak implementation overview Version 3.2 http://keccak.noekeon.org/Keccak-implementation-3.2.pdf

(四)^ abNIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition.  NIST. 201412

(五)^ The Keccak sponge function family: Specifications summary. 201412

(六)^ 

(七)^ Xiaoyun Wang; Dengguo Feng, Xuejia Lai, Hongbo Yu (2004817). Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD. 201586

(八)^ Vincent Rijmen; Elisabeth Oswald (2005114). Update on SHA-1. 201586

(九)^ Dennis Fisher (2012924). Forthcoming SHA-3 Hash Function May Be Unnecessary.  Threatpost. 201586

(十)^ Sponge Functions.  Ecrypt Hash Workshop 2007. 201412

(11)^ On the Indifferentiability of the Sponge Construction.  EuroCrypt 2008. 201412

(12)^ Guo, Xu; Huang, Sinan; Nazhandali, Leyla; Schaumont, Patrick (Aug. 2010), Fair and Comprehensive Performance Evaluation of 14 Second Round SHA-3 ASIC Implementations, NIST 2nd SHA-3 Candidate Conference: 12, http://csrc.nist.gov/groups/ST/hash/sha-3/Round2/Aug2010/documents/papers/SCHAUMONT_SHA3.pdf 201412  Keccak is second only to Luffa, which did not advance to the final round.

(13)^ NIST, Third-Round Report of the SHA-3 Cryptographic Hash Algorithm Competition, sections 5.1.2.1, 6.2, 7

(14)^ Keccak parameter changes for round 2. 201412

(15)^ Simplifying Keccak's padding rule for round 3. 201412

(16)^ John Kelsey. SHA3, Where We've Been, Where We're Going.  RSA Conference 2013. 201413

(17)^ John Kelsey. SHA3, Past, Present, and Future.  CHES 2013. 201412

(18)^ Schneier on Security: Will Keccak = SHA-3?. 201412

(19)^ LShift: Why I support the US Government making a cryptography standard weaker. 201413

(20)^ Yes, this is Keccak!. 201412

(21)^ A concrete proposal. 201412

(22)^ Moving Forward with SHA-3. 201575

(23)^ abDRAFT FIPS 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions. 201586

(24)^ Guido Bertoni; Joan Daemen, Michaël Peeters, Gilles Van Assche. SAKURA: a flexible coding for tree hashing. 2016620

(25)^ Crypto++ 5.6.0 Benchmarks. 201411

(26)^ AMD Opteron 8354 2.2 GHz64Linux[25]

(27)^ Announcing the first SHA1 collision. 2017223

(28)^ The Sponge Functions Corner. 2016128

(29)^ The Keccak sponge function family. 2016128

外部リンク

[編集]