如何使用 TPM 保护我的 BIOS/EFI 免受“远程”攻击

信息安全 BIOS 可信计算 uefi
2021-08-23 17:54:51

我有一台工作/游戏电脑。工作端是 linux 的 SSD,游戏端是 Win7 的 SSD(所有安全关闭,计划获取病毒并重新擦除每个 LAN)。一次只有一个驱动器被物理插入。只要两个驱动器都没有同时插入,我能看到的将病毒从 Win7 感染到 Linux 驱动器的唯一方法是它感染 BIOS,然后在我切换它们时获取另一个驱动器。(如果这有争议,请发表评论,我们可以讨论另一个问题。)

我听说过这个“TPM”的东西,但仅限于它可能允许制造商阻止我安装不同的操作系统,这不是我想要保护自己的。

所以场景是这样的:假设 Win7 启动被破坏到最大,我如何保护我的 BIOS(或者至少知道它是否被篡改)。我已经看到了这个问题,如果 TPM 足够低级以实际验证受损的 BIOS,它会留下一些歧义。 如何检查我的 BIOS 的完整性?

为此我愿意购买专用主板。

3个回答

您似乎在这里混合了两种技术。

首先,有 UEFI 及其安全启动功能。安全启动可用于确保您的引导加载程序和操作系统内核不被篡改。为此,您的引导加载程序和内核需要进行数字签名,并且您的 UEFI 配置必须包含验证签名所需的证书/签名。ARM 平台上的 Windows 8 使用 UEFI 可以有效防止安装其他操作系统。然而,UEFI 并没有提供任何针对固件级别攻击的真正保护。

现在介绍 TPM:TPM 是一种无源硬件芯片,它(除其他外)用于以防篡改方式存储例如软件的测量值(散列值),并使这些测量值可用于报告。附带 TPM 的主板对其固件有特殊要求。首先,他们有一个很小的特殊固件,称为 Core Root of Trust for Measurement (CRTM)。CRTM 在引导期间首先执行,并在将控制权移交给它之前存储其自身和下一个固件(BIOS 或 UEFI)的测量值。下一个固件通常会测量引导加载程序,而引导加载程序又会测量 OS 内核等直至应用程序级别(具体而言,测量过程当然更复杂)。然而,大多数引导加载程序和操作系统并不以这种方式使用 TPM。反正,

你能用这些测量值做什么?例如,BitLocker 使用 Sealing 将解密 HD 所需的密钥绑定到这些测量值。这意味着,如果恶意软件破坏了您的固件,您的 HD 密钥将无法使用。因此,在 Windows 上,您可以使用 BitLocker 来防止您的固件被篡改。我不知道 Linux 有类似的东西(尽管可能存在一些东西)。但是,您可以使用启用了可信网络连接 (TNC) 的 Radius 服务器和启用了 TNC 的 wpasupplicant 来远程验证测量值。

TPM 可用于在启动期间检查内核是否未修改(签名),它还可以执行 Bitlocker 全盘加密。除了远程安装内核或 vt rootkit 之外,它实际上并不能防止对您的机器进行任何远程攻击。您最终可用于签署请求的硬件根密钥,例如进入另一个安全 LAN,或通过 HTTPS 获取安全资源。是的,它也可以通过检查它是否加载正确的内核来保护 BIOS。

TPM 确实有能力检查 BIOS,它是传播的信任链。检查协议的静态和动态信任根,并查看最适合您的套件。再次确定您为什么要保护 BIOS 以及您真正要保护的是什么。