|
SurfioBar: |
[TV-Programm] [Jetzt im TV] |
[Info & Funstuff] [Netzbetreiber] [Free SMS] |
[Finanzen] [Kostenloser Kreditantrag] |
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).
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.
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).
| Verschlüsseltes Ergebnis | Passwort |
|---|---|
| 0 | 00 |
| 1 | 01 |
| [...] | |
| 10 | 55 |
| [...] | |
| 18 | 99 |
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.
Der Einfachheit halber soll die Hash-Funktion unserer Beispieltabelle eine Zahl von 1-26
durch den entsprechenden Buchstaben im Alphabet ersetzen:
| Zahl | Buchstabe |
|---|---|
| 1 | A |
| 2 | B |
| 3 | C |
| [...] | |
| 26 | Z |
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 |
|---|---|
| 1 | Y |
| 2 | Z |
| 3 | W |
| 4 | X |
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.