Können zwei verschiedene Firmware-Dateien dieselbe MD5-Summe haben?

8

Können zwei verschiedene Binärdateien dieselbe md5-Summe haben? Eine binäre Firmware-Datei hat eine andere Versionsnummer und ist als überarbeitet markiert. Ein kleiner Fehler wurde behoben. Aber beide Dateien haben die gleiche MD5-Summe. Ich würde annehmen, dass die überarbeitete Datei nicht die gleiche MD5-Summe haben kann. Kann dies ein Fehler sein?

Minto
quelle
Haben Sie es mit einem Terminal wie "md5sum filename" versucht oder im Web nach Hashes gesucht?
al0s
@ al0s Ich habe md5sum selbst vom Terminal aus ausprobiert, beide md5 sind gleich. Es wurde kein MD5 vom Hersteller bereitgestellt. Ich ging davon aus, dass beide Dateien identisch sind, obwohl der Hersteller behauptet, sie seien unterschiedlich. Jetzt bin ich sicher, dass sie gleich sind.
Minto
3
Diese Antworten konzentrieren sich viel zu sehr auf die kryptografischen Sicherheitsaspekte des Hash und viel zu wenig auf die pragmatische Natur der Frage. Wenn Hash und Größe übereinstimmen, haben Sie wirklich dieselbe Datei. Verwenden Sie diffin diesem Fall, um sicher zu sein. Ansonsten sha256sumwird es immer beliebter! Sie können es sogar in Windows PowerShell verwenden get-filehash.
Trognanders
3
Ist es möglich? Ja . Es gibt unendlich viele Binärdateien, aber nur eine endliche Anzahl von md5-Hashes (da sie eine feste Größe haben), daher gibt es unendlich viele Dateien, die denselben Hash haben. Dies gilt für alle Hashing-Funktionen. Ist dies in Ihrer speziellen Situation der Fall? Unwahrscheinlich, aber wir können es nicht sagen, ohne die tatsächlichen Dateien zu sehen ...
Bakuriu

Antworten:

15

In den vorhandenen Antworten wird nicht darauf hingewiesen, warum eine Kollision in diesem Fall als verschwindend unwahrscheinlich angesehen wird.

MD5 wurde wie jeder Hashing-Algorithmus absichtlich so konzipiert, dass keine Kollision auftritt, wenn Sie nur eine Handvoll Zeichen ändern. Sie müssen die meisten, wenn nicht alle ändern, um zum selben Hash zurückzukehren. Das liegt daran, dass der Sinn eines Hash darin besteht, Einzelbit- (oder Wenig-Bit-) Fehler zu erkennen. In dieser Problemdomäne möchten Sie, dass die kleineren Änderungen definitiv eine Hash-Änderung auslösen. Obwohl wir jetzt wissen, dass MD5 fehlerhaft ist, gilt diese Eigenschaft bis heute.

Wenn also die neue Version der Firmware nicht völlig anders ist und Sie nicht gerade ein einmaliges Phänomen erlebt haben, stehen die Chancen groß, dass Sie die alte Version einfach wieder erhalten haben. Herzlichen Glückwunsch, denn dies ist der Hash-Check-Prozess, der genau wie beabsichtigt funktioniert. :) :)

Leichtigkeitsrennen im Orbit
quelle
1
"einmal in einer Million" ist eine unglaubliche Untertreibung. 2 ^ 128 ist ungefähr 10 ^ 38,5, also näher an One-in-a-Duodecillion, ein Ereignis, das so unwahrscheinlich ist, dass es sich nicht lohnt, es innerhalb der (projizierten) Lebensdauer unseres Sonnensystems zu betrachten.
David Foerster
@ DavidFoerster: "One-in-a-Million" ist eine englische Redewendung, die "sehr selten" bedeutet. Es soll nicht mathematisch genau sein.
Leichtigkeitsrennen im Orbit
Ich bin mir dessen bewusst, aber ich wollte hervorheben, dass die Chance tatsächlich 32 Größenordnungen niedriger ist als das sprichwörtliche Millionstel, das zur Veranschaulichung der Situation wichtig ist.
David Foerster
+1 = 9, 1 mehr und du bekommst ein Schmuckstück um 10 :)
WinEunuuchs2Unix
18

