Ausgangssituation

Die Speicherung und Verarbeitung von sensitiven Daten in einer nicht vertrauenswürdigen Infrastruktur bringt verschiedene Herausforderungen mit sich. Auf der einen Seite sollen klassische Schutzziele wie die Vertraulichkeit der gespeicherten Informationen bei der Speicherung der Daten gewährleistet werden. Hierfür nutzt man verschiedene Arten der Datenverschlüsselung. Auf der anderen Seite möchte man die verschlüsselten Daten verarbeiten, d.h. sowohl lesend als auch schreibend auf sie zugreifen.

In der Vergangenheit haben sich zwei generelle Ansätze für die Verarbeitung verschlüsselter Daten etabliert. Zum Einen ist es möglich, Daten mit passenden Verfahren so zu verschlüsseln, dass die zur Verarbeitung benötigte Funktionalität wie beispielsweise der Erhalt der Ordnung im Schlüsseltextbereich noch vorhanden ist. In der Regel nimmt man hier entweder eine recht beschränkte Funktionalität, Speicherplatzoverhead durch redundante Datenhaltung oder aber deutlich erhöhte Berechnungskosten in Kauf. Darüber hinaus kann ein bestimmtes Maß an Sicherheit durch die eingegangenen Kompromisse in den Verschlüsselungsverfahren selten garantiert werden. Zum Anderen gelingt eine Verarbeitung verschlüsselter Daten mithilfe von Vertrauensbereichen, in welchen die Daten unverschlüsselt verarbeitet werden können. Das bedeutet, dass bei einer Anfrage gegen die verschlüsselten Daten alle benötigten Daten in den sicheren Bereich transferiert, dort entschlüsselt und verarbeitet werden. Das Ergebnis wird wieder verschlüsselt, bevor es den sicheren Bereich verlässt. Dieser Ansatz setzt voraus, dass im Vertrauensbereich ausreichend Speicherplatz für die zu verarbeitenden Daten vorhanden ist und Berechnungen effizient ausgeführt werden können. Sichere Bereiche können hier der anfragende Client, ein vertrauenswürdiger Proxy oder aber sichere Hardware sein. Die meisten aktuellen Ansätze zur sicheren Datenverarbeitung kombinieren beide Herangehensweisen, was der Geschwindigkeit der Anfrageverarbeitung zuträglich ist, jedoch (vermeidbare) Angriffe durch schwächere Verschlüsselungen mit sich bringt.

Intels Software Guard Extensions (SGX) stellt eine Menge von Erweiterungen der Intel Architektur bereit, durch welche das Ziel Vertraulichkeits- und Intigritätszusicherungen für die Berechnung sensitiver Daten zu gewährleisten, obwohl jede privilegierte Software wie z.B. der Betriebssystemkern oder Hypervisor als nicht vertrauenswürdig und potenziell schädlich angesehen wird. Mit SGX wird hierbei eine Enklave als Vertrauensbereich bereitgestellt, in welcher vertraulichkeitserhaltend Berechnungen auf unverschlüsselten Daten ausgeführt werden können. Dem Ziel die Verarbeitungsgeschwindigkeit von Anfragen auf (nicht funktional) verschlüsselte Daten zu erhöhen, ist es zu erwartender Weise zuträglich, möglichst viele der aktuell zu verarbeitenden Daten in der Enklave zu halten. Dies kann durch eine Datenkompression erreicht werden.

Aufgabenstellung

Ziel der Bachelorarbeit ist es, die Tauglichkeit von SGX bei der Verarbeitung von komprimierten Daten zu untersuchen. Dazu sind die folgenden Teilaufgaben zu erfüllen:

  • Einarbeitung in Intel SGX und Erlangen eines grundlegenden Verständnis (Was ist Intel SGX?)
  • Einarbeitung zu Benutzung, Funktion und Grenzen
  • Verständnis und Implementierung der Datenein- und ausgabe
  • Verständnis und Implementierung  von Funktionen in der Enklave
  • Implementierung von einfacher Kompressions- und Dekompressionsfunktionalität in der Enklave und Vergleich der Berechnungskosten mit einer normalen CPU