Die Verschlüsselungsmethode Always Encrypted ist ein Feature, das zum Sichern von sensitiven Daten in Azure SQL und SQL Server verwendet werden kann. Es ermöglicht die Verschlüsselung innerhalb einer Client-Anwendung und erzeugt so seine klare Trennung zwischen Besitzer und Verwalter von Informationen. Der entscheidende Vorteil ist, dass Benutzer sensitive Daten außerhalb ihrer Zugriffsrechte speichern können.
Die Realisierung der Verschlüsselung zwischen Datenbank und Anwendung basiert dabei auf einem externen Treiber, der auf dem Client-Computer installiert sein muss. Dieser Treiber ver- und entschlüsselt die sensitiven Daten der Client-Anwendung automatisch. Innerhalb dieses automatischen Prozesses werden Daten, die sich in sensitiv gekennzeichneten Spalten befinden, erkannt und Abfragen gegebenenfalls angepasst (die Semantik der Anwendung bleibt erhalten).
Typische Szenarien
Typische Szenarien für die Verwendung von Always Encrypted:
Funktionsweise
Die Always Encrypted Verschlüsselung wird für individuelle Spalten von Tabellen innerhalb einer Datenbank konfiguriert. Dafür muss sowohl der für die Verschlüsselung verwendete Algorithmus, als auch kryptographische Schlüssel angegeben werden. Bei diesem Schlüssel wird zwischen zwei verschieden Arten unterschieden:
Um auf Daten, die sich innerhalb einer verschlüsselten Spalte befinden, zugreifen zu können, muss der zuvor erwähnte Treiber zur Verfügung stehen. Wird beispielsweise eine Abfrage ausgeführt, entscheidet der Treiber zusammen mit der Datenbank-Engine, welche der abgefragten Spalten verschlüsselt ist. Dafür müssen also folgende Informationen für jeden Parameter der Abfrage in Erfahrung gebracht werden:
Nachdem der Treiber den column master key lokalisiert hat, kann dieser verwendet werden, um den column encryption key zu entschlüsseln. Der entschlüsselte column encryption key kann im Umkehrschluss nun zur Entschlüsselung des Abfrage-Parameters verwendet werden. Der entschlüsselte column encryption key wird dabei zwischengespeichert, um den Overhead in evtl. folgenden Abfragen zu verringern.
Basierend auf dem zuvor beschriebenen Ablauf kann der Treiber nun die verschlüsselten Abfrage-Parameter durch Klartext-Werte ersetzen und die resultierende Abfrage an den Server weiterleiten.
Der Server verarbeitet die Abfrage und fügt der Ausgabe zusätzliche Meta-Informationen (verwendeter Algorithmus, Schlüssel, etc. ) an. Der Treiber kann basierend auf dieser Rückgabe die verschlüsselten Werte entschlüsseln und diese der Client-Anwendung bereitstellen.
Bemerkungen
Always Encrypted benötigt die Unterstützung des Treibers und ist somit Client-basiert. Das bedeutet, dass Funktionen, die Server-seitig umgesetzt werden, evtl. nicht funktionieren bzw. verwendet werden können, wenn Always Encrypted im Einsatz ist.
Deterministische-/Randomisierte-Verschlüsselung
Konfiguration von Always Encrypted
Die Konfiguration von Always Encrypted läuft nach dem folgenden, simplen Schema ab:
Erste Schritte
Um Always Encrypted zu benutzen, kann der sogenannte Always Encrypted Wizard verwendet werden. Schlüssel und Konfiguration werden darüber bereitgestellt.
Anhand des folgenden Beispiels soll der Umgang mit Always Encrypted und dem Always Encrypted Wizard genauer verdeutlicht werden:
Kontaktieren Sie uns gerne über das
Kontaktformular und vereinbaren ein unverbindliches
Beratungsgespräch mit unseren Berater:innen zur
Bedarfsevaluierung. Gemeinsam optimieren wir Ihre
Umgebung und steigern Ihre Performance!
Wir freuen uns auf Ihre Kontaktaufnahme!