Attestazione di Confidential VM

L'attestazione per un'istanza Confidential VM è il processo di miglioramento della certezza che l'istanza sia legittima e funzioni nello stato previsto. È uno strumento fondamentale per verificare che il tuo workload sia in esecuzione in un Trusted Execution Environment (TEE).

Attestazione basata sulla CPU

I report di attestazione sono la prova che la VM viene eseguita in un TEE. Vengono generate dall'istanza Confidential VM e, a seconda della tecnologia Confidential Computing utilizzata, vengono firmate da un vTPM basato su software o da un Trusted Security Module (TSM) dedicato basato su hardware. I report di attestazione contengono misurazioni relative all'attività del bootloader, alla configurazione hardware, alla configurazione del firmware e ad altri eventi registrati all'avvio che aiutano a convalidare lo stato e l'identità dell'istanza Confidential VM.

Il tipo di report di attestazione che puoi richiedere dipende dalla tecnologia Confidential Computing utilizzata dall'istanza Confidential VM.

Origine della firma Tipo Copertura dei report Tecnologia di Confidential Computing
SEV SEV-SNP Intel TDX
vTPM gestito da Google vTPM basato su software Attività del bootloader, integrità del kernel
AMD Secure Processor1 TSM basato su hardware Ambiente hardware e firmware
Modulo Intel TDX TSM basato su hardware Ambiente hardware e firmware2

1. L'AMD Secure Processor è una risorsa condivisa disponibile per tutti gli host sul server fisico in cui è presente. Un host può limitare l'accesso ospite al processore sicuro e gli aggiornamenti firmware del processore sicuro (che sono considerati eventi host) possono verificarsi in qualsiasi momento.

2. Il componente di avvio iniziale (il firmware) per le istanze VM riservate TDX viene misurato nel valore MRTD (Measurement of the Trust Domain), mentre la restante catena di avvio viene misurata nei registri RTMR (Runtime Measurement Registers), ancorando tutte le misurazioni all'hardware. Gli utenti possono estendere il registro RTMR[3] con le misurazioni dello spazio utente.

Richiedere un report di attestazione

Puoi richiedere report di attestazione da vTPM gestito da Google, dal processore sicuro di AMD e dal modulo TDX di Intel con i seguenti strumenti:

  • Go-TPM

  • Strumenti Go-TPM (è richiesta la versione 0.4.4 o successive per il supporto di AMD SEV-SNP e Intel TDX)

L'evento GceNonHostInfo nel log eventi di attestazione vTPM mostra quale tecnologia Confidential Computing è in uso. Gli strumenti Go-TPM possono richiedere un report di attestazione dal processore sicuro AMD se viene utilizzato AMD SEV-SNP o dal modulo Intel TDX se viene utilizzato Intel TDX.

Solo per i report di attestazione hardware, puoi inviare una richiesta di verifica crittografica al TSM con i seguenti strumenti:

  • Per AMD SEV-SNP, utilizza SEV Guest. I certificati della chiave di approvazione del chip della versione (VCEK) vengono memorizzati nella cache della VM anziché essere richiesti direttamente al sistema di distribuzione delle chiavi (KDS) di AMD.

  • Per Intel TDX, utilizza TDX Guest.

Intel TDX su Ubuntu

Per le immagini Ubuntu sul kernel 1016 e versioni successive, il modulo tdx_guest si trova nel pacchetto linux-modules-extra.

Per installare il pacchetto linux-modules-extra, esegui questo comando:

sudo apt-get install linux-modules-extra-gcp

Se riscontri problemi durante l'installazione di linux-modules-extra-gcp, puoi aggiornare il kernel eseguendo questo comando:

sudo apt-get upgrade

Per applicare le modifiche, devi riavviare o caricare manualmente il modulo. Per caricare manualmente il modulo, esegui questo comando:

sudo modprobe tdx_guest

Verificare i report di attestazione con Google Cloud Attestation

