MD5 und SHA-1: Warum alte Hashverfahren nicht mehr sicher sind
Kurz: MD5 und SHA-1 sind durch Kollisionsangriffe gebrochen; für Sicherheit nutzt man SHA-256, SHA-3 oder BLAKE3, für Passwörter spezielle langsame Verfahren wie Argon2.
Genauer: Eine Hashfunktion macht aus beliebigen Daten einen kurzen Fingerabdruck. Sicher ist sie, wenn man (1) aus dem Hash nicht auf die Daten kommt (Einwegfunktion), (2) keine andere Eingabe mit demselben Hash findet (Zweit-Urbild) und (3) keine zwei Eingaben mit gleichem Hash finden kann (Kollisionsresistenz). MD5 und SHA-1 verletzen (3).
Im Detail
Was ist passiert?
- MD5 (1992, 128 Bit): 2004/2008 Kollisionen in Sekunden berechenbar. Forscher erzeugten gefälschte Zertifikate (2008) und die Malware Flame nutzte eine MD5-Kollision zur Fälschung von Windows-Update-Signaturen.
- SHA-1 (1995, 160 Bit): 2017 zeigten Google und CWI mit SHAttered die erste praktische Kollision (zwei verschiedene PDFs mit gleichem Hash). Seitdem wurde der Angriff billiger (Chosen-Prefix-Kollisionen, 2020). Browser, Zertifizierungsstellen und Git (schrittweise Wechsel zu SHA-256) haben darauf reagiert.
Wo sie noch auftauchen
MD5 wird noch für Prüfsummen gegen Übertragungsfehler benutzt (ungefährlich, solange kein Angreifer beteiligt ist), in alten Systemen und Dateiformaten, bei Passwort-Hashes in schlecht gebauten Datenbanken (gefährlich!). SHA-1 steckt in Git (Commit-IDs), alten Zertifikaten und Signaturen, HMAC-SHA1 (bleibt trotzdem noch brauchbar, aber nicht neu einsetzen). Download-Prüfsummen sollten mit SHA-256 angegeben werden.
Was man stattdessen nutzt
- SHA-256/SHA-512 (SHA-2-Familie): Standard für Integrität, Signaturen, Zertifikate.
- SHA-3: andere interne Konstruktion (Keccak).
- BLAKE2/BLAKE3: sehr schnell, modern.
- Passwörter: nie einfache Hashes, sondern Argon2id, scrypt oder bcrypt mit Salt (absichtlich langsam und speicherhungrig), damit Brute-Force und Regenbogentabellen scheitern.
- Mit Schlüssel: HMAC-SHA256.
Praxis
Prüfe, wo in deinen Projekten MD5/SHA-1 vorkommt (Suche im Code, Abhängigkeiten, Konfiguration). Bei Passwörtern migriere beim nächsten Login auf Argon2/bcrypt. Prüfsummen (sha256sum datei) vergleichen. Die kryptografische Agilität (Algorithmen austauschbar halten) macht spätere Wechsel leichter. Für Hash-Tabellen im Programm ist Kollisionsresistenz weniger wichtig, dort zählen Geschwindigkeit und Verteilung.
Siehe auch: SHA-256, Hashing, Passwörter sicher speichern, Argon2