Random-Number-Generator
安全隨機數生成器
我正在嘗試實現一個隨機數生成器(應該是加密安全的),我正在考慮組合多個 LFSR,這是一個不錯的選擇嗎?
我還聽說我可以從像shake256這樣的散列算法創建RNG,這是怎麼做的?
不,他們甚至沒有製作非常強大的流密碼。CSPRNG(在此處查找)具有更強的要求。如果您想要一個 RNG(真正隨機而不是偽隨機),則要求是不同的,並且沒有基於軟體的算法可以滿足它們。
您可以在此處搜尋與我在下面提出的觀點相關的答案。
LFSR 本身是不安全的,是線性的。查找 Berlekamp Massey 算法。
通過非線性函式((a)通過過濾狀態或(b)通過組合輸出)的 LFSR 組合稍好一些,但仍然不安全。範例包括多路復用發生器、濾波器發生器、非線性組合發生器。
具有更複雜結構元素的LFSR,如收縮發生器和自收縮發生器,交替步進發生器具有更好的安全性。不規則時鐘是用於獲得更多安全性的另一種方法。然而,它們的無 IV 設計使它們不太適合現代高數據速率用途。
A5 及其版本(GSM 手機)具有一些旨在使其更安全的結構元素,但它被破壞了。
PS: SHAKE256 的問題可能應該分開問,你真的問了兩個非常不同的問題。