AMD SEV-SNP 通过启动测量生成 VM 初始状态的 SHA-384 哈希,并由平台安全处理器签名为远程证明报告,为机密计算提供信任根基。然而,测量的累积过程包含多个可变但可控的输入——OVMF 固件版本、内核命令行、initrd 内容——且测量日志在 VM 启动后可被恶意 VMM 篡改。攻击者可在合法 VM 完成测量后,利用迁移接口替换测量日志中的条目,将恶意启动配置伪装成预期值;更危险的是,若利用 SHA-384 的碰撞攻击在 OVMF 固件页中注入后门,测量值可保持不变,使得从密码学验证到真实安全之间存在一道无法闭合的鸿沟。
SEV-SNP 远程证明与启动测量的信任模型
SEV-SNP 的测量累积机制
SEV-SNP 的启动测量(Launch Measurement)并非一次性计算,而是在 VM 启动过程中逐步累积的。平台安全处理器(PSP)维护一个测量寄存器,每次向 VM 加载新的内存页(通过 sev_launch_update 调用)时,PSP 都会根据预设的顺序将页面内容或元数据哈希到累积测量中。测量内容包括:
初始 VMSA 页面(VM 状态)
客户页表
OVMF 固件代码
内核命令行参数
initrd 镜像内容
每个组件的测量顺序由启动协议决定,任何顺序错乱或内容变化都会导致最终测量值不同。启动完成后,PSP 生成一个签名的证明报告(Attestation Report),其中包含最终测量值、VM 配置(策略、ASID 等)和平台证书链,远程验证方据此判断 VM 的启动状态是否可信。
证明报告中的信任链
证明报告的签名由 PSP 内置的 SEV 签名密钥(VLEK 或 CEK)完成。远程验证方通过 AMD 发布的证书链验证报告签名,提取测量值,并与预期的“黄金测量”进行比对。如果测量值匹配,验证方便认定该 VM 运行的是未经篡改的预期软件栈。