1. Übersicht
Confidential Virtual Machines (CVMs) sind eine Art von virtuellen Maschinen in Compute Engine, die hardwarebasierte Speicherverschlüsselung und Integritätsschutz verwenden. So wird sichergestellt, dass Ihre Daten und Anwendungen während der Verwendung nicht im Arbeitsspeicher gelesen oder geändert werden können. In diesem Codelab erfahren Sie, wie Sie ein Intel TDX-Attestierungsangebot auf der CVM generieren und es zu Demonstrationszwecken lokal überprüfen. Außerdem überprüfen Sie den Google Cloud-Host und die Instanzherkunft der CVM.
Dieses Codelab umfasst die folgenden Schritte:
- Intel TDX Confidential VM einrichten
- TDX-Attestierungsangebot abrufen
- TDX-Attestierungsangebot und Nonce überprüfen
- Integrität der GCE-Firmware (OVMF) überprüfen
- GCE TDX-Host- und Instanzherkunft überprüfen
Lerninhalte
- TDX-Attestierungsangebot auf einer CVM mit den
go-tdx-guest-Tools abrufen - Authentizität, Aktualität (Nonce) und Integrität der GCE-Firmware (OVMF) des Angebots überprüfen
- Google Cloud-Host- und Instanzherkunft überprüfen (
PPID-Registrierungssuche undPZID-Instanzbindung)
Voraussetzungen
- Google Cloud Platform-Projekt
- Grundlegende Kenntnisse von Google Compute Engine und Confidential VM
2. Einrichtung und Anforderungen
Führen Sie den folgenden Befehl in der Google Cloud Console oder Ihrer lokalen Entwicklungsumgebung aus, um die erforderlichen APIs zu aktivieren:
gcloud auth login
gcloud services enable \
cloudapis.googleapis.com \
cloudshell.googleapis.com \
confidentialcomputing.googleapis.com \
compute.googleapis.com
3. CVM einrichten und TDX-Angebot abrufen
In diesem Schritt erstellen Sie eine TDX-CVM und rufen ein TDX-Attestierungsangebot von der Hardware ab.
- Rufen Sie die Google Cloud Console oder Ihre lokale Entwicklungsumgebung auf. Erstellen Sie eine CVM wie folgt:
gcloud config set project <project-id>
gcloud compute instances create tdx-cvm-attestation-codelab \
--machine-type=c3-standard-4 \
--zone=us-central1-c \
--confidential-compute-type=TDX \
--maintenance-policy=TERMINATE \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--scopes https://www.googleapis.com/auth/cloud-platform
Ersetzen Sie <project-id> durch die eindeutige Kennung Ihres Projekts.
- Stellen Sie eine Verbindung zur CVM her.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
- Richten Sie eine Go-Umgebung auf der CVM ein:
wget https://go.dev/dl/go1.24.0.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin
- Installieren Sie die
go-tdx-guest-Tools.
Klonen Sie das Repository und erstellen Sie das Tool attest, das ein TDX-Angebot generiert.
git clone https://github.com/google/go-tdx-guest.git cd go-tdx-guest/tools/attest go build
- TDX-Attestierungsangebot abrufen:
Verwenden Sie das Tool attest, um ein Angebot zu generieren. Wir übergeben eine Nonce (64 Byte REPORT_DATA) und speichern die Ausgabe in quote.bin.
nonce=$(head -c 64 /dev/urandom | xxd -p | tr -d '\n' | head -c 128) sudo ./attest -in $nonce -inform hex -outform bin -out quote.bin
Das TDX-Angebot wird jetzt in quote.bin gespeichert.
4. TDX-Attestierungsangebot überprüfen
Nachdem wir ein Intel TDX-Angebot (quote.bin) generiert haben, können wir es mit dem Tool check überprüfen, das im Repository go-tdx-guest enthalten ist. Dieses Tool vergleicht das Angebot mit den Spezifikationen von Intel, überprüft es anhand von Begleitmaterial, das vom Provisioning Certification Service (PCS) von Intel heruntergeladen wurde, und validiert Richtlinienbeschränkungen wie die Nonce, um Replay-Angriffe zu verhindern.
- Rufen Sie das Verzeichnis des Tools
checkauf und erstellen Sie es:
cd ~/go-tdx-guest/tools/check go build
- Führen Sie das Tool aus, um sowohl die kryptografischen Signaturen als auch die Nonce zu überprüfen. Wir verwenden das Flag
-get_collateral=true, um die erforderlichen TEE-Zertifikate vom PCS von Intel herunterzuladen, das Flag-check_crl=true, um Zertifikatsperrungen zu überprüfen, und das Flag-report_data, um die Aktualität der Nonce zu validieren:
./check -in ~/go-tdx-guest/tools/attest/quote.bin -inform bin \
-get_collateral=true -check_crl=true \
-report_data $nonce
Wenn das Angebot kryptografisch gültig ist und die Nonce übereinstimmt, protokolliert das Tool eine Erfolgsmeldung ähnlich dem folgenden Beispiel und beendet den Vorgang mit dem Code 0:
INFO : TDX Quote verified successfully
5. Integrität der GCE-Firmware (OVMF) überprüfen
Mit den Sicherheiten von Intel wird die Hardware überprüft, aber nicht, ob auf der virtuellen Maschine eine echte, unveränderte Google Compute Engine-Firmware (GCE) ausgeführt wird.
Google veröffentlicht signierte Startbestätigungen (mit goldenen Referenzintegritätsmessungen oder RIMs) für alle offiziellen GCE-UEFI-Firmwareversionen (OVMF) in einem öffentlichen Google Cloud Storage-Bucket (GCS).
In diesem Schritt rufen wir mit dem öffentlichen Tool gce-tcb-verifier von Google automatisch die Firmwarebestätigung aus GCS ab, überprüfen die Signatur von Google und validieren die Firmwaremessung (MRTD) unserer CVM.
1. GCE TCB Verifier-Tool erstellen
- Klonen Sie das öffentliche Repository
gce-tcb-verifiervon GitHub:
cd ~ git clone https://github.com/google/gce-tcb-verifier.git
- Rufen Sie das Verzeichnis des Befehlszeilentools auf und erstellen Sie es:
cd gce-tcb-verifier/gcetcbendorsement/cli go build -o gcetcbendorsement
- Fügen Sie das erstellte Tool der Einfachheit halber Ihrem PATH hinzu:
export PATH=$PATH:$(pwd)
2. Angebot anhand der GCE-Firmwarebestätigung validieren
Führen Sie jetzt das Tool gcetcbendorsement aus, um Ihr Attestierungsangebot zu validieren. Da das Tool bei einer erfolgreichen Überprüfung im Hintergrund ausgeführt wird, können wir den Befehl mit && echo "Validation Succeeded!" verketten, um eine benutzerfreundliche und explizite Bestätigung des Erfolgs zu erhalten:
gcetcbendorsement tdx validate ~/go-tdx-guest/tools/attest/quote.bin && echo "Validation Succeeded!"
Ausgabe:
Validation Succeeded!
Was passiert im Hintergrund?
- Extrahieren: Das Tool parst
quote.binund extrahiert die Firmwaremessung (MRTD) aus dem TD-Angebotskörper. - Abrufen: Es erstellt eine GCS-URL mit der
MRTDund lädt die entsprechendeVMLaunchEndorsementaus dem öffentlichen Bucket von Google (gs://gce_tcb_integrity) herunter. - Signatur überprüfen: Es ruft das öffentliche Root-CA-Zertifikat von Google (
https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) ab und überprüft kryptografisch die Signatur von Google auf der heruntergeladenen Bestätigung. - Messung validieren: Es vergleicht die
MRTD, die von der TDX-Hardware in Ihrem Angebot signiert wurde, mit den goldenen Referenzmessungen in der signierten Bestätigung von Google.
Wenn alle Prüfungen erfolgreich sind, wird der Befehl im Hintergrund mit dem Code 0 beendet (oder Validation Succeeded! mit dem verketteten Echo ausgegeben). So wird nachgewiesen, dass auf Ihrer VM eine echte, von Google bestätigte Firmware ausgeführt wird.
6. GCE TDX-Host- und Instanzherkunft überprüfen
Durch die Attestierung und Firmwareüberprüfung wird bestätigt, dass Ihre VM auf echter Intel TDX-Hardware mit von Google bestätigter UEFI-Firmware ausgeführt wird. Mit der GCE TDX-Herkunftsüberprüfung wird Ihr Attestierungsangebot auf zwei wichtige Arten direkt mit der Infrastruktur von Google Cloud verknüpft:
- Hostherkunft: Identifiziert die physische Google Cloud-Hostmaschine, auf der Ihre VM ausgeführt wird, indem die eindeutige PPID (Platform Provisioning ID) der Plattform aus dem PCK-Zertifikat des Angebots extrahiert wird. Anschließend wird der Registrierungseintrag der Hostplattform aus Google Cloud Storage (
confidential-host-registry) abgerufen, in dem die physische Zone und der Zeitpunkt aufgezeichnet sind, zu dem Google Cloud die Attestierungszertifikate des Hosts zuletzt bereitgestellt hat. - Instanzherkunft (`PZID`-Bindung): Google Cloud bindet die Identität Ihrer VM (
ProjectNumber,Zone, undInstanceID) kryptografisch in dasMR_OWNER-Register des TDX-Angebots ein. Durch die Überprüfung dieser Bindung wird sichergestellt, dass das Angebot ausschließlich zu Ihrer Instanz gehört, und Angriffe durch Angebotswiederholung oder -austausch auf verschiedenen VMs oder in verschiedenen Projekten verhindert.
Das Befehlszeilentool gceprovenance (ebenfalls im Repository go-tdx-guest enthalten) automatisiert die vollständige Herkunftsüberprüfung. Dabei werden die Angebotsauthentizität, die Aktualitätsprüfung, der Hostregistrierungseintrag und die Instanzbindung von `PZID` in einem Befehl überprüft.
- Rufen Sie das Verzeichnis
gceprovenanceauf und erstellen Sie das Tool:
cd ~/go-tdx-guest/tools/gceprovenance go build
- Führen Sie die vollständige Herkunftsüberprüfung mit dem Befehl
verifyaus. Wir übergeben die Angebotsdatei (quote.bin) und die Nonce-Prüfung ($nonce), die wir zuvor generiert haben:
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
- Wenn alle Prüfungen erfolgreich sind, gibt das Tool einen Überprüfungsbericht ähnlich dem folgenden Beispiel aus:
GCE TDX provenance verification: OK Instance: projects/123456789012/zones/us-central1-c/instances/987654321098765 Checks Quote verification: OK REPORT_DATA challenge: OK Host registry document: found PZID binding: OK PPID: 0123456789abcdef0123456789abcdef Quote: tdx_quote.bin Host registry: host_registry.json
Was passiert im Hintergrund?
- Angebot und Prüfung: Das Tool überprüft die Signaturkette des Angebots anhand des Root-Zertifikats von Intel und bestätigt, dass die
REPORT_DATAdes Angebots mit Ihrer$nonce-Prüfung übereinstimmt. - Hostherkunft (
PPID): Es extrahiert die 32-stellige HexadezimalzahlPPIDaus dem PCK-Zertifikat des Blatts und lädt das JSON-Dokument der Hostregistrierung aus GCS herunter (https://storage.googleapis.com/confidential-host-registry/). - Instanzherkunft (
PZID): Es fragt den lokalen GCE-Metadatenserver nach der numerischen Projekt-ID, der Zone und der Instanz-ID Ihrer Instanz ab, erstellt die kanonische JSON-Nutzlast für PZID ({"instanceId":...,"numericalProjectId":...,"zone":...}), berechnet den SHA-384-Digest und überprüft, ob er mitMR_OWNERim Angebot übereinstimmt.
- Überprüfen Sie das abgerufene Hostregistrierungsdokument:
Standardmäßig speichert der Befehl verify das abgerufene JSON-Dokument der Hostregistrierung in host_registry.json. Sie können es überprüfen, um die Metadaten der Hostplattform anzusehen:
cat host_registry.json
Beispielausgabe:
{
"zone": "us-central1",
"timestamp": "2026-02-17T11:25:12Z"
}
Diese Metadaten beschreiben die Eigenschaften des Hostcomputers:
zone: Die physische Google Cloud-Region/Zone, in der sich der Hostcomputer befindet.timestamp: Datum und Uhrzeit in UTC, zu denen die Hardware-Attestierungszertifikate dieser Hostmaschine zuletzt von Google Cloud bereitgestellt und überprüft wurden.
7. Bereinigen
Führen Sie die folgenden Befehle in der Cloud Console oder Ihrer lokalen Entwicklungsumgebung aus:
# Delete the CVM instance gcloud compute instances delete tdx-cvm-attestation-codelab --zone=us-central1-c
8. Nächste Schritte
Weitere Informationen zu Confidential VMs und Compute Engine.