SurfioBar:
[TV-Programm]
[Jetzt im TV]
[Info & Funstuff]
[Netzbetreiber] [Free SMS]
[Finanzen]
[Kostenloser Kreditantrag]

Rainbow Table einfach erklärt

Surfio.de

TV-Programm

Jetzt im TV

Heute Abend

Morgen Abend

Funstuff

Free SMS

Bildersammlung

Es gibt Dinge, die kann man nicht erklären...

Deutsche Sprache schwere Sprache

Alpaka-Sommerfest

SG-P Usertreffen 12.1.2008 Berlin

Gummis können Leben retten...

Übersetzungs-Meisterwerke

Infospace

Babysitter-Suche

Babysitter-Anmeldung

IP Netzmasken

VBA Projekt gesperrt

GSM-Netzbetreiber

XML formatieren

Radio-Playlisten

Tipps zu Sybase SQL

Padre Perl IDE

Rainbow Table

Finanzen

Gratis Kreditantrag

Kreditantrag o. Schufa

Immobilienkreditantrag

AniRO Infospace

Items

Cards

Skill - Cards



Rainbow Table einfach erklärt

Die Rainbow-Table (Regenbogen-Tabelle) wurde von Philippe Oechslin entwickelt und reduziert den Zeit- bzw. Speicherplatzaufwand von Brute-Force bzw. Wörterbuch Angriffen auf Passwörter (und andere verschlüsselte Daten).

Hinweis zu den Beispielen

Die in diesem Text gezeigten Beispiele sollen einfach nachvollziehbar sein. In der Realität werden an ihrer Stelle wesentlich komplexere mathematische Konstrukte verwendet, die als Beispiel viel zu komplex wären.

Brute-Force-Crack / Wörterbuchangriff

Das Brute-Force-Verfahren (Brute Force = rohe Gewalt) basiert auf der Möglichkeit, ein Passwort durch bloses Raten aller möglichen Kombinationen zu knacken.

Nehmen wir uns beispielsweise einen Koffer mit einem 3stelligen Zahlenschloss. Mit Brute-Force würden wir bei 000 anfangen und alls möglichen Kombinationen bis 999 durchprobieren - irgendwann würden wir die richtige Kombination finden.

Falltürfunktionen

Eine Rainbow-Table geht davon aus, das die verschlüsselte Darstellung bekannt ist, z.B. aus einer Passwortdatei. Alle effektiven aktuell eingesetzten Passwort-Verschlüsselungen sind Falltürfunktionen, d.h. sie lassen sich nicht zurückrechnen.

Ein einfaches Beispiel für eine Falltürfunktion ist die Addition. Auch wenn das Ergebnis (z.B. 10) bekannt ist, sind die Originalwerte nicht mehr zu ermitteln. Es könnten 5 + 5 gewesen sein oder auch 1 + 9 oder auch 2 + 8 usw. Wenn jetzt eine zweistellige PIN eingegeben wird, wird diese "verschlüsselt" (in unserem Beispiel werden beide Ziffern addiert) und wenn das Ergebnis 10 ist, wird die PIN akzeptiert. Damit ist 55 (daraus wird 5 + 5) gültig, 99 aber nicht (das Ergebnis wäre 18, nicht 10).

Vorberechnete Tabellen

Man könnte jetzt einfach jedes mögliche Ergebnis in einer Datenbank speichern und bei Bedarf einfach ein gültiges Passwort aus der Datenbank lesen:
Verschlüsseltes ErgebnisPasswort
000
101
[...]
1055
[...]
1899

(Gekülrzte Darstellung)
Wenn der verschlüsselte Wert 10 ist, würde 55 als Passwort akzeptiert werden.

Schon bei einer einfachen MD5-Prüfsumme wären aber 256-hoch-16 Werte (16 Stellen mit je 256 möglichen Werten) notwendig, das sind nur 340282366920938463463374607431768211456 mögliche MD5-Prüfsummen. Um das mal kurz darzustellen: Würde man 5000 Frachtschiffe mit je 5000 Containern beladen, die mit jeweils 30000 Kisten/Container beladen sind von denen jede Kiste 20 Festplatten mit je 1 TB enthält, wären immernoch 701499 Milliarden Fahrten pro Schiff notwendig um genügend Kapazität für alle möglichen MD5-Summen zu transportieren.

Rainbow - Table

Eine Rainbow-Table speichert nur einen Bruchteil der o.g. Möglichkeiten. Dazu sind zwei Berechnungen notwendig: Eine sogenannte Hash-Funktion und eine Reduktionsfunktion.

Der Einfachheit halber soll die Hash-Funktion unserer Beispieltabelle eine Zahl von 1-26 durch den entsprechenden Buchstaben im Alphabet ersetzen:
ZahlBuchstabe
1A
2B
3C
[...]
26Z

Die Reduktionsfunktion rechnet einfach immer +4 (als Beispiel).

Die erste Kette unserer Rainbow-Table beginnt jetzt mit der ersten möglichen Zahl (=Passwort):

1 --Hash--> A --Reduktion--> 5 --Hash--> E --Reduktion--> 9 --Hash--> I --Reduktion--> 13
--Hash--> M --Reduktion--> 17 --Hash--> Q --Reduktion--> 21 --Hash--> U --Reduktion--> 25
--Hash--> Y

Diese Kette enthält also die Passwörter 1, 5, 9, 13, 17, 21 und 25 sowie die Hash-Werte A, E, I, M, Q, U und Y. Dies reduzieren wir jetzt auf das erste Passwort (1) und den letzten Hash-Wert (Y), der Grund folgt später.

Hier alle Ketten im Überblick:
1. Passwort Letzter Hash-Wert
1Y
2Z
3W
4X

Um jetzt das Passwort zum Hash-Wert U zu finden, gehen wir alle Hash-Werte der Tabelle (Y,Z,W,X) durch. Da das U nicht vorhanden ist, wird eine Reduktion und eine Hash-Berechnung durchgeführt: Die Reduktion ergibt 25 und die Hash- Berechnung Y. Das Y ist in der Tabelle enthalten und führt uns zum 1. Passwort 1.

Jetzt muss nur noch diese Kette nachgerechnet werden (siehe oben) bis der Hash- Wert U wiedergefunden wird - das Passwort, welches diesen Hash-Wert ergibt, ist das gesuchte.