3 Stimmen

Wie man ein Krypto-Passwort sicher speichert

Ich arbeite an einer Java RCP-Anwendung. Ein Benutzer muss sich mit seiner SmartCard authentifizieren, um Zugang zur Anwendung zu erhalten. Innerhalb dieser Anwendung kann er Dateien öffnen/speichern, die verschlüsselt gespeichert werden müssen.

Derzeit verwende ich eine passwortbasierte AES-Verschlüsselung mit einem fest eingegebenen Passwort. Das ist offensichtlich nicht sicher, also brauche ich einen anderen Ansatz zur Ver-/Entschlüsselung von Dateien.

Das Problem besteht darin, dass einige Voraussetzungen erfüllt werden müssen:

  • keine garantierte Netzverbindung (muss im Offline-Modus nutzbar sein)
  • mehrere Benutzer müssen Zugriff auf die Dateien haben (also keine Verschlüsselung mit öffentlichem/privatem Schlüssel)
  • es sollte nicht ein "Master"-Schlüssel für alle Dateien verwendet werden

Editar: Ich brauche kein sehr hohes Sicherheitsniveau zu haben. Es sollte für einen Angreifer nur etwas schwieriger sein, an den Schlüssel zu gelangen, als einfach die verteilte JAR-Datei zu öffnen und den Schlüssel im Klartext zu erhalten.

Für jeden Hinweis wären wir dankbar.

1voto

erickson Punkte 256579

Erstellen Sie für jede Datei einen neuen Schlüssel. Verschlüsseln Sie die Datei mit diesem Schlüssel (mit AES).

Dann verschlüsseln Sie für jeden Benutzer, der die Datei lesen darf, den neuen Schlüssel mit seinem öffentlichen Schlüssel (der einem privaten Schlüssel auf seiner Smartcard entspricht). Speichern Sie diese verschlüsselten Schlüssel zusammen mit der Datei.

Wenn ein Benutzer eine Datei lesen möchte, verwendet die Software seine Smartcard, um den für die Datei verwendeten Verschlüsselungsschlüssel wiederherzustellen.

Das Dateiformat könnte die Cryptographic Message Syntax von PKCS #7 oder OpenPGP verwenden.

0voto

Zoe Punkte 1783

Achtung: Ich kenne mich mit Sicherheit nicht gut aus, und das ist nur etwas, das mir in den Sinn kam.

Ein Vorschlag: Machen Sie aus dem Passwort für jede Datei einen Hash, der ein bekanntes Salt enthält, das für jede Datei nach dem Zufallsprinzip generiert wird, und eine einzelne Passphrase, die für jeden Benutzer individuell verschlüsselt wird. Sie können die zufälligen Salts sicher lokal speichern, da diese nicht der Schlüssel zur Datei sind und kein Benutzer die Passphrase kennt, um die Datei zu entsperren. Indem Sie die Passphrase mit einem öffentlichen Schlüssel verschlüsseln und signieren, können Sie Benutzer authentifizieren und den Zugriff pro Benutzer und pro Datei kontrollieren.

Auf diese Weise könnten Sie die Passphrase, die nirgendwo im System gespeichert ist, mit dem öffentlichen Schlüssel jedes Benutzers verschlüsseln, die Dateien unabhängig voneinander sichern und nicht von externen Quellen abhängig sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X