跳至內容

SHAma三

出自Taiwan Tongues 台語維基
於 2025年8月23日 (六) 15:32 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

SHA ma三(第三代的安全雜鬥演算法,英語:Secure Hash Algorithm 三), 進前號名做Keccak(/ ˈkɛtʃæk / 抑是 / kɛtʃɑːk / ))演算法,設計者宣稱佇 Intel Core 二的 CPU 頂頭,此演算法的效能是十二孵六時鐘周期逐為元組(cycles per byte)。

SHA 鋪三佇二空一五年八月初五由 NIST 通過 FIPS 兩百空二正式發表。

歷史

  • Keccak 是一个加密雜鬥演算法,由 Guido Bertoni,Joan Daemen,Michaël Peeters,以及 Gilles Van Assche 佇咧 RadioGatún 上設計。
  • 二空一二年十月二號,Keccak 予人選做是 NIST 雜鬥函式競賽的勝利者。SHA 學二目前無出現明顯的弱點。因為對 MD 五、SHA 板零佮 SHA 糊一出現成功的破解,NIST 感覺愛一个佮進前演算法無仝的,會當替換的加密雜鬥演算法,也就是這馬的 SHA ma三。
  • 二空一四年,NIST 發佈矣 FIPS 兩百空二的草案 " SHA ma三 Standard : Permutation-Based Hash and Extendable-Output Functions "。
  • 二空一五年八月初五,FIPS 兩百空二最終被 NIST 批准。

設計的

Keccak 使用海綿函式,若函式會共資料佮初始內部的狀態做 XOR 運算,這是無法度避免會當換的(inevitably permuted)。 佇上大的版本,演算法使用的記持體狀態是使用一个五 × 五的二維陣列,資料的型態是六十四位元的位元組,總計共千六百位。縮版的演算法使用較細的,以二為冪次的位元組大細 _ w _ 為一位元,總計使用二十五位元。除了使用較細的版本來研究加密分析攻擊,較適當中的大細(比如講對 _ w _=四使用一百位,到 _ w _=三十二使用八百位元)是提供了較實際的輕量的替代方案。

Keccak 的對換

置換方法是先定義字的長度做第二的某次方,_ w _  =  二 ℓ 位元。SHA 馮三的主要應用使用六十四位元的字長,ℓ =  六。

記憶體的狀態會當予人看做是五 × 五 × _ w _ 三維陣列。令 _ a _ [_ i _] [_ j _] [_ k _] 代表記持體狀態的第 ( _ i _ × 五 + _ j _ ) × _ w _ + _ k _ 個位元(使用小端序,little-endian,參見位元組序)。

來換函式是五个子段落(sub-round)作十二 + 二 ℓ 次的迴圈,每一个子段落都相當簡單:

修改

咧規个 NIST 雜鬥函式的比賽內底,參賽者小可仔修改演算法解決已經出現的問題。Keccak 的修改有:

  • 迴圈的數目對十二 + ℓ 變成十二 + 二 ℓ,加添了安全度。
  • 填充函式使用比起來述十 \ * 一个方式閣較複雜的做法。
  • 吸收比率 _ r _ 增加到安全的限制,而非向下捨入到最接近某一个二的冪次。

SHA 鋪三範例

  • 空字串的雜鬥值:

` ` ` SHA 三孵兩百二十四 ( " " ) 六 b 四 e 三百四十二石三千六百六十七 dbb 七十三 b 六 e 一爿五千四百五十四 f 零 eb 一 abd 四千五百九十七 f 九 a 一 b 七十八 e 三 f 五 b 五 a 六 bc 七 SHA 三刣兩百五十六 ( " " ) a 七 ffc 六 f 八 bf 一 ed 七堵六千六百五十一 c 一爿四千七百五十六 a 六十一 d 六百六十二 f 五百八十 ff 四 de 四十三 b 四十九 fa 八十二 d 八十 a 四 b 八十 f 八千四百三十四 a SHA 三百八十四 ( " " ) 零 c 六十三 a 七十五 b 八仔四仔五 e 四 f 七 d 一千一百空七 d 八仔五 e 四 c 兩千四百八十五 c 五十一 a 五十 aaaa 九十四 fc 六桱一千九百九十五 e 七十一 bbee 九百八十三 a 二 ac 三十七石一千三百八十三石一千兩百六十四 adb 四十七 fb 六 bd 一 e 五十八 d 五 f 四 SHA 三-c五百十二 ( " " ) a 六十九 f 七十三 cca 二十三 a 九 ac 五 c 八 b 五百六十七 dc 一百八十五 a 七仔五十六 e 九十七喔 c 九十八孵兩千一百六十四 fe 二嬸五千八百五十九 e 零 d 一 dcc 一千四仔七十五 c 八十 a 六仔十五 b 二千一百二十三 af 一 f 五 f 九十四 c 十一 e 三 e 九千四百空二 c 三 ac 五仔五十八 f 五十九空一百九十九 d 九十五 b 六 d 三 e 三千空一十七刣五千八百五十八撨六千兩百八十一 dcd 二十六 SHAKE 一百二十八 ( " " , 兩百五十六 ) 七 f 九 c 二 ba 四 e 八十八 f 八仔二七 d 六百一十六標空四百五十五五鋪空七百六十二空五千八百五十三 ed 七十三 b 八千空九十三 f 六 efbc 八十八 eb 一 a 六 eacfa 六十六 ef 二十六 SHAKE 兩百五十六 ( " " , 五百十二 ) 四十六 b 九 dd 二 b 零 ba 八十八 d 一爿三千兩百三十三 b 三 feb 七百四十三 eeb 兩百四十三 fcd 五十二 ea 六十二 b 八十一 b 八十二 b 五十 c 二爿七千六百四十六 ed 五千七百六十二 fd 七十五 dc 四 ddd 八 c 零 f 兩百 cb 五千空一十九 d 六十七 b 五百九十二 f 六 fc 八百二十一 c 四堵九千四百七十九 ab 四千八百六十四抹空兩百九十二 eacb 三 b 七 c 四 be ` ` `

  • 因為雪崩效應,就算是足細的一个改變攏會產出差不多完全無仝的雜鬥值。比如講伊,共 dog 改做 dof:

` ` ` SHAKE 一百二十八 ( " The quick brown fox jumps over the lazy dog " , 兩百五十六 ) f 四千兩百空二 e 三 c 五千八仔五十二 f 九千一百八十二 a 四仔三 fd 八千一百四十四 f 零 a 七十四 b 九十五 e 七千四百一十七 ecae 十七 db 零 f 八 cfeed 零 e 三 e 六十六 e SHAKE 一百二十八 ( " The quick brown fox jumps over the lazy dof " , 兩百五十六 ) 八仔五十三 f 四千五百三十八 be 零 db 九千六百二十一 a 六 cea 六仔五十九 a 六 c 一千一百空七 b 一 f 八十三 f 二 b 十三 d 一孵八千兩百九十七 bd 三十九 d 七千四百一十一 cf 十 c ` ` `

SHA 家族函式的比較

佇下跤的格仔內底,「 內部的狀態」指甲是傳達到後一塊的位數。

參考資料

外部連結

  • Keccak 網站 ( 英文 )
  • Keccak 官方 C 語言代碼包
  • Keccak 官方 C + + 語言工具集
  • A Java implementation of Keccak
  • A Cryptol implementation of Keccak
  • A VHDL source codes developed in the Cryptographic Engineering Research Group ( CERG ) at George Mason University