Encryption

真隨機數發生器的正確用途是什麼?

  • February 14, 2018

假設我有一個真正的隨機數生成器 TRNG。隨機數是從硬體熵源按需生成的,每次呼叫時都會產生一個 32 位的隨機值。

我必須用隨機數填充一個 10 字節(=10*8 位= 80 位)的數組。我可以第一次呼叫 TRNG,取第一個字節、第二個、第三個和第四個字節來填充我的數組,然後再次呼叫…

或者我應該為每個字節呼叫一個新的隨機數並丟棄未使用的字節?

我會說第一種方法是正確的,但是我的項目中的隨機數質量存在一個小問題,我想確定一下——也許我完全錯了……

我假設您的 TRNG 具有均勻分佈,並且可以生成所有可能的 32 位數字(即不限於特定的較小數字範圍,只是為了

$$ 0,2^32-1 $$). 在這種情況下,這並不重要,因為 TRNG 輸出也是一個真正隨機的單個比特流,以及一個真正隨機的 2 位對(數字 0-3)等流。

如果這不是真的, IE。您的 32 位數字是均勻隨機的,但單個位不是,這是不可能的:取第一個 32 位數字,然後查看它有哪些位,並且您已經掌握了有關下一個數字的某些位的資訊,即完整的數字也不是ranodm。

所以,如果你只取一個 32 位數據集的一部分,這並不意味著其餘的不再那麼隨機了。也只需使用其餘部分。

引用自:https://crypto.stackexchange.com/questions/55600