8

CryptGenRandom 是 Windows 中 CryptoAPI 中的随机数生成器函数。那个随机数发生器有多少熵?我已经看了很多,但我找不到它。

4

1 回答 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 回答