日期为2015年6月的最新AMD程序员手册将RDRAND指令包含在指令集中。为了完整起见,它缺少RDSEED。授予,《 AMD64体系结构程序员手册》第3卷:通用和系统说明,第278页。

描述包括文本:一个由硬件生成的随机值。


我很难找到有关AMD电路和其他设计/实现细节的信息。在搜索AMD网站时,我没有得到特别的关注,而且一般的网络搜索返回的噪音主要是由英特尔主导的(不是英特尔的错,这只是事实)。

已知的有关AMD电路的信息?


基于@Richie的评论(这是一个很好的线索):根据NIST的经过验证的FIPS 140-1和FIPS 140-2加密模块,AMD没有批准的模块。此外,根据NIST的“正在处理的模块”,AMD没有进行评估。

评论

我认为它使用与Intel相同的方法,使用相同的NIST批准的调节剂和DRBG

我在这些列表上也找不到Intel,所以您应该期待找到AMD的吗?

这些幻灯片(PDF)中介绍了英特尔的HRNG。您可能也对AMD clRNG感兴趣,这是AMD基于OpenCL的PRNG。

请注意,使用NIST认可的算法(例如基于计数器的DRBG)与使用NIST认可的加密模块之间是有区别的。我什至不确定处理器本身是否足以满足加密系统的要求。

#1 楼

这些电路使用的是一个正在振铃的异步计数器,有时会与来自唯一处理器ID的种子组合在一起(在测试过程中用电子保险丝将其吹灭)

如果并行使用32个环形振荡器,每一个都提供一个位,那么您每次采样都会看到一个随机的32位值。引入的随机性是由于电荷的泊松过程在整个设备通道上的不同时间到达的原因,这就是为什么环形振荡器“嘈杂”的原因。这就是为什么不需要种子的原因,您只需要花一些时间即可将CPU复位以实现电气混乱。我什至可能会通过电阻使一些地线与基板之间保持弱势,以增加电荷分布。

我也已经看到了这种实现方式,那就是将少量输入输入SHA-1,可以与处理器ID进行XOR,但是从物理的角度来看,您可能只有环形振荡器。我认为使用了这种方法,因为它是在NIST规范中概述的。

附录:

关于这种噪声的最平易近人的讨论可能是本文:

R。 Sarpeshkar,T。Delbruck和C.A. Mead,“ MOS晶体管和电阻器中的白噪声”,《 IEEE电路和设备》杂志,第1卷。 9号6,第23–29页,1993年。

评论


$ \ begingroup $
请原谅我的无知。您能否提供AMD电路中的设计链接?
$ \ endgroup $
–user10496
17年2月9日在17:56

$ \ begingroup $
您是否有使用该设计的AMD资料?
$ \ endgroup $
– CodesInChaos
17年2月9日在18:01

$ \ begingroup $
我在ISSCC(isscc.org)上找到了一个我正在尝试寻找的话题,但是该专利:google.com/patents/US6480072相似但不相同。如果有发现,我会拉笔记并发表评论。另外,需要特别注意的是,在单个电阻器噪声源上出现振铃的原因是,在冷却时,环形振荡器仍会表现出更大的熵。我可以通过对大多数硬件随机数生成器进行超级冷却来停止它们。
$ \ endgroup $
–b degnan
17-2-9在20:26



$ \ begingroup $
我对这个词不是很熟悉。如果用“随机过程”代替“泊松过程”,那句子的意思仍然完全一样吗?据我了解,泊松仅指特定形状的分布
$ \ endgroup $
–吕克
19-2-15在17:07



$ \ begingroup $
@Luc物理学家一词有细微差别,您希望您所谈论的是两次碰撞之间同时发生的事情。这就是为什么半导体噪声是双向散粒噪声,而不是热(Johnson)噪声的原因。这是物理过程的行为,而不仅仅是数学拟合,例如高斯。
$ \ endgroup $
–b degnan
19年2月15日在20:36