Na sicher. Die Kollisionsanfälligkeit von MD5 ist bekannt (siehe Crypto.SE , Wikipedia ). Obwohl es sich immer noch um ein Ereignis mit geringer Wahrscheinlichkeit handelt, kann es durchgeführt werden. In Ihrem Fall würde ich jedoch einen Fehler beim Kopieren der Dateien vermuten.

muru
quelle
In meinem Fall wurde für die FW-Dateien kein md5 angegeben, ich habe es selbst überprüft. Ich denke, es gibt einen Fehler, die Dateien sind gleich, obwohl als unterschiedliche Revision markiert.
Minto
@minto vorausgesetzt, Sie haben beim Herunterladen der Dateien keinen Fehler gemacht, es muss ein Fehler auf der Serverseite sein (oder sie haben auch die
fehlerhafte
@mint können Sie überprüfen, ob die beiden Dateien identisch sind oder nicht diff file1 file2. Wenn der Befehl stumm ist, sind sie gleich.
Rmano
2
"Ich würde einen Fehler beim Kopieren der Dateien vermuten" - Die Wahrscheinlichkeit, dass dies versehentlich passiert, ist im Grunde genommen 0. Wenn zwei Dateien dieselbe md5 haben, sind sie entweder dieselbe Datei oder eine wurde absichtlich (böswillig) geändert, um die zu haben gleiche MD5 wie die andere.
BlueRaja - Danny Pflughoeft
1
@ BlueRaja-DannyPflughoeft Ich bin anderer Meinung. Ich habe Dateien heruntergeladen und versehentlich dieselbe Datei unter verschiedenen Dateinamen gespeichert (beim erneuten Herunterladen, da der ursprüngliche Download aus irgendeinem Grund nicht funktioniert hat). Menschliches Versagen ist auch auf der Serverseite durchaus möglich.
Muru
11

Im Allgemeinen können zwei Dateien md5nur dann denselben Hash haben, wenn ihr Inhalt genau gleich ist. Selbst eine einzelne Variation erzeugt einen völlig anderen Hashwert.

Es gibt jedoch eine Einschränkung: Eine md5Summe beträgt 128 Bit (16 Byte). Da die Anzahl der verschiedenen möglichen Dateiinhalte unendlich ist und die Anzahl der verschiedenen möglichen md5-Summen endlich ist, besteht die Möglichkeit (wenn auch in den meisten Fällen mit geringer Wahrscheinlichkeit), dass Hashes kollidieren. Mit anderen Worten, zwei verschiedene Dateien können beim Hash mit md5 dieselbe Summe erzeugen.

Aus diesem Grund ist es in einigen Fällen besser, einen höheren Bit-Hash (mehr mögliche unterschiedliche Ausgaben) zu verwenden, um die (bereits geringe) Wahrscheinlichkeit einer versehentlichen Hash-Kollision zu verringern und die Schwierigkeit zu erhöhen, eine absichtliche Hash-Kollision durch Brute Force zu erzeugen.

Beispiele für höhere Bit - Hash - Werte umfassen die SHA-2 - Familie von Hashes, insbesondere sha256, sha384oder sha512(das ist die beste.) Die Zahl nach shader Anzahl der Bits angibt , der entsprechende Hash - Algorithmus erzeugt.

heemayl
quelle
1
Wenn eine Firmware-Datei überarbeitet wurde und einige Änderungen vorgenommen wurden, kann die md5-Summe auf keinen Fall dieselbe sein. Ich habe früher diff -q <file1> <file2>Dateien verglichen und es zeigt, dass die Dateien identisch sind.
Minto
10
"Zwei Dateien können md5nur dann denselben Hash haben, wenn ihr Inhalt genau gleich ist. Selbst eine einzige Variation würde einen völlig anderen Hashwert erzeugen." - Das ist falsch. Aufgrund des Pigeonhole-Prinzips gibt es tatsächlich unendlich viele Dateien, die denselben Hash haben.
Jörg W Mittag
2
@ JörgWMittag Überprüfen Sie den Vorbehaltsabsatz direkt nach :)
heemayl
heemayl, @ JörgWMittag ist richtig. Ich habe eine Bearbeitung vorgeschlagen, die diese bereits sehr gute Antwort verbessert, um genau zu sein und nicht länger Nitpicks zu unterliegen. ;) (Ich hoffe.) :)
Wildcard
2
Verwenden Sie für Binärdateien (Nicht-Textdateien) cmpanstelle von diff.
Waltinator
3

