2017-10-03 1 views
1

Wenn ich eine Hash-Funktion verwende, um die Passwörter meiner Benutzer zu verschlüsseln, um sie in einer Datenbank zu speichern, gibt es dann nicht unendlich viele richtige Passwörter? Weil mehrere Strings den gleichen Hash erzeugen können, oder? Ist das überhaupt sicher?Password-Hashs: unendlich viele richtige Passwörter?

Antwort

3

Sie haben Recht. Da Hashes in der Regel kürzer sind als die Daten, die sie darstellen, gibt es Zeiten, in denen zwei verschiedene Eingaben denselben Hashwert erzeugen. Wir nennen dies eine Hash-Kollision. Um die Chancen zu verringern, wählen Sie einen besseren Hash-Algorithmus. Hinweis der Standard für das, was als ein guter Hash-Algorithmus angesehen wird, ändert sich immer, überprüfen Sie this S.O. Post.

Es ist nicht sicher, einfache Hashes aus einem anderen Grund in Ihrer Datenbank zu speichern. Es gibt Online-Listen von abgeschlossenen Hashes mit gängigen Hash-Algorithmen. Sie können also eine dieser Listen (eine Rainbow-Tabelle genannt) und die Hash-Passwörter in Ihrer Datenbank verwenden und dann herausfinden, welche Hashes mit welchen Passwörtern übereinstimmen, indem Sie einen einfachen Blick in die Rainbow-Tabelle werfen.

Da viele Benutzer eines der häufigsten schlechten Passwörter (z. B. QWERTY) wählen, ist dies ein großes Problem. Die Lösung dafür heißt Hash und Salz. Wo Sie vor dem Hashing zunächst eine große zufällige Zeichenkette zu Ihrem Passwort hinzufügen. Das bedeutet, dass sogar zwei gleiche Passwörter zu unterschiedlichen Hashwerten in Ihrer Datenbank führen. Dies ist besser erklärt here und here.

Im Allgemeinen ist es eine schlechte Idee, diesen Code selbst zu schreiben. Versuchen Sie, sich mit einem anderen Dienst wie Facebook oder Google zu authentifizieren. Ihr Code wird wahrscheinlich besser getestet und entworfen als alles, was ein einzelner Entwickler mitbringen könnte.

+0

Dies ist keine offizielle Dokumentation und ich bin kein Sicherheitsexperte, aber ich habe letztes Jahr mehr darüber geschrieben. Schau es dir an, wenn du [hier] (https://michaelhancock.github.io/Hash-and-Salt/index.html) magst. Ich hoffe es hilft –