Klaus: MD5 und Passwörter

Beitrag lesen

Hallo,

Ansonsten denke ich aber auch, dass man das Suchen von passenden Klartexten mit Rainbow Tables trotzdem als "rechnen" bezeichnen kann. Insbesondere werden dabei ja extrem viele Prüfsummen "berechnet".

Eben nicht, die Prüfsummen wurden ja schon bei der Erstellung der Tabelle berechnet. Beim Nutzen der Tabelle fällt keine Berechnung mehr an,

Eben nicht ;)

Wenn man Rainbow Tables nutzt, muss man dennoch sehr viele (für den Menschen) Prüfsummen berechnen, im Vergleich aber zu Brute Force extrem wenig.
Dies hängt mit dem Format von Rainbow Tables zusammen:

Diese sind nicht so:
PW1|Hash1
PW2|Hash2
PW3|Hash3

abgespeichert, denn dann bräuchte man für 8 Buchstaben [a-z0-9] mindestens 63 000 GB.

Stattdessen steht in der Table (vereinfacht) folgendes:

PW1|md5(gen(md5(gen(....(md5(PW1)....)
PW2|md5(gen(md5(gen(....(md5(PW2)....)

Dabei generiert gen() aus einem 128 Bit Hash ein neues Wort aus 8 Buchstaben [a-z0-9].

Zum Knacken verwendet man dann folgenden (Pseudo)Code:
solange md5_hash nicht in Table und n <= [Kettenlänge]
  md5_hash = md5(gen(hash))
  n++

Wenn man nun den md5_hash in der Table gefunden hat, kann man einfach bei z.B. PW2 anfangen zu starten und ruft solange:
hash = PW2
solange bis hash stimmt
 hash = md5(gen(hash))

Wie lang diese Ketten sind, also wie oft md5(gen(...)) aufgerufen wird, kann man einstellen, beträgt aber mein ich irgend sowas um die 250 000 oder so.
D.h., wenn ich ein PW mit Rainbow Tables knacken möchte, muss ich im Worst Case pro Tabelle irgendsowas um die 500k Prüfsummen berechnen, was aber ein Witz ist bzgl. dem Rechenaufwand von Brute Force.

MFG