Die Freeware Ophcrack knackt das Passwort Fgpyyih804423 in 160 Sekunden! Das Geheimnis hinter dieser Wahnsinns-Geschwindigkeit: Rainbow Tabellen.
Coding Horror erklärt, wie das funktioniert: Passwörter werden als Hashes gespeichert. Die kann man nicht zurück berechnen, aus dem Hash kann man also niemals das Passwort zurück bekommen. Aber man kann alle möglichen Hashes vorberechnen und dann das gewünschte Hash, das man knacken möchte, damit vergleichen.
Dazu braucht man riesige Tabellen, die Rainbow-Tabellen. Bis zu 19 GByte sind sie groß, außerdem müssen sie natürlich auch erst berechnet werden. Im RAM kann man die nicht alle halten, trotzdem soll diese Technik rasend schnell sein und auch über das Internet funktionieren.
Quelle: Coding Horror
Viren, Spyware, Datenschutz 11.232 Themen, 94.485 Beiträge
Du hast zwar mit der Angabe der riesigen Datenmengen bei den unzähligen Kombinationen eines Ausgangswertes für den Hash Recht, aber so wie Du meinst funktionieren Rainbow Tabellen auch garnicht wie Du mit der Vermutung zu einem Algorithmus schon selbst richtig andeutest. Eine Rainbow Tabelle wäre unsinnig, wollte sie alle möglichen Kombinationen enthalten und deswegen tut sie dies auch nicht. Nebeneffekt ist, dass auch bei der Benutzung von Rainbow Tabellen immer noch per Brute Force gerechnet werden muss.
Prinzip einer Rainbow Tabelle ist die Reduktionsfunktion, die zu ihrer Erstellung verwandt wurde und somit der Schaffung einer Eingrenzung für das anschließende Brute Force. Das Ganze ist etwas kompliziert zu erklären, ich versuche mein Glück trotzdem einmal:
Du willst eine Rainbox Tabelle erstellen und fängst mit einem beliebig, zufällig gewählten Eingangspasswort (X0) an aus welchem Du einen Hash erstellst. Den gewonnen Hash speicherst Du jetzt aber nicht zusammen mit dem Passwort in einer Datenbank, sondern wendest darauf die Reduktionsfunktion (R1) an, die aus dem Hash aufgrund eines bestimmten (typisch für den speziellen Rainbow-Algorithmus) Schemas wieder eine Zeichenkette (neuer Eingangswert) erstellt. Diesen neuen Wert unterziehst Du wieder der Hash-Funktion, den gewonnenen Hashwert unterziehst Du wieder der Reduktionsfunktion (für den nächsten Durchlauf jedoch einer anderen, die jedoch für jeden Durchlauf n typisch ist, also hier R2) und so weiter.... das Ganze machst Du jetzt n-Mal (Reduktionsfunktion und n bestimmen die Qualität einer Rainbow-Tabelle). Nach diesen n Durchläufen speicherst Du nun dein ursprüngliches Zufallspasswort (X0) und den letzten gewonnen Hashwert (Hn) in der Tabelle. Anschließend beginnst Du von neuen mit einem neuen Zufallspasswort (das natürlich ein anderes sein sollte, als schon berechnete).
Tja, was soll das nun wird man sich fragen... wie bekommt man nun für einen Hash ein Passwort? Schritt Nummer eines wäre, nach zu schauen, ob der Hash als Endwert in der Tabelle steht. Tut er das, dann berechnet man ausgehend vom zugehörigen Ausgangspasswort die komplette Reihe bis zur letzten Reduktionsfunktion neu und hat das Ursprungspasswort. Tut er das jedoch nicht, dann wendet man auf den Hash nacheinander die Reduktionsfunktionen R1 bis Rn und prüfst jedes Mal, ob Du dafür einen entsprechenden Endhash Hn in der Tabelle hast. Hast Du den, dann startest Du entsprechend vom Ausgangspasswort wieder die Berechnung der Reihe.
Hast Du jedoch nach Anwendung von Rn immer noch keinen passenden Endhash Hn gefunden, dann hat die Rainbow Tabelle versagt.
Kurzum, je nach Tiefe n reduziert sich die Speichermenge enorm, aber auch eine Rainbow Tabelle ist keine Garantie das Passwort wirklich darin zu enthalten und bei schlechten Reduktionsfunktionen kann eine Rainbow Tabelle auch komplett unnütz werden.