SHA1-Schwäche begünstigt Passwortknacker
Durch das Wegoptimieren unnötiger XOR-Operationen lassen sich Passwortknacker um circa 20 Prozent beschleunigen.
Jens Steube, einer der Autoren des populären Passwortknackers Hashcat, hat eine "Schwäche im kryptografischen Hash-Verfahren SHA1" (PDF-Datei) ausgemacht, die es ihm erlaubt, das Knacken von Passwörtern um etwa 20 Prozent zu beschleunigen.
SHA1 verarbeitet immer Blöcke mit 512 Bit (also 64 Byte). Im Rahmen der Erzeugung des SHA1-Hash-Wertes werden diese Daten allerdings auf 2048 Bits erweitert – Steube nennt das Word Expansion. Diese Erweiterung erfolgt über XOR-Operationen, die sich jedoch zum Teil wegoptimieren lassen. Durch ein paar clevere Optimierungen gelang es ihm dann, die Zahl der benötigten Befehle für eine komplette SHA1-Berechnung um circa 20 Prozent reduzieren: Statt 880 Operationen benötigt sein optimiertes Verfahren nur noch 694.
Die in den letzten Jahren bekannt gewordenen Schwächen des Hash-Verfahrens SHA1 haben übrigens nichts mit dessen Einsatz zum Speichern von Passwörtern zu tun. Bei den erfolgreichen Angriffen geht es darum, Kollisionen zu erzeugen – also zwei Datensätze, die einen beliebigen aber für beide gleichen Hash-Wert produzieren. Beim Passwortknacken geht es aber darum, einen passenden Datensatz zu einem fest vorgegebenen Hash-Wert zu finden. Angriffe die dies schneller als das simple Durchprobieren aller Passwörter ermöglichen, sind jedoch bis jetzt nicht bekannt (außer den so genannten Time Memory Trade Offs, die dann aber gewaltige Mengen Festplattenplatz für vorberechnete Tabellen benötigen).
Dass einfache SHA1-Hashes trotzdem keine gute Wahl zum Speichern von Passwörtern darstellen, hat vielmehr damit zu tun, dass die Berechnung eines SHA1-Hashes und damit auch das Durchprobieren vieler Passwörter auch ohne die jetzt gefundene Optimierung schon viel zu schnell geht. Optimierte Knacker können viele hundert Millionen SHA1-Hashes pro Sekunde berechnen. Verfahren wie PBKDF2 und BCrypt hingegen sind darauf ausgerichtet möglichst viel Ressourcen zu benötigen. Ein BCrypt-Knacker profitiert außerdem wegen dessen intensiver Speichernutzung kaum von GPUs; typische Werte sind lediglich ein paar tausend BCrypt-Hashes pro Sekunde.
Update: 5.12.2012, 12:30: Eine Möglichkeit die Berechnung eines SHA1-Hashes zu beschleunigen als Schwäche zu bezeichnen, ist zumindest unglücklich formuliert. Immerhin ist Geschwindigkeit durchaus eines der erwünschten Design-Kriterien eines kryptografischen Hashes und die Tatsache, dass sich die Implementierung in dieser Hinsicht optimieren lässt, ist auch keine Schwachstelle. Zwar lassen sich mit SHA1 gehashte Passwörter durch die vorgestellte Optimierung schneller knacken. Aber SHA1 ist mit oder ohne Optimierung nicht als Verfahren zum sicheren Speichern von Passwörtern geeignet. Und angesichts dessen, dass SHA1 um viele Größenordnungen schneller zu berechnen ist, als die besser geeigneten Verfahren wie PBKDF2 und BCrypt, macht eine Optimierung um 20 Prozent keinen signifikanten Unterschied aus. (ju)