Verschlüsselung von Passwörtern mit Hilfe von MD5-Hashes

Was ist ein MD5-Hash?
MD5 (Message Digest algorithm) ist ein Algorithmus, der eine gegebene Zeichenkette in eine andere eindeutige Zeichenkette (genannt MD5-Hash) mit fester Länge von 32 Zeichen konvertiert. Die Zeichenkette password hat beispielsweise den MD-Hash 5f4dcc3b5aa765d61d8327deb882cf99

Wozu sind MD5-Hashes nützlich?
MD5-Hashes eignen sich, um die Unbescholtenheit und Fälschungssicherheit von Daten sicherzustellen. Sie eignen sich ferner für die Herstellung von eindeutigen Identifiern. Sensible Daten wie Passwörter werden auf Servern sehr häufig mit MD5-Hashes verschlüsselt.

Bereits kleinste Änderungen einer Zeichenkette führen zu komplett verschiedenen MD-Hashes:
hallo hat den MD-Hash 598d4c200461b81522a3328565c25f7c
hello hat den MD-Hash 5d41402abc4b2a76b9719d911017c592
hella hat den MD-Hash 6e4a858cbdbd6f9cf51f2fd89d8c7558

Es ist theoretisch nicht möglich, MD5-Hashes direkt umzukehren. Es ist also nicht möglich, die Originalzeichenfolge aus einem gegebenen MD5-Hash nur mit mathematischen Operationen zurückzugewinnen. Die meisten Websites und Anwendungen speichern ihre Benutzerkennwörter in Datenbanken mit MD5-Verschlüsselung. Diese Methode scheint sicher zu sein, da es unmöglich erscheint, die ursprünglichen Benutzerkennwörter abzurufen, wenn es beispielsweise einem Hacker gelingt, einen Blick auf den Datenbankinhalt zu werfen.

Sind MD5-Hashes zu 100% sicher?
Leider gibt es eine Möglichkeit, einen MD5-Hash zu entschlüsseln, indem ein Wörterbuch verwendet wird, das mit Zeichenfolgen und deren Gegenstück zu MD5 gefüllt ist. Da die meisten Benutzer sehr einfache Kennwörter verwenden (z.B. "123456", "Kennwort", "abc123" usw.), können sie mit MD5-Wörterbüchern sehr einfach abgerufen werden.

Ein Computerprogramm, das für alle gängigen Passwörter in einer Schleife jeweils den zugehörigen MD-Hash berechnet und diesen mit einem bekannten (gestohlenen) MD-Hash abgleicht, kann durch "Probieren" das Passwort herausfinden. Reine Zahlen gehören zu den unsichersten Passwörtern. In einer Schleife werden einfach alle Zahlen von 0 bis ... erzeugt, in eine Zeichenkette wie "4711" verwandelt, davon wird der MD-Hash erzeugt und dieser mit den bekannten (gestohlenen) MD-Hashes abgeglichen.

Lange Passwörter gespickt mit Sonderzeichen gelten allerdings als sicher. Es gibt einfach zu viele Kombinationen, als dass diese von heutigen Computern in vertretbarer Zeit "durchprobiert" werden könnten.

Wie verlaufen Registrierung und Anmeldung auf Websites, die ihre Benutzerkennwörter MD5-verschlüsselt in einer Datenbank speichern?

Bei der Registrierung werden Mail-Adresse und Passwort abgefragt und dann über eine sichere Internetverbindung an den Server der Website übertragen. Auf dem Server wird der MD5-Hash des Passwortes berechnet und gemeinsam mit der Mail-Adresse in einer Datenbank gespeichert. Das Passwort selbst wird nicht gespeichert! Der Server "vergisst es einfach".

Bei der Anmeldung werden Mail-Adresse und Passwort abgefragt und dann über eine sichere Internetverbindung an den Server der Website übertragen. Auf dem Server wird nun der MD5-Hash aus dem bei der Anmeldung übertragenen Passwort berechnet. Dann wird in der Datenbank nachgesehen, ob es diese Kombination von Mail-Adresse und MD5-Hash in der Datenbank gibt. Falls ja, war die Anmeldung erfolgeich.

Hier finden Sie eine detailliertere Beschreibung zur obigen Kurzfassung.