Passwort-hash und Salzen - ist das eine gute Methode?
War ich dabei ein wenig Forschung oder googeln für verschiedene Methoden zum Umgang mit Passwort-hashing und salting und bin auf diesen interessanten link:
Nun, im Grunde das, was dies vorschlägt, ist die Schaffung von zwei Benutzer-Funktionen, ein hashing-und einen für die überprüfung der hash.
Salz pseudo-random, ist aber in der Tat, basierend auf das Passwort (fällt mir so schlecht?).
Die Hash-Funktion auch pseudo-zufällig "Streuseln" das Salz unter den hash-string.
Die hash-überprüfung-Funktion kehrt die Prise Salz und dann wird der eigentliche hash-check stattfindet.
Nun, ich bin mir bewusst, dass einzigartige Salze für jeden Passwort-hash = gut, aber auch, dass die Logik der hash der Passwörter und erstellen das Salz gelagert in einer db-Funktion = schlecht.
Ich mag die Idee, dass das Salz ist nicht offensichtlich, und es müssen auch nicht sein, basierend auf einige hoffentlich konsistenten Wert, wie z.B. Benutzername, Benutzer-id, Geburtsdatum etc, aber wie gesagt ich habe meine Zweifel an der Umsetzung.
Also, was sind Leute, die Meinungen und Ideen der "best-Ansatz-Lösungen"?
- Aktualisiert link zeigen archive.org kopieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Zweck, ein Salz zu machen, ist die Verwendung eines rainbow-table zu teuer, also Versuch 1 ziemlich viel, löst das problem korrekt. Stützend das Salz auf das Passwort eliminiert die Variabilität, die Niederlagen, die rainbow-Tabellen, und versuchen, es zu verbergen in der Hash-Passwort-Feld ist genauso sinnlos.
Den salt muss nicht geheim sein. Es braucht, um unberechenbar für ein bestimmtes Kennwort.
Ableiten das Salz aus dem Passwort völlig verfehlt den Punkt.
Fragte ich einen ähnliche Frage früher. Der Konsens war:
Ist es egal, wie Sie Salz, so lange, wie Sie:
Können Sie sogar speichern Sie Ihre Salz direkt neben Ihrem Hash-Passwörter und fühlen sich verdammt sicher.
Persönlich finde ich, GUIDs (string-format) große Arbeit für Salze. Nehmen Sie eine Zeile code zu generieren und in string-format sind mehr als groß genug, um rainbow-tables dauert Jahrtausende zu berechnen.
Gab es viele ähnliche Fragen vor:
Das sollte Ihnen eine Vorstellung davon, wie die hash-Passwörter.
(Bearbeitet beantworten, weil ich falsch verstanden, den Artikel zunächst und dachte, er war gerade mischen das Salz zusammen mit einer ungesalzene hash)
Seine Techniken zu tun scheinen es gut, Sie funktionieren, aber Sie sind nicht wirklich "besser" als die normalen Salzen Methoden. Es ist nur ein Versuch, die Sicherheit durch Verhüllung ist, ist es nicht besser, als Ihre eigene random "hash-scrambling" - Methode und in der Hoffnung, dass der Angreifer nicht herausfinden.
In der Tat, es könnte eigentlich ganz einfach für den Angreifer Gestalt, die diese Funktionen aus, in vielen Fällen. Wenn die Website ist eine mit der öffentlichen Registrierung, die Angreifer immer wieder registrieren Konten mit bekannten Passwörter, verwenden Sie dann den bekannten md5-Hashwerte für die Passwörter auf reverse-Engineering der Passwort-Verschlüsselungsalgorithmus. Ich wäre in der Lage, dies zu tun ist sehr einfach, auch nur einen Blick auf das Ergebnis seines "Versuch 4".
Wenn Sie wollen speichern Sie Ihre Passwörter wirklich sicher, Weg von MD5-und auch SHA1, und bewegen sich in Richtung einer gesalzenen, langsamer hash-Funktion. Dies ist ein großer Artikel über das Thema: Genug Mit Den Rainbow-Tabellen: Was Sie Wissen Müssen Über Sichere Passwort-Systeme
Dies scheint für mich einfach Verschleierung, nicht mehr Sicherheit, der (als Chad Birke wies darauf hin missverstanden) gesalzene hash-Methode.
Interessanterweise ist dies nicht nur Verschleierung, nicht mehr Sicherheit aber eigentlich Verschleierung, weniger Sicherheit, weil "Versuch 4" ist nur so gut wie der CRC32-Funktion verwendet (CRC32 übergeben wird NUR das Passwort, nicht Passwort+salt) - das ist der Untergang.
Als pro Chad post, zu knacken "Versuch 4", alles, was man zu tun hat, ist CRC32 Lasten von Passwörtern und dann umkehren der Funktion, die er codiert oben, so dass Sie mit einem salted md5-hash und das Salz (die Sie dann test für die Gültigkeit). Einfach testen dieses paar durch die Berechnung von md5(Passwort+salt) (wobei password das Passwort ist, das Sie versuchen) und das Salz-das Salz, die Sie ermittelt haben, durch Umkehrung des Algorithmus. Wenn die md5 gleich die ersten 32 Zeichen des hash, Sie haben das Passwort geknackt.
"Versuch 4" ist schlimmer als "Versuch 1", in mancher Hinsicht, wie es so nur so gut, wie die schlechteste Funktion, die aufgerufen wird in das gesamte Programm, in diesem Fall, CRC32(Passwort).
Kann ich nicht ansehen, den link in der ursprünglichen Frage (die website nur einen 404 not found zurückgibt Fehler), aber die Methode beschrieben, in der Frage ist nicht wirklich mit einem gesalzenen hash.
Im wesentlichen, diese Methode ist nur mit einem nicht-standard-hash: gegeben ein bestimmtes Passwort, es gibt einen eindeutigen Wert in der Datenbank gespeichert werden. Das ist alles, was benötigt wird, um eine rainbow-tables Angriff: ich kann vorausberechnen der hash-Wert für ein Wörterbuch der wahrscheinlich Passwörter und suchen Sie nach übereinstimmungen. Nun, ich werde vorausberechnen rainbow-tables speziell für diese nicht-standard-hash-Funktion.
In eine ordnungsgemäße Umsetzung von salted hashes, wenn das Passwort erstellt wird, wird ein zufälliger salt mit dem Kennwort kombiniert wird und Hash. Dann zufälliger salt verwendet und die hash gespeichert sind. Auch wenn ich das Passwort kennen, kann ich nicht Vorhersagen, was der hash sein, da gibt es einen anderen hash für jede der vielen möglichen salt-Werte. Jetzt ein Angreifer muss vorausberechnen rainbow-Tabelle für jeden möglichen salt-Wert: diese hat einen viel größeren Aufwand.