你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

机密虚拟机来宾证明设计详情

本文档详细概述了 Azure 机密虚拟机来宾证明设计。

基于 vTPM 的设计

Azure 机密虚拟机 (VM) 利用基于 vTPM 的设计进行来宾证明。 此方法可确保在来宾操作系统(Linux 和 Windows)和硬件平台(AMD SEV-SNP 和 Intel TDX)之间实现一致的接口。

证明流

来宾证明过程涉及两个主要步骤:证据生成和证据验证。 用户请求 Azure 机密虚拟机生成 vTPM 证据,然后将证据发送给受信任方(例如,Microsoft Azure 证明 (MAA))进行验证。

信赖方(例如 Azure 密钥保管库高级版Azure 密钥保管库托管 HSM)可以根据验证结果评估 Azure 机密虚拟机的可信度。 如果虚拟机被视为可信,则信赖方可以使用安全密钥发布等机制安全地将机密预配到虚拟机。

vTPM 证据

vTPM 证据由一个 TPM 报价和用于验证报价的认可组成,如本节其余部分所述。

  • TPM 报价

    • 标准 TPM 报价是由 TPM 2.0 规范定义的 TPM2_Quote 命令的输出。
    • 包括一个平台配置寄存器 (PCR) 列表,用于捕获来宾操作系统(例如启动过程)的度量值。
    • PCR 的使用符合 Linux 和 Windows 标准(每个标准都有其使用定义)。
    • 由 vTPM 证明私钥签名 (AK):也就是说,AK 在 TPM2_Quote 命令中指定为签名密钥。
  • TPM 事件日志

    • 存储在系统中的事件日志,可用于在 TPM 报价中重现 PCR 值。
    • 有关更多详细信息,请参阅 TPM 规范
  • vTPM AK 证书

    • 由 Azure 颁发(由 Azure CA 签名)。
    • 由硬件支持(在硬件报告中捕获的 vTPM 证明公钥,即 AK 公钥)。
  • 硬件报告

    • 由硬件生成并签名。
    • 捕获下列信息
      • AK 公钥
      • 对其中运行 vTPM 的 Microsoft 生成的来宾 paravisor 进行度量
      • 硬件信息
        • 请参阅 AMD SEV-SNP 和 Intel TDX 规范了解更多详细信息。
  • 硬件供应商证书链

    • 由硬件供应商(AMD 和 Intel)颁发,用于认证硬件报告的签名。
      • AMD SEV-SNP:版本受控的芯片认可密钥 (VCEK) 证书
      • Intel TDX:预配证书密钥 (PCK) 证书

vTPM 证据涵盖哪些内容?

组件 涵盖者
来宾 OS TPM 报价 (PCR)
UEFI 硬件报告
来宾 Paravisor(包括 vTPM) 硬件报告

如何验证 vTPM 证据?

验证程序(Microsoft Azure 证明 (MAA))基于受信任链对 vTPM 证据进行了验证,如下图所示。 成功的验证意味着经证明的 Azure 机密虚拟机可信且受硬件保护。

基于 vTPM 的证据信任链图

开发人员参考

本部分提供了 Azure 机密虚拟机使用的基于 vTPM 的来宾证明设计的参考。

Azure 保留的 TPM NV 索引

名称 NV 索引 大小(字节) 说明
证明报告 0x01400001 2600 嵌入了硬件报表的 Azure 定义格式。
报表数据 0x01400002 64 要包含在运行时数据中的报表数据。
vTPM AK 证书 0x01C101D0 4096 由 vTPM AK 签名的用于验证 TPM 报价的证书。
vTPM AK 0x81000003 取决于密钥类型 用于对 TPM 报价进行签名的密钥。

有关示例 TPM 命令,请参阅 Azure 机密虚拟机证明指南和常见问题解答

证明报表格式

证明报告

