Password Hashing, Salden und Speichern von Hashwerten

Angenommen, Sie waren in Freiheit zu entscheiden, wie die Hash-Passwörter werden gespeichert in einem DBMS. Gibt es offensichtliche Schwächen in einem System wie diesem?

Erstellen der hash-Wert gespeichert, der in das DBMS nehmen:

  • Ein Wert, der einzigartig ist auf dem DBMS-server-Instanz als Teil der Salz,
  • Und den Benutzernamen als zweiter Teil von das Salz,
  • Und erstellen Sie die Verknüpfung von Salz durch das eigentliche Passwort,
  • Und hash der ganze string mit dem SHA-256-Algorithmus,
  • Und speichern Sie das Ergebnis in das DBMS.

Dies würde bedeuten, dass alle wollen, kommen mit einer Kollision zu tun haben sollten, die Arbeit für jeden Benutzer separat Namen und jeder DBMS-server-Instanz getrennt. Ich würd den plan zu halten, der eigentliche hash-Mechanismus etwas flexibel für den Einsatz der neuen NIST standard-hash-Algorithmus (SHA-3) , wird noch gearbeitet.

'Wert, ist einzigartig auf dem DBMS-server-Instanz" muss nicht sein Geheimnis, aber er würde nicht weitergegeben werden, beiläufig. Die Absicht ist es, sicherzustellen, dass, wenn jemand nutzt das gleiche Passwort in verschiedenen DBMS-server-Instanzen, die aufgezeichnet hashes anders sein würde. Ebenso der Benutzer name nicht geheim - nur das richtige Passwort.

Gäbe es irgendeinen Vorteil, dass Sie zunächst das Kennwort und den Benutzernamen und 'eindeutiger Wert' zweite, oder jede andere permutation der drei Quellen der Daten? Oder was ist mit interleaving die Fäden?

Muss ich hinzufügen (und Aufzeichnung) ein zufälliger salt-Wert (per Passwort) sowie die oben genannten Informationen? (Vorteil: die Benutzer können re-verwenden Sie ein Passwort, und immer noch, wahrscheinlich, bekommen einen anderen hash in der Datenbank aufgezeichnet. Nachteil: das Salz muss aufgezeichnet werden. Ich vermute, der Vorteil deutlich überwiegt den Nachteil.)

Gibt es eine ganze Reihe von verwandten Fragen - diese Liste ist unwahrscheinlich, umfassend:

Ich denke, dass die Antworten auf diese Fragen unterstützen, meinen Algorithmus (obwohl, wenn Sie verwenden einfach eine zufällige Salz, dann die 'eindeutigen Wert pro server", der Benutzername und Komponenten sind weniger wichtig).

InformationsquelleAutor der Frage Jonathan Leffler | 2009-07-27

Schreibe einen Kommentar