Random-Number-Generator
RNG 源合併
我計劃組合來自多個來源(Windows、Linux、OpenBSD 等)的 RNG 來生成一次性填充,但我有一些問題我不知道如何回答有關將這些隨機數生成器的輸出異或在一起的問題。試圖尋找這些問題的答案也不是很好。
假設我們有 2 個隨機數生成器,
g
並且h
. 如果g
是安全的而h
不是不安全的(攻擊者可以找到某種模式來預測未來的輸出,或者攻擊者可以影響或收集來自所述生成器的輸出數據),那麼g ^ h
安全嗎?我相信這是肯定的,因為如果我們有位g1
並且h1
攻擊者知道h1
,g1 ^ h1
那麼對於所述攻擊者來說,實際上是隨機的,因為他不知道是什麼g1
。假設我們有一個無偏的隨機數生成器
g
和一個有偏的(有偏的,p(1) != p(0)
並且p(1) = C
對於某個常數C
)隨機數生成器h
。g ^ h
不偏不倚?我有點認為這是肯定的,但同時我不確定從那時起我們是否應該能夠對任何有偏(恆定)隨機數生成器輸出進行異或0xAA
併得到一個無偏的。為了配合上一個問題,假設我們有一個有偏的(
h
如上一個問題中的常數)隨機數生成器,並且我們對每個其他輸出位進行異或1
。輸出是否無偏?
- 是的,將任何東西與一個好的 RNG 的輸出相結合將產生好的隨機數(只要它們沒有來自你的 RNG 的資訊)
- 是的,它會消除偏見(但也有其他方法可以美白)
- 不,這並沒有真正做任何有趣的事情,但一個簡單的方法來消除你的數字是馮諾依曼提取器
還要嘗試找到不確定的來源,對來自陌生人的隨機數據持懷疑態度。