Verständnisfrage zu md5

Mir ist neulich eine Frage durch den Kopf gegangen, auf die ich keine Lösung finde:
Ich hab ein Linuximage runtergeladen, auf dem eine md5-hashdatei drauf war. Diese Datei gibt die Prüfsumme des images an. Wie kann ich jetzt aber diese Datei in mein Image integrieren, ohne dabei die Prüfsumme zu ändern?

Das wäre ungefähr so, als würde ich bei einer mathematischen Gleichung versuchen mit einem Ergebnis zu rechnen, auf das ich erst noch kommen will, also ein Ergebnis, welches von sich selbst abhängt.

Wenn mich nicht alles täuscht, ändert jedes veränderte bit die Prüfsumme. Wie kann ich dann aber die Prüfsumme über (Image+md5-Datei) ermitteln?
Wo liegt mein Denkfehler?

Falls ich etwas grundsätzlich nicht verstanden habe tut es mir leid.
 
Was versuchst du damit zu erreichen?
Ist die md5 nicht dazu da _nach_ dem Download das Image auf Ganzheit zu überprüfen?

Du hast da was wirres vor ;)

/klugscheisser @ jorey ;)
 
Original von [starfoxx]
Was versuchst du damit zu erreichen?
Ist die md5 nicht dazu da _nach_ dem Download das Image auf Ganzheit zu überprüfen?

oder um die datei (wasweissich.. image, programm, source. wie gesagt is egal) auf unverfaelschtheit/originalitaet zu ueberpruefen ;)

edit: noe starfoxx, ich wollte das nur anmerken, is naemlich imho recht nuetzlich und nicht jeder weiss das :P
 
Du könntest das Ganze per Brute-Force durchprobieren. Du wirst wahrscheinlich irgendwann auf ein Ergebnis stoßen.

Die Wahrscheinlichkeit beträgt aber pro Versuch nur 1/2^128 und wird natürlich nicht größer (also nicht beim 2. Versuch dann 2/2^128 ), also viel Spaß ;)

Wenn ich mich nicht irre, sollte sich die Treffer-Wahrscheinlichkeit nach dieser Formel berechnen lassen (korrigiert mich bitte, falls nicht):
Code:
1 - ((2^128-1)/(2^128)) ^ n
Wobei n die Anzahl an Versuchen sind.
 
da hab ich mich bestimmt falsch ausgedrückt!
ich will eigentlich gar nichts erreichen, mich hat es eben nur gewundert, dass in einem image einer cd eine datei mit einer prüfsumme dieser cd gespeichert ist.
Das ist wie die Frage, was zuerst da war, die Henne oder das Ei.

Wenn ich von einem Image ein Hash erzeuge und dieses Hash in das Image irgendwie einbinde, ändere ich doch dabei den Hash-Wert des Images. Dann hab ich ein Image mit einer Datei die eine Prüfsumme enthält, die aber nicht mehr zu Image passt.

Ich weiß nicht, wie ich das besser beschreiben soll.
 
Du meinst also die Prüfsumme selbst ist in der Datei, die geprüft werden soll? Das wäre afaik nicht möglich. Warum hast du ja selbst dargestellt.
Ich vermute mal, dass das Image aus zwei Teilen besteht. Ein Teil mit den ganzen Dateien (99%) und der Rest dann ein paar bytes für die Prüfsumme. Die Prüfsumme bezieht sich dann allerdings nicht auf das gesamte Image, sondern es wird nur der erste Teil geprüft.
 
wenn du solches bei einer Datei schaffst, hast du gleich die Weak Collision Resistance gebrochen, eine der zentralen Vorraussetzungen fuer eine Hashfunktion. (obwohl md5 ist dahingehend schon gebrochen, nur trivial ist das trotzdem nicht) Anderes ausser bruteforce nicht schaffbar.

das ist im übrigen genau das, was die shareware-programmierer machen wollen, damit sie wissen, dass ihr executable nicht verändert wurde. denn dann ist das ding nich crackbar
 
Original von menace
das ist im übrigen genau das, was die shareware-programmierer machen wollen, damit sie wissen, dass ihr executable nicht verändert wurde. denn dann ist das ding nich crackbar

Warum sollte die Eigenschaft, den eigenen MD5-Hash in sich gespeichert zu haben, einem Shareware-Programm erlauben 'uncrackbar' zu sein?
Man kann doch die Routine selbst manipulieren, anstatt die Parameter.
 
du meinst die Routine, die im Programm bzw. in der Executable abgespeichert ist? :)
oder meinst du direkt den prozess der im speicher liegt? dazu solltest du das System aber vorher in eine virtuelle Maschine packen und dafür nen stop und continue button haben oO
 
Original von menace
du meinst die Routine, die im Programm bzw. in der Executable abgespeichert ist? :)
oder meinst du direkt den prozess der im speicher liegt? dazu solltest du das System aber vorher in eine virtuelle Maschine packen und dafür nen stop und continue button haben oO