Se il tuo modello di attendibilità lo consente, anziché scrivere ed eseguire tu stesso un programma di verifica dell'attestazione, puoi utilizzare Google Cloud Attestation. Ciò comporta l'utilizzo degli strumenti Go-TPM per recuperare una citazione di attestazione dal vTPM di un'istanza Confidential VM e inviarla a Google Cloud Attestation per la verifica. Se la citazione supera la verifica, Google Cloud Attestation restituisce un token contenente le informazioni della VM che puoi confrontare con le tue norme per confermare se la VM deve essere considerata attendibile o meno.

Google Cloud Attestation può essere utilizzato con le istanze Confidential VM che utilizzano le seguenti tecnologie di Confidential Computing:

Per un esempio end-to-end di utilizzo di Google Cloud Attestation, consulta il codelab Attestazione remota vTPM su macchina virtuale riservata.

Attestazione basata su GPU

L'attestazione della GPU prevede la verifica del driver della GPU, del dispositivo GPU o di entrambi.

Problemi noti

L'attestazione della GPU potrebbe non riuscire e segnalare un record di misurazione non corrispondente all'indice 9. Google e NVIDIA stanno lavorando per trovare una soluzione.

Per risolvere il problema, esegui un arresto e un riavvio completi della Confidential VM. Il riavvio della VM dal sistema operativo guest della VM non risolve il problema.

Attestazione del driver GPU

Per garantire un'attestazione solida, attiva Avvio protetto quando crei l'istanza Confidential VM.

L'avvio protetto consente il caricamento solo dei driver della GPU firmati dalla distribuzione. Questa verifica è essenziale per confermare che il driver della GPU è stato rilasciato e fornito ufficialmente da NVIDIA. Un driver ufficiale è importante perché stabilisce una sessione sicura Security Protocol and Data Model (SPDM) con i dispositivi GPU e funge da radice di attendibilità per l'attestazione del dispositivo GPU NVIDIA.

Attestazione del dispositivo GPU NVIDIA

Oltre all'attestazione del driver GPU, puoi attestare ulteriormente i dispositivi GPU NVIDIA. L'attestazione del dispositivo GPU NVIDIA verifica il BIOS video (VBIOS) in esecuzione sulla GPU. In questo modo puoi identificare le versioni del software NVIDIA e valutare la presenza di potenziali vulnerabilità.

Per eseguire l'attestazione del dispositivo GPU NVIDIA, installa le dipendenze go-nvattest-tools e crea lo strumento nvattest da google/go-nvattest-tools:

  1. Installa le dipendenze di compilazione:

    sudo apt-get update && sudo apt-get install -y \
      git gcc pkg-config libxml2-dev curl
    
  2. Scarica e installa Go:

    GO_VERSION="1.25.0"
    curl -fsSL \
      "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" \
      -o go.tar.gz
    sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go.tar.gz
    rm go.tar.gz
    export PATH=/usr/local/go/bin:$PATH
    
  3. Clona il repository e compila il file binario nvattest:

    git clone https://github.com/google/go-nvattest-tools.git
    cd go-nvattest-tools
    go build -o nvattest ./cmd/nvattest
    

Attestazione del dispositivo GPU locale

L'attestazione del dispositivo GPU locale consente di eseguire la procedura di attestazione direttamente sull'istanza VM e visualizzare i risultati localmente per verificare l'integrità della GPU.

Per eseguire l'attestazione del dispositivo GPU locale live, esegui lo strumento nvattest direttamente sull'istanza Confidential VM:

sudo ./nvattest attest --device=gpu

(Facoltativo) Puoi separare la raccolta delle prove dalla verifica:

  1. Genera un nonce esadecimale di 32 byte e raccogli le prove di attestazione:

    NONCE=$(openssl rand -hex 32)
    sudo ./nvattest collect-evidence \
      --device=gpu \
      --nonce="${NONCE}" \
      --evidence_file=gpu_evidence.json
    
  2. Verifica le prove raccolte localmente:

    ./nvattest attest \
      --device=gpu \
      --nonce="${NONCE}" \
      --evidence_file=gpu_evidence.json