Moin,
Also wenn jetzt jemand nach dem Bruteforce verfahren das richtige unkordierte passwort rausfindet bekommt er genauso zugang als hätte ich nicht md5 kodiert oder?
_Das_ Passwort kann er aus dem MD5-Hash nicht mehr extrahieren, da MD5-Summen eine feste Länge haben, die Eingabe jedoch unbegrenzt lang sein kann. Also gibt es potentiell unendlich viele Passwörter die den selben MD5-Hash haben und nur aus einem Hash kannst du nicht rekonstruieren welches die Eingabe war. (Jedenfalls kannst du nicht ohne weiteres beweisen dass deine Rekontruktion die einzig mögliche ist.)
Abgesehen davon hast du natürlich recht, dass man durch Brute Force eine Kollision (== zwei Eingaben mit dem gleichen Hash) finden kann, du musst nur 2^128+1 = 340282366920938463463374607431768211457 verschiedene Eingaben ausprobieren um ganz sicher Eine zu bekommen. Im Durschnitt wirst du 'schon' nach 170141183460469231731687303715884105730 Versuchen eine Kollision haben.
Nehmen wir jetzt mal den unwahrscheinlichen Fall, dass dein 2 GHz-Prozessor in jedem Taktschritt ein Passwort probieren könnte, wären das 85070591730234615865843651857.942... Sekunden, also 2697570767701503547242.632... Jahre. Unser Sonnensystem hat eine geschätzte Restlebenszeit von 4500000000 Jahren. Sicher genug?
(Wenn du mehr Rechner draufwirfst bringen die nur im optimalen Fall eine lineare Verbesserung, also doppelt so viele Rechner schaffen das allerhöchstens in halber Zeit, eher mehr.)
Das alles gilt jetzt für das Finden von Kollisionen allgemein. Um eine Eingabe zu finden die einen vorgegebenen Hash erzeugt, kannst du unter Umständen länger oder weniger lange brauchen, falls der Hash den du gegeben hast selten oder häufig vorkommt. Eigentlich ist aber eine Gleichverteilung für die meisten Kryptosysteme am günstigsten, also rechne ich damit, dass auch MD5 darauf ausgelegt ist, alle Hashes gleich häufig auftreten zu lassen.
Eine Anmerkung dazu: Diese Zahlen gelten nur, wenn du davon ausgehst, dass Brute Force der beste Algorithmus ist (ist meines Wissens nach zur Zeit so). Man kann aber theoretisch den MD5-Algorithmus in eine riesige Formel packen (ist soweit ich mich erinnern kann auch schon geschehen) und dann versuchen daraus eine Umkehrfunktion zu basteln. Da die Formel aber ekelhaft groß ist, wird es wohl noch eine Weile dauern bis man damit Erfolg hat.
Henryk Plötz
Grüße aus Berlin