使用 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 步:获取证明报告

在这一步中,您需要安装和构建 snpguest 实用程序,然后使用其请求 AMD SEV-SNP 证明报告和证书。

  1. 运行以下命令从 snpguest repository 构建 snpguest 实用程序。

    $ C:\> git clone https://github.com/virtee/snpguest.git $ C:\> cd snpguest $ C:\> cargo build -r $ C:\> cd target/release
  2. 生成证明报告的请求。该实用程序从主机请求证明报告,并将其与提供的请求数据一起写入二进制文件。

    以下示例创建了一个随机请求字符串,并将其用作请求文件(request-file.txt)。命令返回证明报告后,该报告将存储在您指定的文件路径(report.bin)中。在这种情况下,实用程序会将报告存储在当前目录中。

    $ C:\> ./snpguest report report.bin request-file.txt --random
  3. 从主机内存请求证书,并将其存储为 PEM 文件。以下示例将文件存储在与 snpguest 实用程序相同的目录中。如果指定目录中已存在证书,则这些证书将被覆盖。

    $ C:\> ./snpguest certificates PEM ./

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

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

  1. 从 AMD 官方网站将 VLEK 根信任证书下载到当前目录中。

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

    $ C:\> sudo openssl verify --CAfile ./cert_chain.pem vlek.pem

    预期输出:

    certs/vcek.pem: OK
  3. 使用 snpguest 实用程序来验证证明报告是否是用 VLEK 证书签署的。

    $ C:\> ./snpguest verify attestation ./ report.bin

    预期输出。

    Reported TCB Boot Loader from certificate matches the attestation report. Reported TCB TEE from certificate matches the attestation report. Reported TCB SNP from certificate matches the attestation report. Reported TCB Microcode from certificate matches the attestation report. VEK signed the Attestation Report!