Python-crypt-Modul — was ist die richtige Verwendung von Salzen?

Erste, Kontext: ich versuche, erstellen Sie ein command-line-tool (Linux),
Anmeldung erforderlich. Konten auf dieses tool nichts zu tun haben mit
system-level-Konten -- nichts, das sieht in /etc/passwd.

Ich bin der Planung zum speichern der Benutzer-Konten in einer text-Datei mit dem gleichen format (etwa) als /etc/passwd.

Trotz nicht mit der system-level-Passwort-Dateien, Verwendung von crypt schien
um eine gute Praxis zu verwenden, im Gegensatz zur Speicherung der Passwörter in
Klartext. (Während der Krypta ist sicherlich besser als das speichern der Passwörter in
Klartext, ich bin offen für andere Wege, dies zu tun.)

Meine crypt wissen basiert auf dieser:
https://docs.python.org/2/library/crypt.html

In der Dokumentation scheint zu Fragen, für etwas, das nicht möglich: "es
wird empfohlen, um die volle crypted password als Salz bei der Prüfung
für ein Passwort."

Nicht wahr? Wenn ich das erstellen der verschlüsselten Kennwort (wie beim anlegen eines Benutzers
record), wie kann ich das verschlüsselte Passwort als Salz? Es
existiert noch nicht. (Ich gehe davon aus, dass Sie verwenden, müssen Sie ebenfalls den gleichen salt für die Erstellung und überprüfung eines Passworts auf.)

Habe ich versucht, mit dem Klartext-Passwort als salt. Dies gilt
funktioniert, hat aber zwei Probleme; ein leicht zu überwinden, und ein ernster:

1) Die ersten beiden Buchstaben des Klartext-Passworts sind in der
crypted password. Sie können dieses Problem beheben, indem nicht das schreiben der ersten zwei
Zeichen in der Datei:

user_record = '%s:%s:%s' % (user_name, crypted_pw[2:], user_type)

2) mit dem Klartext-Passwort als salt, die Sie zu sein scheint
die Verringerung der Menge von Entropie in das system. Möglicherweise bin ich
Missverständnis der Zweck des Salzes.

Die beste Praxis, die ich habe in der Lage, abzuleiten, ist die Verwendung der ersten beiden
Zeichen aus dem Benutzernamen wie dem Salz. Dies wäre angemessen,
oder ist es etwas, was ich verpasst habe, dass macht, dass eine schlechte Bewegung?

Mein Verständnis für ein Salz ist, dass es verhindert, dass pre-computing-Passwort
hashes aus einem Wörterbuch. Ich könnte mit einem standard-Salz für alle
Kennwörter (wie meine Initialen "JS"), aber das scheint weniger ein
Aufwand für einen Angreifer als die Verwendung von zwei Zeichen aus jeder Benutzername.

InformationsquelleAutor Schof | 2008-12-01
Schreibe einen Kommentar