在保密计算 “CoCo “虚拟机中,虚拟机主机被认为是不可信任的,目的是尽可能地隔离,RdRand 硬件随机数生成器指令是客户虚拟机的有限熵源之一。目前,RdRand 可能会出现故障,而 CoCo 客户虚拟机将继续启动,尽管熵值有限或根本无法看到虚拟机的随机数生成。但是,作为 Linux 6.9 x86 修补程序的一部分,RdRand 今天被合并到了 CoCo 环境中,这就要求在 RNG 中加入 RdRand 种子,否则内核就会崩溃。
RdRand 出现在英特尔 CPU 上已经有十多年了(可以追溯到 Ivy Bridge,最初代号为 Bull Mountain),在 AMD CPU 上也有十多年了。但正如多年来 Phoronix 上所写的那样,有时由于 CPU 和/或主板/BIOS 的问题,RdRand 有时会完全失效或造成其他麻烦。由于 CoCo 虚拟机在启动时只有有限的其他熵源为 RNG 播种,因此如果没有关键的硬件支持熵源,Linux 客户端就会出现内核崩溃。
作为今天上午 Linux 6.9-rc3 x86 修正的一部分,机密计算系统需要使用 RdRand 为 RNG 播种。
安全专家兼 WireGuard 开发人员 Jason Donenfeld 撰写了内核变更,要求 CoCo 来宾使用 RdRand,否则会导致内核恐慌。他在今天合并的补丁中解释说
他在今天合并的补丁中解释说:”CoCo 的使用很少不依赖于有效的加密技术,因此也不依赖于有效的 RNG。不幸的是,CoCo 威胁模型意味着虚拟机主机不可信,它可能会主动与客户作对,以获取机密或操纵计算。由于恶意主机可以修改或观察到客人的几乎所有输入,CoCo 客人的熵源只剩下 RDRAND。
如果 RDRAND 因 CPU 硬件故障而损坏,RNG 作为一个整体就会从容地继续从其他来源收集熵,但由于 CoCo 上没有其他来源,这将是灾难性的。这主要是在启动时初始化 RNG 时需要考虑的问题,因为在此之后,RDRAND 损坏的后果更多是理论上的。
因此,请尝试在启动时使用 256 位 RDRAND 输出为 RNG 播种。如果失败,请执行 panic()。如果系统在没有 RDRAND 的情况下启动,也会触发 panic(),因为 RDRAND 对于安全的 CoCo 启动至关重要”。
如果没有 RDRAND 种子,CoCo 虚拟机中的大部分加密都将被破坏,因此机密计算的大部分动机都将落空。Linux 6.9-rc3 将于今天晚些时候发布,本周将有多种内核修复。
转自 CoCo VMs On Linux Will Now Panic If RdRand Is Broken To Avoid Catastrophic Conditions – Phoronix
这机翻的吧?也太粗糙了…