机密虚拟机证明

证明是指提高对机密虚拟机实例合法性以及其是否以预期状态运行的信心。它是验证工作负载是否在可信执行环境 (TEE) 中运行的重要工具

基于 CPU 的证明

证明报告是证明您的虚拟机在 TEE 中运行的证据。它们由机密虚拟机实例生成,并且根据所用的机密计算技术,由基于软件的 vTPM 或专用的基于硬件的可信安全模块 (TSM) 进行签名。证明报告包含与引导加载程序活动、硬件配置、固件配置和其他启动时记录的事件相关的测量结果,这些结果有助于验证机密虚拟机实例的状态和身份。

您可以请求的证明报告类型取决于机密虚拟机实例使用的机密计算技术。

签名来源 类型 报告涵盖范围 机密计算技术
SEV SEV-SNP Intel TDX
Google 管理的 vTPM 基于软件的 vTPM 引导加载程序 activity、内核完整性
AMD Secure Processor 基于硬件的 TSM 硬件和固件环境
Intel TDX 模块 基于硬件的 TSM 硬件和固件环境

申请认证报告

您可以使用以下工具从 Google 管理的 vTPM、AMD 的安全处理器和 Intel 的 TDX 模块请求证明报告:

vTPM 证明事件日志中的 GceNonHostInfo 事件显示了正在使用的机密计算技术。Go-TPM 工具可以从 AMD 安全处理器(如果使用 AMD SEV-SNP)或 Intel TDX 模块(如果使用 Intel TDX)请求证明报告。

对于硬件认证报告,您可以使用以下工具向 TSM 发送加密质询:

  • 对于 AMD SEV-SNP,请使用 SEV Guest。 VCEK 证书缓存在虚拟机上,而不是直接从 AMD 的密钥分发系统 (KDS) 请求。

  • 对于 Intel TDX,请使用 TDX Guest

Ubuntu 上的 Intel TDX

对于内核版本为 1016 及更高版本的 Ubuntu 映像,tdx_guest 模块位于 linux-modules-extra 软件包中。

如需安装 linux-modules-extra 软件包,请运行以下命令:

sudo apt-get install linux-modules-extra-gcp

如果您在安装 linux-modules-extra-gcp 时遇到问题,可以运行以下命令来更新内核:

sudo apt-get upgrade

您必须重启或手动加载模块,所做的更改才会生效。如需手动加载模块,请运行以下命令:

sudo modprobe tdx_guest

使用 Google Cloud Attestation 验证证明报告

如果您的信任模型允许,您可以不自行编写和运行证明验证器,而是使用 Google Cloud Attestation。这包括使用 Go-TPM 工具从机密虚拟机实例的 vTPM 中检索证明引用,并将其发送到 Google Cloud Attestation 进行验证。如果报价通过验证,Google Cloud Attestation 会返回一个包含虚拟机信息的令牌,然后您可以将其与自己的政策进行比较,以确认是否应信任该虚拟机。

Google Cloud 证明只能与 AMD SEV 机密虚拟机实例搭配使用。

如需查看使用 Google Cloud 证明的端到端示例,请参阅 Confidential Virtual Machine 上的 vTPM 远程证明 Codelab。

基于 GPU 的证明

GPU 证明涉及验证 GPU 驱动程序、GPU 设备或两者。

GPU 驱动程序证明

为确保证明的可靠性,请在创建机密虚拟机实例时启用安全启动

安全启动仅允许加载分发版签名的 GPU 驱动程序。此验证对于确认 GPU 驱动程序是否由 NVIDIA 正式发布和提供至关重要。官方驱动程序非常重要,因为它可以与 GPU 设备建立安全的安全性协议和数据模型 (SPDM) 会话,并作为 NVIDIA GPU 设备证明的信任根。

NVIDIA GPU 设备证明

除了 GPU 驱动程序证明之外,您还可以进一步证明 NVIDIA GPU 设备。NVIDIA GPU 设备证明用于验证 GPU 上运行的视频 BIOS (VBIOS)。这有助于您识别 NVIDIA 软件版本并评估是否存在潜在漏洞。

如需执行 NVIDIA GPU 设备证明,请先安装 NVIDIA 的 nvtrust 库,然后使用该库进行本地或远程证明。

API_LINK="https://api.github.com/repos/NVIDIA/nvtrust/tags"
LATEST_VER="$(curl -s "${API_LINK}" | jq -r '..name')"
DOWNLOAD_LINK="https://github.com/NVIDIA/nvtrust/archive/refs/tags/${LATEST_VER}.tar.gz"
echo "Downloading nvtrust version ${LATEST_VER}"
curl -L "${DOWNLOAD_LINK}" -o nvtrust.tar.gz
mkdir github_nvtrust
tar xvf nvtrust.tar.gz -C github_nvtrust
cd github_nvtrust/nvtrust-${LATEST_VER:1}
python3 -m venv./prodtest
source./prodtest/bin/activate

本地 GPU 设备认证

借助本地 GPU 设备证明,您可以直接在虚拟机实例上执行证明流程,并在本地查看结果,以验证 GPU 的完整性。

如需执行本地 GPU 设备证明,请安装本地验证器工具。 如需查看详细说明,请参阅验证器

远程 GPU 设备证明

远程 GPU 设备证明使用 NVIDIA 远程证明服务 (NRAS) 来验证 GPU 的完整性。此流程会生成由 NVIDIA 签名的证明令牌。您可以向第三方出示此令牌,以证明 GPU 的真实性和完整性,这通常是访问敏感数据或资源的必要条件。

如需了解详细说明,请参阅 NVIDIA 证明 SDKNVIDIA 远程证明服务 (NRAS)