iX 1/2018
S. 100
Wissen
Secure Programming
Aufmacherbild

Programmieren mit Intels Trusted Execution SGX

Teils vertraulich

Ganz ohne zusätzliche Hardwaremodule stellt Intels Trusted-Computing-Erweiterung SGX geschützte Speicherbereiche bereit. Dank des zugehörigen SGX-SDK lassen sie sich ohne großen Aufwand für eigene Anwendungen nutzen.

Mit der aktuellen Skylake-Generation der Core-i-Prozessoren hat Intel die Instruktionssatzerweiterung SGX (Software Guard Extensions) eingeführt, die ein sogenanntes Trusted Execution Environment (TEE) auf der x86-Plattform bereitstellt. Unter dem Oberbegriff Trusted Execution fasst man verschiedene hardwarebasierte Verfahren zusammen, die eine spezielle Umgebung zur vertrauenswürdigen Ausführung von Code – ein TEE – schaffen. Trusted Execution dient hierbei dem Schutz der in dem TEE ausgeführten Anwendung vor Manipulation von außen.

Zum Funktionsumfang eines TEE zählt zunächst das Isolieren von der normalen Ausführungsumgebung und neuerdings das Verschlüsseln des TEE-Speichers durch die Hardware. Diese Isolierung kann die Menge des vertrauenswürdigen Codes stark verringern. Zudem gefährden Fehler außerhalb des TEE seine Integrität und die darin befindlichen – oft vertraulichen – Daten nicht. Die Verschlüsselung des TEE-Speichers durch die Hardware verhindert es darüber hinaus, dass das TEE gegenüber der Außenwelt Geheimnisse, etwa Schlüssel, preisgibt.

Den Grundstein, das Vertrauen in eine Ausführungsumgebung aufzubauen, die sich auf einer entfernten Plattform befindet, legt die hardwareunterstützte Remote Attestation oder Integritätsüberprüfung. Dadurch eignet sich die Technik in Zukunft besonders fürs Cloud-Computing, sei es, dass ein Cloud-Nutzer die Vertrauenswürdigkeit der in der Cloud ausgeführten Software prüfen oder eigenen Code auf fremder Hardware ausführen will, deren Besitzer er in der Regel nicht uneingeschränkt vertraut.

Enklaven sind isolierte vertrauenswürdige Bereiche innerhalb normaler Anwendungen (Abb. 1).

Intel selbst nennt die TEEs SGX-Enklaven. Die dort verwendete Technik gewährleistet insbesondere die transparente – vom Anwender unbemerkte – Verschlüsselung und die Integrität des Enklavenspeichers. SGX erweitert den Satz der bei x86-Prozessoren verfügbaren Instruktionen um solche zum Verwalten und Benutzen von Enklaven. Aus der Sicht des Anwendungsprogrammierers sind die Enklaven Teil des virtuellen Adressraums einer normalen Anwendung und können ähnlich wie eine Bibliothek bestimmte Funktionen bereitstellen (siehe Abbildung 1).

Reserviert und automatisch verschlüsselt

Zur Bootzeit des Rechners reserviert die Firmware des Mainboards einen Teil des Arbeitsspeichers und reicht diese Information an den Kernel weiter, sobald der mit der üblichen BIOS-Funktion INT 0x15, eax = 0xE820 (BIOS-Interrupt 0x15, Function 0xE820) die Address Map des physischen Arbeitsspeichers abfragt. Dieser reservierte Speicherbereich heißt Enclave Page Cache (EPC) und dient dem Speichern aller Enklavenseiten einer Plattform. Ihn verwaltet das Betriebssystem wie den normalen Arbeitsspeicher über seine Page Tables. Jedoch verschlüsselt die SGX-fähige CPU diesen Speicherbereich und verwendet intern Datenstrukturen zur Wahrung der Integrität der darin befindlichen Daten.