Zum Hauptinhalt springen

← Zurück zum Blog

Ist MD5 sicher? Wofür es noch taugt — und wofür nicht

Kurze Antwort: MD5 ist nicht sicher, sobald ein Angreifer im Spiel ist. Es ist schnell und für Nicht-Sicherheitsprüfungen weiter praktisch, aber es als Sicherheitswerkzeug zu behandeln ist ein echtes Risiko. Hier die Feinheiten.

Diesen Wert kannst du mit jedem anderen Werkzeug prüfen. Wir haben das einzelne Wort hello durch unseren Hash-Generator geschickt und für MD5 5d41402abc4b2a76b9719d911017c592 erhalten. Führe echo -n hello | md5sum auf irgendeinem Rechner aus, und dieselben 32 Zeichen kommen heraus — genau das ist das Problem. MD5 ist schnell, deterministisch und überall implementiert, ein Angreifer mit vorberechneter Tabelle schlägt den Wert also sofort nach. Dasselbe Wort ergibt als SHA-256 2cf24dba…938b9824 — sicherer nicht wegen der Länge, sondern weil es keinen praktikablen Kollisionsangriff gibt. Für Passwörter ist beides falsch: Dort willst du eine absichtlich langsame Funktion wie bcrypt oder Argon2.

Warum MD5 als gebrochen gilt

MD5 ist anfällig für Kollisionen — zwei verschiedene Eingaben mit demselben Hash — und diese lassen sich billig erzeugen. Das zerstört jede Nutzung, bei der ein Hash etwas beweisen soll, das ein Angreifer nicht fälschen kann. Es ist zudem extrem schnell, was das Brute-Forcing gehashter Werte erleichtert.

Wofür MD5 noch in Ordnung ist

  • Nicht-gegnerische Prüfsummen — versehentliche Dateibeschädigung erkennen oder als Cache-/Dedup-Schlüssel, wo niemand dich täuschen will.
  • Schnelle Fingerabdrücke für interne, sicherheitsfremde Zwecke.

Wofür du MD5 NICHT nutzen solltest

  • Passwörter — niemals. Und auch nicht SHA-256 allein. Passwörter brauchen einen langsamen, gesalzenen Algorithmus wie bcrypt, scrypt oder Argon2. (Besser: nichts selbst bauen — nutze die Auth deines Frameworks.)
  • Digitale Signaturen, Zertifikate, Integrität gegen Manipulation — nutze SHA-256 (SHA-2) oder SHA-3.

Den vollen Vergleich findest du in MD5 vs. SHA.

Selbst ausprobieren

  • Hash-Generator — MD5, SHA-1, SHA-256 und mehr lokal im Browser berechnen und vergleichen.
  • Brauchst du starke Zufallspasswörter statt selbst zu hashen? Passwort-Generator.

Fazit: MD5 für Prüfsummen gegen Zufallsfehler, SHA-256 für Integrität und ein dediziertes Passwort-Hashing (bcrypt/Argon2) für Zugangsdaten.

Jede Zeile unten stammt aus unserem Hash-Generator, und jede ist mit echo -n hello | md5sum auf dem eigenen Rechner prüfbar. Das ist der Punkt — diese Werte muss man uns nicht glauben. markiert ein Leerzeichen am Ende.

EingabeMD5
hello5d41402abc4b2a76b9719d911017c592
Hello8b1a9953c4611296a827abf8c47804d7
hell073b43f17232b391b9123adf40c1b65dd
hello␠f814893777bcc2295fff05f00e508da6
password5f4dcc3b5aa765d61d8327deb882cf99

Wie MD5 fiel

MD5 brach nicht über Nacht — die Risse wurden über zwei Jahrzehnte größer:

  • 1991 — MD5 wird veröffentlicht und erzeugt einen 128-Bit-Digest (32 Hex-Zeichen).
  • 1996 — erste ernste Schwächen in seiner Kompressionsfunktion.
  • 2004-2005 — Forscher erzeugen vollständige Kollisionen in Stunden, dann in Minuten.
  • 2008 — eine funktionierende, gefälschte Zertifizierungsstelle (CA) entsteht auf Basis einer MD5-Kollision.
  • 2012 — die Schadsoftware Flame fälscht ein Microsoft-Code-Signing-Zertifikat mittels einer MD5-Chosen-Prefix-Kollision.

