2014-12-26 17 views
2

我在网上搜索了很长一段时间,找不到明确的答案。我想知道由intel的指令产生的随机数字的质量。例如,它与IDQ's卡相比如何?它是真正的随机还是伪随机?是Intel的RdRand TRNG还是PRNG?

感谢

+0

换句话说,NSA秒杀了吗?无论你的答案是否更安全,都不信任美国密码。 – Jasen

+0

@DavidJohnston [设计RdRand内部](https://stackoverflow.com/questions/17616960/true-random-numbers-with-c11-and-rdrand/18004959#18004959),万一有人想知道信息在哪里他的答案来自于。所以是的,除非国家安全局破坏它,否则预期的设计是通过PRNG真正的随机馈送的。 –

回答

5

RdRand选自该饲料和AES-CBC-熵源的RNG喂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提供了一个更强的最小熵保证,即输出接近均匀。实际效果是,您可以安全地连接RdSeed值以制作更大的键和IV。例如。提供O(2^512)安全性的512位密钥。 RdRand足以满足O(2^128)安全性的所有需求。如果您想为RdRand提供安全性高于O(2^128)的加密系统,请阅读英特尔的SDG,其中解释了如何使用适当的加密算法安全地执行此操作。

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节有你在找什么。

+0

我在三个问题中看到此答案的版本,但链接很差。更好的链接:[英特尔®DRNG](https://software.intel.com/sites/default/files/m/d/4/1/d/8/441_Intel_R__DRNG_Software_Implementation_Guide_final_Aug7.pdf),[英特尔®DRNG软件实施指南] (https://software.intel.com/en-us/articles/intel-digital-random-number-generator-drng-software-implementation-guide)和Wikipedia [RdRand](https://en.wikipedia.org /维基/ RdRand)。 – zaph

+0

提示,使用链接按钮(左起第三位)获得更好的链接。 – zaph