MD5 Binary-SelfTest

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 7. August 2006, 12:34

droptix hat geschrieben:Nicht ganz. Angenommen die .exe wurde einwandfrei heruntergeladen, aber bei der .md5 Datei trat ein Fehler auf. Obwohl die .exe okay ist, meint sie bei der Überprüfung sie sei falsch.
Wenn der MD5 an der exe dranhängt, kann doch genau der gleiche Fall auftreten: nur die paar Bytes am Schluss sind falsch übertragen worden. Dann ist die exe ebenfalls okay, d.h. fehlerfrei ausführbar.
BlackJack

Montag 7. August 2006, 14:32

droptix hat geschrieben:
BlackJack hat geschrieben:Es gibt unter "UNIX" kein einheitliches EXE Format.
Ich weiß. Aber es gibt auf jedem OS ein Binary-Format. Ich möchte mein Programm auf jeden Fall für Windows, Mac OS X, Linux, FreeBSD und Symbian (Nokia) ausliefern. Das sind fünf verschiedene Binary-Formate.
Wenn man von einem Format pro Plattform ausgeht, dann ja.
Für Windows gibt's py2exe – kein Problem also. Für Linux hab ich mal was ähnliches gelesen, habe mich aber noch nie richtig intensiv damit befasst. Was es für Linux gibt, wird meistens auch für andere Unixe portiert. Für alle anderen Systeme ohne Binary-Möglichkeit setze ich eine Python-Installation voraus und liefere die .pyc Datei.
Du solltest auch unter Linux ein installiertes Python vorraussetzen. Bei den meisten Distributionen ist es sowieso schon installiert weil es von Programmen, manchmal sogar Systemprogrammen, schon benötigt wird. Auf jeden Fall sollte es per Paketsystem einfach nachzuinstallieren sein.

Software die einen eigenen Pythoninterpreter mitbringt fänd ich unter Linux ziemlich schräg.
BlackJack hat geschrieben:Warum willst Du das unbedingt mit aller Gewalt zusammen packen wenn es anders viel plattformunabhängiger geht!?
Weil das die meisten Endanwender einfach lieber mögen und das Ganze sehr einfach zu handhaben ist. Was spricht denn dagegen?
Einfach zu handhaben? Warum gibt's dann diese Diskussion? ;-)

Dagegen spricht die unnötige Komplexität. Wenn Du die Prüfsumme in einer eigenen Datei hast, dann funktioniert es ohne grosse Änderungen auf allen 5 Plattformen. Und auch auf solchen, an die Du gar nicht gedacht hast.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Montag 7. August 2006, 14:46

BlackJack hat geschrieben:Du solltest auch unter Linux ein installiertes Python vorraussetzen. Bei den meisten Distributionen ist es sowieso schon installiert […]
Nunja, da ich aktuell mit Python 2.4 arbeite, bereitet das manchmal Probleme: Debian Sarge (stable) oder Mac OS X haben standardmäßig nur Python 2.3 drauf. Der Endanwender hat in manchen Fällen nicht die nötigen Rechte zum Updaten der Version. Daher finde ich es gar nicht so schlecht, den Installer auszuliefern. Kann man ja optional gestalten -> einmal die .pyc für alle oder Binaries für Benutzer ohne Python.
BlackJack hat geschrieben:Einfach zu handhaben? Warum gibt's dann diese Diskussion? ;-)

Dagegen spricht die unnötige Komplexität. Wenn Du die Prüfsumme in einer eigenen Datei hast, dann funktioniert es ohne grosse Änderungen auf allen 5 Plattformen. Und auch auf solchen, an die Du gar nicht gedacht hast.
Das gilt aber nur, wenn ich für alle Systeme die selbe .py(c) ausliefere, was das Optimum darstellt. Ich fände es nett, wenn zumindest für die meist benutzten Systeme (Windows, Mac OS, Linux, FreeBSD) Binaries zum schnellen Ausprobieren exisiteren. Da kann man ein Programm mal eben schnell ohne Umwege starten und einfach testen.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Montag 7. August 2006, 21:27

droptix hat geschrieben:Nicht ganz. Angenommen die .exe wurde einwandfrei heruntergeladen, aber bei der .md5 Datei trat ein Fehler auf. Obwohl die .exe okay ist, meint sie bei der Überprüfung sie sei falsch.
Ja, sie meint, dass beim Download ein Fehler passiert ist, was ja auch stimmt...
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Dienstag 8. August 2006, 08:01

