Confidential Computing mit AWS Nitro-Enklaven

Von Ralf Keuper

Nitro Enklaven sind eine relativ neue Funktion des Nitro Hypervisor von AWS, der EC2-Instances verwaltet. Sie ermöglicht die Bereitstellung einer separaten, isolierten Umgebung für die Verarbeitung hochsicherer, oft verschlüsselter Daten.

Nitro-Enklaven sind vollständig isoliert, sodass nicht einmal der Administrator über SSH direkt auf sie oder auf die darauf laufenden Prozesse zugreifen kann. Sie verfügen überdies über kein externes Netzwerk; nur der Elternserver kann mit der Enklave kommunizieren, und das auch nur über lokale Netzwerk-Sockets. Das bedeutet, dass der übergeordnete Server so konfiguriert werden kann, dass er verschlüsselte Daten verarbeitet, ohne dass diese jemals in den Zugriff des Servers gelangen[1]AWS Nitro-Enklaven.

Zum Vorgehen:

Eine Anfrage kommt bei der übergeordneten Instanz an, die einige sensible Daten verarbeiten muss. Anstatt sie lokal zu verarbeiten, wird sie an die Enklave geschickt. Obwohl sie technisch getrennt ist, kann man sie sich als einen besonders geschützten Teil des übergeordneten Servers vorstellen. Die Enklave kann einen Entschlüsselungsschlüssel vom Key Management Service von AWS abrufen, die Daten entschlüsseln und nach der Verarbeitung eine Antwort senden.

Eine Enklave wird durch Partitionierung der CPU und des Speichers einer EC2-Instanz erstellt. Enklaven sind an EC2-Instanzen angehängte virtuelle Maschinen, die keinen dauerhaften Speicher, keinen Administrator- oder Bedienerzugriff und nur eine sichere lokale Verbindung zu der jeweiligen EC2-Instanz bieten.

Abbildung: Nitro-Enklaven verwendet dieselbe Nitro-Hypervisor-Technologie, mit der die CPU- und Speicherisolation zwischen EC2-Instances erstellt wird, um die Isolation zwischen einer Enclave und einer EC2-Instance zu erstellen.

Der Key Management Service (KMS) kann dazu verwendet werden, um Zugriff auf sensible Entschlüsselungsschlüssel zu verfolgen und zu verwalten. Dabei kommen kryptografische Bescheinigungen zum Einsatz, was bedeutet, dass der Nitro Hypervisor ein signiertes Bescheinigungsdokument für die Enklave erstellt, um ihre Identität gegenüber KMS nachzuweisen. Dazu gehören ein Hash der Image-Datei, ein Signierzertifikat der Image-Datei, ein Hash des Linux-Kernels, IAM-Rollen auf dem Parent und die ID des Parent. Alles muss mit der Konfiguration übereinstimmen, sonst wird die Anfrage an den KMS nicht weitergeleitet. Dadurch wird sichergestellt, dass nur autorisierter Code ausgeführt wird und nur die berechtigten Enklaven auf sensible Daten zugreifen können.

Neben den Lösungen von Google (Asylo), Microsoft (OpenEnclave) lassen sich die Nitro-Enklaven den Confidential Computing zuordnen. Wie es in  Confidential Computing – Ich sehe was, was sonst keiner sieht heisst, bietet Nitro in punkto Sicherheitslevel “weniger als eine SGX-Enklave, dafür ist Nitro ohne Änderungen an der Applikation nutzbar“.

References

Beitrag teilen
Dieser Beitrag wurde unter Datenaustausch abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.