MD5 entgueltig gebrochen

Original von The Dude
Original von MrGoatee
Wenn ich das richtig verstanden hab, brauchst du trotzdem den Plaintext des Hashes
fuers einloggen? wofuer brauchst du den da?

gemeint mit plaintext ist wohl nicht der hashwert, sondern der text, über den die hashfunktion gelegt wurde, und den braucht man fürs einloggen natürlich, dies muss aber nicht das ursprüngliche passwort sein, sondern ein beliebiger text, der den gleichen hash wie das passwort erzeugt


Original von The Dude
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.

für die situation, von der ich annehme, dass starfox sie meint, ist noch KEIN angriff bekannt, zumindest ist mir noch keiner zu ohren oder augen gekommen. und bis dahin muss man wohl noch bruteforce nutzen


edit (24.01.06 16:31):

gerade noch gesehen:

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?

glaub schon. man kann aus dem hash nicht einfach ein passwort zurückberechnen, außer durch bruteforce. der beschriebene angriff richtet sich gegen die sicherheit, dass etwas, was ich mir irgendwo herunterlade und gegen einen woanders erhaltenen hash prüfe, das ist, was ich tatsächlich will, also kann eine datei erzeugt werden, die den gleichen hash hat wie das, was ich will, aber trotzdem nur müll enthält.


edit:
md5 7f4bd06836b659322a4ba15638784aa9 scheissdreck cracked
das war das ergebnis des bruteforceangriffs auf den hashwert, den Imrahil geschickt hat... vielleicht solltest du mal deine sprache säubern...
 
Das ist bei jedem Linux leicht, so wie ich das kenne ist die passwortdatei systemweit lesbar...

höchstens vom root oder usern mit root-rechten. sonst kannstes gar nicht kopieren, öffnen, oder sonst etwas damit tun (ausser per live-cd auf dem localhost - und da könnte man ja die hd verschlüsseln)

was mich interessieren würde.. sha1 ist ja nach der quelle der website auch "geknackt"..
gibt es nun überhaupt noch eine sichere hash-methode?
 
SHA-512 und SHA-256 (auch als SHA2 bezeichnet) dürften noch sicher sein und bei AES wäre mir jetzt auch nicht bekannt, daß der schon geknackt ist.
 
Schon bei der Entwicklung des MD5 Algo's war dem Entwickler klar das es Kollisionen geben wird ...
Allerdings glaube ich gelesen zu haben das diese vernachlässigbar sind.

Gibt es eigentlich rootkits die die Kollisionen im MD5 ausnützen um Forensische Untersuchungen zu unterbinden?
 
Laut dem Slashdot-Artikel benötigt man auf einem P4 circa 45 Minuten.
Slashdot Artikel
[...]while MD5 collisions (still being used!) take 45 minutes on a 1.6 GHz P4.
Ich bin aber letztens über einen Artikel gestoßen, der diese Zeit erheblich verkürzen könnte: Computerbase Artikel

