3

我在网上搜索了很长时间,但找不到明确的答案。我想知道英特尔的 rdrand 指令生成的随机数的质量。例如,它与IDQ 的卡相比如何?它是真正随机的还是伪随机的?

谢谢

4

3 回答 3

6

RdRand 由一个 RNG 提供,该 RNG 由一个熵源和 AES-CBC-MAC 熵提取器组成,该熵提取器为 AES-CTR-DRBG 提供种子。DRBG 以每秒大约 100 万次的速度重新播种(它会有所不同,在较慢的芯片上较慢,在较快的芯片上较快)。所以 DRBG 的输出是一个随机播种的 PRNG。如果你读得很慢(少于 100 万次/秒),你可以预期 DRBG 每次都会重新播种,因此渐近线是一个全熵 RNG。如果您的读取速度超过 CPU 允许的速度,则 DRNG 硬件在每个种子的 511 个 DRBG 128 位输出处达到最高值。密码预测阻力为 O(2^128)。

RdSeed 提供了 NIST SP800-90C XOR 构造变体,其中每个值都包含一个新鲜种子。TRNG 术语没有明确定义,但 RdSeed 可能接近人们认为他们所说的 TRNG 的含义。它的性能低于 RdRand,因为速度是熵提取器输出速率的函数,而不是 DRBG 的输出速率。

因此,在询问“质量是什么”时,您需要指定最小熵或计算界限。两者在统计上都与制服没有区别,但 RdRand 还保证了 O(2^128) 加密预测阻力(您需要做多少工作才能可靠地预测下一个状态),这仅适用于重新种子之间(因此在大约 1us 的时间段内) ,当先前的状态被新的熵数据覆盖时。RdSeed 提供了更强的最小熵保证,即输出是 epsilon 接近均匀的。实际效果是您可以安全地连接 RdSeed 值以生成更大的密钥和 IV。EG 512 位密钥提供 O(2^512) 安全性。RdRand 足以满足 O(2^128) 安全性的所有需求。如果您想从 RdRand 提供安全性大于 O(2^128) 的密码系统,请阅读 Intel 的 SDG,

于 2015-08-12T22:22:01.837 回答
0

请阅读 John M 的文章和代码示例 https://software.intel.com/en-us/articles/intel-digital-random-number-generator-drng-software-implementation-guide 第 2.2 节涵盖伪,2.3 涵盖真

于 2014-12-28T08:12:17.870 回答
0

英特尔的 RdRand 是一种高质量、加密安全的伪随机数生成器。这里有一篇论文详细描述了它是什么、如何使用、如何使用以及使用速度有多快(http://iopscience.iop.org/article/10.3847/1538- 4357/aa7ede/meta;jsessionid=A9DA9DDB925E6522D058F3CEEC7D0B21.ip-10-40-2-120)或此处的非付费版本(https://arxiv.org/abs/1707.02212)。

我认为第 2.2.1 和第 5 节有你想要的。

于 2017-11-13T22:13:58.027 回答