nur auf der Suche nach etwas Beratung. Ich habe eine Website mit ungefähr 2500 Benutzern - klein, aber wachsend. Ich habe es mit SHA1-Verschlüsselung auf die Passwörter gebaut. Ich habe seitdem gelesen, dass die SHA1 unsicher ist und würde gerne SHA256 mit einem Salt sagen.
Hat jemand Tipps, wie man einen solchen Übergang schafft? Wäre toll, wenn ich die Passwörter entschlüsseln und einfach neu hashen könnte, aber es scheint nicht möglich zu sein.
thx Adam
Der übliche Weg, dies zu tun, ist dies:
Im Laufe der Zeit werden Benutzer selbst zu sha256 migrieren; das einzige Problem sind Benutzer, die sich nur sehr sporadisch oder gar nicht einloggen. Für diese können Sie eine Erinnerungs-E-Mail senden oder sogar drohen, ihr Konto zu schließen, wenn sie sich nicht vor dem Tag X einloggen (geben Sie nicht den eigentlichen Grund dafür an ...)
Nur um zu verdeutlichen, ist SHA ein Hash-Algorithmus, der (im Allgemeinen) eine Einbahnstraße ist. Hashes können nicht entschlüsselt werden. Dies ist die Stärke der Verwendung von Kennwörtern zur Authentifizierung von Kennwörtern. Du bist auf dem richtigen Weg, wenn du dich auf einen gesalzenen Hash begibst, und so würde ich es machen.
Die einzige Möglichkeit, Kennwörter zu erhalten, besteht darin, den Benutzer selbst eingeben zu lassen. Wenn Benutzer Ihre Website besuchen und sich anmelden, aktualisieren Sie die Kennwörter nacheinander. In Ihrer Authentifizierungsmethode würde ich den Hash, den Sie gerade machen, durchführen und ihn mit dem im bestehenden Feld vergleichen (nichts Neues hier). Unter der Annahme, dass es übereinstimmt, gehen Sie voran und Salzen / erneut Hash mit SHA256, und aktualisieren Sie das Passwort-Feld in der Datenbank. Wenn Sie möchten, behalten Sie in Ihrer Benutzertabelle ein Stück nach, welche Benutzer aktualisiert wurden.
Ich mache viele Vermutungen, aber so habe ich den Hash-Algorithmus Tanz in der Vergangenheit gelöst. Viel Glück!
Ich habe einen anderen Vorschlag, Ihren Passwort-Hash sofort von SHA1 nach SHA256 zu migrieren, ohne darauf zu warten, dass der Benutzer die Seite erneut aufruft, um das Passwort erneut zu laden. Die Änderung besteht in der einmaligen Passwort-Hash-Migration und der Änderung der Anmeldebestätigungsfunktion.
Angenommen, Ihr Passwort-Hash wird mit der folgenden Funktion generiert: password + salt [Sha1] - & gt; Hash-sha1
Um zu Sha256 zu migrieren, können Sie Ihren Passwort-Hash mit dem folgenden Algorithmus konvertieren:
Hash-sha1 + Salz [Sha256] - & gt; Hash-sha256 (Das Salz wird verwendet, um die Komplexität der Eingabe zu erhöhen.)
Je nach dem akzeptablen Wert Ihrer sha256-Funktion können Sie Hash-sha1 in Base64 für druckbare Ascii kodieren.
Für Ihre Anmeldevalidierungsfunktion sollte das Kennwort mit dem folgenden Algorithmus hashed werden:
Passwort + Salz [sha1] - & gt; hash-sha1 + Salz [sha 256] - & gt; hash-sha256
Der Nachteil besteht darin, dass es zweimal hashed wird (verwenden Sie etwas CPU-Zeit), aber vereinfachen Sie die Migration und die Sicherheit.
Der Wechsel zu SHA256 wird Ihre Website kaum sicherer machen.
SHA1 und SH512 sind Nachrichten-Digests , sie waren nie als Passwort-Hashing- (oder Schlüsselableitungs) -Funktionen. (Obwohl ein Message Digest als Baustein für eine KDF verwendet werden könnte, z. B. in PBKDF2 mit HMAC-SHA1.)
Eine Passwort-Hash-Funktion sollte gegen Wörterbuchangriffe und Rainbow-Tabellen schützen.
Gegenwärtig ist PBKDF2 der einzige Standard (wie von NIST sanktioniert), Passwort-Hashing oder Schlüsselableitungsfunktion. Bessere Auswahl, wenn ein Standard nicht benötigt wird, sind bcrypt und der neuere scrypt. Wikipedia hat Seiten für alle drei Funktionen:
Die Seite Ссылка enthält eine ausführliche Erläuterung der Passwortsicherheit.
Dies gesagt, tdhammers bietet gute Ratschläge in Bezug auf den Umgang mit der Migration.