Intel SGX auf einen Blick und seine Rolle in der Cloud
Intel Software Guard Extensions (Intel SGX) sind eine Reihe von CPU-Anweisungen, mit denen private Schutzbereiche (Enklaven) im Adressraum einer Anwendung erstellt werden, in der sich Code auf Benutzerebene befindet. Die Technologie gewährleistet die Vertraulichkeit und Integrität sensibler Daten. Durch die Isolierung in einer Enklave erhalten sie zusätzlichen Schutz sowohl vor unbefugtem externen Zugriff, einschließlich des Cloud-Anbieters, als auch vor internen Bedrohungen, einschließlich Angriffen durch privilegierte Software.
Arbeitsprinzipien.Die Intel SGX-Technologie weist einen PRM (Processor Reserved Memory) zum Speichern von Code und zum Enklaven von Daten zu. Die CPU schützt es vor allen externen Aufrufen, einschließlich Kernel- und Hypervisor-Zugriff. Das PRM enthält einen Enclave Page Cache (EPC) mit 4 KiB-Seitenblöcken. Jede Seite darf nur einer Enklave gehören, und ihr Status wird in den Enclave Page Cache-Metadaten (EPCM) erfasst und von der CPU überwacht.
Die EPC-Sicherheit wird durch die Memory Encryption Engine (MEE) gewährleistet, die auf der CPU gespeicherte Verschlüsselungsschlüssel generiert. Es wird davon ausgegangen, dass Seiten nur innerhalb des physischen Prozessorkerns entschlüsselt werden können.
Leistungen.Intel SGX trägt dazu bei, das Vertrauen von Unternehmen in die öffentliche Cloud zu stärken, die sensible Daten in ihrer Arbeit verwenden (Passwörter, Verschlüsselungsschlüssel, Identifikation, biometrische, medizinische Daten sowie Informationen zum geistigen Eigentum). Wir sprechen über Vertreter einer Vielzahl von Branchen - Finanzsektor, Medizin und Gesundheitswesen, Einzelhandel, Spieleentwicklung, Telekommunikation, Medien.
Unser Ansatz zur Implementierung von Intel SGX
Um die Zuweisung virtueller Maschinen mit Intel SGX-Enklaven in der öffentlichen Cloud von G-Core Labs zu ermöglichen, mussten wir vom Kompilieren des gepatchten KVM- und QEMU- Kernels zum Schreiben von Python-Skripten in OpenStack Nova-Diensten übergehen. Wir haben uns entschlossen, die Rechenknoten zu definieren, die für die Zuordnung von virtuellen Hochsicherheitsmaschinen zu einem separaten Aggregator vorgesehen waren - eine Art von Rechenressourcen, für die zusätzliche Konfiguration erforderlich ist. Auf solchen Knoten war es notwendig:
- Aktivieren Sie die Intel SGX BIOS-Unterstützung.

