2009-06-16 13 views
7

Zuerst geht es bei meiner Frage nicht um Passwort-Hashing, sondern um Passwort-Verschlüsselung. Ich baue eine Desktop-Anwendung, die den Benutzer für einen Drittanbieter-Dienst authentifizieren muss. Um den Anmeldevorgang zu beschleunigen, möchte ich dem Benutzer die Möglichkeit geben, seine Anmeldedaten zu speichern. Da ich das Passwort brauche, um ihn für den Dienst zu authentifizieren, kann es nicht gehackt werden.Wie man Passwort mit Python unter Linux reversibel speichert?

Ich dachte daran, das pyCrypto-Modul und seine Blowfish- oder AES-Implementierung zu verwenden, um die Anmeldeinformationen zu verschlüsseln. Das Problem ist, wo der Schlüssel gespeichert werden soll. Ich weiß, dass einige Anwendungen den Schlüssel direkt im Quellcode speichern, aber da ich eine Open-Source-Anwendung programmiere, scheint dies keine sehr effiziente Lösung zu sein.

Also frage ich mich, wie Sie unter Linux benutzerspezifische oder systemspezifische Schlüssel implementieren, um die Passwortspeicherung zu erhöhen.

Wenn Sie eine bessere Lösung für dieses Problem als mit pyCrypto und system/benutzerspezifischen Schlüsseln haben, zögern Sie nicht, es zu teilen. Wie ich bereits sagte, Hashing ist keine Lösung und ich weiß, dass die Verschlüsselung von Kennwörtern anfällig ist, aber ich möchte dem Benutzer die Option geben. Die Verwendung von Gnome-Schlüsselring ist auch keine Option, da viele Leute (einschließlich mir selbst) es nicht benutzen.

+0

Darn. Ich würde gnome-keyring vorschlagen :( – Zifre

Antwort

5

Verschlüsseln der Passwörter nicht wirklich kaufen Sie viel mehr Schutz als Speichern im Klartext. Jeder, der auf die Datenbank zugreifen kann, hat wahrscheinlich auch vollen Zugriff auf Ihre Webserver-Maschinen.

Wenn jedoch der Verlust der Sicherheit akzeptabel ist, und Sie dies wirklich benötigen, würde ich eine neue Schlüsseldatei (aus einer guten Quelle von Zufallsdaten) als Teil des Installationsprozesses generieren und diese verwenden. Bewahren Sie diesen Schlüssel natürlich so sicher wie möglich auf (Dateirechte etc.). Die Verwendung eines einzelnen Schlüssels, der in der Quelle eingebettet ist, ist keine gute Idee - es gibt keinen Grund, warum separate Installationen die gleichen Schlüssel haben sollten.

0

Password Safe wurde von Bruce Schneier und Open Source entwickelt. Es ist für Windows, aber Sie sollten in der Lage sein zu sehen, was sie tun und es möglicherweise wiederverwenden.

http://www.schneier.com/passsafe.html

http://passwordsafe.sourceforge.net/

dies lesen: If you type A-E-S into your code, you're doing it wrong.

+0

der letzte Link ("Wenn Sie ...") gibt einen 404 zurück. –

+0

Sie bewegten den Blog - aktualisiert –

+0

Aaaaund es ist wieder gebrochen.Ein bisschen Googeln findet es in gespiegelt ein paar Orte, aber alle scheinen die Bilder zu vermissen. – TRiG

5

Versuchen PAM verwenden. Sie können ein Modul erstellen, das den Schlüssel automatisch entschlüsselt, wenn sich der Benutzer anmeldet. Dies ist intern, wie GNOME-Keyring funktioniert (wenn möglich). Sie können sogar PAM-Module in Python mit pam_python schreiben.