Attestierung für Confidential VM

Die Attestierung für eine Confidential VM-Instanz ist ein Verfahren, mit dem die Gewissheit erhöht wird, dass die Instanz legitim ist und sich in einem erwarteten Zustand befindet. Sie ist ein wichtiges Tool, um zu prüfen, ob Ihre Arbeitslast in einer vertrauenswürdigen Ausführungsumgebung (Trusted Execution Environment, TEE) ausgeführt wird.

CPU-basierte Attestierung

Bestätigungsberichte sind der Nachweis dafür, dass Ihre VM in einer TEE ausgeführt wird. Sie werden von der Confidential VM-Instanz generiert und je nach verwendeter Confidential Computing-Technologie entweder von einem softwarebasierten vTPM oder einem dedizierten, hardwarebasierten Trusted Security Module (TSM) signiert. Attestierungsberichte enthalten Messungen im Zusammenhang mit Bootloader-Aktivitäten, Hardwarekonfiguration, Firmwarekonfiguration und anderen während des Bootvorgangs protokollierten Ereignissen, die dazu beitragen, den Status und die Identität der Confidential VM-Instanz zu validieren.

Der Typ des Attestierungsberichts, den Sie anfordern können, hängt von der Confidential Computing-Technologie ab, die von Ihrer Confidential VM-Instanz verwendet wird.

Signaturquelle Typ Berichtsabdeckung Confidential Computing-Technologie
SEV SEV-SNP Intel TDX
Von Google verwaltetes vTPM Softwarebasiertes vTPM Bootloader-Aktivität, Kernel-Integrität
AMD Secure Processor1 Hardwarebasiertes TSM Hardware- und Firmware-Umgebung
Intel TDX-Modul Hardwarebasiertes TSM Hardware- und Firmwareumgebung2

1. Der AMD Secure Processor ist eine freigegebene Ressource, die allen Hosts auf dem physischen Server zur Verfügung steht, auf dem er sich befindet. Ein Host kann den Gastzugriff auf den Secure Processor drosseln. Firmware-Updates für den Secure Processor (die als Hostereignisse gelten) können jederzeit erfolgen.

2. Die anfängliche Startkomponente (die Firmware) für TDX Confidential VM-Instanzen wird in die MRTD (Measurement of the Trust Domain) gemessen, während die verbleibende Bootkette in die RTMR (Runtime Measurement Registers) gemessen wird. Alle Messungen werden in der Hardware verankert. Nutzer können das RTMR[3]-Register mit Messungen im Nutzerbereich erweitern.

Attestierungsbericht anfordern

Mit den folgenden Tools können Sie Attestierungsberichte vom von Google verwalteten vTPM, vom Secure Processor von AMD und vom TDX-Modul von Intel anfordern:

  • Go-TPM

  • Go-TPM-Tools (Version 0.4.4 oder höher ist für die Unterstützung von AMD SEV-SNP und Intel TDX erforderlich)

Das GceNonHostInfo-Ereignis im vTPM-Attestierungsereignisprotokoll gibt an, welche Confidential Computing-Technologie verwendet wird. Go-TPM-Tools können einen Attestierungsbericht vom AMD Secure Processor anfordern, wenn AMD SEV-SNP verwendet wird, oder vom Intel TDX-Modul, wenn Intel TDX verwendet wird.

Nur für Hardware-Attestierungsberichte können Sie mit den folgenden Tools eine kryptografische Challenge an das TSM senden:

  • Verwenden Sie für AMD SEV-SNP SEV Guest. VCEK-Zertifikate (Version Chip Endorsement Key) werden auf der VM zwischengespeichert, anstatt direkt vom KDS (Key Distribution System) von AMD angefordert zu werden.

  • Verwenden Sie für Intel TDX TDX Guest.

Intel TDX unter Ubuntu

Bei Ubuntu-Images mit Kernel 1016 und höher befindet sich das tdx_guest-Modul im linux-modules-extra-Paket.

Führen Sie den folgenden Befehl aus, um das linux-modules-extra-Paket zu installieren:

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

Wenn bei der Installation von linux-modules-extra-gcp Probleme auftreten, können Sie den Kernel mit dem folgenden Befehl aktualisieren:

sudo apt-get upgrade

Sie müssen das Gerät neu starten oder das Modul manuell laden, damit die Änderungen wirksam werden. Führen Sie den folgenden Befehl aus, um das Modul manuell zu laden:

