是英特尔的RdRand TRNG还是PRNG?

时间:2014-12-26 06:43:30

标签: random intel rdrand

我在网上搜索了一段时间,却找不到明确的答案。我想知道intel的rdrand指令生成的随机数的质量。例如,它与IDQ's卡相比如何?它真的是随机的还是伪随机的?

由于

3 个答案:

答案 0 :(得分:6)

RdRand由RNG馈送,该RNG由馈送的熵源和种子AES-CTR-DRBG的AES-CBC-MAC熵提取器组成。 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提供更强的最小熵保证,输出ε接近均匀。实际效果是您可以安全地连接RdSeed值以生成更大的键和IV。例如。 512位密钥提供O(2 ^ 512)安全性。 RdRand足以满足O(2 ^ 128)安全性的所有需求。如果您想从RdRand提供大于O(2 ^ 128)安全性的密码系统,请阅读英特尔的SDG,其中介绍了如何使用适当的加密算法安全地执行此操作。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

英特尔的RdRand是一种高质量,加密安全的伪随机数发生器。详细描述了它是什么,如何使用它,如何使用它,以及在这里使用文章(http://iopscience.iop.org/article/10.3847/1538-4357/aa7ede/meta;jsessionid=A9DA9DDB925E6522D058F3CEEC7D0B21.ip-10-40-2-120)或非支付版本({{3 }})。

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