Was ist MD5?
Der Message-Digest Algorithm 5, kurz MD5 genannt, ist ein Verschlüsselungsalgorithmus, welcher aus einer beliebigen Zeichenfolge auf Basis verschiedener Werte eine zufällige Zeichenkette von immer exakt 32 Zeichen (=32 Bytes) erzeugt. Dabei wird für eine Zeichenkette immer derselbe MD5-Hash erzeugt. Daher ist es möglich, Daten verschlüsselt abzuspeichern und zu vergleichen, bspw. bei Passwortabfragen im Login von Webseiten und Foren.
Die Hashfunktion MD5 wurde 1991 von Ronald L. Rivest am berühmten MIT, dem Massachusetts Institute of Technology, entwickelt, als Mathematiker Analysen betrieben, welche zutage förderten, dass der Vorgänger MD4 geknackt werden könnte und somit die verschlüsselten Daten nicht mehr sicher wären.
Doch bereits fünf Jahre später fand man heraus, dass auch der MD5 nicht hundertprozentig sicher war und es eine sogenannte Kollision bei der Berechnung eines MD5-Hashes gab, weswegen man 1996 empfahl, auf sicherere Algorithmen umzusteigen, wenn es um die Sicherheit wirklich wichtiger Daten ging. Für Passwörter bei Websites und Foren wird auch heute noch die MD5-Funktion verwendet, da zum Knacken der Funktion auch heute noch ein enormer Aufwand betrieben werden muss und sich dies zumeist nicht lohnt.
Unter einer Kollision versteht man bei MD5 die Tatsache, dass gewisse Regelmäßigkeiten in den Ausgangstexten sich ebenso in den verschlüsselten Texten widerspiegeln, wodurch es möglich wird, mit MD5 verschlüsselte Texte wieder zu entschlüsseln. Der Message-Digest Algorithm 5 wird heute wegen dieser Kollisionen nicht mehr für die Verschlüsselung von wichtigen Texten verwendet, sondern nur noch für unsensible bzw. mehr oder weniger wertlose Daten. Dabei gibt es zwei große Anwendungsgebiete.
Das erste Anwendungsgebiet besteht in der Passwortsicherung. Bei der Anmeldung in Foren oder in Webseiten werden zumeist Passwörter von den Benutzern verlangt, mit denen sie sich jederzeit anmelden können. Damit die Administratoren und/oder andere Personen, welche Zugang zu den Datenbanken, in denen jene Passwörter gespeichert sind, nicht in die Lage kommen, Passwörter einzusehen, müssen diese Passwörter gesichert werden. Da man aber einerseits eine schnelle Verschlüsselung haben möchte, andererseits aber eine möglichst uneindeutige, bietet sich der MD5-Algorithmus an. Mit ihm kann jedes Passwort auf 32 Zeichen gekürzt bzw. verlängert werden und dann so verschlüsselt abgespeichert werden.
Wenn sich der Benutzer nun einloggen möchte, so nutzt man aus, dass bei jeder MD5-Berechnung derselbe Wert für dieselbe Zeichenkette herauskommt. Hat der Nutzer also das korrekte Passwort eingegeben, so wird derselbe MD5-Wert berechnet, welcher auch in der Datenbank steht. Und da jedem Hash genau eine Zeichenkette zugeordnet werden kann, ist es auch nicht möglich, sich zufälligerweise mit einem falschen Passwort einloggen zu können.
Das zweite Anwendungsgebiet von MD5 besteht in der Konsistenzsicherung von Dateien. Das bedeutet, in der Sicherstellung, dass eine Datei sich nicht verändert hat. Dies kann zum Beispiel beim Download von Dateien der Fall sein. Wenn nämlich eine Datei ein falsches Byte enthält (Bei Downloads können immer wieder Verbindungsprobleme auftreten, wodurch die übertragenen Daten verfälscht werden. Bei ausführbaren Dateien kann dies bereits schwere Systemschäden hervorrufen), verändert sich auch der MD5-Code. Da ein Vergleich von Dateien zu wesentlichen Teilen bei Downloads nötig ist, und man die Datei auf dem Server nicht direkt mit der heruntergeladenen Datei vergleichen kann, ist es nötig, diese MD5-Hashes zu generieren, welche für einen Dateivergleich verwendet werden können.
Allerdings sind solche Vergleiche lediglich bei besonders großen Dateien, wie zum Beispiel Image-Dateien (Also als eine einzige Datei auf dem Rechner gespeicherte CDs), speziell bei Betriebssystemen (Wie Linux-Betriebssysteme, welche fast ausschließlich per Image-Datei geliefert werden) wirklich empfehlenswert. Kleinere Dateien und besonders Bilder, sonstige Multimediadateien und Textdateien werden nur selten überprüft, da hier keine absolute Notwendigkeit besteht - ein paar falsche Bytes werden z.B. von MP3-Abspielsoftware meist erkannt und somit korrigiert.
MD5-Funktionen sind sehr häufig anzutreffen und in vielen Programmen integriert. So bietet z.B. die Skriptsprache PHP eine eingebaute Funktion, um aus einer Zeichenkette einen MD5-Hash zu generieren. Ebenso gibt es viele Programme, welche die Berechnung von MD5-Hashes für Dateien und Ordner stark vereinfachen. MD5 ist aufgrund seiner Einfachheit und gleichzeitig sehr hohen Sicherheit aus dem heutigen Computeralltag nicht mehr weg zu denken.