關於熵和隨機數生成器
我正在閱讀一篇關於資訊密碼學和偽隨機數生成器的文章。文章說使用 1 $ 28 $ -bit entropy PRNG 在密碼學的某些情況下是安全的。我不熟悉這個領域。但是經過一番研究,我得到了一些理解如下(如果不正確,請糾正我)
- 熵用於衡量資訊的隨機程度。熵的一個典型定義是香農熵,定義為
$$ H(F) = -\sum P(x) \log_2(P(x)) $$因此,如果資訊是由 128 位數據攜帶的,那麼每個位都以機率出現 $ P(x)=1/2^{128} $ ,因此熵為 128。 2. 我閱讀了幾篇文章,他們得出的結論是 PRNG 不會增加或增加熵。
所以基於以上兩點,我可以說 $ n $ -bit entropy PRNG 基本上是一個隨機生成器,初始狀態選擇為 $ n $ -位數據本身不是 PRNG 的算法(假設 PRNG 實現需要 $ 128 $ 位數據)。那是對的嗎?
如果是真的,我的問題如下:
我應該得到任何 $ 128 $ - 位數據作為初始狀態將使其來自 PRNG 足夠隨機或 $ 128 $ 位數據應以特定方式準備?
是的,這是正確的。(直到 1. 中的“所以每個位都出現在”的拼寫錯誤應該讀作“所以每個 128 位值都出現在”,並且該句子末尾缺少單位“位”;以及未提及的假設,即每次隨機選擇一個 128 位值時,其值與之前的選擇無關)。如果加密安全 PRG 的狀態正好是 128 位,則在操作期間不允許“鬆散”任何熵以確保 128 位安全,並且必須由完全一致的隨機源播種。
問題是如何選擇初始狀態。攻擊者應該只有一個機會 $ 2^{-128} $ 猜測初始狀態,否則他可以只計算 PRG 的輸出(在猜測初始狀態之後)來預測其輸出。所以你必須找到一種方法來為初始值選擇一個均勻分佈的隨機 128 位值,這是一個真正的問題:你需要一個隨機源(攻擊者無法觀察到)和一種提取 128 位熵的方法.