Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist die beste Methode, um Verschlüsselungsschlüssel in MySQL zu verwenden / zu speichern?

Ich bin mir nicht sicher, ob die Verwendung der integrierten MySQL-Verschlüsselung die beste Lösung für Ihr Problem wäre.

M_CRYPT von PHP -Paket gilt als ziemlich gut und gibt Ihnen die Flexibilität, den Algorithmus auszuwählen, der für Ihre Anforderungen am besten geeignet ist.

Das Speichern Ihres Schlüssels auf einem anderen Server hat einen großen Vorteil:Der Schlüssel befindet sich nicht auf demselben Computer wie die verschlüsselten Daten. Solange der Angreifer also nicht genug Kontrolle über die kompromittierte Maschine hat, kann er nicht an den Schlüssel gelangen.
Wenn der Angreifer die volle Kontrolle über die Maschine erlangt, auf der die Daten gespeichert sind, kann er sie höchstwahrscheinlich abfragen den Webservice für den Schlüssel.

Die Übertragung des Schlüssels von einer Maschine zur anderen eröffnet jedoch einen ganz neuen Bereich, der gesichert werden muss. Wahrscheinlich mit mehr Schlüsseln und mehr Verschlüsselungsschichten, wodurch die Wahrscheinlichkeit von Fehlern erhöht wird.

Die andere Möglichkeit besteht darin, das Passwort beim Start des Webservers einzugeben und es nur im Speicher zu behalten.

Mögliche Lösung
Wenn eine Lösung verwendet wird, die die folgende Methode zum Verschlüsseln von Dateien für Benutzer mit Webzugriff verwendet (ich bin mir Ihrer Umgebung nicht sicher, aber es könnte hilfreich sein):

  • Bei der Benutzererstellung wird dem neuen Benutzer ein langer Zufallsschlüssel zugewiesen.
  • Dieser Zufallsschlüssel wird in einer verschlüsselten Spalte im Benutzerdatensatz gespeichert.
    (Nur diese Spalte wird verschlüsselt, um die Leistung des restlichen Datensatzes nicht zu beeinträchtigen! )
  • Die Verschlüsselung der Random-Key-Spalte erfolgt mit 1 Master-Passwort, das in einer Datei oder im Speicher gespeichert ist.
    (Die bessere Option ist, das Passwort beim Starten Ihres Webservers einzugeben und nur zu speichern in Erinnerung. )
    (Ein anderer Ansatz wäre, den Benutzer ein Passwort eingeben zu lassen und dieses zum Verschlüsseln/Entschlüsseln der Zufallsschlüsselspalte zu verwenden, aber ich bin mir nicht sicher, ob dies die Sicherheit erhöhen oder verringern würde )
  • Jedes zu verschlüsselnde Dokument wird mit dem Zufallsschlüssel für diesen Benutzer verschlüsselt und dann auf der Festplatte gespeichert.
  • Dokumente werden mit minimalen Berechtigungen im Dateisystem gespeichert.

Die Vorteile dieses Ansatzes sind:
1. Der Zufallsschlüssel wird in der Datenbank verschlüsselt. Sie haben also immer noch die zusätzliche Sicherheit des Datenbankservers in Kombination mit der verschlüsselten Spalte.2. Dokumente werden mit unterschiedlichen Schlüsseln gespeichert, wenn der Angreifer an einen Schlüssel kommt, wird nur ein Teil der Dokumente kompromittiert.

Allerdings:
Wenn der Angreifer an das Master-Passwort kommt und Lesezugriff auf die Benutzertabelle hat, ist das gesamte System erneut kaputt.