Compartilhar via


Detalhes do design do atestado de convidado da VM Confidencial

Este documento traz uma visão geral detalhada do design do atestado de convidado da VM confidencial do Azure.

Design baseado no vTPM

As VMs (máquinas virtuais) confidenciais do Azure utilizam um design baseado no vTPM para o atestado de convidado. A abordagem garante uma interface consistente entre sistemas operacionais convidados (Linux e Windows) e plataformas de hardware (AMD SEV-SNP e Intel TDX).

Fluxo de atestado

O processo de atestado de convidado envolve duas etapas principais: geração de evidências e verificação de evidências. Um usuário solicita a VM confidencial do Azure para gerar evidências do vTPM e, em seguida, enviar as evidências para uma parte confiável, por exemplo, o MAA (Atestado do Microsoft Azure), para verificação.

Uma terceira parte confiável, como o Azure Key Vault Premium ou o HSM gerenciado do Azure Key Vault, pode avaliar a confiabilidade da VM confidencial do Azure com base nos resultados da verificação. Se a VM for considerada confiável, a terceira parte confiável poderá provisionar segredos com segurança na VM usando mecanismos como a Versão de Chave Segura.

Evidência do vTPM

Uma evidência do vTPM consiste em uma cota do TPM e endossos usados para verificar a cota, conforme descrito no restante da seção.

  • Cota do TPM

    • Uma cota padrão do TPM que é a saída do comando TPM2_Quote definida pela especificação TPM 2.0.
    • Inclui uma lista de PCRs (registros de configuração de plataforma) que captura as medidas do sistema operacional convidado (por exemplo, o processo de inicialização).
    • O uso de PCRs está em conformidade com os padrões do Linux e do Windows (cada um com a respectiva definição de uso).
    • Assinado pela AK (chave privada de atestado) do vTPM, ou seja, a AK é especificada como a chave de assinatura no comando TPM2_Quote.
  • Log de eventos do TPM

    • Um log de eventos armazenado no sistema que pode ser usado para reproduzir valores de PCR na cota do TPM.
    • Veja Especificação do TPM para obter mais detalhes.
  • Certificado do AK do vTPM

    • Emitido pelo Azure (assinado pela AC do Azure).
    • Com suporte de hardware (a chave pública do atestado do vTPM, a AK pública, é capturada no relatório de hardware).
  • Relatório de hardware

    • Gerado e assinado pelo hardware.
    • Captura as informações a seguir
      • AK pública
      • A medida do paravisor convidado criado pela Microsoft em que o vTPM é executado
      • Informações de hardware
        • Veja as especificações do AMD SEV-SNP e do Intel TDX para obter mais detalhes.
  • Cadeia de certificados do fornecedor de hardware

    • Emitida pelo fornecedor de hardware (AMD e Intel) para certificar a assinatura do relatório de hardware.
      • AMD SEV-SNP: certificados VCEK (chave de endosso de chip com controle de versão)
      • Intel TDX: certificados PCK (chave de certificado de provisionamento)

O que é coberto por uma evidência do vTPM?

Componente Coberto por
SO convidado Cota do TPM (PCRs)
UEFI Relatório de hardware
Paravisor convidado (incluindo o vTPM) Relatório de hardware

Como a evidência do vTPM é verificada?

O verificador [MAA (Atestado do Microsoft Azure)] verificou a evidência do vTPM com base na cadeia confiável, conforme mostrado na figura a seguir. A verificação bem-sucedida implica que a VM confidencial do Azure atestada é confiável e protegida pelo hardware.

Figura da cadeia de confiança de evidências baseadas no vTPM

Referência de desenvolvedores

Esta seção apresenta uma referência ao design do atestado de convidado baseado no vTPM usado pela VM confidencial do Azure.

Índices NV do TPM reservados para o Azure

Nome Índice NV Tamanho (bytes) Descrição
Relatório de atestado 0x01400001 2600 Formato definido pelo Azure com o relatório de hardware inserido.
Dados de relatório 0x01400002 64 Os dados do relatório a serem incluídos nos dados do runtime.
Certificado da AK do vTPM 0x01C101D0 4096 O certificado usado para verificar a cota do TPM assinada pela AK do vTPM.
AK do vTPM 0x81000003 Depende do tipo de chave A chave usada para assinar a cota do TPM.

Veja Diretrizes e perguntas frequentes sobre o atestado das VMs Confidenciais do Azure para ver exemplos de comandos do TPM.

Formato de relatório de atestado

Relatório de atestado

