Hash

任何基於海綿構造的散列函式都可以作為可擴展的輸出函式嗎?

  • March 9, 2019

Keccak 提供了一種非常有用的XOF

  • 其他像Spongent這樣的海綿構造散列函式 可以作為XOF工作嗎?
  • 是否有任何用於硬體或軟體實現的輕量級XOF ?

任何基於海綿構造的散列函式都可以作為可擴展的輸出函式嗎?

是的。

選擇任何排列 $ \pi\colon {0,1}^n \to {0,1}^n $ , 和容量 $ c < n $ . 例如,您可以選擇 Keccak-p

$$ 1600, 24 $$像 SHA-3 一樣使用,具有狀態大小 $ n = 1600 $ 和容量 $ c = 2\lambda $ 為一個 $ \lambda $ 位安全級別——即 SHAKE128 使用 $ c = 256 $ 對於 128 位的抗碰撞性(當然,前提是輸出至少為 256 位)。讓 $ r = n - c $ 成為率。

  1. 從初始狀態開始 $ x_0 = 0^n $ ,一串 $ n $ 零位。打破填充的輸入消息 $ m $ 進入 $ r $ 位塊 $ m_1 \mathbin| m_2 \mathbin| \cdots \mathbin| m_\ell $ .
  2. 吸收。 對於每個塊 $ m_i $ , 更新狀態 $ x_i = \pi(x_{i-1} \oplus (m_i \mathbin| 0^c)) $ ; 也就是說,墊 $ r $ 位塊 $ m_i $ 和 $ c = n - r $ 零,異或到狀態,並置換狀態。
  3. 擠。 揭示第一個 $ r $ 位 $ x_\ell $ , 首先 $ r $ 位 $ \pi(x_\ell) $ , 首先 $ r $ 位 $ \pi^2(x_\ell) $ , 首先 $ r $ 位 $ \pi^3(x_\ell) $ ,依此類推,直到你產生了你想要的輸出位數。

是否有任何用於硬體或軟體實現的輕量級 XOF?

現在有許多基於排列的設計。

Keccak 有多種尺寸:SHA-3 使用 Keccak-p

$$ 1600, 24 $$參數設計過度,部分是出於偏執,部分是出於政治原因,但KangarooTwelve使用 Keccak-p$$ 1600, 12 $$,SHA-3 輪數的一半,以及更高的速率 $ r $ ,並且對於最佳碰撞攻擊仍然具有良好的安全餘量。如果碰撞阻力對您的應用程序不重要,您甚至可以將 Keccak 參數調整為更小,並且還有其他選項可用於更小的字長。 NORX是一個 512 位或 1024 位的排列,其設計類似於 ARX 網路,但具有近似值 $ a + b \approx a \oplus b \oplus ((a \wedge b) \mathbin\ll 1) $ 使硬體設計更便宜,因為整數加法的進位傳播成本很高;Gimli是一種較新的設計,具有 384 位排列,改進了 NORX。CAESAR 獲勝者Ascon使用了另一種 320 位排列。

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