- 1 Section
- 10 Lessons
- unbegrenzt
- Sichere Softwareentwicklung (Secure Coding)10
Passwörter richtig hashen
Passwörter dürfen nie im Klartext in einer Datenbank gespeichert werden. Das ist ein absoluter Grundsatz der Webanwendungssicherheit. Aber auch einfaches Hashen (MD5, SHA-1, SHA-256) reicht nicht aus – denn Hashes dieser Algorithmen können in Minuten geknackt werden. Der Grund: Diese Algorithmen sind für Geschwindigkeit optimiert, nicht für Sicherheit. Eine moderne GPU berechnet Milliarden MD5-Hashes pro Sekunde.
Für Passwörter braucht man absichtlich langsame Hash-Algorithmen mit Salt – speziell für diesen Zweck entwickelt: bcrypt, scrypt, Argon2 und PBKDF2. Sie sind so konfiguriert, dass die Berechnung eines einzigen Hashes bewusst viel Rechenzeit kostet – für den legalen Login-Server kein Problem (eine Sekunde), für einen Angreifer mit 10 Milliarden Versuchen eine unüberwindbare Barriere.
1) Hash-Demo: dasselbe Passwort, verschiedene Algorithmen
Gib ein Passwort ein und sieh, wie es mit verschiedenen Algorithmen gehasht wird. Beachte: MD5 und SHA-256 produzieren immer denselben Hash für dasselbe Passwort – bcrypt produziert jedes Mal einen anderen (wegen des eingebetteten Salt).
$2b$12$[22-Zeichen-Salt][31-Zeichen-Hash]. Der Salt ist direkt im Hash-String eingebettet – kein separates Speichern nötig. Work-Factor 12 = 2¹² = 4.096 Iterationen. Bei Bedarf erhöhbar auf 13, 14 etc. – ohne Datenbank-Migration (bcrypt rechnet beim nächsten Login neu).
2) Cracking-Geschwindigkeit im Vergleich
Der entscheidende Unterschied liegt in der Zeit, die ein Angreifer mit einer GPU-Farm benötigt, um einen Hash zu knacken. Die folgende Darstellung vergleicht realistische Crack-Zeiten für dasselbe Passwort mit verschiedenen Algorithmen.
3) Hash-Algorithmen für Passwörter
Zusammenfassung
| Aspekt | Details |
|---|---|
| NIEMALS verwenden | MD5, SHA-1, SHA-256 allein für Passwörter (zu schnell) |
| Salt | Zufälliger Wert je Passwort – verhindert Rainbow-Tables |
| Empfohlen | Argon2id (beste Wahl), bcrypt (bewährt), scrypt, PBKDF2 |
| Work-Factor | bcrypt: 12+; Argon2: an Hardware anpassen (~300ms für einen Hash) |
| Praxis | Framework-Default verwenden – nicht selbst implementieren |
