Was ist MD5? Grundlegendes zu Message-Digest-Algorithmen
Der Message-Digest-Algorithmus MD5 ist eine kryptographische Hash-Funktion, mit der digitale Signaturen (Message Digests) generiert und verifiziert werden. MD5 ist weiterhin weit verbreitet, obwohl die Funktion bereits vor mehr als zehn Jahren für „kryptographisch unsicher“ erklärt wurde.
Es sind mehrere Sicherheitsschwachstellen der kryptographischen Hash-Funktion bekannt, darunter ein großes Risiko für Kollisionen (d. h. für zwei unterschiedliche Nachrichten wird derselbe Hash-Wert generiert).
MD5 kann problemlos für nicht-kryptographische Funktionen verwendet werden, z. B. als Prüfsumme zur Verifizierung der Datenintegrität (um unbeabsichtigte Beschädigung auszuschließen). MD5 ist ein 128-Bit-Algorithmus. Trotz der bekannten Sicherheitsprobleme ist MD5 weiterhin einer der am häufigsten verwendeten Message-Digest-Algorithmen.
Wie funktioniert der Message-Digest-Algorithmus MD5?
Der Message-Digest-Algorithmus MD5 wurde vor etwa 30 Jahren als RFC 1321 veröffentlicht und wird bis heute häufig verwendet. Mit dem MD5-Algorithmus kann von einer Nachricht unabhängig von ihrer Größe ein kryptographischer 128-Bit-Hash-Wert erstellt werden, um daraus digitale Signaturen zu generieren. Dabei werden große Dateien auf sichere Weise komprimiert und anschließend mit einem privaten (oder geheimen) Schlüssel verschlüsselt, der mit einem öffentlichen Schlüssel abgeglichen wird.
Über eine Befehlszeilen-Implementierung mit gängigen Programmiersprachen wie Java, Perl oder C kann MD5 auch verwendet werden, um Dateibeschädigungen oder unbeabsichtigte Veränderungen bei großen Dateisammlungen zu erkennen. Anschließend kann der MD5-Hash-Wert (als Prüfsumme) verwendet werden, um die Dateiintegrität sowie digitale Signaturen zu verifizieren. Im nicht-kryptographischen Bereich wird MD5 unter anderem auch eingesetzt, um die Partition eines bestimmten Schlüssels in einer partitionierten Datenbank zu bestimmen.
MD5 kann verwendet werden, um kryptographische 128-Bit-Hash-Werte entweder zu erstellen (generieren) oder zu prüfen (verifizieren). Der Algorithmus enthält jedoch auch einige gut dokumentierte Schwachstellen und Fehler und sollte daher nicht zu Sicherheitszwecken verwendet werden.
Verwendung von MD5 in der Vergangenheit
MD5 wurde 1991 von Ronald Rivest von RSA Data Security, Inc. und dem MIT Laboratory for Computer Science als Nachfolger der kryptographischen Hash-Funktion MD4 entwickelt, die als unsicher eingestuft wurde. Ein Jahr später wurde MD5 allgemein veröffentlicht. Nur ein weiteres Jahr später wurde eine „Pseudo-Kollision“ der MD5-Komprimierungsfunktion entdeckt.
Die Zeitleiste der erkannten (und ausgenutzten) MD5-Schwachstellen ist wie folgt:
- 1996 wurde eine vollständige Kollision gemeldet und Kryptographen empfahlen, MD5 durch eine andere kryptographische Hash-Funktion wie SHA-1 zu ersetzen.
- Anfang 2004 startete ein Projekt, mit dem nachgewiesen werden sollte, dass MD5 aufgrund des kleinen Hash-Werts von 128 Bit für einen Birthday Attack anfällig ist.
- Mitte 2004 wurde innerhalb von nur einer Stunde ein Analyse-Angriff abgeschlossen, der für alle MD5-Hash-Werte Kollisionen erstellen konnte.
- 2005 wurde eine praxisnahe Kollision nachgewiesen, bei der zwei X.509-Zertifikate mit unterschiedlichen öffentlichen Schlüsseln denselben MD5-Hash-Wert ergaben. Einige Tage später wurde ein Algorithmus erstellt, der in der Lage war, innerhalb weniger Stunden MD5-Kollisionen zu generieren.
- Ein Jahr später (2006) wurde ein Algorithmus veröffentlicht, der innerhalb einer Minute mit einem einzigen Notebook per Tunneling eine Kollision finden konnte.
- Im Jahr 2008 wurde MD5 offiziell für „kryptographisch unsicher“ erklärt, weil MD5-Hash-Werte erstellt werden können, die mit vertrauenswürdigen X.509-Zertifikaten kollidieren, die von bekannten Zertifizierungsstellen (CAs) ausgegeben werden.
Trotz der bekannten Sicherheitsschwachstellen und Probleme sowie dem Umstand, dass inzwischen sicherere Alternativen verfügbar sind, wird MD5 heute weiterhin eingesetzt.
Sicherheitsprobleme bei MD5
Die Sicherheit der MD5-Hash-Funktion gilt als schwer beeinträchtigt. Kollisionen können innerhalb von wenigen Sekunden gefunden und anschließend für böswillige Zwecke genutzt werden.
Zum Beispiel gehört die Spyware Flame, die 2012 Tausende Computer und Geräte im Iran infiltrierte, zu den schwerwiegendsten Sicherheitsproblemen des Jahres. Flame verwendete MD5-Hash-Kollisionen, um gefälschte Microsoft-Update-Zertifikate für die Authentifizierung kritischer Systeme zu generieren. Zum Glück wurde diese Schwachstelle schnell erkannt und ein Software-Update herausgegeben, das diese Sicherheitslücke schloss und unter anderem für Microsoft-Zertifikate zu SHA-1 wechselte.
Eine Hash-Kollision tritt ein, wenn zwei verschiedene Eingaben zum selben Hash-Wert bzw. zum selben Ausgabewert führen. Die Sicherheit und Verschlüsselung eines Hashing-Algorithmus hängt davon ab, dass eindeutige Hash-Werte generiert werden. Kollisionen stellen Sicherheitsschwachstellen dar, die sich ausnutzen lassen.
Angreifer können Kollisionen erzwingen, die anschließend eine digitale Signatur senden, die vom Empfänger akzeptiert wird. Obwohl es sich um einen falschen Absender handelt, liefert die Kollision denselben Hash-Wert, sodass die Nachricht des Angreifers erfolgreich verifiziert und als echt eingestuft wird.
Welche Programme verwenden MD5?
Trotz der bekannten Sicherheitsprobleme wird MD5 weiterhin für Passwort-Hashing in Software eingesetzt. Mithilfe von MD5 werden Passwörter mit einem One-Way-Hash des Passworts gespeichert. Die Verwendung des MD5-Algorithmus für diesen Zweck wird jedoch nicht empfohlen. MD5 ist weit verbreitet und anwenderfreundlich, sodass Entwickler diese Methode weiterhin für Passwort-Hashing und zur Speicherung von Passwörtern nutzen.
In der Cybersicherheit wird MD5 verwendet, um digitale Signaturen zu verifizieren und zu authentifizieren. Durch den Abgleich des öffentlichen und privaten Schlüssels sowie der Hash-Werte kann ein Benutzer mit MD5 die Authentizität einer heruntergeladenen Datei verifizieren. Aufgrund der hohen Zahl an MD5-Kollisionen ist dieser Message-Digest-Algorithmus jedoch nicht ideal, um die Integrität von Daten oder Dateien zu verifizieren, da Angreifer die Hash-Werte leicht durch eigene Werte ersetzen können.
MD5 kann als Prüfsummenfunktion verwendet werden, um die Integrität von Daten zu verifizieren und sicherzustellen, dass sie nicht versehentlich beschädigt wurden. Dies ist zum Beispiel in folgenden Fällen relevant:
- Fehler während der Datenübertragung
- Software-Fehler
- Schreibfehler beim Kopieren von Dateien
- Probleme innerhalb des Speichermediums
Mit dem Message-Digest-Algorithmus MD5 kann sichergestellt werden, dass die vorliegenden Daten mit den ursprünglichen Daten identisch sind. Dazu wird geprüft, ob Eingabe und Ausgabe identisch sind. Wenn eine Datei unbeabsichtigt verändert wurde, weicht der Hash-Wert der Eingabe vom Hash-Wert der Ausgabe ab. Dadurch wissen Sie, dass die Datei beschädigt wurde. Diese Prüfung ist jedoch nur dann effektiv, wenn die Beschädigung unbeabsichtigt und nicht durch böswillige Manipulation erfolgt ist.
Alternativen zu MD5
MD5 sollte nicht zu Sicherheitszwecken oder dann eingesetzt werden, wenn Kollisionsresistenz wichtig ist. Angesichts der nachgewiesenen Sicherheitsschwachstellen und dem Umstand, dass mit MD5 sehr leicht Kollisionen erstellt werden können, werden sicherere Methoden zur Generierung von Hash-Werten empfohlen.
Als Alternative wird meist die SHA-2-Hash-Familie gewählt. Zu dieser ursprünglich 2001 veröffentlichten kryptographischen Hash-Familie gehören folgende Varianten:
- SHA-256
- SHA-224
- SHA-384
- SHA-512
- SHA-512/224
- SHA-512/256
SHA-1 kann weiterhin verwendet werden, um alte Zeitstempel und digitale Signaturen zu verifizieren, doch das NIST (National Institute of Standards and Technology) empfiehlt SHA-1 nicht zur Generierung von digitalen Signaturen oder in Szenarien, in denen Kollisionsresistenz erforderlich ist.
Stattdessen empfiehlt das NIST kryptographische Hash-Funktionen der SHA-2-Familie sowie die folgenden vier SHA-3-Algorithmen mit festgelegter Länge:
- SHA3-224
- SHA3-256
- SHA3-384
- SHA-512
Die kryptographischen Hash-Funktionen der SHA-2- und SHA-3-Familie sind sichere und empfohlene Alternativen zum Message-Digest-Algorithmus MD5. Sie sind gegenüber potenziellen Kollisionen deutlich robuster und generieren tatsächlich eindeutige Hash-Werte.
Referenzen
The MD5 Message-Digest Algorithm (April 1992), Network Working Group Internet Engineering Task Force (IETF).
RSA (2022), RSA Security, LLC.
MIT CSAIL, MIT CSAIL.
MD5 Is Really Seriously Broken This Time (Dezember 2008), Security Musings.
Flame’s MD5 Collision Is the Most Worrisome Security Discover of 2012 (Juni 2012), Forbes.
NIST Policy on Hash Functions (August 2015), National Institute of Standards and Technology (NIST).
Hash Functions (Juni 2020), National Institute of Standards and Technology (NIST).