複製鏈接
請複製以下鏈接發送給好友

SHA3

鎖定
SHA-3第三代安全散列算法(Secure Hash Algorithm 3),之前名為Keccak(唸作/ˈkɛtʃæk/或/kɛtʃɑːk/))算法,設計者宣稱在 Intel Core 2 的CPU上面,此算法的性能是12.5cpb(每字節週期數,cycles per byte)。不過,在硬件實做上面,這個算法比起其他算法明顯的快上很多。
中文名
SHA-3
外文名
Secure Hash Algorithm 3
別    名
Keccak
性    能
12.5cpb
學    科
網絡安全
領    域
網絡安全

SHA3歷史

  • Keccak 是一個加密散列算法,由Guido Bertoni,Joan Daemen,Michaël Peeters,以及Gilles Van Assche在RadioGatún上設計。 [1] 
  • 2012年10月2日,Keccak 被選為NIST散列函數競賽的勝利者。SHA-3並不是要取代SHA-2,因為SHA-2並沒有出現明顯的弱點。由於對MD5、SHA-0和SHA-1出現成功的破解,NIST感覺需要一個與之前算法不同的,可替換的加密散列算法,也就是SHA-3。
  • 2014年,NIST發佈了FIPS202 的草案 "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions"。
  • 2015年8月5日,FIPS 202 最終被 NIST 批准。

SHA3設計

Keccak 使用海綿函數,此函數會將數據與初始的內部狀態做XOR運算,這是無可避免可置換的(inevitably permuted)。在最大的版本,算法使用的內存狀態是使用一個5×5的二維數組,數據類型是64位的字節,總計1600比特 。縮版的算法使用比較小的,以2為冪次的字節大小w為1比特,總計使用25比特。除了使用較小的版本來研究加密分析攻擊,比較適中的大小(例如從w=4使用100比特,到w=32使用800比特)則提供了比較實際且輕量的替代方案。 [2] 

SHA3Keccak 的置換

置換方法是先定義的長度為二的某次方,w=2比特。SHA-3的主要應用使用64位的字長,ℓ=6。
內存狀態可以被視為5×5×w的三維數組。令a[i][j][k]代表內存狀態的第(i×5 +jw+k個比特(使用小端序,little-endian,參見字節序)。
置換函數是五個子段落(sub-round)作12+2ℓ次的循環,每一個子段落都相當簡單。

SHA3修改

在整個 NIST 散列函數比賽裏面,參賽者允許稍微修改算法解決已經出現的問題。Keccak 的修改有:
  • 循環的數目從12+ℓ變成12+2ℓ,以增加安全度。
  • 填充函數使用比起上述101的方式更加複雜的作法。
  • 吸收比率r增加到安全限制,而非向下舍入到最接近某個2的冪次。

SHA3SHA-3 示例

  • 空字符串的散列值:
SHA3-224("")
6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7
SHA3-256("")
a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a
SHA3-384("")
0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004
SHA3-512("")
a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26
SHAKE128("", 256)
7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26
SHAKE256("", 512)
46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be
  • 由於雪崩效應,即使一個很小的改變都會產出幾乎完全不同的散列值。舉例來説,把 dog 改成 dof:
SHAKE128("The quick brown fox jumps over the lazy dog", 256)
f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e
SHAKE128("The quick brown fox jumps over the lazy dof", 256)
853f4538be0db9621a6cea659a06c1107b1f83f02b13d18297bd39d7411cf10c
參考資料
  • 1.    Dworkin M J. SHA-3 standard: Permutation-based hash and extendable-output functions[R]. 2015.
  • 2.    Stallings W. 網絡安全基礎: 應用與標準[M]. 清華大學出版社, 2011.