Entropy

使用 SHA3 作為熵池

  • October 24, 2013

是否有任何工作在分析用作熵池的 SHA3 海綿結構(例如/dev/random)?

我聽說過的所有案例都是輸入操作序列的常量,然後是輸出操作序列,其中熵池需要為任何混合輸入和輸出操作序列維護安全性。

正如Paŭlo Ebermann 在他的評論中已經提到的,SHA3 確實可以用作偽隨機數生成器。

論文“基於海綿的偽隨機數生成器”討論了這一點,它還描述了一種干淨有效的方法來建構具有 (Keccak) 海綿函式的可重播 PRNG。你會得到一個基於加密散列函式的 PRNG……具有通常的安全含義。

例如:該論文明確指出,您應該定期使用足夠的熵重新播種,以防止攻擊者在 PRNG 期間倒退(這可能是您所聽說的)。

關於這種基於海綿的 PRNG 結構的安全性證明,該論文指出,所提出的 PRNG 具有不可微分性(實際上聲稱它與理想的 PRNG 無關),對狀態恢復的抵抗(這是由於它是不可區分的),並且它通過了 NIST 提出的統計測試。這是基於海綿的 PRNG 結構繼承了海綿結構本身可證明的安全特性這一事實的結果。

我建議您自己檢查紙張以掌握所有細節;比如學習如何以及何時重新播種 PRNG 以防止一些潛在的攻擊。它非常詳細地回答了您的問題。

SHA3​​ 將有一個與其容量一樣大的熵池。如果您正在嘗試獲得計算安全性,這很好——這就是 Keccak PRNG 論文向您展示的方法。但是,如果您嘗試收集熵池並按要求將其運出(與 /dev/random 一樣),您將遇到兩個問題:

  1. 容量限制了池保留的熵量。
  2. 尚不清楚您是否可以使用 SHA3 來輸入 512 位熵,然後取出 512 位並期望從中獲得完整的熵。

現在,我認為嘗試在 /dev/random 池中保存熵的概念並不是非常有用,所以我個人認為獲得安全級別為 256 位(需要 512 位容量)的 PRNG 就可以了。

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