AMD Zen: RAM-Verschlüsselung für virtuelle Maschinen
Kommende Opterons mit Zen-Mikroarchitektur für Server können den Hauptspeicher ganz oder teilweise verschlüsseln, um Daten in virtuellen Maschinen zu schützen.
Der Software-Entwickler Thomas Lendacky aus der Linux OS Group von AMD stellt auf dem KVM Forum 2016 die Funktionen Secure Memory Encryption (SME) und Secure Encrypted Virtualization (SEV) vor. SME und SVE dienen dazu, Daten im RAM zu verschlüsseln, um Daten Virtueller Maschinen (VMs) zu schützen. Die neuen Funktionen sollen 2017 mit den neuen Opteron-Prozessoren starten, in denen Zen-Mikroarchitektur steckt, also beispielsweise im "Naples" mit bis zu 32 Kernen und 64 Threads. Sie sind unter anderem für Server in Rechenzentren von Firmen und Cloud-Dienstleistern gedacht, auf denen ein Hypervisor wie KVM, Xen, VMware ESXi oder Hyper-V Ressourcen für VMs bereitstellt.
Das Konzept von SME und SVE hat AMD bereits in einem Whitepaper erklärt sowie in der aktuellen Revision 3.26 des AMD64-Programmierhandbuchs. Demnach verschlüsselt SME das RAM per AES128 mit einem geheimen Schlüssel, der sich weder manipulieren noch auslesen lässt. Die Verschlüsselung soll mit geringer zusätzlicher Latenz auskommen.
SME ohne SEV
Den einfachsten Modus der Vollverschlüsselung des gesamten RAM nennt AMD Transparent SME (TSME); dazu müssen weder Betriebssystem (OS) noch Hypervisor (HV) für SME vorbereitet sein. TSME schützt jedoch nur vor Angriffen, die physischen Zugriff auf die Hardware des Systems benötigen: Cold-Boot-Attacken, Sniffing-Hardware am Speicherbus oder den Diebstahl nichtflüchtiger Speichermodule (NVDIMMs), die bisher vor allem in Storage-Systemen stecken.
Spannender ist es, nur bestimmte RAM-Adressbereiche zu verschlüsseln, denn aus dem unverschlüsseltem RAM besteht kein Zugriff auf verschlüsselte Bereiche. Um bestimmte RAM-Adressen vom Speicher-Controller verschlüsseln zu lassen, setzen OS oder HV das sogenannte C-Bit (C für enCryption) im zugehörigen Page-Table-Eintrag (PTE). Wenn ein Hypervisor nur die RAM-Adressbereiche der VMs verschlüsselt, kann der HV-Administrator den Speicher der VMs auch mit Sniffing-Software nicht mehr im Klartext auslesen.
Volle Funktion mit SEV
Eine Abschottung einzelner VMs untereinander ist möglich, wenn das RAM jeder VM mit einem anderen Schlüssel verschlüsselt ist. Dazu braucht dann aber auch das Gast-Betriebssystem Unterstützung für SVE. Bei SVE hat jede VM eine eigene sogenannte ASID, die zugehörigen Code und Daten kennzeichnet.
DMA-Zugriffe auf das verschlüsselte RAM einer VM sind dabei verboten, weil sie das Konzept aushebeln würden. Für die Kommunikation mit anderen VMs und dem HV kann eine VM aber bestimmte RAM-Bereiche unverschlüsselt lassen, also als Shared Memory einrichten. Patches für den Linux-Kernel hat AMD bereits auf den Weg gebracht.
Schlüssel im Secure Processor
Die Schlüsselverwaltung übernimmt der in allen aktuellen AMD-Prozessoren integrierte Secure Processor auf der Basis von ARM TrustZone eines eingebauten Cortex-A5-Kerns. Er läuft mit proprietärem und von AMD digital signiertem Binärcode, der über AGESA im (UEFI-)BIOS des Systems integriert ist.
Konkurrenz Intel SGX
Mit den Prozessoren der Skylake-Generation hat Intel die Software Guard Extensions (SGX) eingeführt. Auch damit sind Schutzfunktionen ähnlich wie mit AMD SME/SEV möglich und auch Intel hat Memory Encryption Extensions (MEE) entwickelt. Serverprozessoren der Xeon-Familie mit Skylake-Technik werden wie AMD Naples im kommenden Jahr erwartet (Skylake-EP/Purley).
Sicherheitsexperten vom MIT und Joanna Rutkowska kritisieren allerdings, dass SGX die "Schlüsselgewalt" letztlich in Intels Hände legt.
Links zum Thema
- AMD "Naples" in der ersten Jahreshälfte 2017
- AMD Memory Encryption Whitepaper
- AMD64 Architecture Programmer’s Manual Volume 2: System Programming
- Intel Software Guard Extensions (SGX)
- Intel Memory Encryption Extensions (MEE)
- Kritik an Intels Software Guard Extensions
- Patch Series Provides support for Secure Memory Encryption
- Intels Skylake-EP/EX-Xeons kommen in "Regalen"
(ciw)