Was ist eine Hash-Kollision? MD5-Fallstudie

19 Mar 2026 1,474 words

Was ist eine Hash-Kollision? MD5-Fallstudie

Eine Hash-Kollision tritt auf, wenn zwei verschiedene Eingaben dieselbe Hash-Ausgabe erzeugen. Dies verletzt die Kollisionsresistenz-Eigenschaft von Hash-Funktionen, die eine der grundlegenden Anforderungen an kryptografische Hash-Funktionen ist. Hash-Funktionen sind mathematische Algorithmen, die eine Eingabe (oder Nachricht) beliebiger Länge nehmen und eine Zeichenkette fester Größe, typischerweise einen Digest, erzeugen. Die ideale kryptografische Hash-Funktion hat mehrere Schlüsseleigenschaften: Sie ist deterministisch (dieselbe Eingabe erzeugt immer dieselbe Ausgabe), sie ist schnell zu berechnen, sie ist urbildresistent (bei gegebenem Hash ist es unpraktikabel, eine Eingabe zu finden, die ihn erzeugt), sie ist zweitur bildresistent (bei gegebener Eingabe ist es unpraktikabel, eine andere Eingabe mit demselben Hash zu finden) und sie ist kollisionsresistent (es ist unpraktikabel, zwei verschiedene Eingaben zu finden, die denselben Hash erzeugen).

Hash-Funktionen und ihre Eigenschaften verstehen

Hash-Funktionen werden in der gesamten Computerwelt für eine Vielzahl kritischer Aufgaben eingesetzt. Bei digitalen Signaturen wird der Hash einer Nachricht signiert und nicht die Nachricht selbst, was eine effiziente Signierung großer Dokumente ermöglicht. Bei der Passwortspeicherung speichern Systeme den Hash eines Passworts und nicht das Passwort selbst, sodass die ursprünglichen Passwörter selbst bei Kompromittierung der Datenbank nicht offengelegt werden. Bei der Datenintegritätsprüfung enthalten Dateidownloads einen Hash, sodass Benutzer überprüfen können, ob die Datei während der Übertragung nicht manipuliert wurde. In Versionskontrollsystemen wie Git wird jeder Commit durch einen Hash seines Inhalts identifiziert, was die Integrität der gesamten Historie gewährleistet. In der Blockchain-Technologie enthält jeder Block den Hash des vorherigen Blocks, wodurch eine unveränderliche Kette entsteht. In all diesen Anwendungen ist Kollisionsresistenz unerlässlich – wenn ein Angreifer zwei verschiedene Eingaben mit demselben Hash finden kann, kann er eine durch die andere ersetzen, ohne entdeckt zu werden.

Das Geburtstagsparadoxon und die Kollisionswahrscheinlichkeit

Um zu verstehen, warum Kollisionen existieren, muss man das Geburtstagsparadoxon verstehen. Das Geburtstagsparadoxon besagt, dass in einer Gruppe von nur 23 Personen eine 50-prozentige Wahrscheinlichkeit besteht, dass zwei Personen am selben Tag Geburtstag haben. Dieses scheinbar kontraintuitive Ergebnis ergibt sich daraus, dass wir nicht nach einer bestimmten Übereinstimmung suchen, sondern nach irgendeiner Übereinstimmung unter Paaren. Das gleiche Prinzip gilt für Hash-Funktionen. Für eine Hash-Funktion mit einer n-Bit-Ausgabe gibt es 2^n mögliche Hash-Werte. Aufgrund des Geburtstagsparadoxons ist jedoch nach etwa 2^(n/2) Eingaben mit einer Kollision zu rechnen. Für MD5, das 128-Bit-Hashes erzeugt, ist nach etwa 2^64 Eingaben mit einer Kollision zu rechnen. Obwohl 2^64 eine große Zahl ist, haben Fortschritte in der Rechenleistung dies machbar gemacht, insbesondere mit spezialisierter Hardware wie GPUs. Für SHA-256 liegt die Kollisionsschwelle bei etwa 2^128, was mit aktueller und absehbarer Technologie rechen technisch undurchführbar ist. Dieser exponentielle Zusammenhang erklärt, warum die Hash-Ausgabegröße direkt mit dem Sicherheitsniveau korreliert.

Warum Kollisionen für die Sicherheit wichtig sind

Hash-Kollisionen stellen ein grundlegendes Sicherheitsversagen dar, wenn sie in kryptografischen Kontexten auftreten. Wenn ein Angreifer zwei verschiedene Dokumente mit demselben Hash erstellen kann, kann er eine legitime Datei durch eine bösartige ersetzen, während der gleiche Hash-Wert erhalten bleibt, was Integritätsprüfungen nutzlos macht. Er kann digitale Signaturen fälschen, indem er ein harmloses Dokument und ein bösartiges Dokument erstellt, die auf denselben Wert hashen, dann jemanden überredet, die harmlose Version zu signieren, während er die bösartige unterschiebt. Er kann Integritätsprüfungen in Softwareverteilungssystemen umgehen, indem er legitime Updates durch Malware ersetzt, die dieselbe Prüfsumme erzeugt. Er kann Zertifikatskollisionen erzeugen, die das Vertrauensmodell von TLS/SSL untergraben, sodass betrügerische Zertifikate gültig erscheinen. Die Schwere dieser Angriffe hängt vom Kontext ab, aber jede Kollision in einer kryptografischen Hash-Funktion gilt als kritische Schwachstelle, die eine sofortige Migration zu einer stärkeren Alternative rechtfertigt.

