Rainbow Tables Flashcards
Rainbow Tables
Über Rainbow Tables können Hashes kurze Klartexte in
der Regel schneller/langsamer/gleich schnell
als mit Brute Force Attacken in
ihre Klartexte zurückgeführt werden.
schneller
Es gibt zwei Funktionen: Die eigentliche Hashfunktion und
eine Reduktionsfunktion, die einen Hashwert wieder in
irgendeinen Wert des Klartext-Suchbereichs/den exakten Umkehrwert der Hash-Funktion überführt.
Z.B. einen 128-Bit-Hashwert in einen 8 Byte String.
irgendeinen Wert des Klartext-Suchbereichs
Rainbow Table
Die Rainbow Table wird
zum Anfang einmal/bei jedem Suchvorgang erneut
generiert und muss danach nur mit den Hashes abgeglichen werden.
zum Anfang einmal
Rainbow Table
Für jede neue Zeile in der Tabelle wird
der gleiche/
ein beliebiger, noch nicht genutzter
Startwert a gewählt.
ein beliebiger, noch nicht genutzter
Rainbow Table
Reihenfolge?
Für jede neue Zeile in der Tabelle wird ein beliebiger, noch nicht genutzter Startwert a gewählt. Auf diesen wird n mal folgende Prozedur angewendet (Startwert für x=a):
Berechnen des Hashwertes
h = H(x)
Reduktion auf den Schlüsselraum: x = R(h)
- Berechnen des Haswertes h = H(x)
- Reduktion auf den Schlüsselraum: x = R(h)
Rainbow Table
So ergibt sich für den Startwert a der Zeile eine Kette von Hashwerten und Klartexten. Wir decken also bei
geeigneter Wahl der Reduktionsfunktion nacheinander
diverse
Klartexte/Hash-Funktionswerte
mit einer Kette ab.
Klartexte
Rainbow Table
So ergibt sich für den Startwert a der Zeile eine Kette von Hashwerten und Klartexten. Wir decken also bei geeigneter Wahl der Reduktionsfunktion nacheinander
diverse Klartexte mit einer Kette ab. Nach n Iterationen wird dann der Startwert a und
jedes Zwischenergebnis/das letzte Ergebnis/das letzte Ergebnis der Hashfunktion
gespeichert.
das letzte Ergebnis der Hashfunktion
Rainbow Tables
Das Berechnen der Kette wird für viele verschiedene
Startwerte durchgeführt
aber nicht alle davon/und diese werden zusammen mit den letzten Hash-Ergebnis der jeweiligen Ketten
abgespeichert.
und diese werden zusammen mit dem letzten Hash-Ergebnis der jeweiligen Ketten
Rainbow Table
Soll jetzt der Hash eines Passwortes geknackt werden, wird
auf dem Hash/auf dem Umkehrwert des Hashwertes
die gleiche Kette von Funktionen
ausgeführt.
auf dem Hash
Rainbow Table
Ist einer der Hashwerte dieser Kette ein Wert, der in der Rainbow Table aufgeführt ist, wissen wir, dass das
Passwort irgendwo in der
Funktionskette dieses Eintrags/Rainbow Table, aber nicht zwingend in der Funktionskette des EIntrags
vorkommen muss
Funktionskette des Eintrags
Rainbow Table
Nun kann mit Hilfe des zum gefundenen Eintrag gehörenden Startwertes die Hash-Kette
erneut berechnet/aus der Rainbow Table abgelesen
werden, bis der gesuchte Hash gefunden wird.
erneut berechnet
Rainbow Table
Nun kann mit Hilfe des zum gefundenen Eintrag gehörenden Startwertes die Hash-Kette erneut berechnet werden, bis der gesuchte Hash gefunden wird. Das Passwort ist dann
der Startwert der Zeile/das vorherige Argument der Hashfunktion:
Hash geknackt!
das vorherige Argument der Funktion
Rainbow Table
Das Hinzufügen des Salts h(s||x) stellt oft eine Gegenmaßnahme dar. Der Salt sollte möglichst innerhalb/außerhalb
des Suchraums einer Rainbow Table liegen.
außerhalb
Dieser zufällige Text würde eine Rainbow Table pro Salt erforderlich machen. Dies bedeutet sehr viel mehr Speicherbedarf
und höheren Rechenaufwand /, der Rechenaufwand bleibt jedoch gleich
und höheren Rechenaufwand
Rainbow Table
Diese Rainbow Table kann praktisch nicht vorher berechnet werden, da der Salt vor einem Angriff auf z.B.
die Datenbank mit Nutzerdaten bekannt/unbekannt ist.
unbekannt