CryptGenRandom熵

时间:2010-08-15 10:29:00

标签: windows winapi random entropy

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

1 个答案:

答案 0 :(得分:11)

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

由于我们讨论的是伪数生成器而不是实数生成器,您可能会说根本没有真正的熵,或者只计算您可能认为是“熵”的源(伪-entropy)。

我无法在Windows上找到有关较新版本的信息。