Prüfen, ob eine Intel TDX-VM-Instanz in Google Cloud ausgeführt wird

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_DATA des 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_OWNER im 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:

  1. Klonen Sie das GitHub-Repository go-tdx-guest auf Ihren Remote-Verifier:

    git clone https://github.com/google/go-tdx-guest.git
    
  2. Je nach Gastbetriebssystem müssen Sie möglicherweise einige Go-Abhängigkeiten installieren, um die Tools in go-tdx-guest zu 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-essential
    
  3. Erstellen Sie das Tool gceprovenance:

    go build -C go-tdx-guest/tools/gceprovenance .
    
  4. 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.bin
    
  5. Senden Sie die Challenge-Datei an die Confidential VM-Instanz von Intel TDX, die Sie überprüfen möchten.

  6. Ü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_DATA des Zitats geschrieben.

  7. Rufen Sie die Rohbytes des Zitats aus der resultierenden Datei outblob ab und bereinigen Sie das Verzeichnis report0:

    sudo cat /sys/kernel/config/tsm/report/report0/outblob > quote.bin
    sudo rmdir /sys/kernel/config/tsm/report/report0
    
  8. Fragen 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")
    
  9. Senden Sie das Zitat-Binärformat (quote.bin), die Projektnummer, die Instanz-ID und die Zone an den Remote-Verifier.

  10. 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_HEX
    

    Machen 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.