Fortuna:使用單一熵源
我研究了一個隨機數生成器,結果證明它提供的結果非常接近於單一來源的 Fortuna。
我想知道在這種使用單一來源的特殊情況下,它如何影響 Fortuna 作為 RNG 的性能和聲明。
恢復率會受到怎樣的影響?
我認為不與多池系統妥協的解決方案是:使用單一來源將秘密分發到不同的池。(即,根據 Fortuna 的原始設計,我從一次觀察中處理的事件轉到不同的池。)
這會更慢,但它仍然是一個很好的隨機生成器,沒有任何妥協。這是真的?
用單一來源餵養福爾圖娜不會影響恢復率。
這是福圖娜:
32 個熵池位於累加器內。累加器通過以下函式收集熵:-
function AddRandomEvent input: R prng state, modified by this function. s Source number in range 0, ... , 255. i Pool number in range 0, ... , 31. Each source must distribute its events over all the pools in a round-robin fashion. e Event data. String of bytes; length in range 1, ... , 32.
弗格森等人。建議以循環方式餵養游泳池。我不同意,因為他們從不滿足穩定的熵率。他們已經開發/發明了這個方程來限制恢復時間:-
其中 t = 時間,i = 13 並且 t 是時間。在 8 位 /s 時,這導致 t 為 1/8 秒。我無法理解它,並相信將他們沒有輸入熵估計器的事實紙上去是技術上的混亂。他們明確指出輸入熵測量與 PRNG 的安全性無關。從上面的架構圖中,您的熵以 8 位/秒的速率進入累加器。Fortuna 的創建者認為 128 位的安全性就足夠了。因此,即使發電機狀態完全受損,也應該在 8 秒內完全恢復到設計級別的安全性。並且生成器始終以至少 0 池為種子,因此我建議僅將熵直接輸入該池。
作者在他們的聲明中限制了可行的攻擊向量,有一張出獄卡。它們不允許攻擊者控制目標池的攻擊熵。因此,確保重新播種的循環方法。
對於我的一生,我無法理解多個熵池的智慧。如果所有池最終都用於重新播種,為什麼不能像預設的 Linux 生成器那樣擁有一個池?這樣可行。我認為一些分析問題可能與設計的巨大復雜性有關。變數太多,很難進行嚴格的數學分析。主要的混雜因素是受快速輸出影響的自動重新播種率。我懷疑只有蒙特卡羅模擬才能準確解決這個問題。請記住,這些人發明了 Yarrow,但效果不夠好,無法繼續使用。而且我不喜歡它,因為它太複雜和不可預測(!)。