1. Panoramica
Le macchine virtuali private riservate (CVM) sono un tipo di macchine virtuali di Compute Engine che utilizzano la crittografia della memoria basata su hardware e la protezione dell'integrità. In questo modo, i dati e le applicazioni non possono essere letti o modificati in memoria durante l'utilizzo. In questo codelab, imparerai a generare una citazione di attestazione Intel TDX sulla CVM e a verificarla localmente a scopo dimostrativo. Inoltre, verificherai la provenienza dell'host e dell'istanza Google Cloud della CVM.
Questo codelab include i seguenti passaggi:
- Configurazione di una VM privata riservata Intel TDX
- Recupero di una citazione di attestazione TDX
- Verifica della citazione di attestazione TDX e del nonce
- Verifica dell'integrità del firmware GCE (OVMF)
- Verifica della provenienza dell'host e dell'istanza TDX di GCE
Obiettivi didattici
- Come recuperare una citazione di attestazione TDX su una CVM utilizzando gli strumenti
go-tdx-guest - Come verificare l'autenticità, la freschezza (nonce) e l'integrità del firmware GCE (OVMF) della citazione
- Come verificare la provenienza dell'host e dell'istanza Google Cloud (ricerca nel registro
PPIDe binding dell'istanzaPZID)
Che cosa ti serve
- Un progetto Google Cloud
- Conoscenza di base di Google Compute Engine e delle VM private riservate
2. Configurazione e requisiti
Per abilitare le API necessarie, esegui il comando seguente nella console Google Cloud o nel tuo ambiente di sviluppo locale:
gcloud auth login
gcloud services enable \
cloudapis.googleapis.com \
cloudshell.googleapis.com \
confidentialcomputing.googleapis.com \
compute.googleapis.com
3. Configurazione della CVM e recupero della citazione TDX
In questo passaggio creerai una CVM TDX e recupererai una citazione di attestazione TDX dall'hardware.
- Vai alla console Google Cloud o al tuo ambiente di sviluppo locale. Crea una CVM come segue:
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
Sostituisci <project-id> con l'identificatore univoco del tuo progetto.
- Connettiti alla CVM.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
- Configura un ambiente Go sulla CVM:
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
- Installa gli strumenti
go-tdx-guest.
Clona il repository e crea lo strumento attest, che genera una citazione TDX.
git clone https://github.com/google/go-tdx-guest.git cd go-tdx-guest/tools/attest go build
- Recupera la citazione di attestazione TDX:
Utilizza lo strumento attest per generare una citazione. Passeremo un nonce (64 byte di REPORT_DATA) e salveremo l'output 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
La citazione TDX è ora salvata in quote.bin.
4. Verifica della citazione di attestazione TDX
Ora che abbiamo generato una citazione Intel TDX (quote.bin), possiamo verificarla utilizzando lo strumento check fornito nel repository go-tdx-guest. Questo strumento confronta la citazione con le specifiche di Intel, la verifica rispetto ai dati collaterali scaricati dal servizio di certificazione del provisioning (PCS) di Intel e convalida i vincoli dei criteri, come il nonce, per impedire attacchi di riproduzione.
- Vai alla directory dello strumento
checke creala:
cd ~/go-tdx-guest/tools/check go build
- Esegui lo strumento per verificare sia le firme crittografiche sia il nonce. Utilizzeremo il flag
-get_collateral=trueper scaricare i certificati TEE necessari dal PCS di Intel, il flag-check_crl=trueper verificare le revoche dei certificati e il flag-report_dataper convalidare la freschezza del nonce:
./check -in ~/go-tdx-guest/tools/attest/quote.bin -inform bin \
-get_collateral=true -check_crl=true \
-report_data $nonce
Se la citazione è crittograficamente valida e il nonce corrisponde, lo strumento registrerà un messaggio di esito positivo simile all'esempio seguente e uscirà con il codice 0:
INFO : TDX Quote verified successfully
5. Verifica dell'integrità del firmware GCE (OVMF)
Sebbene i dati collaterali di Intel verifichino l'hardware, non verificano che la macchina virtuale stia eseguendo un firmware Google Compute Engine (GCE) originale e non modificato.
Google pubblica Launch Endorsements firmati (contenenti le misurazioni di integrità di riferimento, o RIM) per tutte le release ufficiali del firmware UEFI (OVMF) di GCE in un bucket Google Cloud Storage (GCS) pubblico.
In questo passaggio, utilizzeremo lo strumento pubblico gce-tcb-verifier di Google per recuperare automaticamente l'approvazione del firmware da GCS, verificare la firma di Google e convalidare la misurazione del firmware della nostra CVM (MRTD).
1. Crea lo strumento di verifica TCB di GCE
- Clona il repository pubblico
gce-tcb-verifierda GitHub:
cd ~ git clone https://github.com/google/gce-tcb-verifier.git
- Vai alla directory dello strumento CLI e creala:
cd gce-tcb-verifier/gcetcbendorsement/cli go build -o gcetcbendorsement
- Aggiungi lo strumento creato al tuo PATH per comodità:
export PATH=$PATH:$(pwd)
2. Convalida la citazione rispetto all'approvazione del firmware GCE
Ora esegui lo strumento gcetcbendorsement per convalidare la citazione di attestazione. Poiché lo strumento ha esito positivo senza generare output in caso di verifica riuscita, possiamo concatenare il comando con && echo "Validation Succeeded!" per ottenere una conferma di successo semplice ed esplicita:
gcetcbendorsement tdx validate ~/go-tdx-guest/tools/attest/quote.bin && echo "Validation Succeeded!"
Output:
Validation Succeeded!
Che cosa accade dietro le quinte?
- Estrazione: lo strumento analizza
quote.bined estrae la misurazione del firmware (MRTD) dal corpo della citazione TD. - Recupero: costruisce un URL GCS utilizzando
MRTDe scarica ilVMLaunchEndorsementcorrispondente dal bucket pubblico di Google (gs://gce_tcb_integrity). - Verifica della firma: recupera il certificato CA radice pubblico di Google (
https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) e verifica crittograficamente la firma di Google sull'approvazione scaricata. - Convalida della misurazione: confronta
MRTDfirmato dall'hardware TDX nella citazione con le misurazioni di riferimento dorate nell'approvazione firmata di Google.
Se tutti i controlli vengono superati, il comando uscirà con il codice 0 senza generare output (o stamperà Validation Succeeded! con l'echo concatenato), dimostrando che la VM esegue un firmware approvato da Google.
6. Verifica della provenienza dell'host e dell'istanza TDX di GCE
Sebbene l'attestazione e la verifica del firmware confermino che la VM è in esecuzione su hardware Intel TDX originale con firmware UEFI approvato da Google, la verifica della provenienza TDX di GCE collega la citazione di attestazione direttamente all'infrastruttura di Google Cloud in due modi fondamentali:
- Provenienza dell'host: identifica la macchina host fisica Google Cloud che esegue la VM estraendo l'PPID (Platform Provisioning ID) univoco della piattaforma dal certificato PCK della citazione. Recupera quindi il record del registro della piattaforma host da Google Cloud Storage (
confidential-host-registry), che registra la zona fisica e quando Google Cloud ha eseguito il provisioning dei certificati di attestazione dell'host per l'ultima volta. - Provenienza dell'istanza (binding PZID): Google Cloud associa crittograficamente l'identità specifica della VM (
ProjectNumber,Zone, eInstanceID) al registroMR_OWNERdella citazione TDX. La verifica di questo binding garantisce che la citazione appartenga esclusivamente alla tua istanza e impedisce attacchi di riproduzione o sostituzione di citazioni su VM o progetti diversi.
Lo strumento CLI gceprovenance (che si trova anche nel repository go-tdx-guest) automatizza la verifica completa della provenienza, controllando l'autenticità della citazione, la sfida di freschezza, il record del registro host e il binding PZID dell'istanza in un unico comando.
- Vai alla directory
gceprovenancee crea lo strumento:
cd ~/go-tdx-guest/tools/gceprovenance go build
- Esegui la verifica completa della provenienza utilizzando il comando
verify. Passeremo il file della citazione (quote.bin) e la sfida nonce ($nonce) che abbiamo generato in precedenza:
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
- Quando tutti i controlli vengono superati, lo strumento restituisce un report di verifica simile al seguente:
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
Che cosa accade dietro le quinte?
- Citazione e sfida: lo strumento verifica la catena di firme della citazione rispetto al certificato radice di Intel e conferma che
REPORT_DATAdella citazione corrisponde alla sfida$nonce. - Provenienza dell'host (
PPID): estrae l'PPID esadecimale di 32 caratteriPPIDdal certificato PCK foglia e scarica il documento JSON del registro host da GCS (https://storage.googleapis.com/confidential-host-registry/). - Provenienza dell'istanza (
PZID): esegue una query sul server di metadati GCE locale per l'ID progetto numerico, la zona e l'ID istanza dell'istanza, costruisce il payload JSON PZID canonico ({"instanceId":...,"numericalProjectId":...,"zone":...}), calcola il digest SHA-384 e verifica che corrisponda aMR_OWNERnella citazione.
- Ispeziona il documento del registro host recuperato:
Per impostazione predefinita, il comando verify salva il documento JSON del registro host recuperato in host_registry.json. Puoi ispezionarlo per visualizzare i metadati della piattaforma host:
cat host_registry.json
Output di esempio:
{
"zone": "us-central1",
"timestamp": "2026-02-17T11:25:12Z"
}
Questi metadati descrivono le proprietà della macchina host:
zone: la regione/zona fisica di Google Cloud in cui si trova la macchina host.timestamp: la data e l'ora UTC in cui i certificati di attestazione hardware di questa macchina host sono stati sottoposti a provisioning e verificati da Google Cloud per l'ultima volta.
7. Esegui la pulizia
Esegui questi comandi nella console Cloud o nel tuo ambiente di sviluppo locale:
# Delete the CVM instance gcloud compute instances delete tdx-cvm-attestation-codelab --zone=us-central1-c
8. Passaggi successivi
Scopri di più sulle VM private riservate e su Compute Engine.