Certificación y procedencia del CVM de TDX

1. Descripción general

Las máquinas virtuales confidenciales (CVM) son un tipo de máquinas virtuales de Compute Engine que usan encriptación de memoria basada en hardware y protección de integridad. Esto ayuda a garantizar que tus datos y aplicaciones no se puedan leer ni modificar en la memoria mientras están en uso. En este codelab, aprenderás a generar una cita de certificación de Intel TDX en la CVM y a verificarla de forma local con fines de demostración. Además, verificarás el host de Google Cloud y la procedencia de la instancia de la CVM.

En este codelab, se incluyen los siguientes pasos:

  • Configurar una Confidential VM de Intel TDX
  • Recuperar una cita de certificación de TDX
  • Verificar la cita de certificación de TDX y el nonce
  • Verificar la integridad del firmware de GCE (OVMF)
  • Verificar el host de GCE TDX y la procedencia de la instancia

Qué aprenderás

  • Cómo recuperar una cita de certificación de TDX en una CVM con las herramientas go-tdx-guest
  • Cómo verificar la autenticidad, la actualidad (nonce) y la integridad del firmware de GCE (OVMF) de la cita
  • Cómo verificar el host de Google Cloud y la procedencia de la instancia (búsqueda de registro PPID y vinculación de instancia PZID)

Requisitos

2. Configuración y requisitos

Para habilitar las APIs necesarias, ejecuta el siguiente comando en la consola de Google Cloud o en tu entorno de desarrollo local:

gcloud auth login

gcloud services enable \
    cloudapis.googleapis.com \
    cloudshell.googleapis.com \
    confidentialcomputing.googleapis.com \
    compute.googleapis.com

3. Configura la CVM y recupera la cita de TDX

En este paso, crearás una CVM de TDX y recuperarás una cita de certificación de TDX del hardware.

  1. Ve a la consola de Google Cloud o a tu entorno de desarrollo local. Crea una CVM de la siguiente manera:
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

Reemplaza <project-id> por el identificador único de tu proyecto.

  1. Conéctate a la CVM.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
  1. Configura un entorno de Go en la 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
  1. Instala las herramientas go-tdx-guest.

Clona el repositorio y compila la herramienta attest, que genera una cita de TDX.

git clone https://github.com/google/go-tdx-guest.git
cd go-tdx-guest/tools/attest
go build
  1. Recupera la cita de certificación de TDX:

Usa la herramienta attest para generar una cita. Pasaremos un nonce (64 bytes de REPORT_DATA) y guardaremos el resultado en 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 cita de TDX ahora se guarda en quote.bin.

4. Verifica la cita de certificación de TDX

Ahora que generamos una cita de Intel TDX (quote.bin), podemos verificarla con la herramienta check que se proporciona en el repositorio go-tdx-guest. Esta herramienta verifica la cita según las especificaciones de Intel, la verifica con los materiales descargados del Servicio de certificación de aprovisionamiento (PCS) de Intel y valida las restricciones de políticas, como el nonce, para evitar ataques de reproducción.

  1. Navega al directorio de la herramienta check y compílala:
cd ~/go-tdx-guest/tools/check
go build
  1. Ejecuta la herramienta para verificar tanto las firmas criptográficas como el nonce. Usaremos la marca -get_collateral=true para descargar los certificados de TEE necesarios del PCS de Intel, la marca -check_crl=true para verificar las revocaciones de certificados y la marca -report_data para validar la actualidad del nonce:
./check -in ~/go-tdx-guest/tools/attest/quote.bin -inform bin \
    -get_collateral=true -check_crl=true \
    -report_data $nonce

Si la cita es criptográficamente válida y el nonce coincide, la herramienta registrará un mensaje de éxito similar al siguiente ejemplo y saldrá con el código 0:

INFO : TDX Quote verified successfully

5. Verifica la integridad del firmware de GCE (OVMF)

Si bien la garantía de Intel verifica el hardware, no verifica que la máquina virtual ejecute un firmware de Google Compute Engine (GCE) genuino y sin modificaciones.

Google publica Launch Endorsements firmados (que contienen mediciones de integridad de referencia doradas o RIM) para todas las versiones oficiales de firmware de GCE UEFI (OVMF) en un bucket público de Google Cloud Storage (GCS).

En este paso, usaremos la herramienta pública gce-tcb-verifier de Google para recuperar automáticamente la aprobación del firmware de GCS, verificar la firma de Google en ella y validar la medición del firmware de nuestra CVM (MRTD) en comparación con ella.

1. Compila la herramienta de verificación de TCB de GCE

  1. Clona el repositorio público gce-tcb-verifier de GitHub:
cd ~
git clone https://github.com/google/gce-tcb-verifier.git
  1. Navega al directorio de la herramienta de la CLI y compílala:
cd gce-tcb-verifier/gcetcbendorsement/cli
go build -o gcetcbendorsement
  1. Para mayor comodidad, agrega la herramienta compilada a tu RUTA DE ACCESO:
export PATH=$PATH:$(pwd)

2. Valida la cita con la aprobación del firmware de GCE

