View a markdown version of this page

Bestätigen Sie eine Amazon EC2 EC2-Instance mit AMD SEV-SNP - Amazon Elastic Compute Cloud

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bestätigen Sie eine Amazon EC2 EC2-Instance mit AMD SEV-SNP

Die Bescheinigung ist ein Prozess, mit dem Ihre Instance ihren Status und ihre Identität nachweisen kann. Nachdem Sie AMD SEV-SNP für Ihre Instance aktiviert haben, können Sie einen AMD-Bestätigungsbericht SEV-SNP vom zugrunde liegenden Prozessor anfordern. Der SEV-SNP AMD-Bestätigungsbericht enthält einen kryptografischen Hash, der als Startmessung bezeichnet wird und den anfänglichen Inhalt des Gastspeichers und den anfänglichen vCPU-Status erfasst. Der Bestätigungsbericht ist mit einer VCEK-Signatur (auf Dedicated Hosts) oder einer VLEK-Signatur (auf Shared Tenancy) signiert, die auf eine AMD-Vertrauensbasis zurückgeht. Sie können anhand der im Bescheinigungsbericht enthaltenen Startmessung überprüfen, ob die Instance in einer echten AMD-Umgebung ausgeführt wird, und den anfänglichen Startcode überprüfen, der zum Starten der Instance verwendet wurde.

Voraussetzung

Starten Sie eine Instanz, die für AMD aktiviert ist. SEV-SNP Weitere Informationen finden Sie unter Aktivieren Sie AMD SEV-SNP für eine EC2-Instance.

Bestätigung für Instanzen auf Dedicated Hosts

Dedicated Hosts verwenden einen Versioned Chip Endorsement Key (VCEK), einen eindeutigen Signaturschlüssel pro Chip, um den Bestätigungsbericht zu signieren. Sie müssen die Vertrauenskette vom VCEK-Zertifikat bis zur Vertrauensbasis von AMD validieren.

Anmerkung

Das derzeit unterstützte Prozessormodell istmilan.

Voraussetzungen

Eine Instanz, die auf einem SEV-SNP AMD-fähigen Dedicated Host läuft und auf dem Git, Cargo und Perl installiert sind.

Schritt 1: Erstellen Sie das snpguest-Hilfsprogramm

In diesem Schritt installieren und erstellen Sie das snpguest Hilfsprogramm, mit dem Sie den Bestätigungsbericht generieren, die erforderlichen Zertifikate abrufen und den Bestätigungsbericht validieren.

  1. Verbinden Sie sich mit der Instance.

  2. Stellen Sie sicher, dass die Voraussetzungen installiert sind.

    $ perl --version; cargo --version; git --version
  3. Führen Sie die folgenden Befehle aus, um das snpguest-Hilfsprogramm vom snpguest repository zu installieren.

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

Schritt 2: Generieren Sie den Bestätigungsbericht

Generieren Sie eine Anfrage für den Bestätigungsbericht. Das snpguest Hilfsprogramm fordert den Bestätigungsbericht vom AMD Secure Processor über den Host an und schreibt ihn in eine Binärdatei. Das folgende Beispiel erstellt eine zufällige Anfrage und speichert den Bericht in. report.bin

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

Schritt 3: Rufen Sie die VCEK-Zertifikatskette ab und validieren Sie sie

Der Bestätigungsbericht wird vom VCEK signiert, was nur für den AMD-Chip auf Ihrem Dedicated Host gilt. Sie müssen die Vertrauenskette vom VCEK bis zur Vertrauensbasis von AMD validieren.

  1. Rufen Sie das VCEK-Zertifikat vom AMD Key Distribution Service (KDS) ab. Das Zertifikat wird anhand der Chip-ID und der TCB-Version aus dem Bestätigungsbericht identifiziert.

    $ ./snpguest fetch vcek pem ./ ./report.bin --processor-model milan
  2. Rufen Sie die AMD-Stammzertifikate (AMD Root Key (ARK) und AMD SEV Key (ASK)) ab, die die Vertrauenskette bilden.

    $ ./snpguest fetch ca PEM ./ milan --endorser vcek
  3. Überprüfen Sie die Zertifikatskette.

    $ ./snpguest verify certs ./

    Es folgt eine Beispielausgabe.

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