Nome Deslocamento (bytes) Tamanho (bytes) Descrição
Cabeçalho 0 32 O cabeçalho do relatório (não endossado pelo relatório de hardware).
Conteúdo do relatório 32 1,184 O relatório de hardware.
Dados de runtime 1216 comprimento variável Os dados de runtime incluem declarações endossadas pelo relatório de hardware.
Nome Deslocamento (bytes) Tamanho (bytes) Descrição
Signature 0 4 Assinatura inserida. Esperado: 0x414c4348 (HCLA).
Versão 4 4 Versão do formato. Esperado: 2.
Tamanho do relatório 8 4 Tamanho do conteúdo do relatório. Esperado: 1184 (AMD SEV-SNP), 1024 (Intel TDX).
Tipo de solicitação 12 4 Uso específico do Azure do relatório de atestado. Esperado: 2.
Status 16 4 Reservado.
Reservado 20 12 Reservado.

Conteúdo do relatório

O relatório gerado pelo hardware (AMD SEV-SNP ou Intel TDX). O campo report_data do relatório captura o hash das Declarações do runtime nos Dados do runtime. Veja as especificações dos fornecedores de hardware para obter mais detalhes.

Dados do runtime

Nome Deslocamento (bytes) Tamanho (bytes) Descrição Medido
Tamanho dos dados 0 4 O tamanho das Declarações do runtime. Não
Versão 4 4 Versão do formato. Esperado: 1. Não
Tipo de Relatório 8 4 O tipo de relatório de hardware. Esperado: 2 (AMD SEV-SNP), 4 (Intel TDX) Não
Tipo de hash 12 4 O algoritmo usado para hash dos dados do runtime. O valor de hash é capturado no campo report_data do relatório de hardware. Esperado: 1 (SHA-256), 2 (SHA-384), 3 (SHA-512) Não
Declarações do runtime 16 comprimento variável As declarações do runtime no formato JSON. Sim

Declarações do runtime

Campo JSON Descrição
keys Uma matriz de chaves no formato JWK. Esperado kid: HCLAkPub (AK pública do vTPM), HCLEkPub (EK pública do vTPM).
vm_configuration Configuração seletiva da VM confidencial do Azure.
user_data Dados de 64 bytes (cadeia de caracteres HEX) lidos do índice NV 0x01400002 (Dados do Relatório).

Exemplo

{
  "keys": [
    {
      "kid": "HCLAkPub",
      "key_ops": [
        "sign"
      ],
      "kty": "RSA",
      "e": "AQAB",
      "n": "rAipdAAArL6V1FNnSQ-39i3VH-a8PuOeVRo2VpecspDWbJNmgHJ4-VGGFEx4sdVbvDC6fyo_VM2ebE-_AKxTmrNVEr-KIZveJMD_vlOqvMvjtllsWwA-vsRfpqiduvQdFcdCvyHzfxBRHYqdmxgKq-3QI-XBbZv9cCMMMPHkNp4mWkyahjQxXVJVwB1egCrJGKSk1bRXlP1dXNG_Pe4-W5O-YEGRKdLIA31G0Yh8VBnrEUCAMjDAuh6fncMkwdMVskI5Ta-kJgGw4GepIj6_smIyYhxg3o8Ik4qPntxj1TrV0bVW2IiNMLHoM67y1ErOir7bv00xqgqouFodI-vM3Q"
    },
    {
      "kid": "HCLEkPub",
      "key_ops": [
        "encrypt"
      ],
      "kty": "RSA",
      "e": "AQAB",
      "n": "m3AfPAAA-_HY3M_-x4bQbr0p2nkvAgig1mENl-BColvqq0aKKAqIHr-DFQ9-iB2z7EzhYVon5R7Nc1jzqBsmxahE8uaQfD-sp8bWOtbvy4V9nAqLY4HOwfxlJ99cEOOpxNXfCNesYOk8T0ntG05w7oBRjFw0LMVKS-1S3j5-oMnNnpJoo7rX5hNM8JVpxEuVa1IOf1NmvRey6wjwSHbjUay_IMUTAq1wzpx8wo_hjeY4JMd0Ka1ewLjJDaTQSpSxZI36ujyR6EGho0FBXSKN-9W9DAXkO8-RKuLUrmTXA6ETJRYApMuYGiUDCk1Y5zQTQsyWS6pLjnf2mg2tEntZZw"
    }
  ],
  "vm-configuration": {
    "root-cert-thumbprint": "",
    "console-enabled": true,
    "secure-boot": true,
    "tpm-enabled": true,
    "tpm-persisted": true,
    "vmUniqueId": "68dc0ac0-2ed9-4b2a-a03e-4953e416d939"
  },
  "user-data": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}

Próximas etapas