Datenbank verschlüsseln
Verfasst: Sonntag 6. März 2022, 11:07
Hallo,
ich habe ein paar Verständnisfragen zum Thema Datenbankverschlüsselung.
Soweit ich das verstanden habe unterscheidet man erstmal zwischen data-at-rest und data-in-transit. Darauf aufbauend gibt es verschiedene Ansätze die Daten in der Datenbank zu verschlüsseln, welche ein unterschiedliches Maß an Sicherheit mit sich bringen.
Bei der Application Layer Encryption (ALE) werden die Werte ja verschlüsselt in die Datenbank abgelegt und auch derart hin und her geschickt, falls beispielsweise eine Django-Applikation über den ORM etwas abfragt. Dadurch wären die Daten im liegenden und bewegendem Zustand sicher.
1) Wie läuft das denn dann mit dem Indexing? Funktioniert das denn dann überhaupt noch?
2) Wo wird der symmetrische Schlüssel abgelegt? Wenn man den in einem HSM ablegt, dann müsste Django den ja bei jedem Query erst abfragen. Performance?
3) Was passiert, wenn man beispielsweise das Passwort des Users mit in die Ver- und Entschlüsselung einbezogen wird und der User das dann vergisst? Sind die Daten dann verloren?
4) Was ist, wenn ich mit einem SQL-Client auf die Datenbank zugreifen möchte? Können SQL-Clients auch dann ein HSM nach einem Schlüssel fragen?
Anders ist es ja bei einer TDE, oder? Da wird ja eine Funktion vom DBMS genutzt, die die Daten nur dann verschlüsselt, wenn sie ruhig auf der Platte liegen. Authorisierte Apps oder SQL-User könnten die Daten unverschlüsselt einsehen.
5) Was kauft man sich da eigentlich für Sicherheit ein? Eigentlich nur die, dass wenn die DB eingetütet und mitgenommen wird, dass der Böse die Daten nicht lesen kann, oder?
6) Was ist genau der Unterschied zwischen TDE und Column-level encryption? Ist das eine nur spezifischer als das andere?
Generell:
7) Was sind denn so best practise für eine Datenbankverschlüsselung im freien Feld?
LG und Danke
ich habe ein paar Verständnisfragen zum Thema Datenbankverschlüsselung.
Soweit ich das verstanden habe unterscheidet man erstmal zwischen data-at-rest und data-in-transit. Darauf aufbauend gibt es verschiedene Ansätze die Daten in der Datenbank zu verschlüsseln, welche ein unterschiedliches Maß an Sicherheit mit sich bringen.
Bei der Application Layer Encryption (ALE) werden die Werte ja verschlüsselt in die Datenbank abgelegt und auch derart hin und her geschickt, falls beispielsweise eine Django-Applikation über den ORM etwas abfragt. Dadurch wären die Daten im liegenden und bewegendem Zustand sicher.
1) Wie läuft das denn dann mit dem Indexing? Funktioniert das denn dann überhaupt noch?
2) Wo wird der symmetrische Schlüssel abgelegt? Wenn man den in einem HSM ablegt, dann müsste Django den ja bei jedem Query erst abfragen. Performance?
3) Was passiert, wenn man beispielsweise das Passwort des Users mit in die Ver- und Entschlüsselung einbezogen wird und der User das dann vergisst? Sind die Daten dann verloren?
4) Was ist, wenn ich mit einem SQL-Client auf die Datenbank zugreifen möchte? Können SQL-Clients auch dann ein HSM nach einem Schlüssel fragen?
Anders ist es ja bei einer TDE, oder? Da wird ja eine Funktion vom DBMS genutzt, die die Daten nur dann verschlüsselt, wenn sie ruhig auf der Platte liegen. Authorisierte Apps oder SQL-User könnten die Daten unverschlüsselt einsehen.
5) Was kauft man sich da eigentlich für Sicherheit ein? Eigentlich nur die, dass wenn die DB eingetütet und mitgenommen wird, dass der Böse die Daten nicht lesen kann, oder?
6) Was ist genau der Unterschied zwischen TDE und Column-level encryption? Ist das eine nur spezifischer als das andere?
Generell:
7) Was sind denn so best practise für eine Datenbankverschlüsselung im freien Feld?
LG und Danke