Rainbow Tables: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Der Seiteninhalt wurde durch einen anderen Text ersetzt: „'''Ausarbeiten'''“) Markierung: Ersetzt |
|||
| Zeile 1: | Zeile 1: | ||
| − | + | =Rainbow Tables= | |
| + | |||
| + | =Idee= | ||
| + | *Mittelweg zwischen Brute Force und voller Hash-Tabelle | ||
| + | *Brute Force: nichts gespeichert, alles live hashen → langsam, kein Platz | ||
| + | *Volle Tabelle: alles gespeichert → schnell, aber riesig (Petabytes) | ||
| + | *Rainbow Table: nur Teil gespeichert, Rest beim Suchen nachrechnen → tauscht Platz gegen Rechenzeit | ||
| + | |||
| + | =Zwei Funktionen= | ||
| + | ;H = Hash (Passwort -> Hash) | ||
| + | *normale Richtung | ||
| + | ;R = Reduktion (Hash -> Passwort-String) | ||
| + | *keine Umkehrung, erzeugt nur wieder etwas passwortförmiges | ||
| + | |||
| + | =Kette= | ||
| + | *abwechselnd H und R anwenden | ||
| + | <pre> | ||
| + | abc12 --H--> 9f3a.. --R--> delta --H--> 77b1.. --R--> zonk9 | ||
| + | ^ ^ | ||
| + | Anfang Ende | ||
| + | (gespeichert) (gespeichert) | ||
| + | <---- alles dazwischen wird verworfen ----> | ||
| + | </pre> | ||
| + | *nur Anfang und Ende jeder Kette speichern | ||
| + | *1000 Glieder pro Kette -> 1 Eintrag statt 1000 -> Platzgewinn | ||
| + | |||
| + | =Suchen= | ||
| + | *ab eigenem Hash selbst Kette bauen (R, H, R, H ...) | ||
| + | *nach jedem Schritt prüfen: Treffer auf gespeichertes Ende? | ||
| + | *Treffer -> zugehörigen Anfang nehmen | ||
| + | *Kette von vorne durchrechnen -> darin liegt das Passwort | ||
| + | |||
| + | =Warum "Rainbow"= | ||
| + | *pro Position andere Reduktionsfunktion (R1, R2, R3 ...) | ||
| + | *verhindert Zusammenlaufen/Kollision der Ketten | ||
| + | *Abfolge der Funktionen = "Regenbogen" | ||
Version vom 25. Juni 2026, 05:02 Uhr
Rainbow Tables
Idee
- Mittelweg zwischen Brute Force und voller Hash-Tabelle
- Brute Force: nichts gespeichert, alles live hashen → langsam, kein Platz
- Volle Tabelle: alles gespeichert → schnell, aber riesig (Petabytes)
- Rainbow Table: nur Teil gespeichert, Rest beim Suchen nachrechnen → tauscht Platz gegen Rechenzeit
Zwei Funktionen
- H = Hash (Passwort -> Hash)
- normale Richtung
- R = Reduktion (Hash -> Passwort-String)
- keine Umkehrung, erzeugt nur wieder etwas passwortförmiges
Kette
- abwechselnd H und R anwenden
abc12 --H--> 9f3a.. --R--> delta --H--> 77b1.. --R--> zonk9
^ ^
Anfang Ende
(gespeichert) (gespeichert)
<---- alles dazwischen wird verworfen ---->
- nur Anfang und Ende jeder Kette speichern
- 1000 Glieder pro Kette -> 1 Eintrag statt 1000 -> Platzgewinn
Suchen
- ab eigenem Hash selbst Kette bauen (R, H, R, H ...)
- nach jedem Schritt prüfen: Treffer auf gespeichertes Ende?
- Treffer -> zugehörigen Anfang nehmen
- Kette von vorne durchrechnen -> darin liegt das Passwort
Warum "Rainbow"
- pro Position andere Reduktionsfunktion (R1, R2, R3 ...)
- verhindert Zusammenlaufen/Kollision der Ketten
- Abfolge der Funktionen = "Regenbogen"