Hallo,
der Knackpunkt vorweg: Wie sicher ist es, einen OpenSSL Public- UND Private-Key auf dem gleichen Server zu speichern, und nur die (gute) Passphrase geheim zu halten und bei Bedarf vom Nutzer eingeben zu lassen und über eine SSL-verschlüsselte Verbindung zu übertragen?
Das Szenario ist Folgendes: Es sollen Formulardaten von einem Webserver verschlüsselt in einer Datenbank abgelegt werden, und bei Bedarf von mehreren berechtigten Benutzern im Klartext wieder angezeigt werden können.
Symmetrische Verschlüsselung fällt schon mal aus, weil dann nur ein Schlüssel zum Ver- und Entschlüsseln benutzt wird, und das Verschlüsseln der irgendwann ankommenden Formulardaten soll ja ohne Benutzereingriff direkt auf dem Server geschehen. Der Schlüssel als "Master Secret" müsste also auf dem Server gespeichert sein, was eine schlechte Idee ist.
Es bleibt Public Key Kryptographie mit OpenSSL. Ich könnte natürlich nur den Public Key auf den Server legen und die eingehenden Daten damit verschlüsseln. Nachteil: Zum Lesen der Daten müsste der Private Key auf jedem Benutzer-Rechner gespeichert werden, und bei jedem Entschlüsselungsvorgang hochgeladen werden. Das halte ich für noch unsicherer als den Private Key nur einmal auf den Server zu legen, und ihn mit einer Passphrase zu schützen. Diese würde dann bei Bedarf durch den Nutzer in ein SSL-verschlüsseltes Formular eingegeben, und damit der auf dem Server gespeicherte Private Key entschlüsselt, der wiederum zum Entschlüsseln der Daten in der DB benutzt wird.
Daher die Frage: Wie gut ist der Schutz durch die Passphrase? Kann man sich die Übung dann auch gleich schenken, oder ist das ein Sicherheitsgewinn? Die DB-Daten tauchen in mehreren Backups auf und werden auch unverschlüsselt übertragen, sind also per se der verwundbarste Punkt.
Falls jemand noch bessere Ideen hat, immer gerne her damit
Viele Grüsse
Sunside
der Knackpunkt vorweg: Wie sicher ist es, einen OpenSSL Public- UND Private-Key auf dem gleichen Server zu speichern, und nur die (gute) Passphrase geheim zu halten und bei Bedarf vom Nutzer eingeben zu lassen und über eine SSL-verschlüsselte Verbindung zu übertragen?
Das Szenario ist Folgendes: Es sollen Formulardaten von einem Webserver verschlüsselt in einer Datenbank abgelegt werden, und bei Bedarf von mehreren berechtigten Benutzern im Klartext wieder angezeigt werden können.
Symmetrische Verschlüsselung fällt schon mal aus, weil dann nur ein Schlüssel zum Ver- und Entschlüsseln benutzt wird, und das Verschlüsseln der irgendwann ankommenden Formulardaten soll ja ohne Benutzereingriff direkt auf dem Server geschehen. Der Schlüssel als "Master Secret" müsste also auf dem Server gespeichert sein, was eine schlechte Idee ist.
Es bleibt Public Key Kryptographie mit OpenSSL. Ich könnte natürlich nur den Public Key auf den Server legen und die eingehenden Daten damit verschlüsseln. Nachteil: Zum Lesen der Daten müsste der Private Key auf jedem Benutzer-Rechner gespeichert werden, und bei jedem Entschlüsselungsvorgang hochgeladen werden. Das halte ich für noch unsicherer als den Private Key nur einmal auf den Server zu legen, und ihn mit einer Passphrase zu schützen. Diese würde dann bei Bedarf durch den Nutzer in ein SSL-verschlüsseltes Formular eingegeben, und damit der auf dem Server gespeicherte Private Key entschlüsselt, der wiederum zum Entschlüsseln der Daten in der DB benutzt wird.
Daher die Frage: Wie gut ist der Schutz durch die Passphrase? Kann man sich die Übung dann auch gleich schenken, oder ist das ein Sicherheitsgewinn? Die DB-Daten tauchen in mehreren Backups auf und werden auch unverschlüsselt übertragen, sind also per se der verwundbarste Punkt.
Falls jemand noch bessere Ideen hat, immer gerne her damit
Viele Grüsse
Sunside
Comment