sha1(), md5() und Co. gibt es einen Rückweg?

dwex

Erfahrenes Mitglied
Hallo Leute,

angeblich kann man ja md5() kodierte Strings nicht rückgängig machen - also in den ursprünglichen String zurück verwandeln.
Ich habe aber mal irgendwo gelesen das es doch geht.
Ausserdem würde mich interessieren ob das auch für sha1 gilt.

Ich weiss das oft diskutiert und gesagt wird das es keinen Rückweg gibt - ABER wenn ich etwas in die eine Richtung rechnen kann (und es ist nichts anderes als eine mathematische Berechnung) dann muss ich das doch auch wieder zurückrechnen können.
Mir ist klar das eine 32 bytes grosse Abbildung (bei md5) nicht einen String mit mehr Bytes zurückrechnen kann weil ja irgendwo etwas abgeschnitten werden muss. Aber wenn ich z.B. einen Timestamp in md5 kodiere (ja eigentlich ist es ja ein Hash und keien Kodierung - ich weiss) dann müsste man doch zumindest Theoretisch das ganze Rückwärtsrechnen könnne
 
Zuletzt bearbeitet:
Wie kommt die ganze Welt eigentlich immer drauf, dass etwas, was berechnet werden kann, auch wieder zurückberechnet werden kann? Nehmen wir nur mal die absolut elementare Funktion f: N -> N, f(x) = x mod 2. mod heisst modulo = Rest bei Division durch 2, also immer 0 oder 1. Wenn ich dir jetzt sage, f(x) = 1, woher bitteschön willst du wissen, welches x ich meine? Es gibt (für beide möglichen Funktionswerte) unendlich viele Möglichkeiten, bei 0 sind dies 0, 2, 4, 6, …, und bei 1 entsprechend 1, 3, 5, 7, …

md5 macht im Prinzip nichts anderes. Es handelt sich dabei auch nicht um eine Codierung, sondern um eine Hashing-Funktion. Und die bildet nun eben nicht auf nur 2 mögliche Werte, sondern auf 16^32 ab – aber das Prinzip ist das gleiche.
 
Die Analyse-Methode
Im August 2004 fand ein chinesisches Wissenschaftlerteam die erste Kollision in der vollständigen MD5-Funktion [1]. Auf einem IBM P690-Cluster benötigte ihr erster Angriff eine Stunde, davon ausgehend ließen sich weitere Kollisionen innerhalb von maximal fünf Minuten finden. Der Angriff der chinesischen Forscher basierte auf Analysen. Kurz nach der Veröffentlichung der Arbeit der Chinesen wurde MD5CRK eingestellt.

Kollisionen finden heißt, man kennt ein M (Text) und sucht ein M' (Kollision), so dass hash(M) = hash(M'). Wenn man nur den Hashwert hat, ist es weiterhin schwierig, eine Kollision für den Hash zu finden.

Deswegen besteht keine akute Gefahr für Passwörter die als MD5-Hash gespeichert wurden, diese Kollisionen sind eher eine Gefahr für Digitale Signaturen.

So stehts in der allmächtigen Wickipedia geschrieben!
 
Was eine Kollision ist, wird doch gut erklärt:
Kollisionen finden heißt, man kennt ein M (Text) und sucht ein M' (Kollision), so dass hash(M) = hash(M'). Wenn man nur den Hashwert hat, ist es weiterhin schwierig, eine Kollision für den Hash zu finden.
Mit SilentWarriors Funktion ausgedrückt, würde es bedeuten, dass mod(1) und mod(3) den selben Rest haben, wobei du den Rest von Eins kanntest und eine weitere Zahl gesucht hast, die ebenfalls den Rest 1 hat. Mit etwas Glück würdest du auch die Zahlen 5, 7, 9, … finden.
 
Ok ich geb auf *mit weisser Fahne wedel* ;)

Ich hab nur irgendwo mal gelesen das der md5 rückrechenbar ist - aber dem ist offensichtlich doch nicht so - also kann ich ruhig mein Projekt jetzt beginnen.
 
Es ist mit der Brute-Force-Methode lediglich möglich, e?i?n?e?n? ?m?ö?g?l?i?c?h?e?n Ausgangswert zu einem Hash-Wert zu finden. Dass es sich dabei um d?e?n Ausgangswert handelt, ist nicht feststellbar.
 
Vorallem frage ich mich wozu ein Hash Algo gut sei soll, wenn man aus dem Hash Wert sowieso den Ursprung errechnen könnte. Das ist doch der Sinn des ganzen das man es nicht kann, oder?
MD5 und Co. sind ja auch keine Verschlüsselungen, also muss man sie auch nicht wieder "entschlüsseln", dafür gibt es Verschlüsselungsalgorithmen.
Natürlich kannst du mit Brute-Force eine Kolision provozieren, aber bei SHA-1 liegt die Anzahl der Versuche immernoch bei 2^63 und ist damit mal grade mit viel Fantasie in der Praxis einsetzbar.

Greetz...
Sinac
 
Zurück