Wörterbuchangriff
# Wörterbuchangriff

Als einen Wörterbuchangriff (engl. dictionary attack, frz. attaque par dictionnaire) bezeichnet man die Methode der Kryptoanalyse, ein unbekanntes Passwort (oder Benutzernamen) mit Hilfe einer Passwörterliste (oft auch wordlist oder dictionary genannt) zu ermitteln.
Man verwendet diese Methode, wenn man davon ausgehen kann, dass das Passwort aus einer sinnvollen Zeichenkombination besteht. Dies ist erfahrungsgemäß meistens der Fall. Erfolgversprechend ist dieses Verfahren nur, wenn möglichst viele Passwörter schnell hintereinander ausprobiert werden können.

## Mögliche Angriffsziele

Dazu unterscheidet man aktive und passive Angriffsobjekte:
Ein aktives Angriffsobjekt ist eine Instanz, welche die Richtigkeit des Passwortes überprüft und den Zugriff erteilt oder verweigert. Dies ist beispielsweise beim Einloggen auf einer Webseite der Fall. Bei aktiven Angriffsobjekten sind die Möglichkeiten der Wörterbuchattacke stark begrenzt, da häufig nach einer gewissen Anzahl von Fehlversuchen jeder weitere Versuch unterbunden wird (ähnlich der PIN am Geldautomaten, die maximal drei Mal falsch eingegeben werden kann). Außerdem hinterlässt der Angreifer Spuren in den Protokolldateien des Servers.
Unter einem passiven Angriffsobjekt versteht man einen verschlüsselten Text. Hier wird das Passwort nicht durch eine Instanz überprüft. Das richtige Passwort führt aufgrund des verwendeten Verschlüsselungsverfahrens direkt zur Entschlüsselung des Textes. Der Angreifer kann hier erheblich mehr Passwörter in kürzerer Zeit ausprobieren. Die Geschwindigkeit hängt von der vom Angreifer verwendeten Soft- und Hardware sowie von dem verwendeten Verschlüsselungsalgorithmus ab. Schon auf gut ausgerüsteten Heimcomputern können ohne weiteres mehrere hundert Millionen Rechenoperationen pro Sekunde durchgeführt werden. Der schnellste Supercomputer schafft sogar 33,862 Billiarden Rechenoperationen pro Sekunde (Stand November 2013).
Der aktive Wortschatz einer Sprache liegt in der Regel bei 50.000 Wörtern. Somit können dutzende Sprachen innerhalb weniger Sekunden überprüft werden. Ein Kennwort, welches nur aus ein oder zwei Wörtern besteht, ist daher bei der Verschlüsselung von Texten sehr unsicher.

## Verfahren

Durch ein spezielles Programm werden die Einträge der Passwortliste als Benutzername oder Passwort durchprobiert. Möglich ist auch das Verwenden von zwei getrennten Listen für Benutzername und Passwort. Viel häufiger ist jedoch die Verwendung einer „Combo-List“, einer kombinierten Liste aus Benutzername und Passwort im Format „Benutzername:Passwort“. Verbreitete Programme zum automatischen Testen von Passwörtern sind John the Ripper und Cain & Abel.

## Vorteile

Besonders die typischen Passwörter (insbesondere Namen oder Geburtsdaten) sind mit dieser Methode leicht zu finden. Auch die Dauer der Ausführung, die üblicherweise aufgrund der geringeren Anzahl an zu testenden Passwörtern geringer ist als beispielsweise die der Brute-Force-Methode, spricht für die Verwendung dieser Methode.

## Nachteile

Bei dieser Methode ist ein Angreifer auf eine gute Passwörterliste angewiesen. Da naturgemäß selbst die beste Liste nicht alle möglichen Passwörter enthält, kann mit dieser Methode auch nicht jedes Passwort gefunden werden. Besonders klein ist die Chance, Passwörter, die aus sinnlosen Zeichenreihen bestehen, zu finden.

## Gegenmaßnahmen

Die einzige Verteidigung des Benutzers gegen einen Wörterbuchangriff ist, keine leicht erratbaren Passwörter zu verwenden. Eine Methode zum Erstellen von Passwörtern mit garantierter Entropie ist Diceware.
Um die Auswirkungen eines Angriffs zu mildern, sollte ein Benutzer für jedes Benutzerkonto ein eigenes Kennwort verwenden. Dadurch kann ein Kennwort einer „gecrackten“ Seite nicht bei anderen verwendet werden.
Der Anbieter sollte versuchen, den Angreifer auszubremsen, so dass er möglichst lange braucht, um viele Passwörter durchzuprobieren. In der Regel wird dazu bei aktiven Angriffsobjekten nach der Eingabe eines falschen Passworts eine Warteschleife eingebaut. Hier muss der Programmierer allerdings darauf achten, dass der Angreifer nicht mehrere Anmeldeversuche parallel unternehmen oder Zugriff auf äquivalente passive Angriffsobjekte erhalten kann. Bei passiven Angriffsobjekten, d. h. wenn der Angreifer die Daten des Angriffsziels auf seine eigene Hardware heruntergeladen hat, ist eine vergleichbare Verzögerung nur schwer zu erreichen. Eine sinnvolle Variante ist eine Verlängerung der notwendigen Kennwortlänge.
Die Passwörter der Benutzer sollten nicht im Klartext gespeichert werden. In der Regel wird lediglich der Hash des Passworts gespeichert. Wenn es einem Angreifer gelingt, in den Besitz dieser Datei zu gelangen, kann er mit den dort abgelegten Hashs zunächst nichts anfangen. Er muss das oben unter „passiven Angriffsobjekte“ beschriebene Verfahren anwenden, indem er die Einträge eines Wörterbuchs einzeln hasht und das Ergebnis mit dem Hash des Passworts vergleicht. Damit dafür keine fertigen Listen mit Hashwert → Originalwort (etwa in Form sogenannter Rainbow Tables) benutzt werden können, wird in der Regel das Passwort vor dem Hashen um einen Zufallswert, den sogenannten Salt, erweitert. Der Zufallswert wird neben dem Hash abgespeichert. Außerdem kann die Berechnung des Hashwertes zum Beispiel durch Verwendung eines iterativen Verfahrens mit mehreren Hashrunden so verzögert werden, dass dies zwar bei einmaliger Eingabe des (korrekten) Passwortes für den Benutzer noch keinen erheblichen Zeitverlust bewirkt, eine Wörterbuchattacke aber signifikant aufwendiger wird. Für diesen Zweck gibt es spezielle Passwort-Hashfunktionen wie etwa Argon2.