Randomness
使用提取器和 PRG 的隨機性隱私
維基百科關於隨機性提取的文章指出它們與偽隨機數生成器不同,但區別非常模糊。兩者似乎都接受了一些準隨機輸入並產生均勻隨機的輸出。
我對生成的輸出的安全方面感興趣。我希望我的最終隨機性是私密的。對於 PRG,知道種子會完全影響生成的輸出。提取器是否也是這種情況,即它們僅與輸入隨機性的隱私一樣安全?
更一般地說,如果我無法控制我的隨機源的隱私,有什麼方法可以生成(假設我遵循公共協議)一個私有和隨機字元串?
是的,真正的隨機數生成器 (TRNG) 僅與輸入隨機性的隱私一樣安全。我們稱輸入隨機性熵。您將 TRNG 和偽隨機數生成器 (PRNG) 與隨機提取器混為一談。
隨機提取器只是將任意輸入分佈的統計組合和變形轉換為均勻分佈。並將不可避免的相關性減少到可以忽略不計的數量。它是熵源或狀態下游的組件。而已。因此,提取器可能會將一組相關且正態分佈的物理樣本轉換為不相關且均勻分佈的集合。
除了(輸入熵)>(輸出)之外,不涉及嚴格的加密安全。TRNG 的安全性來自這樣一個事實,即由於輸出的熵少於輸入的熵,因此在數學上不可能發現原始熵。有些人喜歡使用密碼函式作為隨機提取器的基礎,但這並不是必需的。然而,由於這是一個加密論壇……
兩個例子:-
- 有一個 128 位計數器作為狀態。重複增加該狀態。然後使用 AES 之類的密鑰加密該狀態。您可能會爭辯說,加密部分在 PRNG 中形成了隨機提取器。但是,這不是一個常見的範例。
- 有一些物理過程生成具有不穩定分佈的真正隨機數字信號。使用一些矩陣乘法或密碼散列來產生具有輸出偏差的均勻分佈 < $ 2^{-64} $ . 這個乘法/散列組件是 TRNG 的隨機提取器部分。
當然,如果有人知道原始狀態/熵,那麼輸出序列將是可預測的。除非您使用私鑰使用另一個密碼對其進行加密,或者使用連接的私有 IV 對其進行雜湊處理。但是在這種情況下,與普通 PRNG 相比有什麼優勢呢?這相當於範例 1,但更糟糕的是,您對公共序列中的偏見一無所知。