MD5 und SHA-256 sind beide schnelle Hashes — warum eignet sich keiner zur Passwortspeicherung?
Kurzantwort
Weil sie schnell sind. MD5 und SHA-256 sind auf Geschwindigkeit ausgelegt, was für Passwörter genau falsch ist: Ein Angreifer, der die Hashes stiehlt, kann auf einer GPU Milliarden von Versuchen pro Sekunde berechnen. Die Lösung ist eine bewusst langsame, speicherharte Schlüsselableitungsfunktion — bcrypt, scrypt oder Argon2 — kombiniert mit einem Salt pro Nutzer und einem einstellbaren Arbeitsfaktor.
Beachten Sie, dass die Frage einräumt, dass SHA-256 kryptografisch stark ist — sodass der Kandidat sich nicht auf „MD5 ist kaputt“ zurückziehen kann. Die Falle ist, zu denken, Kollisionsresistenz sei die relevante Eigenschaft. Für die Passwortspeicherung ist Geschwindigkeit die entscheidende Eigenschaft, und Geschwindigkeit ist der Feind.
Warum schnell das falsche Ziel ist
Allzweck-Hashes sind darauf optimiert, bei riesigen Eingaben schnell zu sein. Das ist großartig für die Dateiintegrität und schrecklich für Passwörter. Wenn ein Angreifer Ihre Hash-Tabelle erbeutet, führt er einen Offline-Angriff durch: Wörterbuchwörter und Brute-Force-Kandidaten werden durch denselben schnellen Hash gejagt. Eine moderne GPU berechnet Milliarden von SHA-256-Hashes pro Sekunde, sodass schwache und sogar mittelmäßige Passwörter schnell fallen. Der Hash muss nie umgekehrt werden — der Ablenker übers „Entschlüsseln“ verkennt, dass Hashes Einwegfunktionen sind; Angreifer raten und vergleichen.
Das richtige Werkzeug: langsame, gesalzene KDFs
Nutzen Sie eine Passwort-Hash-/Schlüsselableitungsfunktion, die darauf ausgelegt ist, langsam und ressourcenintensiv zu sein:
- bcrypt — bewusst langsam mit einem einstellbaren Kostenfaktor.
- scrypt und Argon2 — zusätzlich speicherhart, was den GPU/ASIC-Parallelismus abstumpft, weil Angreifer Speicher nicht so billig skalieren können wie Rechenleistung. Argon2 ist die aktuelle Empfehlung.
Zwei weitere Grundlagen:
- Ein Salt pro Nutzer, damit identische Passwörter unterschiedliche Hashes erzeugen, was vorberechnete Rainbow-Tables vereitelt (Hinweis: Ein Salt verlangsamt nicht ein gezieltes Raten gegen einen einzelnen Nutzer).
- Ein einstellbarer Arbeitsfaktor, den Sie mit der Zeit erhöhen, während die Hardware schneller wird.
Worauf Interviewer achten
Die Einsicht, dass Geschwindigkeit — nicht Umkehrbarkeit oder Kollisionen — der Fehler ist, plus das Nennen von bcrypt/scrypt/Argon2, das Salting und einen Arbeitsfaktor. Wer sagt „nimm einfach SHA-256, das ist sicher“, hat das Bedrohungsmodell völlig verfehlt.
Wahrscheinliche Anschlussfragen
- Wovor schützt ein Salt, und wovor nicht?
- Was ist ein Arbeitsfaktor und warum muss er über die Zeit einstellbar sein?
- Warum ist Speicherhärte (Argon2/scrypt) gegen GPUs und ASICs wertvoll?