Die MD5-Hash-Funktion: Geschichte und Design

MD5 (Message Digest Algorithm 5) wurde 1991 von Ronald Rivest als Ersatz für MD4 entwickelt. Es erzeugt einen 128-Bit-Hash-Wert, der typischerweise als 32-stellige Hexadezimalzahl dargestellt wird. MD5 wurde aufgrund seiner Geschwindigkeit und Einfachheit schnell weit verbreitet für Prüfsummen, Passwort-Hashing und digitale Signaturen eingesetzt. Viele Jahre lang galt MD5 als sicher genug für die meisten Anwendungen, obwohl Kryptographen bereits Mitte der 1990er Jahre Bedenken hinsichtlich seines Designs äußerten. Der Algorithmus verarbeitet Eingaben in 512-Bit-Blöcken und verwendet eine Reihe von logischen Operationen, Rotationen und Additionen, um den endgültigen Hash zu erzeugen. Obwohl das Design elegant war, zeigte die nachfolgende Analyse strukturelle Schwächen in der Kompressionsfunktion auf, die schließlich zu seinem vollständigen Bruch führen sollten.

Die Entdeckung von MD5-Kollisionen

Die ersten MD5-Kollisionen wurden 2004 von einem Team chinesischer Forscher unter der Leitung von Xiaoyun Wang demonstriert. Ihre Arbeit zeigte, dass MD5-Kollisionen in weniger als einer Stunde auf einem damaligen Standard-Laptop gefunden werden konnten, ein verblüffendes Ergebnis, das die kryptografische Gemeinschaft schockierte. Dies war keine theoretische Schwäche – es war eine praktische, ausnutzbare Schwachstelle. Der Angriff verwendete eine Technik namens differentielle Kryptanalyse, bei der analysiert wird, wie sich Unterschiede in Eingabepaaren durch den internen Zustand der Hash-Funktion ausbreiten. Im Jahr 2007 erstellten Forscher zwei verschiedene ausführbare Dateien mit identischen MD5-Hashes und demonstrierten damit die praktischen Sicherheitsauswirkungen auf die Software-Integritätsprüfung. Die berühmteste Demonstration erfolgte 2017, als Google in nur wenigen Stunden mit einer einzigen GPU zwei verschiedene PDF-Dateien mit demselben MD5-Hash erstellte. Dieser Exploit erzeugte zwei PDF-Dokumente, die unterschiedliche Inhalte anzeigten, aber identische MD5-Prüfsummen produzierten, was bewies, dass selbst komplexe Dateiformate mit eingebetteten Metadaten und Struktur so konstruiert werden können, dass sie Hash-Kollisionen erzeugen.

Technische Details des MD5-Kollisionsangriffs

Der MD5-Kollisionsangriff nutzt Schwächen im Design der Kompressionsfunktion aus. Insbesondere nutzt der Angriff die Tatsache aus, dass die interne Zustandsaktualisierungsfunktion von MD5 eine begrenzte Diffusion aufweist – Änderungen in der Eingabe breiten sich nicht schnell genug durch den internen Zustand aus. Der Angriff konstruiert zwei verschiedene Nachrichtenblöcke, die nach der Verarbeitung denselben internen Zustand erzeugen, und hängt dann beiden Nachrichten identische Auffüllungen an. Das Ergebnis sind zwei vollständige Nachrichten mit unterschiedlichem Inhalt, die denselben endgültigen Hash erzeugen. Moderne Implementierungen des Angriffs können eine MD5-Kollision in Sekunden auf handelsüblicher Hardware finden. Tools wie md5collision und hashclash sind öffentlich verfügbar und können verwendet werden, um kollidierende Dateien für Forschungs- und Testzwecke zu erzeugen. Die Existenz praktischer, öffentlich verfügbarer Tools bedeutet, dass jeder mit grundlegenden Computerressourcen MD5-Kollisionen erzeugen kann, was MD5 für jede sicherheitsrelevante Anwendung völlig ungeeignet macht.

Auswirkungen auf die Sicherheitsbranche

