Ubuntu 中的“随机数”来自哪里?

Ubuntu 中的“随机数”来自哪里?

这篇 Ars Technica 文章揭示了基于 CPU 的随机数生成器“RDRAND”和“Padlock”很可能是利用 NSA 输入制作的,以利于 NSA 代码破解。

当前的 Ubuntu 发行版是否在具有 Intel 和 VIA CPU 的机器上使用这些例程?

如果是这样,可以通过安装其他代码来绕过这些生成器吗?

搜索“随机数”也没有发现任何问题,而且由于隐私对很多人来说都很重要,我相信这是一个普遍感兴趣的问题,而不是一个模糊的问题。

答案1

Ubuntu 中的随机数来源来自 Linux 内核,具体来说是 /dev/random 和 /dev/urandom(伪随机)。两者的区别在于 /dev/random 可能是阻塞的,而 /dev/urandom 不是,但可能不是那么随机。

除此之外,RdRand 只是 Linux 内核中使用的众多熵源之一,只要用户空间应用程序不直接使用 RdRand 而是对内核进行系统调用,Ubuntu 的随机输出就不会出现问题。

这里这是 Slashdot 故事的链接,其中 Linus 解释了为什么将 RdRand 从内核中移除的请愿书是愚蠢的

答案2

Linux(Ubuntu 或其他)可以使用多种熵源来生成随机数,包括硬件访问时间(例如按键和鼠标移动)以及硬件生成器(如 RdRand,如果可用)。从一次启动到下一次启动,熵也会被保存。

如果做得正确(Linux 做得正确)不完美,但足以抵御带有后门的硬件 RNG 的威胁),将不同的熵源组合在一起只能产生更好的熵,而不会变坏。事实上,可以预料的是,熵源单独是不够好的,只有它们的组合才是好的。因此,即使 RdRand 受到损害并且熵值低于硬件制造商所声称的,这也不会削弱 Linux 的随机数生成器。

有关更深入的解释,请参阅RDRAND(英特尔)会降低熵吗?

间接威胁是,没有一个熵源足够好。这并不是说 RdRand 本身受到损害,而是系统可能依赖它作为唯一好的熵源。这种情况在缺乏其他表现出随机性的硬件的嵌入式系统中尤其可能发生。正在供给 /dev/random 熵池吗?对额外的熵源有一些建议。

相关内容