Atestar uma instância do Amazon EC2 com o AMD SEV-SNP - Amazon Elastic Compute Cloud

Atestar uma instância do Amazon EC2 com o AMD SEV-SNP

A declaração é um processo que permite que sua instância prove seu estado e sua identidade. Após habilitar o AMD SEV-SNP para a instância, será possível solicitar um relatório de atestado do AMD SEV-SNP para o processador subjacente. O relatório de declaração do AMD SEV-SNP contém um hash criptográfico, chamado de medição de lançamento, do conteúdo inicial da memória do convidado e do estado inicial da vCPU. O relatório de declaração é assinado com uma assinatura VLEK que remonta a uma raiz de confiança da AMD. É possível usar a medida de inicialização incluída no relatório de declaração para validar se a instância está sendo executada em um ambiente AMD genuíno e para validar o código de inicialização inicial usado para iniciar a instância.

Pré-requisito

Iniciar uma instância habilitada para o AMD SEV-SNP. Para ter mais informações, consulte Habilitar o AMD SEV-SNP para uma instância do Amazon EC2.

Etapa 1: obter o relatório de declaração

Nessa etapa, você instala e cria o utilitário snpguest e, em seguida, usa-o para solicitar o relatório de atestado e os certificados do AMD SEV-SNP.

  1. Conecte-se à sua instância.

  2. Execute os comandos apresentados a seguir para desenvolver o utilitário snpguest usando o repositório snpguest repository.

    $ git clone https://github.com/virtee/snpguest.git $ cd snpguest $ cargo build -r $ cd target/release
  3. Gere uma solicitação para o relatório de atestado. O utilitário solicita o relatório de atestado usando o host e o grava em um arquivo binário com os dados de solicitação fornecidos.

    O exemplo apresentado a seguir cria uma string de solicitação randômica e a utiliza como arquivo de solicitação (request-file.txt). Quando o comando retorna o relatório de atestado, ele é armazenado no caminho do arquivo especificado (report.bin). Nesse caso, o utilitário armazena o relatório no diretório atual.

    $ ./snpguest report report.bin request-file.txt --random
  4. Solicite os certificados usando a memória do host e armazene-os como arquivos PEM. O exemplo apresentado a seguir armazena os arquivos no mesmo diretório do utilitário snpguest. Se já existirem certificados no diretório especificado, esses certificados serão substituídos.

    $ ./snpguest certificates PEM ./

Etapa 2: validar a assinatura do relatório de atestado

O relatório de declaração é assinado com um certificado, chamado Versioned Loaded Endossement Key (VLEK), emitido pela AMD para a AWS. Nessa etapa, é possível validar se o certificado VLEK é emitido pela AMD e se o relatório de atestado é assinado por esse certificado VLEK.

  1. Faça o download dos certificados VLEK de raiz de confiança do site oficial da AMD para o diretório atual.

    $ sudo curl --proto '=https' --tlsv1.2 -sSf https://kdsintf.amd.com/vlek/v1/Milan/cert_chain -o ./cert_chain.pem
  2. Use openssl para validar se o certificado VLEK está assinado pela raiz dos certificados de confiança da AMD.

    $ sudo openssl verify --CAfile ./cert_chain.pem vlek.pem

    Saída esperada:

    certs/vcek.pem: OK
  3. Use o utilitário snpguest para validar se o relatório de declaração foi assinado pelo certificado VLEK.

    $ ./snpguest verify attestation ./ report.bin

    Saída esperada.

    Reported TCB Boot Loader from certificate matches the attestation report. Reported TCB TEE from certificate matches the attestation report. Reported TCB SNP from certificate matches the attestation report. Reported TCB Microcode from certificate matches the attestation report. VEK signed the Attestation Report!