Die praktische Demonstration von MD5-Kollisionen hatte weitreichende Konsequenzen in der gesamten Sicherheitsbranche. Zertifizierungsstellen wurden aufgefordert, bis 2008 keine SSL-Zertifikate mehr mit MD5 auszustellen, da Forscher zeigten, dass ein Angreifer mit MD5-Kollisionen ein betrügerisches CA-Zertifikat erstellen konnte. Softwareverteilungsplattformen migrierten von MD5-Prüfsummen zu SHA-256 oder stärkeren Hashes für die Integritätsprüfung. Standards für digitale Signaturen wurden aktualisiert, um die Verwendung von MD5 zu verbieten. Betriebssystemanbieter und Browserentwickler implementierten Deprecation-Richtlinien, die Benutzer warnten, wenn MD5 in Sicherheitskontexten verwendet wurde. Der NIST-Hash-Funktionswettbewerb, der schließlich SHA-3 als neuen Standard auswählte, wurde durch die Lehren aus dem Versagen von MD5 beeinflusst. Die Branche führte einen Mindeststandard von SHA-256 für sicherheitskritische Anwendungen ein, eine Empfehlung, die bis heute gilt. Viele Organisationen führten groß angelegte Migrationen ihrer gehashten Daten durch, ein kostspieliger, aber notwendiger Prozess zur Aufrechterhaltung der Sicherheit.

Kollisionsangriffe auf andere Hash-Funktionen

MD5 ist nicht die einzige Hash-Funktion, die gebrochen wurde. SHA-1, das 160-Bit-Hashes erzeugt, hatte seine erste praktische Kollision, die 2017 von Google und CWI Amsterdam mit dem SHAttered-Angriff demonstriert wurde, der etwa 9 Trillionen (9 × 10^18) SHA-1-Berechnungen erforderte. Dieser Angriff war deutlich teurer als die MD5-Kollision, aber für gut finanzierte Angreifer dennoch machbar. Der SHAttered-Angriff erzeugte zwei verschiedene PDF-Dateien mit demselben SHA-1-Hash und markierte damit das Ende der SHA-1-Tauglichkeit für Sicherheitsanwendungen. Microsoft, Google und Apple haben SHA-1 in ihren Browsern und Betriebssystemen nach dieser Demonstration als veraltet eingestuft. Der Fortschritt von MD5 über SHA-1 zu den aktuellen SHA-2- und SHA-3-Standards stellt ein fortlaufendes Wettrüsten zwischen kryptografischem Design und kryptoanalytischen Techniken dar.

Aktuelle Best Practices für die Auswahl von Hash-Funktionen

Die heutigen Sicherheitsbest Practices empfehlen dringend die Verwendung von Hash-Funktionen aus der SHA-2-Familie (SHA-224, SHA-256, SHA-384, SHA-512) oder der SHA-3-Familie für jede sicherheitskritische Anwendung. SHA-256 bietet 128 Bit Kollisionsresistenz, was als sicher gegen alle bekannten Angriffsvektoren gilt. Für höchste Sicherheitsanforderungen bieten SHA-512 oder SHA-3-512 256 Bit Kollisionsresistenz. Für das Passwort-Hashing im Speziellen sollten dedizierte Passwort-Hash-Funktionen wie bcrypt, scrypt, Argon2 anstelle von Allzweck-Hash-Funktionen verwendet werden, da sie rechenintensiv und resistent gegen GPU-basierte Brute-Force-Angriffe ausgelegt sind. Für nicht sicherheitsrelevante Anwendungen wie Hash-Tabellen oder Deduplizierung sind schnellere nicht-kryptografische Hash-Funktionen wie xxHash oder CityHash geeignet, da Kollisionsresistenz in diesen Kontexten keine Anforderung ist.

Fazit

Die MD5-Kollisions-Fallstudie dient als wichtige Erinnerung daran, dass kryptografische Algorithmen eine begrenzte Lebensdauer haben und ersetzt werden müssen, wenn Schwächen entdeckt werden. Was einst als sicher galt, kann gefährlich gebrochen werden, wenn kryptoanalytische Techniken fortschreiten und die Rechenleistung zunimmt. Die praktischen MD5-Kollisionsdemonstrationen von 2004 bis 2017 lehrten der Sicherheitsbranche wertvolle Lektionen über die Bedeutung kryptografischer Agilität – die Fähigkeit, kryptografische Primitive zu ersetzen, ohne ganze Systeme neu aufbauen zu müssen. Heute sollte MD5 nur noch für nicht sicherheitsrelevante Anwendungen wie Prüfsummen für nicht kritische Daten oder Abwärtskompatibilität mit Altsystemen verwendet werden. Für jede Anwendung, bei der Sicherheit eine Rolle spielt, verwenden Sie kollisionsresistente Hash-Funktionen wie SHA-256 oder SHA-3. Verwenden Sie MD5 niemals für sicherheitskritische Anwendungen wie digitale Signaturen, Zertifikatsprüfung oder Passwortspeicherung.


About this article

Erfahren Sie, was Hash-Kollisionen sind, und erkunden Sie die MD5-Kollisionsschwachstelle als reale Fallstudie.


Related Articles


Related Tools

Help2Code Logo
Menu