sudo modprobe tdx_guest

Attestierungsberichte mit Google Cloud Attestation überprüfen

Wenn Ihr Vertrauensmodell dies zulässt, können Sie anstelle des Schreibens und Ausführens eines eigenen Attestierungsprüfers Google Cloud Attestation verwenden. Dazu müssen Sie Go-TPM-Tools verwenden, um ein Attestierungsangebot vom vTPM einer Confidential VM-Instanz abzurufen und zur Überprüfung an Google Cloud Attestation zu senden. Wenn das Angebot die Überprüfung besteht, gibt Google Cloud Attestation ein Token mit VM-Informationen zurück, das Sie dann mit Ihrer eigenen Richtlinie vergleichen können, um zu bestätigen, ob die VM vertrauenswürdig ist.

Google Cloud Attestation kann mit Confidential VM-Instanzen verwendet werden, die die folgenden Confidential Computing-Technologien nutzen:

Ein End-to-End-Beispiel für die Verwendung von Google Cloud Attestation finden Sie im Codelab vTPM-Remote-Attestation auf vertraulichen virtuellen Maschinen.

GPU-basierte Attestierung

Bei der GPU-Attestierung wird der GPU-Treiber, das GPU-Gerät oder beides überprüft.

Bekannte Probleme

Die GPU-Attestierung schlägt möglicherweise fehl und meldet einen nicht übereinstimmenden Messdatensatz am Index 9. Google und NVIDIA arbeiten an einer Lösung.

Um das Problem zu umgehen, beenden Sie die Confidential VM vollständig und starten Sie sie neu. Ein Neustart der VM über das Gastbetriebssystem der VM behebt das Problem nicht.

GPU-Treiber-Attestierung

Um eine robuste Attestierung zu gewährleisten, aktivieren Sie Secure Boot, wenn Sie Ihre Confidential VM-Instanz erstellen.

Secure Boot ermöglicht das Laden von GPU-Treibern, die nur von der Distribution signiert wurden. Diese Überprüfung ist wichtig, um zu bestätigen, dass der GPU-Treiber offiziell von NVIDIA veröffentlicht und bereitgestellt wird. Ein offizieller Treiber ist wichtig, da er eine sichere SPDM-Sitzung (Security Protocol and Data Model) mit GPU-Geräten herstellt und als Root of Trust für die NVIDIA-GPU-Gerätebestätigung dient.

NVIDIA-GPU-Gerätebestätigung

Zusätzlich zur GPU-Treiber-Attestierung können Sie NVIDIA-GPU-Geräte weiter attestieren. Bei der NVIDIA-GPU-Gerätebestätigung wird das auf der GPU ausgeführte Video-BIOS (VBIOS) überprüft. So können Sie NVIDIA-Softwareversionen identifizieren und das Vorhandensein potenzieller Sicherheitslücken bewerten.

Um die NVIDIA-GPU-Gerätebestätigung durchzuführen, installieren Sie die go-nvattest-tools-Abhängigkeiten und erstellen Sie das nvattest-Tool aus google/go-nvattest-tools:

  1. Installieren Sie die Build-Abhängigkeiten:

    sudo apt-get update && sudo apt-get install -y \
      git gcc pkg-config libxml2-dev curl
    
  2. Laden Sie Go herunter und installieren Sie es:

    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. Klonen Sie das Repository und kompilieren Sie das Binärprogramm nvattest:

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

Lokale GPU-Geräteattestierung

Mit der lokalen GPU-Geräteattestierung können Sie den Attestierungsprozess direkt auf Ihrer VM-Instanz durchführen und die Ergebnisse lokal ansehen, um die Integrität Ihrer GPU zu prüfen.

Führen Sie das Tool nvattest direkt auf Ihrer Confidential VM-Instanz aus, um die Live-Attestierung des lokalen GPU-Geräts durchzuführen:

sudo ./nvattest attest --device=gpu

Optional können Sie die Erhebung von Nachweisen von der Bestätigung trennen:

  1. Generieren Sie einen 32‑Byte-Hex-Nonce und sammeln Sie die Attestierungsnachweise:

    NONCE=$(openssl rand -hex 32)
    sudo ./nvattest collect-evidence \
      --device=gpu \
      --nonce="${NONCE}" \
      --evidence_file=gpu_evidence.json
    
  2. Prüfen Sie die gesammelten Nachweise lokal:

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