Ahora, ejecuta la herramienta gcetcbendorsement para validar tu cita de certificación. Debido a que la herramienta se realiza de forma silenciosa cuando la verificación se realiza correctamente, podemos encadenar el comando con && echo "Validation Succeeded!" para obtener una confirmación amigable y explícita del éxito:

gcetcbendorsement tdx validate ~/go-tdx-guest/tools/attest/quote.bin && echo "Validation Succeeded!"

Resultado:

Validation Succeeded!

¿Qué sucede en segundo plano?

  1. Extracción: La herramienta analiza quote.bin y extrae la medición del firmware (MRTD) del cuerpo de la cita de TD.
  2. Recuperación: Construye una URL de GCS con el MRTD y descarga el VMLaunchEndorsement correspondiente del bucket público de Google (gs://gce_tcb_integrity).
  3. Verificación de firma: Recupera el certificado de CA raíz público de Google (https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) y verifica criptográficamente la firma de Google en la aprobación descargada.
  4. Validación de medición: Compara el MRTD firmado por el hardware de TDX en tu cita con las mediciones de referencia doradas en la aprobación firmada de Google.

Si todas las verificaciones se realizan correctamente, el comando saldrá con el código 0 de forma silenciosa (o imprimirá Validation Succeeded! con el eco encadenado), lo que demuestra que tu VM ejecuta un firmware genuino aprobado por Google.

6. Verifica el host de GCE TDX y la procedencia de la instancia

Si bien la certificación y la verificación del firmware confirman que tu VM se ejecuta en hardware de Intel TDX genuino con firmware UEFI aprobado por Google, la verificación de procedencia de GCE TDX conecta tu cita de certificación directamente a la infraestructura de Google Cloud de dos maneras fundamentales:

  1. Procedencia del host: Identifica la máquina anfitrión física de Google Cloud que ejecuta tu VM mediante la extracción del PPID (ID de aprovisionamiento de la plataforma) único de la plataforma del certificado PCK de la cita. Luego, recupera el registro de la plataforma host de Google Cloud Storage (confidential-host-registry), que registra la zona física y cuándo Google Cloud aprovisionó por última vez los certificados de certificación del host.
  2. Procedencia de la instancia (vinculación de PZID): Google Cloud vincula criptográficamente la identidad específica de tu VM (ProjectNumber, Zone y InstanceID) al registro MR_OWNER de la cita de TDX. Verificar esta vinculación garantiza que la cita pertenezca exclusivamente a tu instancia y evita ataques de reproducción o sustitución de citas en diferentes VMs o proyectos.

La herramienta de la CLI de gceprovenance (que también se encuentra en el repositorio go-tdx-guest) automatiza la verificación completa de la procedencia: verifica la autenticidad de la cita, el desafío de actualidad, el registro del host y la vinculación de PZID de la instancia en un solo comando.

  1. Navega al directorio gceprovenance y compila la herramienta:
cd ~/go-tdx-guest/tools/gceprovenance
go build
  1. Ejecuta la verificación completa de la procedencia con el comando verify. Pasaremos el archivo de cita (quote.bin) y el desafío de nonce ($nonce) que generamos antes:
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
  1. Cuando todas las verificaciones se realizan correctamente, la herramienta muestra un informe de verificación similar al siguiente:
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

¿Qué sucede en segundo plano?

  • Cita y desafío: La herramienta verifica la cadena de firma de la cita con el certificado raíz de Intel y confirma que el REPORT_DATA de la cita coincide con tu desafío $nonce.
  • Procedencia del host (PPID): Extrae el hexadecimal de 32 caracteres PPID del certificado PCK de hoja y descarga el documento JSON del registro del host de GCS (https://storage.googleapis.com/confidential-host-registry/).
  • Procedencia de la instancia (PZID): Consulta el servidor de metadatos de GCE local para obtener el ID del proyecto numérico de tu instancia, la zona y el ID de la instancia, construye la carga útil JSON de PZID canónica ({"instanceId":...,"numericalProjectId":...,"zone":...}), calcula su resumen SHA-384 y verifica que coincida con MR_OWNER en la cita.
  1. Inspecciona el documento del registro del host recuperado:

De forma predeterminada, el comando verify guarda el documento JSON del registro del host recuperado en host_registry.json. Puedes inspeccionarlo para ver los metadatos de la plataforma host:

cat host_registry.json

Resultado de ejemplo:

{
  "zone": "us-central1",
  "timestamp": "2026-02-17T11:25:12Z"
}

Estos metadatos describen las propiedades de la máquina host:

  • zone: La región o zona física de Google Cloud en la que reside la máquina anfitrión.
  • timestamp: La fecha y hora UTC en que Google Cloud aprovisionó y verificó por última vez los certificados de certificación de hardware de esta máquina host.

7. Limpieza

Ejecuta los siguientes comandos en la consola de Cloud o en tu entorno de desarrollo local:

# Delete the CVM instance
gcloud compute instances delete tdx-cvm-attestation-codelab --zone=us-central1-c

8. ¿Qué sigue?

Obtén más información sobre Confidential VMs y Compute Engine.