Sha-3

SHA-3 狀態數組索引背後的推理

  • August 21, 2017

我正在閱讀 SHA3 標準(https://dx.doi.org/10.6028/NIST.FIPS.202),在標準中它定義瞭如何從一維數組構造 3D 狀態數組。

狀態數組定義如下:

對於滿足 0 ≤ x < 5、0 ≤ y < 5 和 0 ≤ z < w 的所有三元組 (x, y, z),

一個

$$ x, y, z $$= S$$ w(5y + x) + z $$

這個索引有點麻煩,因為在某種意義上,y > x > z(如果需要,我可以澄清我的意思)。我認為交換 x 和 y 索引並將其定義為更自然:

一個

$$ x,y,z $$= S$$ w(5x + y) + z $$

標準中的定義是否有原因?

首先讓我們看一下狀態表示。

狀態

對於所有三元組 $ (x,y,z) $ 這樣 $ 0 \le x < 5 $ , $ 0 \le y < 5 $ , 和 $ 0 \le z < w $ ,

$$ A[x,y,z]=S[w(5y+x)+z]. $$ 例如,如果 $ b = 1600 $ , 以便 $ w = 64 $ , 然後

A[0,0,0] = S[0]     A[1,0,0] = S[64]     A[4,0,0] = S[256]
A[0,0,1] = S[1]     A[1,0,1] = S[65]     A[4,0,1] = S[257]
A[0,0,2] = S[2]     A[1,0,2] = S[66]     A[4,0,2] = S[258]

A[0,0,61] = S[61]   A[1,0,61] = S[125]   A[4,0,61] = S[317]
A[0,0,62] = S[62]   A[1,0,62] = S[126]   A[4,0,62] = S[318]
A[0,0,63] = S[63]   A[1,0,63] = S[127]   A[4,0,63] = S[319]

and

A[0,1,0] = S[320]   A[1,1,0] = S[384]     A[4,1,0] = S[576]
A[0,1,1] = S[321]   A[1,1,1] = S[385]     A[4,1,1] = S[577]
A[0,1,2] = S[322]   A[1,1,2] = S[386]     A[4,1,2] = S[578]

A[0,1,61] = S[381]  A[1,1,61] = S[445]    A[4,1,61] = S[637]
A[0,1,62] = S[382]  A[1,1,62] = S[446]    A[4,1,62] = S[638]
A[0,1,63] = S[383]  A[1,1,63] = S[447]    A[4,1,63] = S[639]

如果您查看位的位置。您注意到您可以將您的狀態視為一個數組 $ \texttt{u_int64} $ (編號 $ 0 \to 63 $ , $ 64 \to 127, \ldots $ ),這解釋了 $ w $ 在公式。

如果您查看位的順序,您會注意到我們有第一個平面 ( $ y = 0 $ ),然後是第二個等等。因此取 320 個第一位選擇第一個平面,依此類推。

現在,如果您查看 Keccak 中的操作:

  • $ \iota $ 在車道上操作 $ (0,0) $ ,
  • $ \theta $ 對列進行操作,但取決於其相鄰列的奇偶性
  • $ \pi $ 和 $ \rho $ 直接在車道位置上操作
  • $ \chi $ 應用於一行

$ \chi $ 也可以看成是一個5位的S-box,經過位分片,待應用 $ 64 $ 並行時間(見下文)。

花費

因此,我們可以選擇 320 位並應用 $ \chi $ 直接地,這些位以這樣的方式分組,即連續載入它們會很快(而不是在不同的位置獲取它們)。所以我們有第一個理由更喜歡這種排序。

然後我們可以看看 $ \theta $ ,它主要在列上工作,但您也可以考慮直接在平面上進行(因此並行 320 次!)。

θ

因此,通過 320 位的塊選擇狀態並從向量的角度添加它們使其速度更快。

因此,我們在這裡有兩個操作( $ \theta $ 和 $ \chi $ ) 這極大地受益於 $ w(5y+x)+z $ 訂購。

現在,如果您假設其他順序( $ w(5x+y)+z $ ),請注意:

  • 當你想申請時,你必須從 5 個不同的位置獲取位 $ \chi $ .
  • 你只能工作 $ \theta $ 與列平行,不再是石板。

TL;博士: $ \chi $ 和 $ \theta $ 並行性從這種排序中受益匪淺(從硬體的角度來看也是如此)。

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