Entropy
可以將壞熵添加到好熵中,使系統不安全嗎?
例如,
如果我需要生成一個隨機數。我使用良好的熵源來生成
r
.然後我添加值
a
,b
以及c
從壞熵中生成的人,使得new entropy = r + a + b + c
整體熵會是什麼樣子?
加號表示添加而不是連接。我相信如果我們連接起來,那麼這將導致一個整體的壞熵,因為如果我們假設每個
a,b,c,r
都貢獻 64 位到 256 位的熵。我們實際上只有 64 位的好熵r
。這是我對串聯的直覺。
如果您有一個具有最大熵的變數,並且您使用 Xor 或模加法將它與具有較少熵的自變數結合起來,您仍然會擁有最大熵。
如果您有兩個低熵的自變數,並以上述方式將它們組合起來,則結果將是一個熵大於原始變數的變數
然而,如果變數是相關的,那麼所有的賭注都會被取消。即使將兩個最大熵變數組合在一起,在添加/異或時也可能導致 0 熵(常數變數)。
我假設加法是 mod 2^64。在這種情況下,變數 new entropy = r + a+ b+c 將具有與 r 相同的熵(我們假設 r 已經具有最大熵)。
相反,如果加法是在整數上,並且 a,b,c, 被限制為 64 位,您將得到一個最多 67 位的隨機變數,它不是均勻分佈的,並且沒有對 a,b,c 的任何假設,它可能只有 64 位熵。(例如,a、b、c 可以相互關聯,因此總和始終等於 452441。)
更好的方法是使用靈活的雙源提取器,其中兩個源是 a|b|c(串聯)和 r,或者出於實際原因,只需使用 SHA256 對串聯(a|b|c|r)進行散列。