使用 AMD SEV-SNP 证明 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 AMD SEV-SNP 证明

证明是可让实例证明其状态和身份的过程。为实例开启 AMD SEV-SNP 后,您可以请求底层处理器提供 AMD SEV-SNP 证明报告。AMD SEV-SNP 证明报告包含初始客户机内存内容和初始 vCPU 状态的加密哈希值,称为启动指标。证明报告采用 VLEK 签名签署,该签名可回链至 AMD 信任根。您可以使用证明报告中包含的启动指标来验证实例是否在正版 AMD 环境中运行,并验证用于启动实例的初始启动代码。

要使用 AMD SEV-SNP 证明,请完成以下步骤。

第 1 步:获取证明报告

在这一步中,您需要安装所需的工具,然后请求处理器提供 AMD SEV-SNP 证明报告和处理器的 VLEK 签名密钥。

  1. 必须使用 sev-guest 实用程序来请求 CPU 提供证明报告。要安装来自 sev-guest repositorysev-guest 实用程序,请运行以下命令。

    $ git clone https://github.com/AMDESE/sev-guest.git $ cd sev-guest $ make sev-guest-get-report $ make sev-guest-parse-report
  2. 使用 sev-guest 实用程序请求证明报告和用于签署证明报告的 VLEK 证书。

    $ sudo ./sev-guest-get-report guest_report.bin -x

    该命令会创建两个文件:

    • guest_report.bin – 已签署的证明报告。

    • a8074bc2-a25a-483e-aae6-39c045a0b8a1 – 用于签署证明报告的 VLEK 证书,该证书采用可辨别编码规则(DER)格式。

第 2 步:验证证明报告的签名

证明报告使用名为版本控制加载认可密钥(VLEK)的证书签署,该证书由 AMD 为 Amazon 颁发。在这一步中,您需要验证 VLEK 证书是否由 AMD 颁发,以及证明报告是否是用该 VLEK 证书签署的。

  1. 必须使用 sev-tool 实用程序来验证证明报告是否是用 VLEK 证书签署的。该实用程序要求证明报告和 VLEK 证书位于一个名为 /certs 的文件夹中。运行以下命令以创建 /certs 目录。

    $ sudo mkdir certs
  2. 根据 sev-guest 实用程序的要求,将 DER 编码的 VLEK 证书 (a8074bc2-a25a-483e-aae6-39c045a0b8a1) 转换为 PEM 格式。

    $ sudo openssl x509 -inform der -in a8074bc2-a25a-483e-aae6-39c045a0b8a1 -out certs/vcek.pem

    VLEK 证书将会写入位于 /certs 目录中的一个新文件,名为 vcek.pem

  3. 从 AMD 官方网站将 VLEK 根信任证书下载到 /certs 目录中。

    $ sudo curl --proto '=https' --tlsv1.2 -sSf https://kdsintf.amd.com/vlek/v1/Milan/cert_chain -o certs/cert_chain.pem
  4. 使用 openssl 验证 VLEK 证书是否是使用 AMD 根信任证书签署的。

    $ sudo openssl verify --CAfile certs/cert_chain.pem certs/vcek.pem

    预期输出。

    certs/vcek.pem: OK
  5. 将证明报告复制到 /certs 目录中。

    $ sudo cp guest_report.bin certs/
  6. 必须使用 sev-tool 实用程序来验证证明报告的签名。运行以下命令以安装 sev-tool 实用程序。

    $ cd .. $ git clone https://github.com/AMDESE/sev-tool.git $ cd sev-tool $ autoreconf -vif && ./configure && make
  7. 使用 sev-tool 实用程序来验证证明报告是否是用 VLEK 证书签署的。

    $ sudo ./src/sevtool --ofolder ../sev-guest/certs --validate_guest_report

    预期输出。

    Guest report validated successfully!