Assembly 为什么我们有诸如RDRAND之类的指令,而不是I/O,这会给我们带来类似的结果?

Assembly 为什么我们有诸如RDRAND之类的指令,而不是I/O,这会给我们带来类似的结果?,assembly,random,cpu,Assembly,Random,Cpu,我想知道设计一个特定于CPU的指令来生成随机数的原因是什么 英特尔处理器具有RDRAND和RDSEED。PPC还有一条等效指令 如果有一个单独的芯片,只做一些I/O来获取这些数字,这不是更有意义吗?在我看来,当I/O已经存在很长一段时间并且应该可以正常工作时,对于一个非常专业的指令(大多数软件从不使用随机数!),它使CPU变得更加复杂。我们两者都有。 TPM可以生成(毕竟,它是一个“加密芯片”),而且自Haswell以来,TPM已经出现在许多(如果不是全部的话)基于Intel的主板上。 专有的C

我想知道设计一个特定于CPU的指令来生成随机数的原因是什么

英特尔处理器具有
RDRAND
RDSEED
。PPC还有一条等效指令

如果有一个单独的芯片,只做一些I/O来获取这些数字,这不是更有意义吗?在我看来,当I/O已经存在很长一段时间并且应该可以正常工作时,对于一个非常专业的指令(大多数软件从不使用随机数!),它使CPU变得更加复杂。

我们两者都有。
TPM可以生成(毕竟,它是一个“加密芯片”),而且自Haswell以来,TPM已经出现在许多(如果不是全部的话)基于Intel的主板上。
专有的CSRNG PCI(e)卡也可以在市场上买到

我曾与Arduino一起参加了一次自制CSRNG的演示。
那家伙对统计学和代数一无所知。老实说,整个演讲都很可怜。
你不能仅仅制造一个芯片并声称它是CSRNG,你必须获得认证,有标准和方法。
获得这些认证既昂贵又困难

此外,要处理较宽的带宽,还需要一个快速(u)处理器。
TPM委员会的目标之一是使其便宜,最终结果是TPM芯片速度慢

如果你加上这种芯片相对较低的市场需求,我们可以清楚地看到CSRNG芯片确实很昂贵

外部设备也容易受到物理攻击,芯片很容易脱焊/去封装,或者总线被抽头或更换。
即使是CPU内部的CSRNG也是如此,攻击是已知的,通过改变晶体管来降低其熵。
然而,这需要一种完全不同的工具

PCI(e)CSRNG可能会使用DMA来传输所需数量的熵字节,这需要与操作系统的一些协调接口,例如,在传输过程中

当然,有效载荷将在内存中,这意味着更大的软件表面攻击和将其放入寄存器的额外步骤。
访问存储器的周期约为200-300个周期

使用端口映射IO(即指令中的
)会将有效负载直接带到寄存器中,但一次仅32位,并且不会比普通负载快

RDRAND
是一种用户模式指令,允许用户模式应用程序访问CSRNG,无需额外负担,只需检查其支持情况。
它几乎配备了所有最新的CPU,几乎感觉像是免费的

最后,还有营销方面的问题。
如果您的制造工艺有所改进,并且在模具中给了您几平方的空间,您可以改进微结构或添加新功能。
前者很难,后者相对容易设计,它可能会让你比竞争对手更强大:普通工具在你的CPU上运行得更快,这仅仅是因为你可以在芯片上提供更多的空间

我们两者都有。
TPM可以生成(毕竟,它是一个“加密芯片”),而且自Haswell以来,TPM已经出现在许多(如果不是全部的话)基于Intel的主板上。
专有的CSRNG PCI(e)卡也可以在市场上买到

我曾与Arduino一起参加了一次自制CSRNG的演示。
那家伙对统计学和代数一无所知。老实说,整个演讲都很可怜。
你不能仅仅制造一个芯片并声称它是CSRNG,你必须获得认证,有标准和方法。
获得这些认证既昂贵又困难

此外,要处理较宽的带宽,还需要一个快速(u)处理器。
TPM委员会的目标之一是使其便宜,最终结果是TPM芯片速度慢

如果你加上这种芯片相对较低的市场需求,我们可以清楚地看到CSRNG芯片确实很昂贵

外部设备也容易受到物理攻击,芯片很容易脱焊/去封装,或者总线被抽头或更换。
即使是CPU内部的CSRNG也是如此,攻击是已知的,通过改变晶体管来降低其熵。
然而,这需要一种完全不同的工具

PCI(e)CSRNG可能会使用DMA来传输所需数量的熵字节,这需要与操作系统的一些协调接口,例如,在传输过程中

当然,有效载荷将在内存中,这意味着更大的软件表面攻击和将其放入寄存器的额外步骤。
访问存储器的周期约为200-300个周期

使用端口映射IO(即
指令中的
)会将有效负载直接带到寄存器中,但一次仅32位,并且不会比普通负载快

RDRAND
是一种用户模式指令,允许用户模式应用程序访问CSRNG,无需额外负担,只需检查其支持情况。
它几乎配备了所有最新的CPU,几乎感觉像是免费的

最后,还有营销方面的问题。
如果您的制造工艺有所改进,并且在模具中给了您几平方的空间,您可以改进微结构或添加新功能。

前者很难,后者相对容易设计,它可能会让你比竞争对手更强大:普通工具在你的CPU上运行得更快,这仅仅是因为你可以在芯片上提供更多的空间

在RdRand和RdSeed中,这是一个明确的设计决策,它将其随机数传递到执行指令的程序的目标寄存器中,绕过操作系统、库、虚拟机监控程序、设备驱动程序和任何可能增加攻击面的东西

在模具上安装RNG是(一种