UEFI 固件完整性测量

信息安全 正直 固件 开机 uefi
2021-08-24 13:46:15

我们知道,如果启用了安全启动,则 UEFI 会在每次打开计算机电源时测量操作系统引导加载程序映像的完整性。

随着越来越多的攻击和 UEFI 漏洞的发现,出现了以下问题:

我想知道是否有关于 UEFI 的规范,可以在安全启动过程之前测量 UEFI 固件的完整性,因此它可以防止或避免闪烁攻击以更改固件。

另外,我想知道是否测量了连接到计算机的其余设备的固件的完整性。

我在这里担心的是,如果您的固件受到攻击(闪存攻击),安装的恶意软件能够执行任何任务,从而欺骗早期的安全启动协议。

2个回答

在大多数情况下,UEFI 位于非易失性存储器中(例如,嵌入到主板中的 Nand 存储器),一种防止 FW 妥协的好方法可能是:

在首次编写 UEFI FW 之前:

1.calculate RSA singature - 必须是 RSA 的强大实现(例如 4096 模数长度 + OAEP 填充方案)

2.存储连接到固件图像的公钥和签名

3.如果有使用 OTP 内存块的选项(相当低成本的硬件) - 将公钥的 SHA-512 提供给 OTP(可选)

在每次加载 FW 时:

1.验证连接到固件图像的公钥的SHA-512(可选)

2.验证RSA签名

3.继续开机

这种方法相当安全并且不是很昂贵,因为 RSA 签名认证不会消耗太多时间(公共指数中的位很少,因此求幂将足够快)。我在安全启动规范中没有找到任何这样的方案,我希望他们将来会添加类似的东西。

英特尔安全研究团队最近发布了一款专门用于此类 UEFI 完整性检查的工具: CHIPSEC UEFI 完整性扫描器

芯片安全 / github

您将需要一个安全的参考白名单来检测您的 EFI 是否已被盗用。