Wie andere gesagt haben, ist eine MD5-Kollision hypothetisch möglich, aber äußerst unplausibel (1 zu 2 ^ 128 ist nur eine 1 zu 340.282.366.920.938.463.463.374.607.431.768.211.456 Wahrscheinlichkeit), und Sie haben höchstwahrscheinlich einen Fehler beim Kopieren von Dateien.

Ich würde empfehlen, die beiden Dateien byteweise mit einer der vielen hier beschriebenen Methoden zu vergleichen: /superuser/125376/how-do-i-compare-binary-files- unter Linux .

Oder einfach diff file1 file2- und wenn Sie nicht die Meldung "Binärdateien Datei1 und Datei2 unterscheiden" erhalten, sind die Dateien identisch.

Dewi Morgan
quelle
Ziemlich die gleiche Antwort wie Muru.
TheWanderer
@ Zacharee - in meinem ersten Satz habe ich die Antworten bestätigt, die vorher kamen. In meinem zweiten habe ich den Leser auf eine Lösung hingewiesen.
Dewi Morgan
2
Wenn Ihre Antwort nicht viel mehr als einen Link hinzufügt, wäre es besser als Kommentar
TheWanderer
Die Antwort wurde bearbeitet, um sie mit weiteren Informationen zu verbessern, die in anderen Antworten als Antwort auf diese Beschwerden nicht enthalten sind.
Dewi Morgan
1

Alle obigen Antworten ignorieren das wichtigste Detail:

Eine MD5-Prüfsumme hat 128 Bit. Das heißt, es gibt nur 2 ^ 128 verschiedene MD5-Werte. Wie viele verschiedene Firmware-Images sind möglich? Nun, das hängt davon ab, wie groß sie sind, und davon, wie viel Prozent der zufälligen Byte-Sequenzen als gültige Firmware angesehen werden können. Es besteht jedoch die Möglichkeit, dass mehr als 2 ^ 128 mögliche Firmware-Images vorhanden sind.

Eine viel mehr, was bedeutet , es müssen Duplikate sein.

Die Wahrscheinlichkeit, dass ein bestimmtes Firmware-Image mit einer bestimmten MD5-Prüfsumme übereinstimmt , beträgt jedoch nur 1 zu 2 ^ 128, was eine sehr kleine Zahl ist.

Sehr klein.

Die Wahrscheinlichkeit, dass zwei Entwickler während der Existenz der menschlichen Zivilisation versehentlich unterschiedliche Bilder mit derselben MD5-Prüfsumme erstellen, ist zu gering, als dass Sie sich Sorgen machen könnten.

Das ist aus Versehen . Bewusst ist eine andere Frage. Wenn Sie für die NSA arbeiten, reichen 128 Bit nicht aus, um Ihre Chefs zufrieden zu stellen, und MD5 weist bekannte Schwachstellen auf, die es schwächer als 128 Bit machen.

Aber wenn Sie für die NSA gearbeitet haben, dann haben Sie das wahrscheinlich schon gewusst.

Solomon Slow
quelle
0

Sehr unwahrscheinlich, aber möglich. Überprüfen Sie die Dateigröße und die Daten auf weitere Informationen. Wenn die Dateien unterschiedlich sind, ist es noch unwahrscheinlicher, dass sie dieselbe Größe und denselben Hash haben.

Gringo Suave
quelle