Randomness

安全 PRNG 輸出的一部分是否也是加密安全的?

  • February 3, 2016

假設我使用一些安全的 PRNG 生成 192 位。如果我現在取前 128 位,是否相當於首先生成 128 位?

PS 對我來說更實際的應用是我需要一個用於 ASP.NET 的 machineKey,我為它使用 IIS UI,它會生成一個對應於用於 AES 的 192 位密鑰的字元串,但由於 AES 128 也足夠好,但是更快,我只想取前 128 位。

是的。雖然位值不相同(即使給定相同的種子),您應該使用 192 位中的任何一個來形成 128 位密鑰 - 只要您當然不重用任何位。

如果 128 位不安全,那麼 192 位也不應該是安全的。AES 密鑰由完全隨機的位組成,因此不相關,因此生成 192 位密鑰然後使用最左邊的 128 位應該沒問題。

簡短的回答:是的。如果 PRNG 在密碼學上是安全的,並且一次生成一定的比特塊,那麼 PRNG 生成的塊的任何子集都應該與完整塊一樣“隨機”,但這取決於具體的實現CSPRNG。可以肯定的是,我會參考您正在使用的 API 的完整文件。如果您使用的是Microsoft 的閉源 .NET CSPRNG,那麼您只需要信任它們 ;-)

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