MD5 entgueltig gebrochen

"Sie" sagten auch mal, das die Enigma nicht zu knacken sei ;)

Löst so ein Collision Algo nicht nur die (langsamen, unvollständigen) Rainbow tables ab, oder lieg ich da wieder mal falsch :D

Wenn man theoretisch einen String einmal mit md4 und einmal mit md5 verschlüsselt und das pwd auf _beide_ hashs passen muss, hilft einem der Algo dann trotzdem noch?
 
hat das mal jemand von euch schon versucht bei mir kommt da immer ne error meldung...
bin gerade dabei das halbe internet dannach auszukramen aber irgend wie finde ich keine lösung dafür

nutze winxp unter linux konnte ich es noch nicht testen da laptop bei meiner schwiegermutter liegt...

-----edit--------
Okay error meldung beseitig (habe mir die md5coll.c datei gezogen und selbst compiler gespielt) als parameter habe ich den hash übergeben - cpu läuft auf eine auslastung von 98-99% seit knapp 40min - bis jetzt kein lebenszeichen...
*sich wieder meld wenn was passiert ist* :D
 
Original von Oi!Alex
und selbst compiler gespielt

Bist du sicher? Wenn ich mir diesen Quelltext ansehe, möchte ich nicht die Aufgabe bekommen, den per Hand zu übersetzen. :D

Original von p-Logic
Löst so ein Collision Algo nicht nur die (langsamen, unvollständigen) Rainbow tables ab, oder lieg ich da wieder mal falsch

Ist falsch, denn die Rainbow-Tables dienen dazu, zu einem gegebenen Hash einen Input zu finden, der genau diesen Hash erzeugt. Die beschriebene Attacke dient jedoch dazu, zu einem bekannten Input einen neuen zu erzeugen, der genau den gleichen Hash hat, also zu Beispiel um Signaturen zu umgehen. Damit lassen sich (leider) keine Passwörter wiederherstellen, was dann eine wesentlich größere Signalwirkung hätte, MD5 nicht mehr zu verwenden.

mfg carwe
 
man hat auch gesagt nagravision wird nie geknackt werden :rolleyes:
es gibts nichts, was man nicht knacken kann bzw irgendwann mal wird!
 
Ist falsch, denn die Rainbow-Tables dienen dazu, zu einem gegebenen Hash einen Input zu finden, der genau diesen Hash erzeugt. Die beschriebene Attacke dient jedoch dazu, zu einem bekannten Input einen neuen zu erzeugen, der genau den gleichen Hash hat, also zu Beispiel um Signaturen zu umgehen. Damit lassen sich (leider) keine Passwörter wiederherstellen, was dann eine wesentlich größere Signalwirkung hätte, MD5 nicht mehr zu verwenden.

das versteh ich jetzt nich, was genau soll das dann überhaupt bringen?
 
Original von Nick H.
das versteh ich jetzt nich, was genau soll das dann überhaupt bringen?

naja wie gesagt bei signaturen. wenn du einen text schreibst, dann kann man mit so genannten hash-funktionen einen "fingerabdruck" errechnen lassen, der dann eine bestimmte länge hat. dazu konnte man bis, ja, vor einiger zeit eben, md5 nutzen. kann man immer noch, ist aber nicht mehr sicher. wo kommt überhaupt die sicherheit her? durch so genannte asymetrische verschlüsselungsverfahren. und nun wärs ja blöd, du schickst ne mail ab, signierst die, damit der inhalt auf authenizität geprüft werden kann, und "jemand" schiebt eine nachricht mit dem gleichen fingerprint und demzufolge der gleichen signatur rein. sicher gibts dazu noch ein paar links wo man sich belesen kann, war jetzt einfach zu faul dazu :)


mfg carwe
 
Sekunde, hab ich das richtig verstanden:
Jemand snifft zum Beispiel meinen Verkehr mit und kriegt zum Beispiel ein Cookie mit bei dem der md5 string meines passworts drin ist, zum Beispiel "7f4bd06836b659322a4ba15638784aa9".
Da lässt er das Programm drüber laufen und kriegt einen String raus der den MD5 Algorithmus den gleichen Output machen lässt?
Also er knackt nicht mein Passwort aber findet eine Methode den Algorithmus zu verwirren so dass er den falschen output generiert, richtig?
Wenn ja, was für einen Sinn macht das denn jetzt auf Panik zu machen?
Der Algorithmus mag zwar geknackt sein, aber das macht die Hauptanwendung dieses Algorithmus doch nicht unsinnig (in Foren oder sonstigen Webinterfaces als Schutz des Passworts).
Gibt es überhaupt alternativen die zum Beispiel in PHP verwendet werden können???
Imrahil
 