Ich meine, dass der Fehler aber bei einer irrelevanten Datei aufgetreten ist. Das ließe sich vermeiden, wenn diese separate .md5-Datei nicht benutzt werden würde.

Hum. Also ich gebe euch ja recht, wenn's um das Thema "Einfachkeit" geht. Es wäre definitiv simpler und einfacher, den MD5-Hash auszulagern oder auf der Website anzugeben (zum selbst überprüfen).

Nur wenn man ein Update z.B. auf CD brennt, es mit nach Hause nimmt und dort drüber jagt… bei jeder Übertragung könnten Fehler entstehen. Ich empfinde es eben als das Optimum, den MD5-Hash direkt in der Datei zu haben. Nur dass dieser Weg meiner Meinung nach auch der Komplizierteste ist.

Übrigens: Wir haben immer noch keine Lösung, wie man das praktisch realisieren könnte (mal abgesehen vom Zweck). Hat jemand eine andere (effizientere) Idee als die Brute-Force-Methode?
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Dienstag 8. August 2006, 15:06

ich nicht aber chinesische mathematiker, die herausgefunde haben, dass man vom md5 DOCH den ursprünglichen byte herausbekommen kann.
dafüer haben die zwar ein jahr für einen buchstaben gebraucht, aber md5 ist mathematisch knackbar.
http://www.cs.unm.edu/~dlchao/flake/doom/
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Dienstag 8. August 2006, 18:51

murph hat geschrieben:ich nicht aber chinesische mathematiker, die herausgefunde haben, dass man vom md5 DOCH den ursprünglichen byte herausbekommen kann.
Was die geschafft haben ist, eine Kollision zu erzeugen. Das heisst, zwei Nachrichten/Dateien zu finden, die die gleiche MD5 Summe haben.Ihr Verfahren lässt sich aber glaube ich nicht anwenden, um zu einer gegebenen MD5 eine Datei mit jener Hash zu finden, Und erst recht noch nicht, zu einer gegebenen Nachricht und MD5 die Nachricht so umzuändern, dass die gewünschte MD5 rauskommt. Letzteres ist das, was einen Angreifer interessiert. Denn wenn du eine Nachricht, bekommst, die von deinem Freund signiert ist, und deren Inhalt nur "lksgpae9ut+2tägjgofüsj" ist, merkst du, dass da was nicht stimmt.

Wofür der Angriff noch nützlich sein kann, ist z.B. bei Versionskontrollsystemen oder allgemein Dateisystem, die einen Dateiinhalt mit der entsprechenden MD5 identifizieren. Schaffst du es jetzt, zwei Dateien mit der gleichen MD5 zu haben, kannst du das System durcheinanderbringen, da diese Dateien für das System identisch sind.

Dennoch war der Angriff ein Schritt in die "richtige" Richtung und ausreichend, MD5 als ungenügend für sichere Signierung anzusehen (was sich schon früher abzeichnete, von daher war keiner so wirklich überrascht)

@droptix: Die Prüfsummendatei ist nicht irrelevant, schließlich gilt sie der Überprüfung. Und die Vermutung liegt nunmal nahe, dass es, wenn es einen Fehler gibt, auch mehrere gibt.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Dienstag 8. August 2006, 19:43

das ganze muss man ja auch nicht in ein externes file in dem sinne legen.
man könnte auch auf einer eigenen homepage ein file legen und das zu updatende programm greift auf diese homepage zu, um an den md5 zu kommen!
http://www.cs.unm.edu/~dlchao/flake/doom/
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Dienstag 8. August 2006, 20:44

Wenn das so ein programm ist das möglichst viele hacken wollen :lol: werden die schon deine anfrage auf server abfangen können (@murph)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Dienstag 8. August 2006, 20:48

aber als downloadhilfe nicht.
aber wie will man etwas hacksicher machen?
überall, wo man reinkommt, kommt man auch wieder irgendwie raus.
(außer sha^^)
http://www.cs.unm.edu/~dlchao/flake/doom/
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Mittwoch 9. August 2006, 07:57

murph hat geschrieben:das ganze muss man ja auch nicht in ein externes file in dem sinne legen.
man könnte auch auf einer eigenen homepage ein file legen und das zu updatende programm greift auf diese homepage zu, um an den md5 zu kommen!
Jo das hab ich mir auch schon überlegt. Nur dass die Kontrolle abhängig von einer Internetverbindung ist.

So langsam wird in mir das Interesse stärker, erstmal eine Antwort auf die Frage zu bekommen, wie ich den MD5-Hash der Datei in die Datei rein kriege. Also mich packt grad der Ehrgeiz das Rauszukriegen.
Antworten