Pseudo-Random-Generator

帶有真正隨機種子的 PRNG?

  • September 4, 2018

PRNG(維基百科)

“PRNG 生成的序列並不是真正隨機的,因為它完全由一個初始值決定,稱為 PRNG 的種子(可能包括真正的隨機值)。”

我的問題是:

  • 具有真正隨機種子的 PRNG 生成的序列是否被認為是加密安全的 PRNG?

如果不:

  • CSPRNG 生成的序列與 PRNG 生成的序列有何不同?

具有真正隨機種子的 PRNG 生成的序列是否被認為是加密安全的 PRNG?

不必要。如果您的 PRNG 算法在設計時沒有考慮到安全性,那麼僅僅給它一個隨機種子並不能使其成為加密安全 PRNG (CSPRNG)。如果 PRNG 沒有被設計為 CSPRNG,那麼它極不可能是偶然的。

CSPRNG 生成的序列與 PRNG 生成的序列有何不同?

這是一個有點奇怪的問題,因為 CSPRNG當然PRNG。讓我們將 CSPRNG 與非安全 PRNG 進行比較。

CSPRNG 的輸出不應洩漏有關 PRNG 先前或後續輸出的任何資訊。如果不恢復所有輸出所依賴的種子資訊,應該不可能重新創建 PRNG 的狀態(在任何時間點)。這不是 PRNG 的一般要求。例如,通過 Diehard 測試的 Mersenne Twister確實允許攻擊者在給定足夠輸出的情況下計算狀態向量。

CSPRNG 可能具有額外的約束,例如輸出上的偏差非常低,從而提供分佈良好的輸出。可以說任何PRNG都需要這些,但 PRNG 可以為速度而建構 -為特定應用程序提供*足夠好的輸出。*加密應用程序通常需要非常高水平的無偏、良好分佈的輸出。


請注意,許多 CSPRNG 算法可能隨時重新播種,將新的種子熵混合到目前狀態中*。不一定只有一顆種子*。當然至少有一個初始種子;否則 CSPRNG 無法生成初始輸出。

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