# Software Guard Extensions

Die Software Guard Extensions (Intel SGX) sind eine Erweiterung der x86-Architektur, um sichere Enklaven zu erstellen. Diese sind Bereiche im Adressraum eines Prozesses, die speziell durch die CPU geschützt werden und für die alle direkten Zugriffe, auch von privilegierten Prozessen, durch die CPU kontrolliert bzw. verhindert werden. Der Schutz des SGX-Speichers umfasst unter anderem transparente Speicherverschlüsselung mit Integritätsschutz. Bei x86-Prozessoren von AMD bietet Secure Memory Encryption (SME) ebenfalls Speicherverschlüsselung, weist aber einen anderen Ansatz auf.
SGX wurde von Intel mit Mikroprozessoren der sechsten Generation (Skylake-Mikroarchitektur) im Jahre 2015 eingeführt. In welchem Umfang eine CPU die SGX-Befehlssatzerweiterungen unterstützt, kann mit der CPUID-Instruktion abgefragt werden (CPUID „Structured Extended Feature Leaf“, EBX-Bit 02), aber seine Verfügbarkeit für Anwendungen erfordert ebenso Firmware-Unterstützung (BIOS oder UEFI) und Opt-in-Aktivierung, was sich nicht in CPUID-Bits widerspiegelt und die Merkmalserkennungslogik für Anwendungen verkompliziert.
In einer experimentellen Version des QEMU-Systememulators wurde 2014 die Emulation von SGX hinzugefügt. 2015 veröffentlichten Forscher des Georgia Institute of Technology den Open-Source-Simulator „OpenSGX“.
2022 ist aufgefallen, dass in Intel-Prozessoren der Core-i-Serien -11000 (11. Generation, Rocket Lake) und -12000 (12. Generation, Alder Lake) SGX nicht mehr in Hardware vorhanden ist. Intel führt SGX in den Datenblättern der Prozessoren als „veraltet“ an. Bei der Tiger-Lake-Mikroarchitektur, die beispielsweise als Basis der Prozessoren Core-i-1100G, -11000H oder Xeon W-11000 dient, ist zwar SGX noch in Hardware vorhanden, wird von Intel aber deaktiviert. Die Wiedergabe von Ultra HD Blu-rays auf PCs setzt außer High-bandwidth Digital Content Protection (HDCP) 2.2 ab HDMI 2.0 und dem Kopierschutz Advanced Access Content System (AACS) 2.0 auch SGX voraus.
In den skalierbaren Xeon-Prozessoren der 3. Generation (Ice Lake SP) sind die SGX weiterhin vorhanden.

## Funktion

SGX soll verschiedene Programme in Enklaven im Hauptspeicher voneinander abschotten, damit Schadcode oder Spionageprogramme nicht auf sensible Daten anderer Anwendungen zugreifen. Dies nennt man ein vertrauenswürdiges Umfeld für Befehlsausführungen "Trusted Execution Environment" (TEE). Programmierer sollen mittels SGX unter anderem durch Prüfung digitaler Signaturen ihre Software besser vor Manipulationen schützen können. Auch auf kompromittierten Betriebssystemen soll Code sicher ausgeführt werden. In geschützten Speicherbereichen, den Enklaven, die selbst vor Zugriffen des Betriebssystems geschützt seien, bliebe Software weiter sicher ausführbar. Dies setzt allerdings eine Lizenz und einen Schlüssel, den „Attestation Key“ von Intel voraus. Gemäß dem SGX-Konzept soll man darunter laufende Software weder analysieren noch überwachen können.
Intel erzeugt eine digitale Signatur vom Code in der Enklave und lädt diese in einen Intel-Cloud-Dienst, dem man vertrauen muss. Die Signatur wird mit einem privaten Schlüssel erzeugt, der nur in der Enklave ist. Der private Schlüssel wird über "Schmelzsicherungs"-Elemente auf dem Chip codiert. Dabei werden Bits durchgebrannt, die dadurch den Binärwert 0 einnehmen. Diesen privaten Schlüssel könne man nicht extrahieren, weil er in der Hardware codiert sei. Mark Ermolov, Maxim Goryachy und Dmitry Sklyarov widerlegten den Anspruch auf Vertrauenswürdigkeit des SGX-Konzeptes.