Always Encrypted

Eintrag zuletzt aktualisiert am: 07.03.2022

Mit Always Encrypted ist eine Ende-Zu-Ende zwischen einer .NET-Anwendung (mit .NET Framework 4.6 und höher) und einer SQL Server-Datenbank möglich. Sowohl die zur Datenbank gesendeten Befehle als auch die Datenbankinhalte und die Ergebnismengen werden verschlüsselt, wobei der Hauptschlüssel von der Anwendung verwaltet wird, sodass der Datenbankadministrator keine Inhalte sehen kann.

Während in Microsoft SQL Server 2016 und 2017 nur der Gleichheits- und Ungleicheitsoperator auf derart verschlüsselten Spalten möglich waren, ergänzte Microsoft in SQL Server 2019 mit Secure Enclaves [https://docs.microsoft.com/de-de/sql/relational-databases/security/encryption/always-encrypted-enclaves?view=sql-server-ver15] die Option, die verschlüsselten Daten in einer abgetrennten Blackbox auf dem Datenbankserver im Klartext verarbeiten zu können und damit auch andere Vergleichsoperatoren zu erlauben.

Allerdings funktioniert das Verbergen der Inhalte vor dem Datenbankadministrator bei Always Encrypted nur, wenn der Column Master Key (CMK) außerhalb des SQL Server liegt [https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/create-and-store-column-master-keys-always-encrypted?view=sql-server-ver15]. Bei der Nutzung eines SQL Servers eines Dritten (also beim Ausliefern von Standardsoftware an Kunden) kann man also nicht sicher sein, dass diese Voraussetzung erfüllt ist.

Zudem gibt es Always Encrypted erst seit Version 2019 in der Standard Edition; zuvor brauchte man eine teure Enterprise Edition.