Computerbase Artikel
Das russische Software-Unternehmen Elcomsoft mit Firmensitz in Moskau hat eine Technik entwickelt, um Computer-Passwörter mit Hilfe gewöhnlicher Grafikkarten auf äußerst effiziente Art und Weise knacken zu können. Dabei macht man sich das SDK ?CUDA?, welches vom Grafikkartenhersteller Nvidia zur Verfügung gestellt wird, zu Nutze.
[...]mit einer Nvidia GeForce 8800 Ultra die Geschwindigkeit des eigenen Rechenverfahrens zum Knacken von Passwörtern um den Faktor 25 erhöht zu haben.
Dann wäre eine md5 Kollision in circa 1,8 Minuten geknackt (45 / 25 = 1,8). :(

Original von schmidtl_dd
Gibts für linux schon was anderes, oder ist md5 in der passwd datei gang und gäbe?
OpenSUSE 10.3 schlägt bei einer Neuinstallation standardmäßig die Blowfish-Verschlüsselung vor.
 
Es sollte evtl. mal klargestellt werden, dass heutige Linux-Distros Shadow-Passwörter benutzen und damit meist kein MD5 mehr.
 
Hallo,
@stOrmy:
Ein kollisionsfreier Hashalgorithmus lässt sich nicht entwickeln, weil der Hash dann min. die gleiche Länge haben wie der max. Input.
Solch ein Hashalgo. würde aber keine Anwendung finden.


Also noch mal an alle, um Gerüchte zu unterbinden:
Man unterscheidet zwischen schwacher und starke Kollisionsresistenz.

schwache Kollisionsresistenz
Es ist (praktisch) unmöglich, zu einem gegeben Hashwert eine Kollision zu finden.
Sprich, z.B. gegeben sei ein Text (x) und dessen Hashwert (h(x)). Es soll nicht möglich sein ein x' zu finden mit x=x' (einen anderen Text) aber mit h(x) = h(x') (gleichem Hashwert).

starke Kollisionsresistenz
Es ist unmöglich, zwei verschiedene, frei wählbare, Texte zu finden mit gleichem Hashwert.

Bei MD5 wurde die starke Kollisionsresistenz gebrochen, d.h. es ist sehr leicht zwei verschiedene Texte zu finden mit gleichem Hashwert. Die schwache Kollisionsresistenz ist noch nicht gebrochen, deswegen besteht immoment keine Gefahren für z.B. Passwörter.
Wie sich das bei Signaturen auswirkt, ist noch schwer zu beurteilen. Soweit ich weiß, kann man noch keinen guten und schlechten Text erstellen mit gleichem Hashwert. Aber man sollte sicher gehen und SHA2 verwenden.

@Oi!Alex:
Das Programm sieht deutlich spektakulärer aus, als es ist. Einen wirklich praktischen Nutzen hat es nicht.

Bei MD5 gilt folgendes:
md5(x) == md5(y) daraus folgt: md5(x+q) == md5(y+q)

Es existiert bereits ein x und y mit gleichem Hashwert, also macht das Programm folgendes:
Es erstellt zwei Dateien (good.bin und evil.bin), die wie folgt aussehen:

good.bin:
x + [Code von good.exe] + [Code von evil.exe]

evil.bin:
y + [Code von good.exe] + [Code von evil.exe]

Nach der oben gezeigten Besonderheit von MD5 haben good.bin und evil.bin den gleichen Hashwert.

So nun lässt sich ein Programm schreiben, welches die good.bin bzw. evil.bin ausführt, und zwar wie folgt:
Es öffnet die *.bin Datei, schaut ob am Anfang x oder y steht und führt dann entweder den Code der good.exe oder der evil.exe aus.


In dem Beispiel übernimmt es das Prog. md5extractor.exe. Wie man in dem Artikel entnimmt, haben ja good.bin und evil.bin den gleichen Hashwert.
Wenn ich aber mit md5extractor.exe die good.exe bzw. evil.exe extrahiere, dann haben diese keineswegs den gleichen Hashwert, sondern den der Orginaldateien (also einen verschiedenen).

Was heißt dieses
Ich kann auf meiner HP nicht die good.exe anbieten und dann z.B. unterwegs diese durch die evil.exe austauschen, denn diese haben einen unterschiedlichen Hashwert!
Genauso kann der Staat in keine binary download seinen Bundestrojaner injizieren, denn die Datei die ankommt hätte einen anderen Md5-Hashwert als der, der auf der HP steht.

Was kann ich damit anfangen?
Ich kann auf meiner HP ein Prog. nach folgendem Muster anbieten:
[Main-Methode] + [Programmfunktion] + [Schadroutine] + x

In der Main-Methode wird geguckt, ob an dem Programm x oder y (die selben von oben, also md5(x) == md5(y)) anhängt, sofern es x ist, wird die 'Programmfunktion' aufgerufen.
Untweges kann aber jmd. das Programm durch:
[Main-Methode] + [Programmfunktion] + [Schadroutine] + y

austauschen. Beide haben den selben Hashwert, aber da ja y angehängt wurde, ruft die Main-Methode nun die Schadroutine auf.

Das dies kein besonderer Vorteil ist, sollte klar sein. In beiden Fällen muss ich die Schadroutine mitliefern und kann nicht unterwegs ein gutes Prog. durch ein böses Programm ersetzen.
 
Original von carwe
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()

Falsch. Sowas nennt sich nicht https sondern SSL. SSL ist serverseitig sehr rechenintensiv und desswegen den Aufwand für das HaBo nicht wert.
 
Original von :::Lük:::
Original von carwe
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()

Falsch. Sowas nennt sich nicht https sondern SSL. SSL ist serverseitig sehr rechenintensiv und desswegen den Aufwand für das HaBo nicht wert.

Hmm... Zitat Wikipedia:
Syntaktisch ist HTTPS identisch mit dem Schema für HTTP, die zusätzliche Verschlüsselung der Daten geschieht mittels SSL/TLS

Ihr habt wohl auf irgendeine Weise beide Recht ^^
 
Die Verschlüsselung erfolgt aber aussließlich über SSL, HTTPS ist das Transfer Protokoll für die verschlüsselten Daten.

Naja, man weicht vom Thema ab :rolleyes:
 
ein problem bei MD5 ist ja nicht einmal, dass es jetzt knackbar ist.

stellt euch vor, jemand könnte auf einen Server zugreifen und die Download-Datei durch eine Schadsoftware austauschen. Wenn dann jemand den Download macht und die MD5-Werte abgleicht, käme er darauf, dass der Download nicht korrekt ist. Soweit wäre der Zweck von MD5 erfüllt.
Aber wäre es nicht rein logisch so, dass jemand, der eine Datei auf dem Server austauschen kann, auch den MD5-Wert ändern kann? Dann nämlich würde jemand die Datei runterladen, die Werte abgleichen und auf das Ergebnis kommen, dass alles ok ist, was aber nicht der fall ist.
Daher ist es eigentlich sinnvoll die Datei auf einem anderen Server zur Verfügung zu stellen, als auf dem Server, der den MD5-Wert bereitstellt. Das wäre die größtmögliche Sicherheit, die man durch ein sicheres MD5 bereitstellen kann.
Nur leider is es ja jetzt geknackt, was wieder einmal beweist, dass alles knackbar ist...
 
Aber wäre es nicht rein logisch so, dass jemand, der eine Datei auf dem Server austauschen kann, auch den MD5-Wert ändern kann? Dann nämlich würde jemand die Datei runterladen, die Werte abgleichen und auf das Ergebnis kommen, dass alles ok ist, was aber nicht der fall ist.
Nun, es gibt aber zwei andere Angriffsarten; zum einen der Provider der schadcode in den Download injectet und zum andern XSS. Da könnte dann schlicht die dl url ausgetauscht werden...

Ich kenne mich damit aber auch nicht sehr gut aus, mag sein das es da noch andere Gründe gibt...
 
stellt euch vor, jemand könnte auf einen Server zugreifen und die Download-Datei durch eine Schadsoftware austauschen. Wenn dann jemand den Download macht und die MD5-Werte abgleicht, käme er darauf, dass der Download nicht korrekt ist. Soweit wäre der Zweck von MD5 erfüllt.
Aber wäre es nicht rein logisch so, dass jemand, der eine Datei auf dem Server austauschen kann, auch den MD5-Wert ändern kann? Dann nämlich würde jemand die Datei runterladen, die Werte abgleichen und auf das Ergebnis kommen, dass alles ok ist, was aber nicht der fall ist.
Daher ist es eigentlich sinnvoll die Datei auf einem anderen Server zur Verfügung zu stellen, als auf dem Server, der den MD5-Wert bereitstellt. Das wäre die größtmögliche Sicherheit, die man durch ein sicheres MD5 bereitstellen kann.
Nur leider is es ja jetzt geknackt, was wieder einmal beweist, dass alles knackbar ist...
Ich glaube, der ursprüngliche Zweck diese Prüfsummen ist kein Schutz gegen Hackerangriffe, sondern gegen Übertragungsfehler beim Download.
Wenn natürlich z.B. ein "Mann in der Mitte" sitzt oder dir ein Rootkit draufgemacht hat, kann er jedwede Datenverbindung manipulieren. Dann nützen dir im Ernstfall auch MD5-Summen auf extra Servern nicht viel.
 
Ok, gegen XSS nützt es auch nix, kann ja auch den md5 hash manipulieren :/
 
Original von metax.
Ich glaube, der ursprüngliche Zweck diese Prüfsummen ist kein Schutz gegen Hackerangriffe, sondern gegen Übertragungsfehler beim Download.
Vermutlich auch ein Punkt. Aber ein zufälliger Übertragungsfehler ließe sich selbst mit einem CRC32-Check zuverlässig aufdecken. Außerdem gibt es ja noch die Checksummen auf TCP-Ebene. Meiner Ansicht nach soll hiermit vorallem ein Gefühl von Authentizität hergestellt werden, an der Sicherheit würde nur ein Zertifikat etwas ändern.
 
Hi,

ich hab das ding mal kompiliert, jedoch check ich die Usage net ganz ...
"./md5coll or ./md5coll IV0 IV1 IV2 IV3"

Könnte mir das jemand etwas näher bringen? Oder hat jemand nen funktionierenden link zum Paper von Xiaoyun Wang.

hab das jetzt immer mit ./md5coll [MD5-Wert] probiert -> den block #1 schafft mein kleiner in 1h aber dann geht nix mehr, obowhl ich es insgesamt vllt so ca. 10 Stunden laufen gelassen habe.

Danke für jeden tipp.
 
Hallo,
der Sinn einer Hashfunktion liegt besonders in der Integrität (das sie nicht geändert wurden) von Daten.
Prüfsummen wie CRC 32 sind da wenig hilfreich, da diese nur gegen zufällige Änderungen schützen.

@metax:
Der Sinn von Prüfsummen von Dateien ist der, dass der Empfänger überprüfen kann, ob er eine orginal Datei in den Händen hält oder ob sie unterwegs manipuliert wurden.

Wenn auf dem Server eingebrochen wurde, hilft so ein Hashwert natürlich auch wenig, aber viele Programme werden über viele verschiedene Download-Server (Mirrors) vertrieben.
Jede Datei auf SourceForge kann man über dutzende Server laden, ähnlich bei Ubuntu. Es gibt bestimmt 100 Download-Server, aber der Hashwert steht auf der Main-Page von Ubuntu (ubuntu.com).
So muss man nicht unbedingt gewährleisten, dass der Mirror vertrauensselig ist, wenn der Anwender die Möglichkeit hat den Hashwert zu überprüfen.

Gleiches bei der Code-Injection in Downloads.
 
.. ;(
es is zum heulen.. alle die Rainbow tables fürn eimer...

Ich habs jetzt erst gelesen...sry aber das muss ich erstmal sacken lassen..bis eben hab ich noch freundlich an den Rainbow-Tables mit-gerechnet ,dass is zuviel für mich.. nun ist md5 mehr als ohne Zukunft..
 
Zurück
Oben