Christian Seiler: Vorteile ein Passwort mit "Salt" zu speichern

Beitrag lesen

Hallo,

für neue Projekte sollte man MD5 meiden und gleich einen der im Moment noch als sicher zu betrachtenden Algorithmen der SHA-2-Familie nutzen.

Nachdem man mit einem Salt das Passwört sowieso für jegliche Weiternutzung "versaut" (wie es auch sein soll) ist es unerheblich, welchen Hash-Algorithmus man verwendet.

Jain. Wenn ich Salt + Passwort durch CRC32 jage, dann ist das auf heutigen Rechnern vermutlich innerhalb von Minuten geknackt.

Was stimmt: Die bisher praktikabel ausnutzbaren Schwächen in MD5 betreffen gesaltete Passwörter noch nicht. Daher muss man sich im Moment keine Sorgen machen, wenn man noch MD5 als Hash für gesaltete Passwörter einsetzt.

Allerdings: Man will ja für die Zukunft planen. Und es kann durchaus sein, dass jemand noch einen besseren Angriff auf MD5 findet, der es dann sehr einfach macht, mit MD5 gehashte Passwörter zu brechen (auch mit Salt).

Daher: Wenn man neue Software schreibt (die sich an der Stelle nicht an Schnittstellen halten muss), sollte man MD5 nicht mehr verwenden, sondern lieber gleich die SHA-2-Familie nutzen. Auch bei sowas wie Passwort-Hashes.

Übrigens: Um das Knacken weiter zu erschweren empfiehlt es sich, das Passwort mehrfach durch die Hash-Funktion zu jagen. Das kostet zwar Rechenzeit, die ist aber für das einmalie Prüfen vernachlässigbar, erhöht aber die nötige Zeit für's Durchprobieren. Pseudocode:

Resultat := KlartextPasswort
FOR i := 0 TO 1000
  Resultat := Hash(Salt || Resultat)
END FOR

Die Zahl 1000 natürlich möglichst groß gewählt, dass es noch praktikabel ist für normale Anwendungen.

Man kann sich auch kompliziertere Schemen ausdenken, wie z.B. der MD5-Crypt-Algorithmus wie er vom Apache für .htaccess-Dateien verwendet wird, aber da muss man aufpassen, damit man sich die Entropie des Passworts nicht wieder kaputt macht - daher würde ich persönlich lieber zur einfachen Lösung raten.

Viele Grüße,
Christian