名称 偏移量(字节) 大小(字节) 说明
标头 0 32 报表标头(未得到硬件报表的认可)。
报告有效负载 32 1184 硬件报告。
运行时数据 1216 可变长度 运行时数据包括硬件报告认可的声明。
名称 偏移量(字节) 大小(字节) 说明
签名 0 4 嵌入的签名。 应为:0x414c4348 (HCLA)。
版本 4 4 格式版本。 应为:2。
报表大小 8 4 报表有效负载的大小。 应为:1184 (AMD SEV-SNP)、1024 (Intel TDX)。
请求类型 12 4 特定于 Azure 的证明报表使用情况。 应为:2。
状态 16 4 保留。
保留 20 12 保留。

报告有效负载

由硬件(AMD SEV-SNP 或 Intel TDX)生成的报告。 报表的 report_data 字段捕获运行时数据中运行时声明的哈希值。 有关更多详细信息,请参阅硬件供应商的规范。

运行时数据

名称 偏移量(字节) 大小(字节) 说明 已度量
数据大小 0 4 运行时数据的大小。
版本 4 4 格式版本。 应为:1。
报表类型 8 4 硬件报表的类型。 应为:2 (AMD SEV-SNP)、4 (Intel TDX)
哈希类型 12 4 用于对运行时数据进行哈希处理的算法。 在硬件报告的 report_data 字段中捕获的哈希值。 应为:1 (SHA-256)、2 (SHA-384)、3 (SHA-512)
索赔规模 16 4 运行时声明的大小。
运行时声明 20 可变长度 JSON 格式的运行时声明。

运行时声明

JSON 字段 说明
密钥 JWK 格式的键数组。 应为kidHCLAkPub(vTPM AK 公钥)、HCLEkPub(vTPM EK 公钥)。
虚拟机配置 选择性 Azure 机密虚拟机配置。
用户数据 0x01400002 NV 索引(报表数据)中读取的 64 字节数据(HEX 字符串)。

示例

{
  "keys": [
    {
      "kid": "HCLAkPub",
      "key_ops": [
        "sign"
      ],
      "kty": "RSA",
      "e": "AQAB",
      "n": "rAipdAAArL6V1FNnSQ-39i3VH-a8PuOeVRo2VpecspDWbJNmgHJ4-VGGFEx4sdVbvDC6fyo_VM2ebE-_AKxTmrNVEr-KIZveJMD_vlOqvMvjtllsWwA-vsRfpqiduvQdFcdCvyHzfxBRHYqdmxgKq-3QI-XBbZv9cCMMMPHkNp4mWkyahjQxXVJVwB1egCrJGKSk1bRXlP1dXNG_Pe4-W5O-YEGRKdLIA31G0Yh8VBnrEUCAMjDAuh6fncMkwdMVskI5Ta-kJgGw4GepIj6_smIyYhxg3o8Ik4qPntxj1TrV0bVW2IiNMLHoM67y1ErOir7bv00xqgqouFodI-vM3Q"
    },
    {
      "kid": "HCLEkPub",
      "key_ops": [
        "encrypt"
      ],
      "kty": "RSA",
      "e": "AQAB",
      "n": "m3AfPAAA-_HY3M_-x4bQbr0p2nkvAgig1mENl-BColvqq0aKKAqIHr-DFQ9-iB2z7EzhYVon5R7Nc1jzqBsmxahE8uaQfD-sp8bWOtbvy4V9nAqLY4HOwfxlJ99cEOOpxNXfCNesYOk8T0ntG05w7oBRjFw0LMVKS-1S3j5-oMnNnpJoo7rX5hNM8JVpxEuVa1IOf1NmvRey6wjwSHbjUay_IMUTAq1wzpx8wo_hjeY4JMd0Ka1ewLjJDaTQSpSxZI36ujyR6EGho0FBXSKN-9W9DAXkO8-RKuLUrmTXA6ETJRYApMuYGiUDCk1Y5zQTQsyWS6pLjnf2mg2tEntZZw"
    }
  ],
  "vm-configuration": {
    "root-cert-thumbprint": "",
    "console-enabled": true,
    "secure-boot": true,
    "tpm-enabled": true,
    "tpm-persisted": true,
    "vmUniqueId": "68dc0ac0-2ed9-4b2a-a03e-4953e416d939"
  },
  "user-data": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}

后续步骤