机密虚拟机度量寄存器内容

本文档介绍了针对不同的机密计算技术,哪些组件会被纳入测量寄存器。

vTPM 平台配置寄存器

保密虚拟机的 vTPM 中的每个平台配置寄存器 (PCR) 都包含三个库,分别用于存储 SHA-1、SHA-256 和 SHA-384 摘要。

以下规范大致标准化了 PCR 0-7 的使用方式:

大于 7 的 PCR 由操作系统或以其他平台特定的方式使用。如需了解详情,请参阅 Linux TPM PCR 注册表

机密虚拟机实例会将以下组件测量到其 vTPM PCR 中:

索引 衡量的内容
0

静态信任根测量 (SRTM)、BIOS、嵌入式选项 ROM。

根据 受信任的计算组固件配置文件规范,Compute Engine UEFI 的 PCR 0 是非标准的,因为它不包含整个固件二进制 blob 的度量。这是为了提高稳定性。每次启动 Compute Engine 虚拟机实例时,系统都会将其视为一台新机器,并使用最新的虚拟固件版本启动。通过省略固件二进制 blob 测量,证明验证不会因非基于安全的固件更改或因工具链更改而发生的固件更改而中断。

PCR 0 在单个虚拟机的生命周期内保持稳定,即使在重新启动和软件更新期间也是如此。在两个不同的虚拟机生命周期中,即使使用相同的映像,情况也并非如此。

机密虚拟机将另外两个事件测量到 PCR 0 中:

  • Compute Engine 虚拟固件版本,EV_S_CRTM_VERSION。最新的虚拟固件版本为 2
  • Compute Engine NonHostInfo 事件,用于存储虚拟机上运行的机密计算技术。

下表详细介绍了 NonHostInfo 事件值。

枚举值 所用的机密计算技术
0
1 AMD SEV
2 AMD SEV-ES
3 Intel TDX
4 AMD SEV-SNP
1 宿主平台配置,包括启动顺序、启动条目、微码更新和固件卷。
2 UEFI 驱动程序和应用代码。
3 UEFI 驱动程序和应用配置及数据。
41 EFI 可移植可执行 (PE) 或通用对象文件格式 (COFF) 应用(例如,引导加载程序)测量事件,表示从 UEFI 到第一个 EFI 应用的过渡。
5 GPT 衡量(当启动选项使用 GPT 时), ExitBootServices
6 特定于主机平台制造商,未在参考 EDK II 实现中使用。
71

安全启动 政策。包括以下 UEFI 变量:

  • SecureBoot:安全启动是已启用还是已停用。
  • PK:平台密钥,一种 X.509 证书,固件使用该证书来验证对 PKKEK 变量的更新的签名。
  • KEK:密钥交换密钥。固件用于验证 dbdbx 变量更新的签名的一个或多个 X.509 证书。
  • db:签名数据库,一个允许在虚拟机上运行的所有软件的证书或哈希的许可名单。
  • dbx:禁止签名数据库,一个证书或哈希的撤消列表,用于列出不再受信任且必须阻止其启动的软件。

如果安全启动状态和签名层次结构保持不变,PCR 7 将保持稳定。只要两个不同的映像使用相同的密钥进行签名并使用相同的密钥层次结构,就会产生相同的 PCR 7 值。

8 GRUB 引导加载程序执行的所有命令,以及生成的内核和模块命令行。
9 GRUB 读取的所有文件,例如 grub.cfg
10 内核完整性,由 Linux 完整性测量架构 (IMA) 使用。
13 Confidential Space环境的工作负载和配置测量。
141 机器所有者密钥 (MOK) 状态 shim

1 根据配置,shim 还会将衡量结果扩展到 PCR 4、7 和 14。

AMD SEV-SNP 衡量寄存器

AMD 安全处理器具有单个启动 MEASUREMENT 寄存器。与其他机密计算测量寄存器一样,测量结果经过哈希处理并链接在一起,以生成最终摘要。对于 AMD SEV-SNP,使用 SHA-384 算法。

以下组件会被衡量并纳入最终摘要:

  • 虚拟机实例的虚拟固件。

  • 以下内存页的结构,但不包括其内容:

    • SNP 安全内存页,表示虚拟固件要求 Hypervisor 在虚拟机启动之前预先验证的内存块。

    • “密钥”页面,其中包含用于在 guest 与 AMD 安全处理器之间进行通信的密钥。

    • 包含已验证 CPU 功能的 CPUID 页面。

  • 分配给保密虚拟机实例的每个 vCPU 的虚拟机保存区 (VMSA)。如果虚拟机具有多个 vCPU,则每个 VMSA 都会按顺序单独哈希到链中。

您还可以访问安全强化型虚拟机的 vTPM 衡量值,不过与 AMD 安全处理器不同的是,这些衡量值是经过软件证明的,而不是硬件证明的

Intel TDX 度量寄存器

Intel TDX 使用以下度量寄存器:

  • 信任域的度量 (MRTD)

  • 运行时测量寄存器 (RTMR)

每个寄存器都存储一个 SHA-384 摘要。

机密虚拟机实例会将以下组件测量到 Intel TDX 测量寄存器中:

测量寄存器 衡量的内容
MRTD 在 TD 构建流程中获取的信任网域虚拟固件 (TDVF)。
RTMR[0] TDVF 配置(TD 切换块、ACPI、安全启动配置)。
RTMR[1] TD 加载器 (GRUB/shim)。
RTMR[2] 内核以及传递给内核的命令行。
RTMR[3] (User-defined) 从用户空间传递的其他事件日志衡量数据。

您还可以访问受防护虚拟机的 vTPM 衡量结果,不过与 Intel TDX 模块不同的是,这些衡量结果是经过软件证明的,而不是硬件证明的