来自 /dev/random 的 RdRand

信息安全 linux 随机的 国家安全局
2021-08-10 18:37:02

Linus Torvalds回应Change.org上关于从 /dev/random 中删除 RdRand 的请愿书,抨击请愿者,称他不了解 Linux Kernel 中的代码而无知。来自英国的 Kyle Condon 在 Change.org 上提出请愿书让 Linus 从 /dev/random 中删除 RdRand,以“提高 linux 内核的整体安全性”。

/dev/random 中的 RdRand 有什么问题?

2个回答

这是一个未经正式测试的硬件实现,它是专有的。潜在的担忧是英特尔可能会根据 NSA 的要求对该实施进行后门。

当前将 rdrand 输出混合到 Linux 内核 PRNG 的方法是将其异或到池中,这在数学上意味着 rdrand 实现的弱输出不可能削弱整个池 - 它要么会加强它或对安全无动于衷。

然而,真正的风险是 xor 指令被后门,以一种在特殊情况下检测是否使用 rdrand 的方式,然后在调用 xor 时产生不同的输出,导致将故意削弱的 rdrand 输出放入池中.

可行的?是的。合理吗?鉴于最近的启示,也许。如果它是后门的,Linus 是不是同谋?你的猜测和我的一样好。

此外,还有一篇很棒的论文[PDF]关于在 CPU 的晶体管级别隐藏硬件后门。

编辑,2019 年 2 月。用户Luc在下面评论说,自从最初编写此答案以来,情况发生了变化:

从 Linux 4.19 开始,内核信任 RDRAND 完全为其 CSPRNG 播种,除非在启动时通过 random.trust_cpu=0 标志(或设置它的编译时间)。如果这不是您的第一次启动,这应该不是问题,但是新安装的系统或新创建的虚拟机可能具有可预测的启动种子文件(或根本没有种子文件),因此对于这些系统而言,这与收集良好的熵有关。

由于那些处理器上出现了硬件错误,RdRand 指令在 Ivy Bridge 上被破坏。除了错误之外,还有其他原因并非令人难以置信。使用确定性伪随机算法播种的密码算法可能比使用真正随机数播种的密码算法更容易破解数百万倍。实际上,我有一个工程应用程序可以从该指令中受益,但它会导致我的新 Ivy Bridge 笔记本电脑出现非法指令异常。我可以拿回我的钱吗?您可以在 RdRand 上查看 Wikipedia 条目以获取有关硬件错误的初始信息。