【问题标题】:CryptGenRandom EntropyCryptGen随机熵
【发布时间】:2010-08-15 10:28:59
【问题描述】:
CryptGenRandom 是 Windows 中 CryptoAPI 中的随机数生成器函数。那个随机数发生器有多少熵?我已经找了很多了,还是没找到。
【问题讨论】:
标签:
windows
winapi
random
entropy
【解决方案1】:
Windows CryptGenRandom 的确切算法从未公布过,因此,一些安全专家建议根本不要使用它。
进行了一些逆向工程和密码分析。
一项已发表的研究 (Cryptanalysis of the Windows Random Number Generator - 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 上找到有关较新版本的信息。