我刚刚组装了多年来的第一台电脑,现在我第一次拥有了 UEFI 主板。我以传统模式安装了 Windows 7,并使用 Truecrypt 加密了我的系统分区。
最近有一篇关于 Lighteater 概念验证的文章,其中称 Lighteater 能够从内存中提取加密密钥。为了做到这一点,UEFI 需要访问系统的内存并将数据存储在未加密空间的某个地方。对于每个加密用户来说,这应该是令人担忧的。
据我所知,UEFI 本身就是一个操作系统,然后运行 Windows。我的问题是,我不知道 UEFI 可以在多大程度上访问正在运行的 Windows 系统及其内存,以及内存的某些部分是否在 UEFI 闪存中进展,这可能会将我的加密密钥泄露给有权访问我计算机的人。我主要担心的是,即使计算机已关闭并断开电源,有人也可能能够从主板上的 UEFI 内存中提取这些密钥。有人能澄清这个问题吗?
答案1
据我所知,UEFI 本身就是一个操作系统,可以运行 Windows
UEFI 与操作系统一样复杂,但说 UEFI 在加载操作系统后运行操作系统是错误的- 尽管网上有很多文字会给人留下这种印象。
简单来说,表达 UEFI 和 Windows 如何共存的正确方式是“并排”——一旦 Windows 启动,UEFI 就不会在后台运行,但有 UEFI 代码可以执行操作,并且一旦调用就会执行操作。Windows 会发起对 UEFI 固件的任何调用。
UEFI 确实具有与操作系统内核相同的权限级别,并且可以访问所有内存和设备。通常情况下,如果没有操作系统的指示,它不会采取任何行动。
因此,UEFI 不会自行泄露任何密钥 - 但 UEFI 提供的运行时服务之一是读取和写入 UEFI NVRAM - 操作系统中的恶意进程可能会要求 UEFI 将密钥写入 UEFI NVRAM。
但是(戴上你的锡箔帽)......
自 80486 系列英特尔处理器(奔腾处理器之前的一代)开始,引入了一项称为系统管理中断的功能。SMI 的设计使其无法被底层操作系统检测到。现代平台将它们用于:
- 风扇控制。
- 模拟硬件 - 例如,通过 SMI 使 USB 键盘/鼠标看起来像 PS/2 键盘/鼠标,以实现 DOS 兼容性。
- 模拟其他硬件(你可能会发现这有趣的)。
因此,恶意 UEFI 固件完全有可能在操作系统不知情的情况下在后台运行某些程序。(至少在某些平台上,在操作系统启动之前运行的某些程序也有可能在操作系统启动之前修改 SMI 处理程序。)
因此,就像任何软件一样,UEFI 是您选择信任的东西,而且由于它是闭源的,而不是您自己编译/安装的东西,所以您也选择在某种程度上盲目地信任它,就像大多数收缩包装和/或预装的软件一样。
如果你还没有摘掉锡纸帽子,那么要意识到英特尔博锐和英特尔主动管理技术与 UEFI 相比,您可以更多地访问您的系统,并且能够更远程地暴露信息。