Ich werde oft von Computer-Einsteigern gefragt, warum man sich denn immer ein besonders kompliziertes Passwort merken bzw. ausdenken sollte. Bisher konnte ich das nie so richtig gut erklären (Mal abgesehen davon, zu versuchen, eine Dictionary-Attack zu erklären), aber heute in der Webengineering-Vorlesung war ein Techniker von team-ulm.de da und hat einen kleinen Vortrag über die Servertechnik dort gehalten und da kam mir die Erleuchtung :)
Unter anderem wurde in der Vorlesung gezeigt, dass md5-gehashte Passwörter nur dann sicher sind, wenn das gewählte Geheimwort nicht zu einfach ist.
Nehmen wir zum Beispiel als Passwort “berlin”. Das ist sehr einfach, denn die Phrase ist kurz, besteht nur aus Buchstaben und ist komplett klein geschrieben. Außerdem handelt es sich hierbei um ein “sinnvolles” Wort. Damit meine ich, dass es sich um ein tatsächlich existentes “Ding” handelt. In diesem Fall die Hauptstadt Deutschlands.
Da dieses Passwort nun so einfach ist, kann es durchaus sein, dass viele Leute dies zur Authentisierung benutzen, weil sie es sich einfach gut merken können, zum Beispiel weil es ihr Geburtsort ist oder ein guter Freund dort wohnt und genau das ist das Problem:
Im Internet gibt es inzwischen Datenbanken, die alle möglichen Wörter mit ihrem zugehörigem md5-hash speichern. So zum Beispiel http://www.md5decrypter.com.
Gibt man hier nun einen md5-hash ein, der aus einem sehr einfach Passwort gebildet wurde, ist die Wahrscheinlichkeit sehr hoch, einen Treffer zu landen.
Wenn wir nun unser Beispielpasswort “berlin” hashen, erhalten wir: d35a02eb49149450fb2fffc6e467eb37
Wer möchte, kann diesen hash nun im decryptor eingeben und erhält wieder das ursprüngliche Wort. Dabei wird kein einziges Mal gerechnet, um das ursprüngliche Passwort rauszukriegen. Es wird lediglich nach einem Treffer in der Datenbank gefahndet.
Dies funktioniert deswegen so gut, weil md5 kaum Kollisionen erzeugt und somit die Hashwerte nahezu eindeutig sind. Und selbst wenn zwei Werte mal den gleichen Hashwert besitzen, wäre es kein Thema, beide Passwörter bei eBay auszuprobieren.
Da md5 ansonsten ein relativ sicheres Verfahren darstellt, ist es sehr schade, dass der Algorithmus durch die Wahl schwacher Passwörter praktisch ad absurdum gestellt wird. Dabei ist es so einfach, sich ein gutes auszudenken und vor allem zu merken:
Bleiben wir beim Beispiel Berlin. Nehmen wir an, wir haben einen Freund oder Freundin in Berlin. Diese Person stinkt aber sehr. Also könnte man daraus einen Satz bilden:
Paul
aus
Berlin
stinkt
unglaublich
stark
am
Fuß !
Das neue Passwort bildet sich nun aus den Anfangsbuchstaben des Satzes, der ja durchaus einprägsam ist: PaBsusaF
Obwohl das Passwort allerdings 8 Zeichen besitzt (Was ausreichend ist) und sowohl Groß- als auch Kleinschreibung beinhaltet fehlen noch Sonderzeichen und Zahlen.
Diese können aber sehr einfach eingebaut werden, indem man Buchstaben durch andere Zeichen ersetzt, die ähnlich aussehen und daher leicht zu merken sind.
Zum Beispiel könnte aus einem I einfach eine 1 werden. Oder ein !
Der Bustabe O könnte durch eine 0 ersetzt werden usw. …
Bei unserem Beispiel könnte man also folgendes (endgültig sicheres) Passwort bilden:
Pa85u5aF!
Das Ausrufezeichen habe ich am Ende noch eingefügt, da mir kein gutes Sonderzeichen eingefallen ist :)