Die Routine, die in der Executable gespeichert ist und sicherstellen soll, dass die Anwendung nur läuft, wenn sie nicht geändert wurde.
Vielleicht habe ich deine Theorie ja falsch verstanden, aber wenn die Sicherheit der Anwendung darauf beruht, den MD5-Hash der Executable mit einem gespeicherten Hash zu vergleichen, dann ist die Anwendung doch nur so sicher wie die Routine, die dies überprüft.
Das kann man ja gut in der CrackMe-Sektion beobachten:
Der Key-Algorithmus kann wahnsinnig komplex sein, aber es gibt immer einen Weg, den Programmfluss zu kontrollieren, ohne einen geeigneten Key zu finden.
Im CrackMe mag es dafür Regeln geben, aber die Shareware ist doch nicht allein deshalb Bombensicher, weil eine eingebaute Routine 100%ig feststellen kann, ob die Datei geändert wurde.
 
naja, unter der vorraussetzung, dass es immer noch nicht leicht ist, den passenden hash zu generieren, kannst du das executable ja nicht ändern.
Und den Programmfluss zu kontrollieren, das ist ein Debugger und der Prozess, das ja nichts mit der gespeicherten Executable zu tun. Dann tun sich aber die Cracker schwerer, patches fuer die binaries zu schreiben. denn nicht jeder lässt das programm dauernd im debugger laufen :D
 
Original von menace
naja, unter der vorraussetzung, dass es immer noch nicht leicht ist, den passenden hash zu generieren, kannst du das executable ja nicht ändern.
Und den Programmfluss zu kontrollieren, das ist ein Debugger und der Prozess, das ja nichts mit der gespeicherten Executable zu tun. Dann tun sich aber die Cracker schwerer, patches fuer die binaries zu schreiben. denn nicht jeder lässt das programm dauernd im debugger laufen :D
Ich glaube wir reden ein bisschen aneinander vorbei.
Wenn es einen CRC32-Check in einem Programm gibt, dass man cracken möchte, versucht man nicht solange Bytes an die Executable zu hängen, bis der Hash wieder stimmt, sondern patcht einfach die Funktion, die dies überprüft.
Und ja, das lässt sich idR in die Executable schreiben.
Ein Loader wäre auch noch eine Lösung.
Naja und wenn man sich schon bei CRC nicht so schwer tut, wird man es bei MD5 wohl kaum tun; Mehrgewinn = 0.
 
Original von crusaderv83
da hab ich mich bestimmt falsch ausgedrückt!
ich will eigentlich gar nichts erreichen, mich hat es eben nur gewundert, dass in einem image einer cd eine datei mit einer prüfsumme dieser cd gespeichert ist.
Wo wird dir denn die MD5 Prüfsumme dafür angezeigt? K3B zeigt z.B. gerne mal so ne Prüfsumme an, diese wird aber live errechnet.
 
@treadstarter
Du bringst da was durcheinander:
Der Hash ist nicht im Image sondern das Image wird erstellt und dann wird der Hash dazu errechnet und der wird dann ganz normal irgendwo reingestellt, zur ansicht.
@above:
Einen md5-Hashwert bekommst du mttels
md5sum <diedatei>
standardmaessig unter Linux
Oder wenndu windows benutzt musst du dir die Exe dafuer runterladen
google mal nach md5sum windows
@menace
Selbst wenn die Applicationsschreiber das schaffen:
Die exe ist und bleibt die selbe, es sei denn du beziehst den Freischaltcode mit ein bzw irgendwelche Hardwarekompponenten z.b. Macadressen usw. udn dann kannst du auchdie Parameter aendern anstelle die Pruefroutine auszuschalten, etwas umstaendlicher aber auch Moeglich.
Als Angreifer bist du grundsaetzlich immer im Vorteil.
mfg

sw33t

//edit:
Hier habe mal meine ee hochgeladen,einfach irgendwo in dein system packen,den Pfad zu diesem Verzeichniss setzten kommandozeile neu starten und los geht´s.
link
 
Original von sw33tlull4by
@above:
Einen md5-Hashwert bekommst du mttels
md5sum <diedatei>
standardmaessig unter Linux
Oder wenndu windows benutzt musst du dir die Exe dafuer runterladen
google mal nach md5sum windows

Das ist mir schon klar, nur habe ich hier so das gefühl gehabt das der Thread starter es irgendwie so gesehen hat das es für ihn den Eindruck erweckt hat das der Hash im Image integriert sei.
 
@treo:
richtig, genau das hab ich vermutet.

@alle:
Jetzt muss ich mich aber entschuldigen, ich hab mir das Image nochmal besorgt und noch mal genau reingesehn. In der ominösen Datei waren jede Menge Hashes gespeichert, und zwar von jeder einzelnen Dtein im Image.
Ich hätte erst hingucken sollen, bevor ich hier alle in Aufruhr versetzt habe!

war aber trotzdem eine informative Diskussion!
 
Zurück
Oben