Verschlüsselung mittels Query-Rewriting auf der Cloud-Datenbank Amazon DynamoDB

Autor
M. Wakolbinger
Masterarbeit
MT1601 (Februar, 2016)
Betreut von
o. Univ.-Prof. Dipl.-Ing. Dr. techn. Michael Michael Schrefl
Angeleitet von
Dr. Michael Karlinger
Arjol Qeleshi, MSc
Ausgeführt an
Universität Linz, Institut für Wirtschaftsinformatik - Data & Knowledge Engineering
Ressourcen
Kopie

Kurzfassung (Deutsch)

Cloudbasierte Datenbanken gewannen in den letzten Jahren zunehmend an Popularität. Durch diese Auslagerung der Daten in Cloud-Dienste muss auch vermehrt die Thematik des Datenschutzes und der Privatsphäre der Nutzer beachtet werden. Um den Datenschutz in einer Cloud-Datenbank zu ermöglichen, präsentiert diese Arbeit einen Ansatz zur clientseitigen Datenbankverschlüsselung. Hierbei werden die Daten verschlüsselt, bevor sie die Cloud-Datenbank geschrieben werden, wodurch Cloud-Anbieter keine Informationen über Inhalte erlangen können. In weiterer Folge wird in dieser Arbeit untersucht, inwieweit die Verschlüsselung Einfluss auf die Abfragefunktionalität hat und inwieweit etwaige Einschränkungen umgangen werden können. Dies resultiert in einer Beispiel-implementierung eines Verschlüsselungsclients für die Amazon DynamoDB, welche den Großteil der Datenbankfunktionalität unterstützt.

Kurzfassung (Englisch)

The popularity of cloud based databases has increased over the last years. Due to this popularity of external storage of data in cloud services, the issues of data security and user privacy are also receiving increased attention. To provide data confidentiality in cloud databases, this thesis investigates client side database encryption. This allows encrypting the data before sending it to the cloud database, thus preventing cloud providers from accessing any unencrypted data. Moreover this thesis investigates how this encryption scheme limits the database’s query functionality and attempts to alleviate some of those limitations. This results in an example implementation of an encryption client for the Amazon DyanamoDB which supports the majority of the database’s functionality.

Einleitung (Deutsch)

In dieser Arbeit wurde ein Verschlüsselungsclient für die cloud-basierte NoSQL-Datenbank namens Amazon DynamoDB entwickelt. Die Aufgabe des Clients ist es, die Daten verschlüsselt auf den Server zu übertragen bzw. Abfragen so umzuformulieren (Query- Rewriting), dass die bestehende Datenbankfunktionalität verwendet werden kann. Beim implementierten zellenbasierten clientseitigen Verschlüsselungsansatz handelt es sich um die Hierarchically Derived Symmetric Encryption (HDSE). Dieser Ansatz erstellt, basierend auf dem gegebenen Datenmodell, die Verschlüsselungsschlüssel abhängig von der Verschachtelungstiefe der Daten. Wichtige Bestandteile des resultierenden Verschlüsselungsschlüssels sind ein clientseitig geheimer Initialisierungsvektor und der Primärschlüssel. Dadurch ermöglicht dieser Ansatz unterschiedliche Verschlüsselungsschlüssel pro Datenwert. Der Nachteil der zellenbasierten Verschlüsselung ist die Einschränkung der Abfragefunktionalität.

Es wurden in dieser Arbeit zudem diverse Verschlüsselungsansätze zur Unterstützung von Datenbankabfragen untersucht. Hierbei handelt es sich großteils um verschiedene verschlüsselte Indizes und den Einsatz von homomorphen Verschlüsselungsalgorithmen, wodurch Bereichsabfragen realisiert werden können.

Durch den Verschlüsselungsansatz HDSE und das Datenmodell der DynamoDB kann der Großteil der Abfragefunktionalitäten unterstützt werden.

Zur Unterstützung von serverseitigen Bereichsabfragen wird auf numerische Attribute eine Order-Presever-Encryption [23] Verschlüsselung angewendet. Dies erlaubt unter Einsatz desgleichen Verschlüsselungsschlüssels Vergleiche auf numerische Attribute. Die Scan-Operation und die Unterstützung von Bereichsabfragen sind nicht durch den HDSE unterstützt und benötigen daher eine zusätzliche Implementierung wie einen verschlüsselten Index. Die Scan-Operation erlaubt Abfragen auf alle Attribute einer Tabelle sowie die Kombination von beliebig vielen Attributen (Konjunktiv-Abfrage) der DynamoDB. Um diese auch weiterhin zu unterstützen, wurden in dieser Arbeit zwei Index-Implementierungen (Bucketing-Index [36] und invertierter Index [26]) umgesetzt. Beim Bucketing-Index wird ein grob verschlüsselter Index innerhalb einer Datentabelle von Dynamo erstellt. Damit die Werte des Bucketing-Index vergleichbar sind, wird hier eine spaltenbasierte Verschlüsselung auf die Index-Werte eingesetzt. Die zweite Index-Implementierung erstellt pro indiziertem Attribut eine eigene Index- Tabelle. Dies wiederum zieht zusätzlichen Mehraufwand bei der Selbstverwaltung der Index-Tabellen nach sich und macht eine Schreibeoperation der Daten sehr kostspielig. Um die Scan-Funktionalität der Konjunktiv-Abfragen ebenfalls zu unterstützen, werden die Ergebnismengen clientseitig gefiltert. Der Client lädt die entsprechenden Ergebnisse (durch serverseitige Filterung) und sortiert diese auf Basis der Nutzeranfrage. Im letzten Abschnitt dieser Arbeit werden Laufzeittests durchgeführt, die die Laufzeit des Verschlüsselungsclients und die Kosten der Verschlüsselung zeigen. Diese Tests zeigen, dass die Verschlüsselung der Daten mithilfe des HDSE realistisch anwendbar ist. Auf der Amazon DynamoDB-Datenbank kann der Großteil der Datenbankfunktionalitäten auch weiterhin trotz der zellenbasierten Verschlüsselung unterstützt werden. Jedoch erhöht die mehrheitliche Unterstützung der Datenbankfunktionalität mithilfe der Index-Strukturen die Ausführungszeiten drastisch. Daher sollte der Einsatz dieser Strukturen mit Bedacht gewählt werden. Beide Index-Strukturen haben unterschiedliche Vor- und Nachteile. Beim Bucketing-Index sind Schreiboperationen kostengünstiger als beim invertierten Index. Jedoch sind beim invertierten Index Leseoperationen entscheidend günstiger.

Mögliche zukünftige Schritte wären die Unterstützung von Sekundärindizes der Amazon DynamoDB in der Beispielimplementierung, die Unterstützung von Operationen auf verschlüsselte Zeichenketten (z. B. CONTAINS auf Zeichenketten) sowie die Verbesserung der Ausführungszeit der in dieser Arbeit beschriebenen Beispielimplementierung. Zusammenfassend bedeutet dies, dass mithilfe des HDSE-Verschlüsselungsansatzes der Großteil der Datenbankfunktionalitäten trotz Datenbankverschlüsselung auch weiterhin unterstützt werden kann. Die Ausführungszeiten der Datenbankoperationen und Abfragen sind jedoch stark abhängig von den verwendeten Funktionalitäten (Index- Strukturen).