Hash

SHA-3 塊大小/比特率計算?

  • June 11, 2018

查看不同的論文和線上文件,我發現 SHA-3 的塊大小如下:

  • SHA3​​-224:1152 位
  • SHA3​​-256:1088 位
  • SHA3​​-384:832 位
  • SHA3​​-512:576 位

不知何故,我無法從規範中找到(計算)這些數字:

這些塊大小是如何計算的,分別在哪裡指定?

首先,在 SHA-3 的情況下,我們不稱之為塊大小,而是比特率

SHA-3 已在FIPS 202及其參考手冊中正式定義。

我們定義海綿函式表示為 $ \operatorname{KECCAK}[r,c] $ 通過應用算法 1中指定的海綿結構 $ \operatorname{KECCAK-}!f[r+c] $ ,多速率填充和比特率 $ r $ .

$$ \operatorname{KECCAK}[r,c] = \operatorname{SPONGE}[\operatorname{KECCAK-}!f[r + c], \mathrm{pad10^∗1}, r] $$

$ c $ 是容量,它定義了海綿的安全級別。

價值 $ b = r + c $ 稱為狀態的寬度。它是 $ 25 $ , $ 50 $ , $ 100 $ , $ 200 $ , $ 400 $ , $ 800 $ 或者 $ 1600 $ .

在 SHA-3 競賽範圍內,我們提出了最大的排列,即 $ \operatorname{KECCAK-}!f[1600] $ .

所以在我們的案例中 $ b = 1600 $ .

符號 $ \operatorname{SHA3-}!x(M) $ 生成摘要 $ x $ 位長並且有安全聲明 $ d = x $ . 不贅述, $ d $ 可以看作 $ c/2 $ (參見此處此處,第 7 章,第 71 頁)。

因此在:

  • $ \operatorname{SHA3-224}(M) $ , $ c = 2\times224 = 448 $ 和 $ r = 1600 - c = 1152 $
  • $ \operatorname{SHA3-256}(M) $ , $ c = 2\times256 = 512 $ 和 $ r = 1600 - c = 1088 $
  • $ \operatorname{SHA3-384}(M) $ , $ c = 2\times384 = 768 $ 和 $ r = 1600 - c = 832 $
  • $ \operatorname{SHA3-512}(M) $ , $ c = 2\times512 = 1024 $ 和 $ r = 1600 - c = 576 $

因此:

  • $ \operatorname{SHA3-224}(M) = \operatorname{KECCAK}[1152,448] $ 和 $ \mathit{bitrate} = 1152 $
  • $ \operatorname{SHA3-256}(M) = \operatorname{KECCAK}[1088,512] $ 和 $ \mathit{bitrate} = 1088 $
  • $ \operatorname{SHA3-384}(M) = \operatorname{KECCAK}[832,768] $ 和 $ \mathit{bitrate} = 832 $
  • $ \operatorname{SHA3-512}(M) = \operatorname{KECCAK}[576,1024] $ 和 $ \mathit{bitrate} = 576 $

由於算法的速度與 $ r $ (比特率吸收),安全性越高,功能越慢。

引用自:https://crypto.stackexchange.com/questions/47831