Hash

SHAKE 的輸出理論上有可能是同一個 512 位塊的無限級聯嗎?

  • September 23, 2017

讓 $ X $ 表示特定的 512 位序列。

讓 $ A,B,C $ 表示位序列,例如:

$$ len(X || A) = len(X || B) = len(X || C) = 1600 $$ $$ \operatorname{Keccak-}f(X||A) = X||B $$ $$ \operatorname{Keccak-}f(X||B) = X||C $$ $$ \operatorname{Keccak-}f(X||C) = X||A $$ 然後我們有一個循環,所以 SHAKE 的輸出(如果我對海綿結構的理解是正確的,如果 $ X||A $ 恰好是對輸入的最後一個塊進行異或後輸出的狀態)只不過是同一個 512 位塊的無限串聯。可能嗎?

次要修正:SHAKE 每次壓縮生成 1088 或 1344 位;不是 512。因此,您給出的範例將給出一個重複模式,但它的長度為 3264 或 4032 位,而不是 512。

除此之外,是的,據我們所知,這是可能的。事實上,更可能的重複是:

$$ \operatorname{Keccak-}f(A||X) = A||X $$ 這將給出 1088 或 1344 位長的重複模式。

此外,這不僅是可能的,而且很有可能實際上存在這樣一個 $ A || X $ 圖案。這樣一個 $ A || X $ 被稱為置換的不動點;隨機排列至少有一個固定點,其機率近似為 $ 1 - 1/e \approx 0.6321 $ ; 假如說 $ \operatorname{Keccak-}f $ 實際上,確實像隨機排列一樣,那麼很有可能存在這樣一個固定點。

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