Passwörter gehören nicht in die Hände von Dritten, auch nicht in die von Administratoren. Daher wurden für die Speicherung von Passwörtern sogenannte Falltürmechanismen (trapdoor mechanisms) entwickelt:
Es ist zwar möglich, ein Passwort zu verschlüsseln, nicht jedoch es wieder zu entschlüsseln.
Der Verschlüsselungsalgorithmus funktioniert also genau wie eine Falltür nur in eine Richtung. Das mag auf den ersten Blick sinnlos erscheinen, ist aber eigentlich sehr pfiffig. Nehmen wir als Beispiel den weit verbreiteten MD5-Algorithmus. Mit diesem sichert fast jede Webanwendung in PHP ihre Passwörter ab. Dabei wird aus
123456=> MD5-Verschlüsseler => e10adc3949ba59abbe56e057f20f883e
Diese lange Zeichenkette sieht der Admin. Er weiß aber deswegen das Passwort im Klartext noch nicht, da der Weg
e10adc3949ba59abbe56e057f20f883e => MD5-Entschlüsseler (Gibt es nicht) => Passwort
prinzipbedingt versperrt ist. Die dabei entstehende, lange Zeichenkette wird „Hash“ genannt.
Wenn man sich nun an einer Webanwendung (Moodle, Joomla, egroupware …) anmeldet, macht die Webanwendung folgendes:
Benutzer gibt Passwort im Klartext ein => MD5-Verschlüssler => Hash1
Dieser Hash1 wird nun mit dem Hash – nennen wir ihn Hash2 – verglichen, der in der Datenbank für den User gespeichert ist (er könnte etwa bei der Registrierung erzeugt worden sein).
Stimmen beiden Hashes überein, hat der User das korrekte Passwort eingegeben, weil der Verschlüsselungsmechanismus ja immer gleich ist. Stimmen die Hashes nicht überein, muss der Benutzer ein falsches Passwort eingegeben haben.
Soweit so gut. Das ist auch die Erklärung dafür, dass einen – so man sein Passwort vergessen hat – stets ein neues Passwort zugewiesen wird, denn der Admin kann das alte Passwort ja nicht wissen, sondern lediglich ein neues setzen.
Eigentlich hört sich das Ganze recht sicher an – ist es bloß nicht, denn es gibt Angriffe gegen dieses Verfahren, die aber allesamt voraussetzen, dass der Angreifer an den Hash kommt.
Weiterlesen