Optional: Für zusätzliche Transparenz können Sie die Kette unabhängig verifizieren, indem Sie die Zertifikate direkt von AMD herunterladen und verwendenopenssl.

$ 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

Es folgt eine Beispielausgabe.

vcek.pem: OK

Schritt 4: Validieren Sie die Signatur des Bestätigungsberichts

Stellen Sie sicher, dass der Bestätigungsbericht mit dem VCEK-Zertifikat signiert wurde. Dies bestätigt, dass der Bericht auf originaler AMD-Hardware erstellt wurde und nicht manipuliert wurde.

$ ./snpguest verify attestation ./ report.bin

Es folgt eine Beispielausgabe.

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!

Die Felder für die TCB-Version (Trusted Computing Base) bestätigen, dass die Firmware-Versionen im Zertifikat mit den im Bestätigungsbericht angegebenen Versionen übereinstimmen. Die letzte Zeile bestätigt, dass der VCEK den Bericht unterzeichnet hat.

Bescheinigung für Fälle von geteiltem Mietverhältnis

Shared Tenancy-Instanzen verwenden einen Versioned Loaded Endorsement Key (VLEK), der von AMD für ausgestellt wird. AWS Sie müssen die Vertrauenskette vom VLEK-Zertifikat bis zur Vertrauensbasis von AMD validieren.

Schritt 1: Erstellen Sie das Tool snpguest

In diesem Schritt installieren und erstellen Sie das snpguest Hilfsprogramm, mit dem Sie den Bestätigungsbericht generieren, die erforderlichen Zertifikate abrufen und den Bestätigungsbericht validieren.

  1. Verbinden Sie sich mit der Instance.

  2. Führen Sie die folgenden Befehle aus, um das snpguest-Hilfsprogramm vom snpguest repository zu installieren.

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

Schritt 2: Generieren Sie den Bescheinigungsbericht

Generieren Sie eine Anfrage für den Bestätigungsbericht. Das snpguest Hilfsprogramm fordert den Bestätigungsbericht vom Host an und schreibt ihn in eine Binärdatei. Im folgenden Beispiel wird eine zufällige Anfrage ohne Angabe von Nonce erstellt und der Bericht in gespeichert. report.bin

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

Fordern Sie die Zertifikate aus dem Host-Speicher an und speichern Sie sie als PEM-Dateien.

$ ./snpguest certificates PEM ./

Schritt 3: Rufen Sie die VLEK-Zertifikatskette ab und validieren Sie sie

Der Bestätigungsbericht ist vom VLEK unterzeichnet, der von AMD für ausgestellt wird. AWS Sie müssen die Vertrauenskette vom VLEK bis zur Vertrauensbasis von AMD validieren.

  1. Laden Sie die VLEK-Root-of-Trust-Zertifikate vom offiziellen AMD Key Distribution Service in das aktuelle Verzeichnis herunter.

    $ sudo curl --proto '=https' --tlsv1.2 -sSf https://kdsintf.amd.com/vlek/v1/Milan/cert_chain -o ./cert_chain.pem
  2. Verwenden Sie openssl, um zu überprüfen, ob das VLEK-Zertifikat von den Zertifikaten der AMD-Stammvertrauenstellung signiert ist.

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

    Es folgt eine Beispielausgabe.

    vlek.pem: OK

Schritt 4: Überprüfen Sie die Signatur des Bestätigungsberichts

Stellen Sie sicher, dass der Bestätigungsbericht mit dem VLEK-Zertifikat signiert wurde. Dies bestätigt, dass der Bericht auf originaler AMD-Hardware erstellt wurde und nicht manipuliert wurde.

$ ./snpguest verify attestation ./ report.bin

Es folgt eine Beispielausgabe.

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!