Um festzustellen, ob eine Confidential VM-Instanz von Intel TDX ausgeführt wird Google Cloud, müssen Sie ihre provenance ermitteln. Dazu sind folgende Prüfungen erforderlich:
Zitatüberprüfung und Challenge-Bindung: Überprüfen Sie die Authentizität des Intel TDX-Zitats mit dem eingebetteten Intel-Root-Zertifikat und optional die Aktualität anhand einer erwarteten Challenge im Feld
REPORT_DATAdes Zitats.Überprüfung der Hostherkunft: Extrahieren Sie die Plattformbereitstellungs-ID (Platform Provisioning ID, PPID) aus dem im Zitat eingebetteten PCK-Zertifikat. Rufen Sie mit der PPID das JSON-Dokument der Hostregistrierung aus einem Cloud Storage-Bucket ab, um die Herkunft zu überprüfen.
Überprüfung der Instanzherkunft: Berechnen Sie mit der Projektnummer, der Zone und der Instanz-ID (Project, Zone, Instance ID, PZID) der Confidential VM-Instanz einen SHA-384-Digest und prüfen Sie dann, ob der Digest mit dem Wert des Felds
MR_OWNERim Intel TDX-Zitat übereinstimmt.
Herkunft remote überprüfen
Wir empfehlen, das
gceprovenance
Tool zu verwenden, um die Herkunft von Intel TDX-Computern zu ermitteln. Das Tool automatisiert das Extrahieren der erforderlichen Werte und das Abrufen des Herkunftsnachweises.
So überprüfen Sie die Herkunft remote mit gceprovenance:
Klonen Sie das GitHub-Repository
go-tdx-guestauf Ihren Remote-Verifier:git clone https://github.com/google/go-tdx-guest.gitJe nach Gastbetriebssystem müssen Sie möglicherweise einige Go-Abhängigkeiten installieren, um die Tools in
go-tdx-guestzu erstellen. Die Vorgehensweise hängt vom Betriebssystem ab. Mit den folgenden Befehlen werden beispielsweise die erforderlichen Abhängigkeiten unter Ubuntu installiert:sudo apt update sudo apt install golang-go build-essentialErstellen Sie das Tool
gceprovenance:go build -C go-tdx-guest/tools/gceprovenance .Generieren Sie eine 64-Byte-Challenge, die die Confidential VM-Instanz von Intel TDX an ihr Zitat binden muss:
head -c 64 /dev/urandom > challenge.binSenden Sie die Challenge-Datei an die Confidential VM-Instanz von Intel TDX, die Sie überprüfen möchten.
Übergeben Sie auf der Confidential VM-Instanz von Intel TDX die Challenge-Datei als Eingabe (
inblob) an das Linux ConfigFS unter/sys/kernel/config/tsm/report/:sudo mkdir -p /sys/kernel/config/tsm/report/report0 sudo sh -c 'cat challenge.bin > /sys/kernel/config/tsm/report/report0/inblob'Die Challenge wird dann vom System in das Feld
REPORT_DATAdes Zitats geschrieben.Rufen Sie die Rohbytes des Zitats aus der resultierenden Datei
outblobab und bereinigen Sie das Verzeichnisreport0:sudo cat /sys/kernel/config/tsm/report/report0/outblob > quote.bin sudo rmdir /sys/kernel/config/tsm/report/report0Fragen Sie den lokalen Metadatenserver nach der Instanz-ID, der Projektnummer und der Zone der Confidential VM-Instanz ab:
PROJECT_NUMBER=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id" -H "Metadata-Flavor: Google") INSTANCE_ID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/id" -H "Metadata-Flavor: Google") ZONE_PATH=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/zone" -H "Metadata-Flavor: Google") ZONE=$(basename "$ZONE_PATH")Senden Sie das Zitat-Binärformat (
quote.bin), die Projektnummer, die Instanz-ID und die Zone an den Remote-Verifier.Konvertieren Sie die Challenge auf dem Remote-Verifier in einen 128-stelligen Hexadezimalstring und übergeben Sie sie dann an
gceprovenance. Das Tool überprüft dann die Signatur des Zitats und die Bindungen zur Herkunft:CHALLENGE_HEX=$(hexdump -v -e '/1 "%02x"' challenge.bin) ./go-tdx-guest/tools/gceprovenance/gceprovenance verify \ -quote PATH_TO_QUOTE \ -instance projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID \ -challenge $CHALLENGE_HEXMachen Sie folgende Angaben:
PATH_TO_QUOTE: Der Pfad zur bereitgestellten Zitatdatei.PROJECT_NUMBER: Die bereitgestellte Projektnummer.ZONE: Die bereitgestellte Zone.INSTANCE_ID: Die bereitgestellte ID der Confidential VM-Instanz.
Eine erfolgreiche Antwort sieht in etwa so aus:
GCE TDX provenance verification: OK Instance Zone: ZONE Project: PROJECT_NUMBER Instance ID: INSTANCE_ID Checks Quote verification: OK REPORT_DATA challenge: OK Host registry document: found PZID binding: OK PPID: PPID Quote: tdx_quote.bin Host registry: host_registry.json
Weitere gceprovenance Befehle finden Sie im
GitHub-Repository.