Das Muster ist die Lehre: Sind Kollisionen erst billig, folgen echte Angriffe. SHA-1 ging denselben Weg — die erste öffentliche Kollision kam 2017 — weshalb neue Projekte SHA-256 oder Besseres nutzen sollten.

Den richtigen Algorithmus wählen

AlgorithmusAusgabelängeStatusWofür
MD5128 BitKollisionen gebrochen (billig)Prüfsummen gegen Zufallsfehler, Cache-Schlüssel
SHA-1160 BitKollisionen gebrochen (2017)nur Altlasten — für Neues meiden
SHA-256 (SHA-2)256 BitsicherIntegrität, Signaturen, Zertifikate
SHA-3224-512 Bitsichermoderne Alternative zu SHA-2
bcrypt / scrypt / Argon2konfigurierbarsicher, bewusst langsamPasswörter

Einen Ersatz zu wählen heißt, eine Digest-Breite zu wählen, und eine Eingabe macht die Breiten greifbar. hello ergibt unter SHA-256

2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

und unter SHA-512

9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043

Das sind 64 gegen 128 Hexzeichen — 256 gegen 512 Bit — für dieselbe fünfbuchstabige Eingabe. Keiner von beiden ist im Browser merkbar langsamer, die praktische Regel ist also einfach: SHA-256, sofern nicht etwas, mit dem du zusammenarbeiten musst, SHA-512 verlangt. Was man nicht tun sollte: einen breiteren Digest wählen und ihn weiter als Passwort-Hash verwenden — Breite ist nicht Langsamkeit, und Passwortspeicherung braucht Langsamkeit.

Eine Prüfsumme in der Praxis überprüfen

Wenn eine Downloadseite einen Hash angibt, berechne deinen eigenen und vergleiche:

# prüft nur, ob die Datei beim Übertragen unversehrt blieb
md5sum ubuntu.iso

# bevorzugt, wenn die Quelle manipuliert sein könnte
sha256sum ubuntu.iso

Ein passender MD5 sagt dir, dass die Bytes intakt ankamen; er beweist nicht, dass niemand die Datei ausgetauscht hat, denn ein passender MD5 lässt sich fälschen. Für diese Gewissheit brauchst du SHA-256 plus eine Signatur.

Beachte die vierte Zeile. hello mit einem Leerzeichen am Ende ergibt f814893777bcc2295fff05f00e508da6 und hat mit 5d41402abc4b2a76b9719d911017c592 nichts gemeinsam. Die meisten Meldungen „die Prüfsumme passt nicht” sind genau das und keine Beschädigung: Ein Editor hat eine Zeilenschaltung angehängt, oder Copy-Paste hat Leerraum mitgenommen. Und die letzte Zeile ist der ganze Einwand gegen MD5 für Passwörter in einem Wert — 5f4dcc3b5aa765d61d8327deb882cf99 ist der MD5 von password und steht in jeder je veröffentlichten Rainbow-Table. Diesen String zu suchen liefert den Klartext sofort; ein Kollisionsangriff ist nicht nötig.

FAQ

Ist MD5 Verschlüsselung?

Nein. MD5 ist ein Einweg-Hash — es gibt keinen Schlüssel und nichts zu „entschlüsseln”. Sogenannte MD5-Decrypt-Seiten sind nur Datenbanken vorberechneter Hashes.

Ist gesalzenes MD5 sicher für Passwörter?

Nein. Ein Salt verhindert, dass gleiche Passwörter denselben Hash teilen, und blockiert Rainbow Tables, aber MD5 ist so schnell, dass ein Angreifer mit deiner Datenbank weiter Milliarden Versuche pro Sekunde schafft. Nutze einen langsamen Hash wie bcrypt oder Argon2 — siehe den Leitfaden für starke Passwörter.

Mein Download bietet nur eine MD5-Prüfsumme — ist die nutzlos?

Keineswegs. Sie erkennt zuverlässig einen beschädigten Download. Sie ist nur kein Schutz gegen bösartigen Austausch; bei nicht vertrauenswürdiger Quelle sind SHA-256 und eine Signatur vorzuziehen.