我想使用 TPM 为我的工作站提供篡改证据,使用 SRTM(用于测量的静态信任根)。目前,我计划让 TPM 封印一个只有我知道的一次性价值,类似于Qubes 的 Anti-Evil Maid实施。TPM 验证 BIOS、选项 ROM、系统配置和引导加载程序。受信任的引导加载程序(例如TrustedGRUB2)将验证内核并使用tboot(它使用硬件 ACM 模块)来引导内核。此时,系统被认为是安全的(例如内核使用IMA来验证用户空间,或者磁盘使用不可延展的加密模式进行加密)。
这是我的理解(我可能会将 CRTM 的角色与 ACM 混淆):
CRTM,在健全的固件中,不能在 CPU 验证时修改。
CRTM 负责验证 BIOS(或至少将其提供给 TPM)。
如果 BIOS 被修改,这将很明显,因为 CRTM 仍会将其提供给 TPM。
这与BootGuard类似,不同之处在于它提供了防篡改功能,而不是防篡改功能。
我的威胁模型:
我的对手能够修改系统上的任何可写存储。
他们不能修改硬件本身(例如在 LPC 总线上添加 JTAG 或 MITM)。
他们不知道TPM封存的秘密,也无法伪造。
经过验证后,他们无法利用正在运行的系统。
在我验证了密封的秘密后,他们想监视我对系统的输入。
这意味着我需要确保可以检测到对 BIOS 的修改(ACM/CRTM 会提供这种保证吗?),并且将检测到对固件的其他修改,例如选项 ROM。我对 ACM 和 CRTM 的理解相当有限。但是,我了解 TPM 如何工作的基础知识(关于 PCR 寄存器及其限制)。
关于我自己的 OPSEC、硬件后门、测量启动完成后的攻击或物理硬件组件的修改/替换的错误超出了范围。
该解决方案是否足以检测固件修改?