MD5 (Message Digest Algorithm 5) ist eine weit verbreitete kryptografische Hash-Funktion, die einen Hash-Wert mit 128 Bit (32 Zeichen) erzeugt. Sie wurde 1991 von Ronald Rivest als Nachfolger von MD4 entwickelt. Zum Zeitpunkt ihrer Entstehung stellte MD5 einen bedeutenden Fortschritt im Design von Hash-Funktionen dar: Sie bot eine höhere Sicherheit als ihr Vorgänger und blieb gleichzeitig sehr performant. Fast zwei Jahrzehnte lang war MD5 die am häufigsten verwendete Hash-Funktion der Welt und kam in nahezu allen Bereichen zum Einsatz – von der Prüfung der Dateiintegrität bis hin zu digitalen Signaturen.
Seit 1991 hat sich die kryptografische Landschaft jedoch dramatisch verändert. Was einst als hochmoderne Hash-Funktion galt, ist heute nachweislich mit erheblichen Schwächen behaftet. Es ist wichtig, die Stärken, die Schwächen und die sinnvollen Einsatzbereiche von MD5 zu kennen, denn die Funktion wird trotz ihrer bekannten Sicherheitslücken weiterhin breit eingesetzt. Sie werden MD5-Hashes in Altsystemen, als Prüfsummen älterer Software und sogar in modernen Kontexten antreffen, in denen keine kryptografische Sicherheit erforderlich ist.
So funktioniert MD5
MD5 nimmt eine Eingabe beliebiger Länge entgegen und erzeugt eine feste Ausgabe von 128 Bit. Der Algorithmus verarbeitet die Eingabe in Blöcken von 512 Bit in vier Kompressionsrunden. Intern folgt MD5 der Merkle-Damgard-Konstruktion, die auch bei späteren Hash-Funktionen wie SHA1 und SHA2 verwendet wurde.
Der Algorithmus beginnt damit, die eingehende Nachricht aufzufüllen (Padding), sodass ihre Länge kongruent zu 448 modulo 512 ist – also 64 Bit weniger als ein Vielfaches von 512 Bit. Das Padding besteht aus einem einzelnen 1-Bit, gefolgt von so vielen 0-Bits, bis die erforderliche Länge erreicht ist. Anschließend wird die ursprüngliche Länge der Nachricht als 64-Bit-Wert angehängt, sodass die Gesamtlänge der Eingabe ein Vielfaches von 512 Bit beträgt.
Jeder 512-Bit-Block durchläuft vier Runden mit jeweils 16 Operationen. Die Operationen verwenden logische Funktionen, die den aktuellen Zustand mit dem Eingabeblock verknüpfen. Die vier Runden nutzen unterschiedliche logische Funktionen: F (Runde 1), G (Runde 2), H (Runde 3) und I (Runde 4). Diese Funktionen sind so ausgelegt, dass jedes Eingabebit das Ergebnis auf komplexe, nichtlineare Weise beeinflusst.
Der interne Zustand besteht aus vier 32-Bit-Registern (A, B, C, D), die mit bestimmten Konstanten initialisiert werden. Nach der Verarbeitung aller Blöcke werden die finalen Werte dieser vier Register verkettet, um den 128-Bit-Hash-Wert zu bilden.
Detaillierte Algorithmus-Schritte
Der MD5-Algorithmus arbeitet mit 512-Bit-Blöcken und führt für jeden Block die folgenden Schritte aus:
- Zustand kopieren in Arbeitsvariablen: a = A, b = B, c = C, d = D.
- 64 Operationen ausführen, organisiert in 4 Runden mit jeweils 16 Operationen. Jede Operation hat die Form:
a = b + ((a + f(b, c, d) + M[i] + K[i]) <<< s[i])- Dabei ist
fdie rundenspezifische nichtlineare Funktion,M[i]ein 32-Bit-Wort der Eingabe,K[i]eine vordefinierte Konstante unds[i]ein Rotationsbetrag.
- Zustand aktualisieren: A += a, B += b, C += c, D += d.
Die Rundenfunktionen sind:
- Runde 1 (F):
(b & c) | (~b & d)— Auswahlfunktion - Runde 2 (G):
(b & d) | (c & ~d)— Auswahlfunktion - Runde 3 (H):
b ^ c ^ d— XOR-Funktion - Runde 4 (I):
c ^ (b | ~d)— UND/XOR-Funktion
Die 64 Konstanten K[i] werden aus der Sinusfunktion abgeleitet. Genauer gilt K[i] = floor(2^32 * |sin(i + 1)|), wobei i von 0 bis 63 läuft. Diese Konstanten liefern eine vielfältige Wertemenge, die den Lawineneffekt unterstützt: Ändert sich ein einzelnes Bit der Eingabe, ändert sich etwa die Hälfte der Ausgabebits.
Vergleich der Hash-Algorithmen
Um einzuordnen, welche Rolle MD5 in der modernen Kryptografie noch spielt, ist ein direkter Vergleich mit anderen Hash-Funktionen hilfreich.
| Algorithmus | Ausgabegröße | Kollisionsresistent | Geschwindigkeit | Empfohlen |
|---|---|---|---|---|
| MD5 | 128 Bit (32 Zeichen) | Nein (gebrochen) | Schnell | Nein |
| SHA1 | 160 Bit (40 Zeichen) | Nein (gebrochen) | Schnell | Nein |
| SHA256 | 256 Bit (64 Zeichen) | Ja | Mittel | Ja |
| SHA512 | 512 Bit (128 Zeichen) | Ja | Langsam | Ja |
| SHA3 | 256–512 Bit | Ja | Mittel | Ja |
MD5 ist der schnellste dieser Algorithmen, weil er die einfachsten Rundenfunktionen und die wenigsten Bits internen Zustand besitzt. Diese Geschwindigkeit geht jedoch zulasten der Sicherheit. Aufgrund der 128-Bit-Ausgabe lässt sich nach dem Geburtstagsparadoxon theoretisch eine Kollision in etwa 2^64 Operationen finden. Moderne Angriffe haben diesen Aufwand auf ein praktisch relevantes Niveau reduziert.
SHA256 ist in Softwareimplementierungen etwa drei- bis fünfmal langsamer als MD5, liefert aber eine 256-Bit-Ausgabe mit 128-Bit-Kollisionsresistenz. Für die meisten Anwendungen ist dieser Leistungsunterschied unerheblich, da die Hash-Berechnung nicht den Engpass darstellt. Die einzige Ausnahme sind Anwendungen, die extrem große Dateien hashen oder Millionen von Hashes pro Sekunde verarbeiten – doch auch in diesen Fällen sollten die Sicherheitsanforderungen die Wahl der Hash-Funktion bestimmen.
Häufige Anwendungsfälle
Trotz der bekannten Schwachstellen wird MD5 weiterhin für verschiedene Zwecke eingesetzt, bei denen keine Kollisionsresistenz erforderlich ist.
| Anwendungsfall | Geeignet? | Alternative |
|---|---|---|
| Dateiintegrität (nicht sicherheitsrelevant) | Ja | MD5 ist für Prüfsummen in Ordnung |
| Passwortspeicherung | Nein | bcrypt, argon2 verwenden |
| Digitale Signaturen | Nein | SHA256 verwenden |
| SSL-Zertifikate | Nein | SHA256 verwenden |
| Erkennung doppelter Dateien | Ja | MD5 funktioniert gut |
| Prüfsummen für Downloads | Ja | Viele Seiten verwenden noch MD5 |
Dateiintegrität (nicht sicherheitsrelevant)
Für die Prüfung der Dateiintegrität in nicht sicherheitsrelevanten Kontexten kann MD5 ausreichend sein. Wenn Sie lediglich feststellen wollen, ob eine heruntergeladene Datei bei der Übertragung beschädigt wurde, erkennt MD5 zufällige Fehler genauso zuverlässig wie jede andere Hash-Funktion. Die Wahrscheinlichkeit, dass ein zufälliger Übertragungsfehler eine Kollision erzeugt, ist praktisch null.
Erkennung doppelter Dateien
Die Erkennung doppelter Dateien ist ein weiterer legitimer Anwendungsfall. Dateisynchronisationstools, Backup-Software und inhaltsadressierte Speichersysteme nutzen Hashes, um identische Dateien schnell zu erkennen. In diesen Szenarien sind MD5-Kollisionen praktisch kein Problem, denn ein Angreifer müsste gezielt eine kollidierende Datei konstruieren, und die Folgen einer Kollision beschränken sich auf eine falsche Übereinstimmung – nicht auf eine Sicherheitsverletzung.
Prüfsummen für Downloads
Für die Prüfsummenprüfung von Downloads setzen viele Softwareprojekte noch auf MD5. Dies ist jedoch eine veraltete Praxis. Moderne Softwaredistributionen verwenden zunehmend SHA256- oder SHA512-Prüfsummen. Wenn Sie Software verteilen, sollten Sie SHA256-Prüfsummen statt oder zusätzlich zu MD5-Prüfsummen bereitstellen.
Anwendungsfälle, für die MD5 NICHT geeignet ist
MD5 darf niemals für sicherheitskritische Anwendungen verwendet werden. Die folgenden Anwendungsfälle erfordern kollisionsresistente Hash-Funktionen, und der Einsatz von MD5 in einem dieser Kontexte erzeugt eine Sicherheitslücke.
Passwortspeicherung
Auch wenn es in Altsystemen eine verbreitete Praxis war: Passwort-Hashes mit MD5 zu speichern, ist gefährlich unsicher. MD5 ist schnell genug, damit Angreifer auf GPU-Hardware Milliarden von Hashes pro Sekunde berechnen können, was Brute-Force-Angriffe auf MD5-Passwort-Hashes hocheffektiv macht. Verwenden Sie stattdessen bcrypt, scrypt oder argon2.
Digitale Signaturen
Digitale Signaturen beruhen zu ihrer Sicherheit auf Kollisionsresistenz. Kann ein Angreifer zwei Dokumente mit demselben MD5-Hash finden, kann er eine unterzeichnende Person dazu bringen, ein Dokument zu signieren, während die Signatur für beide Dokumente gilt. Dies wurde in der Praxis mit dem Chosen-Prefix-Kollisionsangriff auf MD5 aus dem Jahr 2008 nachgewiesen.
SSL/TLS-Zertifikate
Zertifizierungsstellen dürfen Zertifikate nicht mit MD5 signieren. Im Jahr 2008 zeigten Forscher, dass sie durch die Ausnutzung von MD5-Kollisionen ein betrügerisches Zertifizierungsstellen-Zertifikat erzeugen konnten. Dies führte zur Abkündigung von MD5 in den Richtlinien des CA/Browser Forum. Alle großen Zertifizierungsstellen stellten bis 2009 die Ausstellung MD5-signierter Zertifikate ein.
Kryptografische Commitments
Protokolle, die Hash-Funktionen als Commitments verwenden – bei denen eine Partei sich auf einen Wert festlegt, indem sie dessen Hash veröffentlicht, und den Wert später offenlegt –, erfordern Kollisionsresistenz. MD5-Commitments lassen sich durch das Finden einer Kollision brechen.
Zeitleiste der MD5-Kollisionen
Die fortschreitende Schwächung von MD5 durch Kryptoanalyse ist ein Lehrbuchbeispiel dafür, wie kryptografische Primitive mit der Zeit erodieren.
| Jahr | Ereignis |
|---|---|
| 1993 | Den Boer und Bosselaers fanden Pseudo-Kollisionen in der MD5-Kompressionsfunktion |
| 1996 | Erste Kollisionsschwäche entdeckt (Dobbertin) |
| 2004 | Erste praktikable Kollision nachgewiesen (Wang et al.) |
| 2005 | Kollisionen lassen sich auf einem Standard-PC in unter einer Stunde finden |
| 2008 | Chosen-Prefix-Kollisionsangriff (Stevens et al.) |
| 2012 | Die Malware Flame nutzte eine MD5-Kollision, um Microsoft-Codesignaturen zu fälschen |
| 2017 | Google erzeugte auf einer einzelnen GPU innerhalb weniger Stunden eine Kollision |
Der Durchbruch von 2004 durch die chinesische Kryptoanalytikerin Xiaoyun Wang und ihr Team war ein Wendepunkt. Sie stellten eine Methode vor, mit der sich MD5-Kollisionen mithilfe ihrer neuartigen differentiellen Kryptoanalyse finden ließen. Der Angriff benötigte etwa eine Stunde auf einem IBM-P690-Supercomputer. Innerhalb eines Jahres war der Angriff so optimiert, dass er auf einem gewöhnlichen PC lief.
Der Chosen-Prefix-Kollisionsangriff von 2008 durch Marc Stevens und Kollegen hatte noch größere Auswirkungen. Er ermöglicht es einem Angreifer, zwei Nachrichten mit beliebig gewählten Präfixen zu erzeugen, die denselben MD5-Wert ergeben. Das ist deutlich praxisnäher als die früheren Kollisionsangriffe, weil der Angreifer den Inhalt beider Dokumente kontrollieren kann. Das Team demonstrierte dies, indem es zwei unterschiedliche SSL-Zertifikate mit derselben MD5-Signatur erzeugte.
Der Angriff der Malware Flame im Jahr 2012 nutzte eine MD5-Kollision, um sich als legitime, von Microsoft signierte Software auszugeben. Das zeigte, dass theoretische Angriffe auf MD5 reale Folgen für die nationale Sicherheit haben konnten.
Sicherheitsbedenken
MD5 gilt kryptografisch als gebrochen. Das Kernproblem ist, dass die 128-Bit-Ausgabe von MD5 für moderne Sicherheitsanforderungen schlicht zu klein ist. Die durch die Geburtstagsschranke begrenzte Kollisionsresistenz von MD5 liegt bei 2^64 Operationen, was für moderne Rechenhardware problemlos erreichbar ist. Im Jahr 2009 dauerte es etwa 2^24 Sekunden (rund zwei Stunden), um auf einem Standard-Desktop eine MD5-Kollision zu finden. 2017 benötigte derselbe Angriff auf einer einzelnen GPU nur wenige Minuten.
Neben den Kollisionsangriffen ist MD5 auch für Urbildangriffe (Preimage-Angriffe) anfällig, die schneller als Brute Force sind. Die praktischen Auswirkungen von Urbildangriffen auf MD5 sind zwar weniger schwerwiegend als die von Kollisionsangriffen, untergraben aber das Vertrauen in den Algorithmus weiter.
Für sicherheitskritische Anwendungen sollten Sie SHA-256 oder SHA-3 verwenden. Diese Algorithmen bieten Kollisionsresistenz auf einem Niveau von 128 Bit und mehr, das voraussichtlich über Jahrzehnte sicher bleibt. Für die Passwortspeicherung sollten Sie spezielle Passwort-Hash-Funktionen mit integriertem Salting und konfigurierbarem Arbeitsaufwand einsetzen.
Kostenlose Tools
Trotz ihrer Sicherheitsschwächen bleibt MD5 für nicht sicherheitsrelevante Aufgaben wie Prüfsummen, die Erkennung von Duplikaten und das schnelle Fingerprinting unkritischer Daten nützlich. Mit dem Tool MD5-Generator können Sie für diese nicht sicherheitsrelevanten Zwecke schnell MD5-Hashes online erzeugen.