- Installieren Sie gepatchte QEMU / KVM.
Anfangs hatten wir kein Verständnis dafür, wie dies funktionieren sollte und was wir am Ende schrauben müssen, um die VM mit der gewünschten Konfiguration zu erhalten. Ein Teil des Intel Developer Guide half dabei, dies zu klären . Mit seiner Hilfe haben wir gelernt, wie man einen Rechenknoten für die Arbeit mit SGX vorbereitet und welche zusätzlichen Parameter die XML-Konfigurationsdatei der virtuellen Maschine haben sollte. Hier finden Sie umfassende Informationen zum Erstellen eines Gastcomputers mit Intel SGX mithilfe der KVM-Virtualisierung. Um sicherzustellen, dass wir diese Technologie unterstützen können, haben wir zwei Methoden angewendet:
- Überprüfte den Abschnitt / dev / sgx / virt_epc in der Datei / proc / $ PID / smaps:
[root@compute-sgx ~]# grep -A22 epc /proc/$PID/smaps 7f797affe000-7f797b7fe000 rw-s 00000000 00:97 57466526 /dev/sgx/virt_epc Size: 8192 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd wr sh mr mw me ms pf io dc dd hg
- Und wir haben dieses Shell-Skript nach der Installation des SGX-Treibers verwendet (alle Aktionen wurden innerhalb der VM ausgeführt):
[root@sgx-vm ~]# cat check_sgx.sh #!/bin/bash METRICS="sgx_nr_total_epc_pages \ sgx_nr_free_pages \ sgx_nr_low_pages \ sgx_nr_high_pages \ sgx_nr_marked_old \ sgx_nr_evicted \ sgx_nr_alloc_pages \ " MODPATH="/sys/module/isgx/parameters/" for metric in $METRICS ; do echo "$metric= `cat $MODPATH/$metric`" done [root@sgx-vm ~]# curl -fsSL https://raw.githubusercontent.com/scontain/SH/master/install_sgx_driver.sh | bash -s - install -p metrics -p page0 [root@sgx-vm ~]# ./check_sgx.sh sgx_nr_total_epc_pages= 2048 sgx_nr_free_pages= 2048 sgx_nr_low_pages= 32 sgx_nr_high_pages= 64 sgx_nr_marked_old= 0 sgx_nr_evicted= 0 sgx_nr_alloc_pages= 0
Es ist zu beachten, dass für 2048 Seiten 8 MiB erforderlich sind (2048 x 4 = 8192), wenn eine Seite 4 KB groß ist.
Entwicklungsschwierigkeiten und deren Überwindung
Das Fehlen einer technischen Dokumentation für die Integration von Intel SGX in OpenStack war zum Zeitpunkt der Implementierung unsere Hauptschwierigkeit. Die Suche führte uns zu einem Artikel des SecureCloud-Projekts, in dem eine Möglichkeit zum Verwalten virtueller Maschinen mit SGX-Enklaven vorgestellt wurde.
Die gefundenen Informationen halfen zu verstehen, woran wir genau arbeiten müssen. Als Ergebnis haben wir folgende Aufgaben gebildet:
- Lassen Sie den OpenStack Nova-Dienst eine XML-Datei mit zusätzlichen Parametern für virtuelle Maschinen mit Intel SGX-Unterstützung generieren.
- Schreiben Sie einen OpenStack Nova-Scheduler-Filter, um den verfügbaren Speicher für Enklaven auf Rechenknoten zu ermitteln und einige andere Überprüfungen durchzuführen.
Ihre Ausführung reichte aus, um Intel SGX in unsere öffentliche Cloud zu integrieren.
Darüber hinaus haben wir die Sammlung von Statistiken unter Berücksichtigung des EPÜ hinzugefügt:
# openstack usage show
Usage from 2020-11-04 to 2020-12-03 on project a968da75bcab4943a7beb4009b8ccb4a:
+---------------+--------------+
| Field | Value |
+---------------+--------------+
| CPU Hours | 47157.6 |
| Disk GB-Hours | 251328.19 |
| EPC MB-Hours | 26880.02 |
| RAM MB-Hours | 117222622.62 |
| Servers | 23 |
+---------------+--------------+
Sichere Umgebung zum Ausführen von Anwendungen in Containern
Nachdem wir gelernt hatten, VMs mit Intel SGX-Unterstützung bereitzustellen, haben wir die SCONE-Plattform von Scontain verwendet, um sicherzustellen, dass containerisierte Anwendungen bei privilegierten Software-Bedrohungen sicher ausgeführt werden können. Mit dieser Lösung für transparenten Dateisystemschutz in Docker-, Kubernetes- und Rancher-Umgebungen sind ein Intel SGX-fähiger Prozessor und ein Linux SGX-Treiber ausreichend.
Der Start jedes Containers ist nur möglich, wenn eine Konfigurationsdatei vorhanden ist, die von der Client-Erweiterung der SCONE-Plattform erstellt wurde. Es enthält Verschlüsselungsschlüssel, Anwendungsargumente und Umgebungsvariablen. Dateien, Netzwerkverkehr und Standard-E / A-Streams (stdin / stdout) sind transparent verschlüsselt und selbst für Root-Benutzer nicht zugänglich.
Die SCONE-Plattform ist mit einem integrierten Bestätigungs- und Konfigurationsdienst ausgestattet, der Anwendungen anhand akzeptierter Sicherheitsrichtlinien überprüft. Es werden private Schlüssel und Zertifikate generiert, die nur innerhalb der Enklave verfügbar sein sollten. Die Vertraulichkeit und Integrität der Daten bei ihrer Übertragung wird durch das kryptografische TLS-Protokoll gewährleistet.
Der SGX-Treiber reserviert bis zu 64 GB Speicher für jede Enklave im virtuellen Adressraum. Die SCONE-Plattform unterstützt die Programmiersprachen C / C ++ / C # / Rust / Go / Python / Java. Aufgrund des speziellen Compilers wird der Quellcode automatisch (ohne zusätzliche Änderungen) für die Verwendung in Verbindung mit Intel SGX vorbereitet.
Aggregationsfall
Nachdem wir alle erforderlichen Arbeiten zur Integration von Intel SGX abgeschlossen hatten, haben wir die verteilte Datenverwaltungsplattform von Aggregion mit unserer öffentlichen Cloud verbunden.
Es ist für die Durchführung gemeinsamer Marketingprojekte durch Vertreter verschiedener Branchen vorgesehen - Finanz- und Versicherungsdienstleistungen, Regierung, Telekommunikation, Einzelhandel. Partner analysieren das Verbraucherverhalten, entwickeln eine gezielte Werbung für Waren und Dienstleistungen, entwickeln nachgefragte Treueprogramme, tauschen anonymisierte Datensätze auf der Aggregion-Plattform aus und verarbeiten sie. Da der Verlust vertraulicher Informationen höchst unerwünscht ist und ernsthafte Reputationsrisiken birgt, achtet das Unternehmen besonders auf Sicherheitsfragen.
Die Aggregion-Software ist vollständig in den Datenanbieter integriert, was bedeutet, dass eine Infrastruktur mit Intel SGX-Unterstützung zur Verfügung steht. Jetzt können die Kunden des Unternehmens eine Verbindung zu unserer öffentlichen Cloud als Alternative zum Mieten oder Kaufen von physischen Servern in Betracht ziehen.
Grundsätze für sicheres Arbeiten auf der Aggregion-Plattform. In der Schleife jedes Anbieters werden vertrauliche Daten in Intel SGX-Enklaven isoliert, bei denen es sich tatsächlich um Black Boxes handelt: Was im Inneren geschieht, steht niemandem zur Verfügung, einschließlich dem Cloud-Infrastrukturanbieter. Die Überprüfung des Ausgangszustands der Enklave und der Möglichkeit ihrer Verwendung zur Speicherung vertraulicher Informationen erfolgt durch Fernbescheinigung bei MrEnclavedefiniert einen Hashwert.
Möglicher Kundennutzen. Durch die Kombination von Datenbanken mehrerer Anbieter kann die Effektivität gemeinsamer Werbekampagnen verbessert werden. Wenn die Zielgruppe gemäß den angegebenen Parametern zugewiesen wird, wird der Abgleich (Abgleich) von Segmenten direkt in Containern mit Unterstützung für Intel SGX-Enklaven durchgeführt. Nur das Endergebnis wird außerhalb der Grenzen angezeigt: Zum Beispiel die Anzahl der Benutzer, die den ausgewählten Attributen entsprechen. Die Wirksamkeit von Kampagnen wird auf ähnliche Weise bewertet: Daten zu Anzeigenimpressionen und abgeschlossenen Verkäufen werden in Enklaven hochgeladen, um die Zunahme der Käufe der Zielgruppe im Vergleich zur Kontrollgruppe zu berechnen, die dann zur weiteren Verwendung gesendet werden.
Schlussfolgerungen
Wir verstehen, dass Intel SGX kein Allheilmittel für den Datenschutz ist, und Sie können eine Reihe von Artikeln finden, die diese Technologie verurteilen, einschließlich auf Habré. In regelmäßigen Abständen gibt es Berichte über Angriffe, mit denen sensible Daten aus Enklaven extrahiert werden können: Beispielsweise haben Meltdown und Spectre im Jahr 2018 SGX-Löcher geöffnet und SGAxe und CrossTalk im Jahr 2020. Im Gegenzug behebt Intel die identifizierten Sicherheitslücken durch Prozessor-Mikrocode-Updates.
Warum haben wir uns entschieden, diese Technologie zu implementieren? Wir sehen den Einsatz von Intel SGX als Chance, den potenziellen Bereich von Cyberangriffen zu reduzieren, indem eine zusätzliche Schutzschleife für die Cloud-Infrastruktur von G-Core Labs zusammen mit den bereits verwendeten Informationssicherheitstechnologien geschaffen wird und dadurch das Vertrauen unserer Benutzer in die Speicherung und Verarbeitung vertraulicher Daten erhöht wird. Wir hoffen, dass wir in Zukunft noch keine erfolgreichen Kundenfälle mit Ihnen teilen können, obwohl wir uns nicht verpflichten zu behaupten, dass unsere Artikel nicht auf Geschichten über das Entdecken und Beseitigen neuer Schwachstellen basieren werden. In der Zwischenzeit laden wir Sie ein, Ihre Methoden zum Schutz sensibler Daten in den Kommentaren mitzuteilen.