Verifica che un'istanza VM Intel TDX venga eseguita su Google Cloud

Per determinare su quale istanza Confidential VM Intel TDX è in esecuzione Google Cloud, devi stabilirne la provenance. Per stabilire la provenienza, esegui i seguenti controlli:

  • Verifica della citazione e associazione della challenge: verifica l'autenticità della citazione Intel TDX utilizzando il certificato radice Intel incorporato e, facoltativamente, verifica la freschezza rispetto a una challenge prevista nel campo REPORT_DATA della citazione.

  • Verifica della provenienza dell'host: estrai l'ID di provisioning della piattaforma (PPID) dal certificato PCK incorporato della citazione. Utilizza il PPID per recuperare il documento JSON del registro host da un bucket Cloud Storage per verificare la provenienza.

  • Verifica della provenienza dell'istanza: utilizza il numero di progetto, la zona e l'ID istanza (PZID) dell'istanza Confidential VM per calcolare un digest SHA-384, quindi verifica che il digest corrisponda al valore del campo MR_OWNER nella citazione Intel TDX.

Verificare la provenienza da remoto

Ti consigliamo di utilizzare lo gceprovenance strumento per determinare la provenienza delle macchine Intel TDX. Lo strumento automatizza l'estrazione dei valori richiesti e il recupero del documento di provenienza.

Per verificare la provenienza da remoto utilizzando gceprovenance, completa le seguenti istruzioni:

  1. Clona il repository GitHub go-tdx-guest nel tuo verificatore remoto:

    git clone https://github.com/google/go-tdx-guest.git
    
  2. A seconda del sistema operativo guest, potrebbe essere necessario installare alcune dipendenze Go per creare gli strumenti in go-tdx-guest. La procedura varia a seconda del sistema operativo. Ad esempio, i seguenti comandi installano le dipendenze necessarie su Ubuntu:

    sudo apt update
    sudo apt install golang-go build-essential
    
  3. Crea lo strumento gceprovenance:

    go build -C go-tdx-guest/tools/gceprovenance .
    
  4. Genera una challenge di 64 byte a cui l'istanza Confidential VM Intel TDX deve eseguire il binding alla sua citazione:

    head -c 64 /dev/urandom > challenge.bin
    
  5. Invia il file della challenge all'istanza Confidential VM Intel TDX che vuoi verificare.

  6. Nell'istanza Confidential VM Intel TDX, passa il file della challenge come input (inblob) a Linux ConfigFS in /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'
    

    La challenge viene quindi scritta nel campo REPORT_DATA della citazione dal sistema.

  7. Recupera i byte della citazione non elaborati dal file outblob risultante e libera spazio nella directory report0:

    sudo cat /sys/kernel/config/tsm/report/report0/outblob > quote.bin
    sudo rmdir /sys/kernel/config/tsm/report/report0
    
  8. Esegui una query sul server di metadati locale per l'ID istanza, il numero di progetto e la zona dell'istanza Confidential VM:

    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. Invia il file binario della citazione (quote.bin), il numero di progetto, l'ID istanza e la zona al verificatore remoto.

  10. Nel verificatore remoto, converti la challenge in una stringa esadecimale di 128 caratteri, quindi passala a gceprovenance. Lo strumento verifica quindi la firma della citazione e i binding di provenienza:

    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
    

    Fornisci quanto segue:

    • PATH_TO_QUOTE: il percorso del file della citazione fornito.

    • PROJECT_NUMBER: il numero di progetto fornito.

    • ZONE: la zona fornita.

    • INSTANCE_ID: l'ID istanza Confidential VM fornito.

    Una risposta corretta è simile alla seguente:

    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
    

Per altri gceprovenance comandi, consulta il repository GitHub.