Confidential VM 構成証明

Confidential VM インスタンスの構成証明は、インスタンスが正当であり、想定どおりの状態で動作しているという信頼性を高めるプロセスです。これは、ワークロードが高信頼実行環境(TEE)で実行されていることを検証するための重要なツールです。

CPU ベースの構成証明

認証レポートは、VM が TEE で実行されていることを証明するものです。これらは Confidential VM インスタンスによって生成され、使用される Confidential Computing テクノロジーに応じて、ソフトウェア ベースの vTPM または専用のハードウェア ベースの Trusted Security Module(TSM)によって署名されます。構成証明レポートには、ブートローダー アクティビティ、ハードウェア構成、ファームウェア構成、その他のブート時のロギング イベントに関連する測定値が含まれています。これらの測定値は、Confidential VM インスタンスの状態と ID の検証に役立ちます。

リクエストできる構成証明レポートのタイプは、Confidential VM インスタンスで使用されている Confidential Computing テクノロジーによって異なります。

署名元 タイプ レポート カバレッジ Confidential Computing テクノロジー
SEV SEV-SNP インテル TDX
Google マネージド vTPM ソフトウェアベースの vTPM ブートローダー アクティビティ、カーネルの整合性
AMD Secure Processor1 ハードウェアベースの TSM ハードウェアとファームウェアの環境
Intel TDX モジュール ハードウェアベースの TSM ハードウェアとファームウェアの環境2

1. AMD Secure Processor は、それが存在する物理サーバー上のすべてのホストで使用できる共有リソースです。ホストは、セキュア プロセッサへのゲスト アクセスをスロットリングできます。セキュア プロセッサのファームウェア アップデート(ホスト イベントとみなされます)はいつでも発生する可能性があります。

2. TDX Confidential VM インスタンスの初期起動コンポーネント(ファームウェア)は Measurement of the Trust Domain(MRTD)に測定され、残りのブートチェーンは Runtime Measurement Registers(RTMR)に測定され、すべての測定値がハードウェアにルート化されます。ユーザーは、ユーザー空間の測定値を使用して RTMR[3] レジスタを拡張できます。

構成証明レポートをリクエストする

次のツールを使用して、Google マネージド vTPM、AMD の Secure Processor、Intel の TDX モジュールから構成証明レポートをリクエストできます。

  • Go-TPM

  • Go-TPM ツール(AMD SEV-SNP と Intel TDX のサポートにはバージョン 0.4.4 以降が必要)

vTPM 構成証明イベントログの GceNonHostInfo イベントは、使用されている Confidential Computing テクノロジーを示します。Go-TPM ツールは、AMD SEV-SNP が使用されている場合は AMD Secure Processor から、Intel TDX が使用されている場合は Intel TDX モジュールから、構成証明レポートをリクエストできます。

ハードウェア認証レポートのみの場合、次のツールを使用して暗号チャレンジを TSM に送信できます。

  • AMD SEV-SNP の場合は、SEV Guest を使用します。バージョン チップ承認鍵(VCEK)証明書は、AMD の鍵配布システム(KDS)から直接リクエストされるのではなく、VM にキャッシュに保存されます。

  • 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 ツールを使用して、Confidential VM インスタンスの vTPM から証明書引用を取得し、検証のために Google Cloud Attestation に送信することが含まれます。引用符が検証に合格すると、Google Cloud Attestation は VM 情報を含むトークンを返します。このトークンを独自のポリシーと比較して、VM を信頼するかどうかを確認できます。

Google Cloud Attestation は、次の Confidential Computing テクノロジーを使用する Confidential VMs インスタンスで使用できます。

Google Cloud Attestation の使用に関するエンドツーエンドの例については、Confidential Virtual Machine での vTPM リモート認証の Codelab をご覧ください。

GPU ベースの構成証明

GPU 構成証明では、GPU ドライバ、GPU デバイス、またはその両方が検証されます。

既知の問題

GPU 構成証明が失敗し、インデックス 9 で測定レコードの不一致が報告されることがあります。Google と NVIDIA はこの問題の修正に取り組んでいます。

この問題を回避するには、Confidential VM の完全な停止と再起動を行います。VM のゲスト OS から VM を再起動しても、この問題は解決しません。

GPU ドライバの構成証明

堅牢な構成証明を確保するには、Confidential VM インスタンスの作成時にセキュアブートを有効にします。

セキュアブートでは、ディストリビューション署名付きの GPU ドライバのみを読み込むことができます。この検証は、GPU ドライバが NVIDIA によって正式にリリースされ、提供されていることを確認するために不可欠です。公式ドライバは、GPU デバイスとの安全な Security Protocol and Data Model(SPDM)セッションを確立し、NVIDIA GPU デバイスの構成証明のルート オブ トラストとして機能するため、重要です。

NVIDIA GPU デバイスの構成証明

GPU ドライバの構成証明に加えて、NVIDIA GPU デバイスの構成証明を行うこともできます。NVIDIA GPU デバイスの構成証明は、GPU で実行されている Video BIOS(VBIOS)を検証します。これにより、NVIDIA ソフトウェアのバージョンを特定し、潜在的な脆弱性の有無を評価できます。

NVIDIA GPU デバイスの構成証明を行うには、go-nvattest-tools 依存関係をインストールし、google/go-nvattest-tools から nvattest ツールをビルドします。

  1. ビルドの依存関係をインストールします。

    sudo apt-get update && sudo apt-get install -y \
      git gcc pkg-config libxml2-dev curl
    
  2. Go をダウンロードしてインストールします。

    GO_VERSION="1.25.0"
    curl -fsSL \
      "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" \
      -o go.tar.gz
    sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go.tar.gz
    rm go.tar.gz
    export PATH=/usr/local/go/bin:$PATH
    
  3. リポジトリのクローンを作成し、nvattest バイナリをコンパイルします。

    git clone https://github.com/google/go-nvattest-tools.git
    cd go-nvattest-tools
    go build -o nvattest ./cmd/nvattest
    

ローカル GPU デバイスの構成証明

ローカル GPU デバイスの構成証明を使用すると、VM インスタンスで構成証明プロセスを直接実行し、結果をローカルで表示して GPU の完全性を確認できます。

ローカル GPU デバイスのライブ構成証明を実行するには、Confidential VM インスタンスで nvattest ツールを直接実行します。

sudo ./nvattest attest --device=gpu

必要に応じて、証拠収集と確認を分離できます。

  1. 32 バイトの 16 進数ノンスを生成し、証明書を取得します。

    NONCE=$(openssl rand -hex 32)
    sudo ./nvattest collect-evidence \
      --device=gpu \
      --nonce="${NONCE}" \
      --evidence_file=gpu_evidence.json
    
  2. 収集した証拠をローカルで検証します。

    ./nvattest attest \
      --device=gpu \
      --nonce="${NONCE}" \
      --evidence_file=gpu_evidence.json