Moin!
Hallo zusammen,
ich schreibe momentan eine Arbeit über Web-Sicherheit.
Dafür habe ein eine Datenbank in welcher die Daten mittels "blowfish" verschlüsselt wurden. Der entsprechende Key dafür ist im Klartext in einer Datei im Webserver abgespeichert.
Ich persönlich finde das zu unsicher, da ja wer Zugriff auf den Webserver hat, so auch automatisch Zugriff auf die Dateien der Datenbank hat, bzw. diese entschlüsseln kann.
Gegen welches Angriffsszenario soll die Verschlüsselung schützen? Ohne eine Diskussion dieser Frage kann man dein Ansinnen kaum sinnvoll beantworten, weil es essentiell ist, dass die Daten, egal ob sie im Persistenzspeicher verschlüsselt liegen oder nicht, für die eigentliche Verarbeitung unverschlüsselt vorliegen!
Wenn die Daten auf dem Server also auch unverschlüsselt vorliegen müssen, ist die Diskussion über die Sicherheit der Verschlüsselung irrelevant. Ein Angreifer muss nicht die Verschlüsselung knacken, indem er irgendwo die Schlüsseldatei findet, sondern er greift die unverschlüsselten Daten ab, nachdem der Server sie ausgelesen und entschlüsselt hat.
Ganz einfach, nicht?
Deshalb ist die wichtigste Antwort: Welche Art von Missbrauch wird vermutet und soll verhindert bzw. erschwert werden?
Bedenke auch, dass die Datenbank selbst nicht auf derselben Maschine liegen muss, wie das System zum Entschlüsseln.
Welche Möglichkeiten gibt es Datenbanken dynamisch zu verschlüsseln?
Wenige. Du kannst nur die Daten verschlüsseln, oder die Datenbank z.B. in eine verschlüsselte Partition unverschlüsselt speichern. Verschlüsselte Daten kann man nicht indizieren und durchsuchen - dafür braucht man also eigentlich gar keine Datenbank, weil die wichtigste Eigenschaft der Datenbank ad absurdum geführt ist. Man kann auch einfach einzelne Dateien mit dem Binärblob der verschlüsselten Information auf die Festplatte schreiben.
Ich habe dazu Literatur gesucht, da dass absolutes Neuland für mich ist, bisher aber nichts gefunden.
Könnt ihr mir Tips für Literatur geben, oder insgesamt Ratschläge wie man das ganze umsetzen könnte,
Es ist grundsätzlich unmöglich, einen zentralen Server zu haben, der sowohl als Datenbank potentiell ALLE Datensätze durchsuchen kann, dies aber auf der anderen Seite nur für genau einen konkreten angemeldeten User mit nur dessen Datensätzen tun soll. Es ist prinzipiell unmöglich, diesem angemeldeten User irgendeine Garantie hinsichtlich Datensicherheit oder Abhörsicherheit zu geben, weil dieser User einem ihm unbekannten, von ihm nicht kontrollierbaren System vertrauen muss, dass eventuell nur vorgibt, sicher zu verschlüsseln.
- Sven Rautenberg