von Rob Sobers
Im ersten Teil dieser Artikelserie habe ich über die Verwendung von kryptografischen Hashfunktionen zur Verschlüsselung von Passwörtern gesprochen. Ich habe darauf hingewiesen, warum es so wichtig ist, dass sich die in Klartext eingegebenen Werte nicht anhand eines Hashwerts rekonstruieren lassen. Das war die goldene Regel Nr. 1, die sogenannte Pre-Image Resistance bzw. Urbildresistenz.
Wenn Hashwerte nicht rekonstruiert werden können, warum hören wir trotzdem ständig von Passwörtern, die geknackt werden? Und warum wird uns immer gesagt, dass unsere Passwörter möglichst komplex und schwer nachvollziehbar sein müssen?
Ist die Länge des Passworts wirklich wichtig?
In Teil 1konnte man sehen, dass „dog“ und „the eagle flies at midnight“ MD5-Hashwerte mit derselben Länge erzeugt haben. Darüber hinaus ist es ebenso schwierig, die beiden Hashwerte zu rekonstruieren. Also was macht ein schwaches Passwort nun eigentlich schwach? Die Antwort: Brute-Force-Angriffe.
Statt den Hashwert eines Passworts zu rekonstruieren, kann ich einfach verschiedene Eingabewerte (also Passwörter) ausprobieren, bis ich einen gefunden habe, der mit dem Hashwert des hinterlegten Passworts übereinstimmt. (Zur Erinnerung: Die Hash-Algorithmen sind alle öffentlich zugänglich.) Dieses Ausprobieren von möglichen Passwörtern wird als Brute-Force-Angriffe bezeichnet – eine Methode, die gerade beim Knacken von schwachen Passwörtern äußerst effektiv sein kann. (Da ich ein Gedächtnis wie ein Sieb habe, wende ich diese Methode fast jeden Tag an, um auf den vierstelligen Code meiner Garagentür zu kommen.)
Für ein schwaches Passwort, das aus nur drei Kleinbuchstaben besteht (z. B. „dog“), braucht man höchstens 17.576 Versuche, um eine Übereinstimmung zu finden. Ein Hacker kann die Anzahl der auszuprobierenden Passwörter weiter reduzieren, indem er die Möglichkeiten, wie z. B. Wörter mit drei Zeichen, auf Einträge aus einem Wörterbuch eingeschränkt („dog“ wird ausprobiert, aber nicht „fgz“). Diese Methode wird demzufolge als Wörterbuchangriffbezeichnet.
Besteht ein Passwort nun aber aus acht alphanumerischen Zeichen mit Klein- und Großschreibung (z. B. „d0G5Fr0g“), muss der Hacker möglicherweise 218.340.105.584.896-Versuche starten. Nein danke!
Rainbow Table
Millionen und Abermillionen von Passwort-Hashwerten zu erstellen, kann zeitaufwendig und rechenintensiv sein. Aus diesem Grund greifen Hacker gelegentlich auf sogenannte Rainbow Tableszurück. Hierbei handelt es sich um ellenlange, vordefinierte Hashlisten mit allen möglichen Zeichenkombinationen, die das Knacken von Passwörtern beschleunigen.
Das Anfertigen der „Regenbogentabellen“ nimmt viel Zeit in Anspruch. Sind sie aber einmal erstellt (wie beispielsweise auf freerainbowtables.com), können sie Hackern dabei helfen, innerhalb nur weniger Sekunden das Urbild eines gegebenen Hashwerts herauszufinden. Ohne diese Listen könnte das Berechnen der Hashwerte Stunden, Tage oder gar Monate dauern.
Spätestens jetzt müsste jedem klar sein, dass je komplexer ein Passwort ist, desto geringer die Wahrscheinlichkeit, dass es in einem Rainbow Table enthalten ist. Die effektivsten bereitgestellten Tabellen sind die, die Hashwerte von häufig verwendeten Wörterbucheinträgen enthalten. Das heißt also, Passwörter sollten niemals Wörter aus einem Wörterbuch sein!
Wenn es also Brute-Force-Angriffe und Rainbow Tables gibt, bedeutet das nicht, dass wir alle einem Hacker zum Opfer fallen könnten? Nur keine Angst! Im Teil 3 werde ich auf eine würzige Lösung eingehen: Salt.
Fotoquelle: Jeremy Thompson
The post Ein Leitfaden zu kryptografischen Hashfunktionen (Teil 2) appeared first on Varonis Deutsch.