Original von Imrahil
Jemand snifft zum Beispiel meinen Verkehr mit

nennt sich https und SOLLTE verwendet werden, wenn man mit passwörtern arbeitet - aber wer macht das schon bzw bietet das an? (siehe HaBo X()


Original von Imrahil
und kriegt zum Beispiel ein Cookie mit bei dem der md5 string meines passworts drin ist, zum Beispiel "7f4bd06836b659322a4ba15638784aa9".
Da lässt er das Programm drüber laufen und kriegt einen String raus der den MD5 Algorithmus den gleichen Output machen lässt?

NEIN - dein passwort muss immer noch per bruteforce berechnet werden, zb hier - deinen hash hab ich übrigens gleich mal reingestellt, das dazugehörige pw kannst du jetzt sowieso vergessen

Original von Imrahil
Der Algorithmus mag zwar geknackt sein, aber das macht die Hauptanwendung dieses Algorithmus doch nicht unsinnig (in Foren oder sonstigen Webinterfaces als Schutz des Passworts).Gibt es überhaupt alternativen die zum Beispiel in PHP verwendet werden können???l

als hash-prozessor für passwörter ist md5 wohl noch benutzbar (ich warte gern auf gegenmeinungen) - alternativen? gibts sicherlich, wird ja sowieso nur intern verwendet


mfg carwe
 
Original von Imrahil
Also er knackt nicht mein Passwort aber findet eine Methode den Algorithmus zu verwirren so dass er den falschen output generiert, richtig?

ja, das nennt man eine kollision. es gibt zwei anforderungen an hash algorithmen, was kollisionsresistenz angeht. schwache kollisionsresistenz bedeutet; ist eine nachricht m1 gegeben, dann ist es nicht moeglich eine nachricht m2 zu erzeugen fuer die gilt h(m1) = h(m2) (wobei h() die hashfunktion ist).
hat man zum beispiel eine einfache hashfunktion fuer eine datenstruktur bei der die quersumme einer zahl gebildet wird (nicht sehr sinnvoll, nur mal als beispiel), dann findet man so eine kollision leicht (z.b. m1 = 12 -> m2 = 21).
ein hashalgorithmus der schwach kollisionsresistent ist ist aber noch nicht gut, da er anfaellig fuer einen sog. geburtstagsangriff ist. die zweite anforderung an einen hashalgorithmus ist daher "starke kollisionsresistenz". das bedeutet, es ist nicht moeglich m1 und m2 zu erzeugen so das gilt h(m1) = h(m2).
was bei md5 jetzt gefunden wurde ist ein weg um von einem hashwert auf eine nachricht zu schliessen die diesen hash erzeugt. ob die nachricht die urspruenglich zum erzeugen des hashwertes verwendete ist oder nicht findet man dabei nicht raus.

Der Algorithmus mag zwar geknackt sein, aber das macht die Hauptanwendung dieses Algorithmus doch nicht unsinnig (in Foren oder sonstigen Webinterfaces als Schutz des Passworts).

inwiefern funktioniert der schutz noch? wenn ich den hash deines passworts hab erzeuge ich mir ein passwort was den gleichen hashwert hat. damit kann ich mich dann einloggen. oder hab ich was falsch verstanden?

Gibt es überhaupt alternativen die zum Beispiel in PHP verwendet werden können???

in der standardbibliothek (falls man diesen chaotischen haufen kram bei php so nennen kann...) gibt es afaik nur noch sha1(). der gilt auch nicht mehr als sicher. ich glaube der ist noch nicht ganz so im arsch wie md5, ist aber wohl auch nur ne frage der zeit. ruediger weis und stefan lucks z.b. empfehlen kurzfristig auf sha256 oder ripemd160 umzusteigen. langfrisitig muessen neue hashverfahren entwickelt werden. im ersten kommentar zu sha1() in der doku auf php.net ist anscheinend ein link auf eine sha256 implementation.

das mit den signaturen funktioniert so: um ein dokument zu signieren _entschluesselt_ man es mit seinem private key. wenn jemand die signatur pruefen will _verschluesselt_ er das dokument mit dem public key desjenigen der das dokument signiert hat. dabei kommt dann wieder der klartext raus. dieses vorgehen hat einige nachteile, deshalb wird in der praxis ein hashwert des dokuments gebildet und der hash wird mit dem private key entschluesselt.
wenn ich aber fuer den hashwert eine andere nachricht erzeugen kann ist die authentizitaet der signatur im arsch. weil jetzt kann ich behaupten jemand hat irgend ein dokument signiert, weil dieses dokument zufaellig den gleichen hashwert ergibt wie ein dokument was er tatsaechlich signiert hat.
hm, etwas umstaendlich formuliert, ich hoffe das ist halbwegs verstaendlich... ;)

