1. Visão geral
As máquinas virtuais confidenciais (CVMs, na sigla em inglês) são um tipo de máquina virtual do Compute Engine que usa criptografia de memória baseada em hardware e proteção de integridade. Isso ajuda a garantir que seus dados e aplicativos não possam ser lidos ou modificados na memória durante o uso. Neste codelab, você vai aprender a gerar uma cotação de atestado do Intel TDX na CVM e a verificá-la localmente para fins de demonstração. Além disso, você vai verificar a origem do host e da instância do Google Cloud da CVM.
Este codelab inclui as seguintes etapas:
- Como configurar uma VM confidencial do Intel TDX
- Como buscar uma cotação de atestado do TDX
- Como verificar a cotação de atestado e o nonce do TDX
- Como verificar a integridade do firmware do GCE (OVMF)
- Como verificar a origem do host e da instância do GCE TDX
O que você vai aprender
- Como buscar uma cotação de atestado do TDX em uma CVM usando as ferramentas
go-tdx-guest - Como verificar a autenticidade, a atualização (nonce) e a integridade do firmware do GCE (OVMF) da cotação
- Como verificar a origem do host e da instância do Google Cloud (pesquisa de registro
PPIDe vinculação de instânciaPZID)
O que é necessário
- Um projeto do Google Cloud Platform
- Conhecimento básico do Google Compute Engine e da VM confidencial
2. Configuração e requisitos
Para ativar as APIs necessárias, execute o comando a seguir no console do Google Cloud ou no ambiente de desenvolvimento local:
gcloud auth login
gcloud services enable \
cloudapis.googleapis.com \
cloudshell.googleapis.com \
confidentialcomputing.googleapis.com \
compute.googleapis.com
3. Como configurar a CVM e buscar a cotação do TDX
Nesta etapa, você vai criar uma CVM do TDX e buscar uma cotação de atestado do TDX no hardware.
- Acesse o console do Google Cloud ou o ambiente de desenvolvimento local. Crie uma CVM da seguinte maneira:
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
Substitua <project-id> pelo identificador exclusivo do seu projeto.
- Conecte-se à CVM.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
- Configure um ambiente Go na 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
- Instale as ferramentas
go-tdx-guest.
Clone o repositório e crie a ferramenta attest, que gera uma cotação do TDX.
git clone https://github.com/google/go-tdx-guest.git cd go-tdx-guest/tools/attest go build
- Busque a cotação de atestado do TDX:
Use a ferramenta attest para gerar uma cotação. Vamos transmitir um nonce (64 bytes de REPORT_DATA) e salvar a saída em 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
A cotação do TDX agora está salva em quote.bin.
4. Como verificar a cotação de atestado do TDX
Agora que geramos uma cotação do Intel TDX (quote.bin), podemos verificá-la usando a ferramenta check fornecida no repositório go-tdx-guest. Essa ferramenta verifica a cotação em relação às especificações da Intel, verifica em relação a garantias baixadas do serviço de certificação de provisionamento (PCS, na sigla em inglês) da Intel e valida restrições de política, como o nonce, para evitar ataques de repetição.
- Navegue até o diretório da ferramenta
checke crie-o:
cd ~/go-tdx-guest/tools/check go build
- Execute a ferramenta para verificar as assinaturas criptográficas e o nonce. Vamos usar a flag
-get_collateral=truepara baixar os certificados TEE necessários do PCS da Intel, a flag-check_crl=truepara verificar as revogações de certificados e a flag-report_datapara validar a atualização do nonce:
./check -in ~/go-tdx-guest/tools/attest/quote.bin -inform bin \
-get_collateral=true -check_crl=true \
-report_data $nonce
Se a cotação for criptograficamente válida e o nonce corresponder, a ferramenta vai registrar uma mensagem de sucesso semelhante ao exemplo a seguir e sair com o código 0:
INFO : TDX Quote verified successfully
5. Como verificar a integridade do firmware do GCE (OVMF)
Embora a garantia da Intel verifique o hardware, ela não verifica se a máquina virtual está executando um firmware do Google Compute Engine (GCE) genuíno e não modificado.
O Google publica endossos de inicialização assinados (que contêm medições de integridade de referência, ou RIMs) para todas as versões oficiais de firmware UEFI (OVMF) do GCE em um bucket público do Google Cloud Storage (GCS).
Nesta etapa, vamos usar a ferramenta pública gce-tcb-verifier do Google para buscar automaticamente o endosso de firmware do GCS, verificar a assinatura do Google nele e validar a medição de firmware da CVM (MRTD) em relação a ele.
1. Criar a ferramenta de verificação de TCB do GCE
- Clone o repositório público
gce-tcb-verifierdo GitHub:
cd ~ git clone https://github.com/google/gce-tcb-verifier.git
- Navegue até o diretório da ferramenta de CLI e crie-o:
cd gce-tcb-verifier/gcetcbendorsement/cli go build -o gcetcbendorsement
- Adicione a ferramenta criada ao seu PATH para facilitar:
export PATH=$PATH:$(pwd)
2. Validar a cotação em relação ao endosso de firmware do GCE
Agora, execute a ferramenta gcetcbendorsement para validar a cotação de atestado. Como a ferramenta é bem-sucedida silenciosamente após uma verificação bem-sucedida, podemos encadear o comando com && echo "Validation Succeeded!" para receber uma confirmação amigável e explícita de sucesso:
gcetcbendorsement tdx validate ~/go-tdx-guest/tools/attest/quote.bin && echo "Validation Succeeded!"
Saída:
Validation Succeeded!
O que está acontecendo nos bastidores?
- Extração: a ferramenta analisa
quote.bine extrai a medição de firmware (MRTD) do corpo da cotação do TD. - Busca: ela constrói um URL do GCS usando o
MRTDe baixa oVMLaunchEndorsementcorrespondente do bucket público do Google (gs://gce_tcb_integrity). - Verificação de assinatura: ela busca o certificado de CA raiz público do Google (
https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) e verifica criptograficamente a assinatura do Google no endosso baixado. - Validação de medição: ela compara o
MRTDassinado pelo hardware TDX na cotação com as medições de referência douradas no endosso assinado do Google.
Se todas as verificações forem aprovadas, o comando vai sair com o código 0 silenciosamente (ou imprimir Validation Succeeded! com o eco encadeado), comprovando que a VM está executando um firmware genuíno endossado pelo Google.
6. Como verificar a origem do host e da instância do GCE TDX
Embora a verificação de atestado e firmware confirme que a VM está sendo executada em hardware Intel TDX genuíno com firmware UEFI endossado pelo Google, a verificação de origem do GCE TDX conecta a cotação de atestado diretamente à infraestrutura do Google Cloud de duas maneiras importantes:
- Origem do host: identifica a máquina host física do Google Cloud que executa a VM extraindo o PPID (ID de provisionamento da plataforma) exclusivo da plataforma do certificado PCK da cotação. Em seguida, ele recupera o registro da plataforma host do Google Cloud Storage (
confidential-host-registry), que registra a zona física e quando o Google Cloud provisionou os certificados de atestado do host pela última vez. - Origem da instância (vinculação de PZID): o Google Cloud vincula criptograficamente a identidade da VM específica (
ProjectNumber,Zone, eInstanceID) ao registroMR_OWNERda cotação do TDX. A verificação dessa vinculação garante que a cotação pertença exclusivamente à instância e evita ataques de repetição ou substituição de cotação em diferentes VMs ou projetos.
A ferramenta de CLI gceprovenance (também localizada no repositório go-tdx-guest) automatiza a verificação completa de origem, verificando a autenticidade da cotação, o desafio de atualização, o registro do host e a vinculação de PZID da instância em um comando.
- Navegue até o diretório
gceprovenancee crie a ferramenta:
cd ~/go-tdx-guest/tools/gceprovenance go build
- Execute a verificação completa de origem usando o comando
verify. Vamos transmitir o arquivo de cotação (quote.bin) e o desafio nonce ($nonce) que geramos anteriormente:
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
- Quando todas as verificações forem bem-sucedidas, a ferramenta vai gerar um relatório de verificação semelhante ao seguinte:
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
O que está acontecendo nos bastidores?
- Cotação e desafio: a ferramenta verifica a cadeia de assinaturas da cotação em relação ao certificado raiz da Intel e confirma que o
REPORT_DATAda cotação corresponde ao desafio$nonce. - Origem do host (
PPID): extrai oPPIDhexadecimal de 32 caracteres do certificado PCK de folha e baixa o documento JSON do registro do host do GCS (https://storage.googleapis.com/confidential-host-registry/). - Origem da instância (
PZID): consulta o servidor de metadados do GCE local para o ID do projeto numérico, a zona e o ID da instância, constrói o payload JSON canônico do PZID ({"instanceId":...,"numericalProjectId":...,"zone":...}), calcula o resumo SHA-384 e verifica se ele corresponde aMR_OWNERna cotação.
- Inspecione o documento de registro do host recuperado:
Por padrão, o comando verify salva o documento JSON do registro do host buscado em host_registry.json. É possível inspecioná-lo para conferir os metadados da plataforma host:
cat host_registry.json
Exemplo de saída:
{
"zone": "us-central1",
"timestamp": "2026-02-17T11:25:12Z"
}
Esses metadados descrevem as propriedades da máquina host:
zone: a região/zona física do Google Cloud em que a máquina host reside.timestamp: a data e hora UTC em que os certificados de atestado de hardware dessa máquina host foram provisionados e verificados pelo Google Cloud pela última vez.
7. Revisão dos dados
Execute os comandos a seguir no console do Cloud ou no ambiente de desenvolvimento local:
# Delete the CVM instance gcloud compute instances delete tdx-cvm-attestation-codelab --zone=us-central1-c
8. A seguir
Saiba mais sobre as VMs confidenciais e o Compute Engine.