Alexander (HH): [MySQL 5.1]Ver- und Entschlüsseln von Passwörtern - nur mit SSL?

Beitrag lesen

Moin Moin!

Passwörter, die in einer Datenbank gespeichert sind, sollten natürlich verschlüsselt sein... aber das Verschlüsseln darf keine Einbahnstraße sein, andernfalls kann ich ja nicht die  Benutzereingaben auf der Login-Seite mit den gespeicherten Passwörtern vergleichen.

Passwörter verschlüsselt zu speichern ist der falsche Weg. Da Dein Programm sowohl den Schlüssel als auch die Entschlüsselungsroutine enthält, kannst Du die Passworter auch gleich im Klartext speichern.

Natürlich NICHT!

Stand der Technik ist eine "salted one way hash function", sprich: Ein Zufallswert ("salt") und das korrekte Passwort werden mit einer starken Hash-Funktion zu einer Art Prüfsumme verarbeitet, die wird in der DB gespeichert. Zur Prüfung wird das eingegebene Passwort mit dem selben Salt durch die selbe Hash-Funktion geschickt und deren Ergebnis mit dem in der DB gespeicherten Ergebnis verglichen. Ist es das selbe, wurde das Passwort korrekt eingegeben. Ist es unterschiedlich, wurde das Passwort falsch eingegeben.

Ohne Salt machst Du Dein System extrem angreifbar für vorberechnete Hash-Ergebnisse (Rainbow Tables). Schwache Hash-Funktionen solltest Du ebenfalls vermeiden, nimm die härteste verfügbare Hash-Funktion.

MD5 ist als geknackt anzusehen und ohne Salt nicht wesentlich besser als Klartext.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".