@carwe: viel gewinnt man aber nicht bei https, wenn man selbst-signierte zertifikate verwendet.
 
Original von The Dude
inwiefern funktioniert der schutz noch? wenn ich den hash deines passworts hab erzeuge ich mir ein passwort was den gleichen hashwert hat. damit kann ich mich dann einloggen. oder hab ich was falsch verstanden?

Wenn ich das richtig verstanden hab, brauchst du trotzdem den Plaintext des Hashes, die Kollision bringt dir nur einen 2ten Plaintext mit dem gleichen Hash.

Solche Kollisionen wird es bei jedem Hash Verfahren geben.....ist ja garnicht anders möglich. Das Problem an MD5 is ja nur, das sie nicht berechenbar sein sollten.

Mfg MrGoatee
 
bei ordentlichen daten ist dann halt über die redundanz entweder eine eindeutige entschlüsselung möglich oder eine erkennung des fehlers, oder seh ich das jetzt falsch??
 
Wenn ich das richtig verstanden hab, brauchst du trotzdem den Plaintext des Hashes, die Kollision bringt dir nur einen 2ten Plaintext mit dem gleichen Hash.

Meines wissens nicht, wie soll das gehen, da müßte der Klartext ja auch irgendwo zu Zwecke des Vergleichs gespeichert sein.

Ich meine, in der /etc/passwd stehen die md5's von passwörtern. Jetzt nehm ich so nen Hash, berechne daraus ein passendes PW, welches den gleichen hashwert hat...und das müsste der dann beim login akzeptieren...oder?

Gibts für linux schon was anderes, oder ist md5 in der passwd datei gang und gäbe?
 
Naja.. aber ist das in der Praxis einsetzbar?
Ich meine erstmal muss man ja in ne datenbank kommen, in der die hashs liegen, dann muss man diese bruten lassen, und je nach passwort kann das nach wie vor Wochen dauern, nicht? (kommt das auf die länge usw. des passwortes an?)

Wird dann ein input ausgegeben der den gleichen Hash ausgiebt?
Also für password halt 23[h2n1!1 oder sowas?
 
Original von MrGoatee
Wenn ich das richtig verstanden hab, brauchst du trotzdem den Plaintext des Hashes

fuers einloggen? wofuer brauchst du den da?

Original von schmidtl_dd
Gibts für linux schon was anderes, oder ist md5 in der passwd datei gang und gäbe?

openbsd hat schon lange eine blowfish-basierte hasherzeugung implementiert. fuer linux bietet sich z.b. tcb an: http://www.openwall.com/tcb/
das hat auch noch andere vorteile. jeder benutzer hat sein eigenes /etc/shadow file, wodurch das passwd binary nicht mehr setuid-root sein muss.

Original von [starfoxx]
dann muss man diese bruten lassen

eben nicht. eine brute-force suche nach einer kollision muesste man bei einem algorithmus machen fuer den noch kein angriff bekannt ist.
 
Original von schmidtl_dd
Das ist bei jedem Linux leicht, so wie ich das kenne ist die passwortdatei systemweit lesbar...

naja da hast du nicht genug gelesen, zwar liegt /etc/passwd offen, aber aus genau diesem grund (der angreifbarkeit mittels bruteforce) wurden die hashs im normalfall nach /etc/shadow ausgelagert
 
Zurück
Oben