CryptGenRandom 是 Windows 中 CryptoAPI 中的随机数生成器函数。那个随机数发生器有多少熵?我已经看了很多,但我找不到它。
问问题
3240 次
1 回答
11
Windows CryptGenRandom 的确切算法从未公布过,因此,一些安全专家建议根本不要使用它。
进行了一些逆向工程和密码分析。一项已发表的研究(Windows 随机数生成器的密码分析 - Leo Dorrendorf,2007 年)检查了 Windows 2000 RNG,并发现了设计和实现中的许多弱点。
该文档还描述了算法的熵收集器机制(第 4.2.3 节)。熵源是:
Source Bytes requested
CircularHash 256
KSecDD 256
GetCurrentProcessID() 8
GetCurrentThreadID() 8
GetTickCount() 8
GetLocalTime() 16
QueryPerformanceCounter() 24
GlobalMemoryStatus() 16
GetDiskFreeSpace() 40
GetComputerName() 16
GetUserName() 257
GetCursorPos() 8
GetMessageTime() 16
NTQuerySystemInformation calls:
ProcessorTimes 48
Performance 312
Exception 16
Lookaside 32
ProcessorStatistics up to the remaining length (3584 bytes buffer)
ProcessesAndThreads up to the remaining length
由于我们谈论的是伪数生成器而不是实数生成器,您可能会说根本没有真正的熵,或者只计算您可能认为是“熵”(伪熵)的源.
我无法在 Windows 上找到有关较新版本的信息。
于 2010-08-15T12:24:20.390 回答