Rainbow Tables

Aus Xinux Wiki
Version vom 25. Juni 2026, 05:10 Uhr von Thomas.will (Diskussion | Beiträge) (→‎Kette)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Rainbow Tables

  • Eine volle Hash-Tabelle für alle Passwörter wäre Petabytes groß - unbaubar.
  • Rainbow Tables schrumpfen das auf ein paar Hundert GB, damit es überhaupt auf eine Platte passt.
  • Bezahlt wird's mit Rechenzeit beim Suchen.

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

Rainbow.png

  • 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"