View a markdown version of this page

Atestar una instancia de Amazon EC2 con el SEV-SNP de AMD - Amazon Elastic Compute Cloud

Atestar una instancia de Amazon EC2 con el SEV-SNP de AMD

La atestación es un proceso que permite que la instancia demuestre su estado e identidad. Tras habilitar SEV-SNP de AMD para la instancia, podrá solicitar un informe de atestación del SEV-SNP de AMD del procesador subyacente. El informe de atestación de SEV-SNP de AMD contiene un hash criptográfico, denominado medición de inicialización, del contenido inicial de la memoria huésped y del estado inicial de la CPU virtual. El informe de atestación se firma con una firma VCEK (en hosts dedicados) o una firma VLEK (con tenencia compartida), cuya cadena de confianza se remonta a una raíz de confianza de AMD. Puede usar la medición de inicialización incluida en el informe de atestación para validar que la instancia se ejecuta en un entorno de AMD genuino y validar el código de arranque inicial que se usó para iniciar la instancia.

Requisito previo

Inicialice una instancia que esté habilitada para SEV-SNP de AMD. Para obtener más información, consulte Habilitación de SEV-SNP de AMD para una instancia de EC2.

Atestación de instancias en hosts dedicados

Los hosts dedicados utilizan una Clave de aprobación de chip versionada (VCEK), una clave de firma única para cada chip, para firmar el informe de atestación. Debe validar la cadena de confianza desde el certificado VCEK hasta la raíz de confianza de AMD.

nota

El modelo de procesador compatible actualmente es milan.

Requisitos previos

Una instancia que se ejecuta en un host dedicado con SEV-SNP de AMD habilitada y con Git, Cargo y Perl instalados.

Paso 1: Crear la utilidad snpguest

En este paso, instalará y creará la utilidad snpguest, que utilizará para generar el informe de atestación, recuperar los certificados necesarios y validar el informe de atestación.

  1. Conéctese a la instancia.

  2. Verifique que los requisitos previos estén instalados.

    $ perl --version; cargo --version; git --version
  3. Ejecute los siguientes comandos para crear la utilidad snpguest desde el snpguest repository.

    $ git clone https://github.com/virtee/snpguest.git $ cd snpguest $ cargo build -r $ cd target/release

Paso 2: Generar el informe de atestación

Genera una solicitud para el informe de certificación. La utilidad snpguest solicita el informe de atestación al procesador seguro de AMD a través del host y lo escribe en un archivo binario. En el siguiente ejemplo, se crea un nonce de solicitud aleatorio y el informe se almacena en report.bin.

$ ./snpguest report report.bin request-file.txt --random

Paso 3: Obtener y validar la cadena de certificados VCEK

El informe de atestación está firmado por la VCEK, que es única para el chip AMD del host dedicado. Debe validar la cadena de confianza desde la VCEK hasta la raíz de confianza de AMD.

  1. Obtenga el certificado VCEK del Servicio de distribución de claves (KDS) de AMD. El certificado se identifica mediante el ID del chip y la versión de TCB del informe de atestación.

    $ ./snpguest fetch vcek pem ./ ./report.bin --processor-model milan
  2. Obtenga los certificados raíz de AMD (AMD Root Key [ARK] y AMD SEV Key [ASK]) que conforman la cadena de confianza.

    $ ./snpguest fetch ca PEM ./ milan --endorser vcek
  3. Verificar la cadena de certificados.

    $ ./snpguest verify certs ./

    A continuación, se muestra un ejemplo del resultado.

    The AMD ARK was self-signed! The AMD ASK was signed by the AMD ARK! The VCEK was signed by the AMD ASK!

Opcional: para una mayor transparencia, puede verificar la cadena de forma independiente descargando los certificados directamente desde AMD y utilizando openssl.

$ curl --proto '=https' --tlsv1.2 -sSf https://kdsintf.amd.com/vcek/v1/Milan/cert_chain -o ./cert_chain.pem $ openssl verify --CAfile ./cert_chain.pem vcek.pem

A continuación, se muestra un ejemplo del resultado.

vcek.pem: OK

Paso 4: valide la firma del informe de atestación

Verifique que el informe de atestación haya sido firmado por el certificado VCEK. Esto confirma que el informe se generó en hardware AMD genuino y que no ha sido manipulado.

$ ./snpguest verify attestation ./ report.bin

A continuación, se muestra un ejemplo del resultado.

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!

Los campos de versión TCB (Trusted Computing Base) confirman que las versiones de firmware del certificado coinciden con las indicadas en el informe de certificación. La última línea confirma que la VCEK firmó el informe.

Atestación de instancias con tenencia compartida

Las instancias con tenencia compartida utilizan una Clave de aprobación cargada versionada (VLEK), que AMD emite para AWS. Debe validar la cadena de confianza desde el certificado VLEK hasta la raíz de confianza de AMD.

Paso 1: Crear la utilidad snpguest

En este paso, instalará y creará la utilidad snpguest, que utilizará para generar el informe de atestación, recuperar los certificados necesarios y validar el informe de atestación.

  1. Conéctese a la instancia.

  2. Ejecute los siguientes comandos para crear la utilidad snpguest desde el snpguest repository.

    $ git clone https://github.com/virtee/snpguest.git $ cd snpguest $ cargo build -r $ cd target/release

Paso 2: Generar el informe de atestación

Genera una solicitud para el informe de certificación. La utilidad snpguest solicita el informe de atestación al host y lo escribe en un archivo binario. En el siguiente ejemplo, se crea un nonce de solicitud aleatorio y el informe se almacena en report.bin.

$ ./snpguest report report.bin request-file.txt --random

Solicite los certificados de la memoria del host y guárdelos como archivos PEM.

$ ./snpguest certificates PEM ./

Paso 3: Obtener y validar la cadena de certificados VLEK

El informe de atestación está firmado por la VLEK, que AMD emite para AWS. Debe validar la cadena de confianza desde la VLEK hasta la raíz de confianza de AMD.

  1. Descargue los certificados raíz de confianza de la VLEK desde el Servicio oficial de distribución de claves de AMD al directorio actual.

    $ sudo curl --proto '=https' --tlsv1.2 -sSf https://kdsintf.amd.com/vlek/v1/Milan/cert_chain -o ./cert_chain.pem
  2. Utilice openssl para validar que el certificado VLEK esté firmado por los certificados raíz de confianza de AMD.

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

    A continuación, se muestra un ejemplo del resultado.

    vlek.pem: OK

Paso 4: valide la firma del informe de atestación

Verifique que el informe de atestación haya sido firmado por el certificado VLEK. Esto confirma que el informe se generó en hardware AMD genuino y que no ha sido manipulado.

$ ./snpguest verify attestation ./ report.bin

A continuación, se muestra un ejemplo del resultado.

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!