對於那些匆忙,這是不是有關有爭議Dual_EC_DRBG
種植在NIST的SP800-90A內。隨機數字發生器安全:BCryptGenRandom與RNGCryptoServiceProvider
關於兩種隨機數發生器:
基於微軟BCRYPT層之一就是在他們的C API。
BCryptGenRandom
遵循NIST SP800-90A的CTR_DRBG
(即使用批准的分組密碼AES來創建隨機比特)。然而,目前還不清楚它是否使用硬件隨機源作爲種子(或種子的一部分)...Microsoft .NET
RNGCryptoServiceProvider
是基於C#的。看看.NET source code(或here),我看到它最終調用C++方法CapiNative.GenerateRandomBytes()
。應該有一個P/Invoke存根用於C#=> C++轉換,但是我在框架源中的任何地方都找不到它。所以我不知道它是如何實現的。
有沒有人有關於這兩個隨機數發生器的附加信息?要麼使用HW隨機種子(要麼通過老年人的二極管噪聲,要麼使用最新的intels中的有爭議的RDRAND
)。
PS:不知道它這應該是在安全,StackOverflow上或密碼...
1)它沒有真正描述'RNGCryptoServiceProvider'如何與本地CSPRNG相關。 2)早於Windows Vista。微軟在Vista中重寫了大部分加密代碼,例如現在他們使用AES CTR_DRBG而不是RC4。 – CodesInChaos