Frage:
Ist es sicher, MD5 zu verwenden, um die Integrität kleiner Dateien (weniger als 15 KB) zu überprüfen?
thebunnyrules
2018-05-29 08:21:04 UTC
view on stackexchange narkive permalink

Ich weiß, dass die Kollision für MD5 seit den 90er Jahren dokumentiert wurde und dass digitale Zertifikate auf Basis von MD5 bereits 2010 vollständig kompromittiert wurden. Wie effektiv ist MD5 jedoch, um sicherzustellen, dass kleine Datenmengen nicht manipuliert werden ?

Ich habe einige kleine Textdateien mit einer Größe von einigen Seiten (sagen wir 15 KB). Ich habe SHA-256 auf ihnen verwendet, aber es wäre viel bequemer, stattdessen MD5 zu verwenden.

Wie sicher wäre MD5 als Hash-Digest für diese kleinen 15-KB-Textdateien? Wäre eine böswillige Partei in der Lage, Kollisionen für eine so kleine Datenmenge zu erzeugen, oder macht die geringe Größe dies zu einem schwierigen Unterfangen?

Warum?Warum willst du das?Warum sollte MD5 "viel bequemer" sein?
Siehe auch [Bedeutet ein identischer kryptografischer Hash oder eine identische Prüfsumme für zwei Dateien, dass sie identisch sind?] (Https://superuser.com/q/1324629/53590) unter [su].
Ist sicher das Wort, das Sie suchen?Oder meinst du zuverlässig?Es besteht wahrscheinlich keine Notwendigkeit, sich bei dieser Aufgabe auf die Sicherheit zu konzentrieren.
2004 sind nicht gerade die 90er Jahre.
Kleine Dateien sind nicht sicher.Das [2008 Rogue CA-Zertifikat] (https://www.win.tue.nl/hashclash/rogue-ca/) verwendete eine MD5-Kollision auf einem "zu signierenden" Teil von nur 927 Bytes und benötigte nur Kontrollevon 204 dieser Bytes (der "Kollisionsblock"), um die Kollision zu erzeugen.
Denken Sie neben allem anderen daran, dass Sie bereits ein Problem haben, wenn MD5 bequemer als SHA-256 ist.Vielleicht ist es kein Problem, dass Sie etwas gegen sich selbst unternehmen können (z. B. müssen Sie mit etwas kommunizieren, das ein altes Protokoll verwendet, in das MD5 von Natur aus eingebunden ist, oder mit einer Hardware mit beschleunigtem MD5, aber nicht mit SHA-256).Neben der Überlegung, ob Sie MD5 abgeben und verwenden sollen, sollten Sie auch überlegen, ob Sie die Einschränkungen angreifen können, die Ihnen MD5 aufzwingen sollen :-)
Die folgenden Antworten sind recht technisch und aufschlussreich, ändern jedoch nichts am Endergebnis.MD5 ist veraltet und sollte nicht in neuen Anwendungen verwendet werden, die einen kryptografischen Hash benötigen.Dies gilt seit fast 20 Jahren, so lange, dass das Gleiche jetzt über den Nachfolger SHA1 gesagt werden kann.Wenn Sie sich mit "bequem" auf die 128-Bit-Ausgabe beziehen, ist es besser, einen modernen Hash auf 128-Bit zu kürzen, als MD5 zu verwenden.Wenn Sie nicht definieren, was Sie als "bequem" bezeichnen, ist diese Frage wahrscheinlich ein Beispiel für ein [X-Y-Problem] (https://meta.stackexchange.com/q/66377/141193).
@James K Polk Mit einem abgeschnittenen Hash sha2 mag sha3 interessant sein, aber würde das Abschneiden sie nicht so schwach machen wie das md5?
@kaspered aus dem Wiki-Eintrag auf md5 "1996 kündigte Dobbertin eine Kollision der Komprimierungsfunktion von MD5 an".Das ist nicht einmal annähernd 2004.
@Gordon Davidson: Nach dem, was ich aus der folgenden Antwort von Forest verstanden habe: Eine Kollision ist nur dann eine Bedrohung, wenn die Datei nicht von mir erstellt wurde und ich nicht die Person war, die den ersten md5-Hash erstellt hat.Wenn jemand meine Datei nehmen und durch eine Datei mit demselben Hash ersetzen soll (ein Preimage-Angriff), wäre dies viel schwieriger.Fehlt mir etwas oder stimmt etwas mit der Antwort selbst nicht?Wenn ja, erklären Sie dies bitte direkt in den Kommentaren der Antwort, damit Forest antworten kann.
Nein, das Abschneiden des Hashs macht ihn nicht * so schwach * wie MD5.Es ist anfällig für Kollisionsangriffe mit einem Arbeitsfaktor in der Größenordnung von 2 ^ 64 Schritten, aber das ist der Preis, den Sie für einen 128-Bit-Hash zahlen müssen.Und Ihre Anwendung scheint nicht anfällig für Kollisionsangriffe zu sein.Noch wichtiger ist, dass MD5 das Krypto-Ökosystem nicht weiter verschmutzt.
Nun, da Sie so poetisch sagen, wie kann ich nein sagen ...
@thebunnyrules Sie sind immer noch in Gefahr, wenn ein Angreifer * einen Teil * einer Datei kontrollieren kann (und vorhersagen kann, was vor dem Teil kommt, den er kontrolliert).Dies ist im Wesentlichen die Situation bei der Zertifikatskollision: Eine legitime Zertifizierungsstelle hat das Zertifikat erstellt, aber der "Angreifer" konnte Teile des generierten Zertifikats steuern und den Rest vorhersagen.das war genug.Wenn in Ihrem Fall kein Angreifer * einen Teil * einer der Dateien kontrollieren kann, stecken die Angreifer in einem zweiten Preimage-Angriff fest, für den MD5 bekanntermaßen nicht wesentlich schwach ist.Aber ich würde immer noch lieber einen besseren Hash abschneiden.
Genau wie @GordonDavisson sagt, muss ein Angreifer nur beide Dateien beeinflussen, nicht unbedingt der alleinige Autor sein.Während MD5 für ein begrenztes Bedrohungsmodell technisch sicher ist, ist es dennoch eine gute Idee, auf etwas Besseres zu aktualisieren.Immerhin hat MD5 eine 2 ^ 18-Kollision, während etwas wie SHA-256, das auf 128 Bit abgeschnitten ist, 2 ^ 64 für eine Kollision erfordern würde.
Fünf antworten:
forest
2018-05-29 09:58:51 UTC
view on stackexchange narkive permalink

Die Größe der Eingabe spielt keine Rolle. Aufgrund des Geburtstagsparadoxons benötigen Sie nicht mehr als die Größe des Hash, um Kollisionen zu garantieren. Der beste Weg, um Kollisionen zu vermeiden, besteht darin, einen stärkeren Hash zu verwenden, der für sie nicht anfällig ist, wie z. B. SHA-2. Sie beschreiben jedoch einen schwierigeren Angriff als einen Kollisionsangriff, der als Preimage-Angriff bezeichnet wird und vor dem MD5 sicher ist.

Es gibt drei Arten von Angriffen * , was dazu führt, dass zwei Dateien denselben Digest haben:

  • 1. Vorbild - Suchen Sie eine Eingabe, die in einen bestimmten Hash aufgelöst wird.

  • 2. Vorbild - Ändern Sie eine Eingabe, ohne den resultierenden Hash zu ändern.

  • Kollision - Finden Sie zwei unterschiedliche Eingaben mit demselben Hash.

Diese werden als Angriffe bezeichnet, wenn sie effizienter als durch Brute-Force-Suche ausgeführt werden können. Kollisionen können immer noch auf natürliche Weise auftreten, und tatsächlich werden sie aufgrund des Pigeonhole-Prinzips mit einer nicht trivialen Menge an Eingaben garantiert, aber Hashes sind so konzipiert, dass sie absichtlich erschweren ausführen. Bei einem Hash mit einer Ausgabe von der Größe von MD5 ist die Wahrscheinlichkeit einer zufälligen, versehentlichen Kollision äußerst gering. Selbst wenn Sie 6 Milliarden zufällige Dateien pro Sekunde hashen, würde es 100 Jahre dauern, bis Sie eine 50% ige Chance erhalten, dass zwei Hashes kollidieren. MD5 eignet sich hervorragend zum Erkennen versehentlicher Beschädigungen.

Eine starke n -Bit-Hash-Funktion hat eine Sicherheitsstufe von 2 n sup> gegen 1. und 2. Preimage-Angriffe und eine Sicherheitsstufe von 2 n / 2 sup> gegen Kollisionsangriffe. Für einen 128-Bit-Hash wie MD5 bedeutet dies, dass er eine Sicherheitsstufe von 2 128 gegen Vorbilder und 2 64 gegen Kollisionen aufweist. Wenn sich Angriffe verbessern, wird die tatsächliche Sicherheitsstufe, die sie bieten kann, langsam verringert.

MD5 ist anfällig für einen Kollisionsangriff, für dessen Ausnutzung nur 2 18 sup> Hash-Aufrufe anstelle der beabsichtigten 2 64 sup> erforderlich sind. Sofern der Angreifer nicht beide Dateien generiert, handelt es sich nicht um einen Kollisionsangriff. † sup> sup> Ein Angreifer, der über eine Datei verfügt und diese böswillig ohne die ändern möchte Das Ändern von Hashs müsste einen zweiten Preimage-Angriff starten, der mit moderner Technologie völlig unmöglich gegen MD5 ist (der beste Angriff hat eine Komplexität von 2 123,4 sup) >, verglichen mit dem theoretischen Maximum von MD5 von 2 128). Kollisionsangriffe sind in verschiedenen Situationen relevant. Wenn Sie beispielsweise eine ausführbare Datei erhalten, die von einem Angreifer ohne Hintertür erstellt wurde, können Sie sie hashen und den Hash speichern. Diese ausführbare Datei könnte dann später durch eine Backdoor-Version ersetzt werden, aber der Hash wäre der gleiche wie der gutartige! Dies ist auch ein Problem für Zertifikate, bei denen jemand ein Zertifikat für eine Domain einreichen könnte, die er besitzt, das Zertifikat jedoch absichtlich mit einem Zertifikat für eine Domain kollidiert, die er nicht besitzt.

Es ist sicher, MD5 zum Überprüfen von Dateien zu verwenden, solange der gespeicherte Hash nicht manipuliert wird und als korrekt eingestuft werden kann und solange die zu überprüfenden Dateien nicht von einem Angreifer erstellt (oder beeinflusst!) Wurden. Es kann dennoch eine gute Idee sein, einen stärkeren Hash zu verwenden, um zu verhindern, dass ein potenzieller praktischer Preimage-Angriff gegen MD5 in Zukunft Ihre Daten gefährdet. Wenn Sie einen modernen Hash wünschen, der sehr schnell und dennoch kryptografisch sicher ist, sollten Sie sich BLAKE2 ansehen.

* Während es andere Angriffe gegen MD5 gibt, wie z Längenerweiterungsangriffe, die alle von @LieRyan erwähnten Merkle-Damgård-Hashes betreffen, sind für die Überprüfung der Integrität einer Datei anhand eines bekanntermaßen korrekten Hashs nicht relevant. sub>

† sup> Eine Variante des Kollisionsangriffs, die als Kollisionsangriff mit ausgewähltem Präfix bezeichnet wird, kann zwei beliebige Nachrichten (Präfixe) aufnehmen und zwei Werte finden, die, Wenn an jede Nachricht angehängt, führt dies zu einem kollidierenden Digest. Dieser Angriff ist schwieriger durchzuführen als ein klassischer Kollisionsangriff. Wie der Längenverlängerungsangriff gilt dies nur für Merkle-Damgård-Hashes. Sub>

Es sollte hinzugefügt werden, dass zusätzlich zu einem zweiten Vorbildangriff, der an sich nicht durchführbar ist, ein sinnvoller zweiter Vorbildangriff noch schwieriger ist.Sie müssen nicht nur jeden Blob finden, der denselben Hash erzeugt (das ist eine komplexe Aufgabe von 2 ^ 123), sondern auch einen, der plausibel ist (d. H. In diesem Fall eine lesbare, aussagekräftige Textdatei ohne Kauderwelsch).Fügen Sie nun die Dateilänge zu Ihrem Hash hinzu, um ihn weiter zu verstärken (was beispielsweise das Hinzufügen von nicht gedruckten Zeichen unmöglich macht), und ich möchte wirklich, dass jemand diese abzieht.
@Damon Sie müssen die Dateilänge nicht zu einem Hash hinzufügen.Tatsächlich codieren Merkle-Damgård-Hashes (von denen MD5 einer ist) die Länge der Daten, die im letzten Block gehasht werden sollen.Das Einschränken der Eingabetypen erschwert einen Preimage-Angriff nicht wesentlich.Es bedeutet nur, dass Sie in den Bits, die Sie umschalten können, eingeschränkter sind, was wirklich keine Einschränkung ist, solange Sie in der Lage sind, ein paar Dutzend Bits umzuschalten.
Was genau meinen Sie damit, dass SHA-2 "nicht anfällig" für Kollisionen ist?
@forest: Ich bin mir nicht sicher, ob Sie dort 100% korrekt sind.Zwar codieren M-D-Hashes die Länge der Daten, Sie können jedoch "foo" und "foo2" problemlos hashen, und beide erzeugen einen 128-Bit-Blob, der unabhängig von der Länge der ursprünglichen Nachricht ist.Wenn "foo" und "foo2" oder vielleicht "foo1234" kollidieren und das ist alles, was Sie am Ende wollen, haben Sie einen funktionierenden Angriff.Wenn es jedoch ausdrücklich bekannt ist, dass "foo" 3 Buchstaben hat (nicht 4, noch 6 oder 8), dann ist das schwer zu erreichen.
@Damon Es ist ausdrücklich bekannt, dass "foo" 3 Buchstaben hat (oder besser 3 × 8 = 24 Bit).Siehe [RFC 1321] (https://www.ietf.org/rfc/rfc1321.txt) § 3.2.Dies bedeutet, dass es nicht unabhängig von der ursprünglichen Länge ist._H (m || Länge (m)) _ gibt Ihnen keinen Vorteil gegenüber _H (m) _.
@forest: Ich denke, die Jungs, die Flickr 2009 gehackt haben, waren alle Lügner, da es keinen Längenerweiterungsangriff auf MD5 gibt.Mein schlechtes, ich habe den Ansatz falsch verstanden.
@Damon Ich denke, Sie verstehen falsch, wie ein Längenverlängerungsangriff funktioniert.Auf der Cryptography-Website befindet sich eine [nützliche Antwort] (https://crypto.stackexchange.com/a/3979/54184), die erklärt, warum dies trotz des Auffüllens möglich ist.Sie können dies jedoch verhindern, indem Sie einen Längenwert vorbereiten (oder eine Konstruktion verwenden, die solchen Angriffen wie HMAC widersteht), aber einfach "die Länge explizit codieren" reicht bei weitem nicht aus.
@chrylis Ich meinte, dass alle Hashes in der SHA-2-Familie keinen bekannten Angriffen ausgesetzt sind, die Kollisionen wesentlich einfacher zu konstruieren machen als über eine umfassende Suche.
Es reicht nicht aus, dass die Dateien nicht "von einem Angreifer erstellt" werden - selbst wenn ein Angreifer nur einen Teil der Dateien kontrolliert, kann er möglicherweise dennoch eine Kollision erzwingen.
Zu Ihrer Information, der angebliche Preimage-Angriff auf MD5 hat ein weitaus schlechteres Preis-Leistungs-Verhältnis als generische Angriffe.es ist bestenfalls eine theoretisch interessante Beobachtung, nicht einmal ein theoretischer Angriff.Ich empfehle jedoch dringend, einem allgemeinen Publikum über die Details verschiedener Arten von Angriffen auf MD5 zu streiten, ohne die Erfahrung zu haben, zu erkennen, wie schwierig das Protokolldesign ist, oder zu erkennen, wie Kollisionen oder Längenerweiterungen für Fälschungen ausgenutzt werden können.Naives Nachdenken darüber führt dazu, dass Menschen unverantwortliche Entscheidungen wie die Verwendung von MD5 in rsync treffen, und macht sie resistent gegen die Behebung der Probleme.
Beispielsweise muss der Angreifer nicht beide Dateien erstellen.MD5-Zertifikate wurden in der Praxis von einem Angreifer gefälscht, der Teile der Dateien, die nicht unter ihrer Kontrolle standen, vorhersagen und einige der Dateien kontrollieren konnte.Ohne ein viel spezifischeres Modell der Handlungen des legitimen Benutzers und der Befugnisse des Gegners wird dieser Rat wahrscheinlich jemanden in Schwierigkeiten bringen, wenn er sich nicht die Zeit nimmt, das Protokolldesign zu studieren und die Konsequenzen für sich selbst herauszufinden.
MechMK1
2018-05-29 14:26:50 UTC
view on stackexchange narkive permalink

Es hängt davon ab, gegen was Sie sich verteidigen möchten.

Sicherheit ist niemals ein Spiel für alle. Wenn es so wäre, gäbe es nicht 12941 verschiedene Hash-Algorithmen. Stattdessen müssen Sie verstehen, dass jede Sicherheitsmaßnahme Sie gegen eine bestimmte Art von Angriff schützt. Sie geben ein Kennwort in Ihren Computer ein, um sich gegen zufällige Personen zu schützen, die darauf zugreifen. Dies liegt nicht daran, dass es so viel Spaß macht, bei jeder Anmeldung whereD1DweG0sowron6 einzugeben.

Bei Hash-Algorithmen können Sie dies grob tun klassifizieren Sie sie als "kryptografische Hashes" und "nicht kryptografische Hashes". Kryptografische Hash-Algorithmen sind so konzipiert, dass sie einer Reihe von Angriffen standhalten, während nicht-kryptografische Hashes so schnell wie möglich ausgeführt werden. 1 sup> MD5 wird beispielsweise als kryptografischer Hash betrachtet, ist jedoch so fehlerhaft, dass dies der Fall ist Nur als nicht kryptografischer Hash verwendbar.

Wann wird ein nicht kryptografischer Hash verwendet?

Wenn Sie beim Kopieren einer Datei von einem Speicherort an einen anderen Bit-Flips erkennen möchten ( B. ein USB-Stick an einen Laptop), dann ist MD5 absolut die richtige Wahl. Ich würde sogar sagen, dass jeder schnelle, nicht kryptografische Hash gut ist. Wenn Sie Dateien kopieren, müssen Sie realistisch gesehen keine Angst vor Angreifern haben. Wenn Sie paranoid sind, dass Hacker Ihren Kernel ändern können, können Sie Ihre Probleme durch Hinzufügen von Hashes nicht lösen.

Überprüfen der Dateiintegrität mit Eingriffen von Angreifern

Wenn Sie diese signieren und veröffentlichen möchten Dateien, dann kann ein Angreifer möglicherweise eine möglicherweise legitime Datei mit demselben Hash erstellen. Dies bedeutet, dass Ihre Signatur für die schädliche Datei genauso gültig ist.

Ein Beispiel

Lassen Sie uns Sagen Sie, Ihre ursprüngliche Nachricht m1 sieht folgendermaßen aus:

Hiermit erkläre ich, dass der Hase regiert!

Sie verwenden Ihre Hash-Funktion h (m1) und erhalten Sie den Digest d1 . Anschließend signieren Sie den Digest d1 und erhalten eine Signatur s1 .

Anschließend veröffentlichen Sie Ihre Nachricht m1 , Ihre Signatur s1 und Ihre Hash-Funktion h().

I. Möglicherweise ist er der Angreifer im Szenario und erstellt eine Nachricht m2 , die genau den gleichen Hash in der von Ihnen gewählten Hash-Funktion enthält:

Es ist öffentlich bekannt, dass Hunde besser sind als Hasen in jeder Hinsicht ...

Da h (m1) = h (m2) = d1 , ist die Signatur s1 gültig Für Ihren ursprünglichen m1 und meinen böswilligen m2 .

Um sich gegen solche Angriffe zu verteidigen, ist es wichtig, einen starken Hash-Algorithmus mit zu wählen hohe Beständigkeit gegen Kollisionen. Dies bedeutet, dass es für mich sehr schwierig wird, einen m2 zu finden, wobei h (m2) = h (m1) .

Gute Entscheidungen wären SHA256 und SHA512 sowie Tonnen anderer. Es scheint, dass jeder einige bevorzugte Nicht-Mainstream-Hash-Funktionen hat, aber SHA256 und SHA512 haben eine sehr breite Unterstützung und es wird schwierig für Sie sein, ein System zu finden, das diese Hashes nicht unterstützt. Und da Ihre Dateien sehr klein sind, sollte die Berechnung des Hashs fast sofort erfolgen.

Auf meinem 800-MHz-Computer dauerte die Berechnung des SHA512-Hash einer 16-KB-Zufallsdatei beispielsweise 3 ms, sodass dies auch bei einem Toaster der Fall sein sollte Seien Sie relativ schnell.


1 sup> Sie können dasselbe mit Zufallszahlengeneratoren sehen. Kryptografische PRNGs zielen darauf ab, Zufallszahlen zu liefern, die wirklich schwer zu erraten sind, während Nicht-Krypto-PRNGs darauf abzielen, nur Zahlen anzugeben, die auf den ersten Blick zufällig aussehen und dies schnell tun.

Während nichts, was Sie sagen, falsch ist, erwähnen Sie MD5 nirgendwo in der Antwort.Diese Frage bezieht sich auf MD5 und die Überprüfung der Dateiintegrität.MD5 ist AFAIK perfekt für diesen Zweck geeignet (mit der Einschränkung, dass Risse im Algorithmus-Design manchmal auf andere mögliche Fehler hinweisen).
Der Angriff, den Sie beschreiben, ist ein First-Preimage-Angriff.Das Szenario, in dem ein Kollisionsangriff relevant wäre, wäre, wenn jemand anderes Ihnen ein Programm gegeben und Sie gebeten hätte, zu überprüfen, ob nichts Böses darin ist, und eine Nachricht mit dem Titel "Das Programm mit Hash __ ist sicher" zu veröffentlichen oder zu unterschreiben.Ein Angreifer könnte (unter Verwendung eines Kollisionsangriffs) zwei Programme erfinden, die bis auf den Inhalt eines Zeichenfolgenliteral identisch waren, und Dinge erfinden, so dass (1) ein Programm harmlos und das andere bösartig war und (2) beide Programme hashen würdenauf den gleichen Wert.
@SteveSether Ich erwähne MD5, wenn es um nicht kryptografische Hashes geht.Wenn es ausschließlich zur Überprüfung der Dateiintegrität ohne Eingriffe des Angreifers verwendet wird, kann MD5 sicher verwendet werden, ist jedoch nicht die beste Wahl.
@supercat In der Tat, aber es war nur ein Beispiel dafür, wie eine Störung durch einen Angreifer aussehen könnte.In beiden Fällen ist es eine gute Idee, einen starken kryptografischen Hash-Algorithmus zu verwenden, wie ich vorgeschlagen habe
Ich stimme dem zu, weil die Antwort impliziert, dass MD5 nicht für kryptografische Hashes geeignet ist.Wie Forest oben ausführt, ist es für einige kryptografische Zwecke durchaus akzeptabel, nur nicht für den Kollisionsangriff, den @supercat und Forest erwähnen.
@DavidStockinger: Ich habe die Leistung von MD5 im Vergleich zu anderen Hashes nicht profiliert, aber in Fällen, in denen die Leistung wichtig ist, ist ein schnellerer Hash, der nicht in allen Anwendungsfällen sicher ist, aber in dem, der wichtig ist, sicher, möglicherweise besser als ein langsamerer HashDies wäre auch in irrelevanten Anwendungsfällen sicher.
Lie Ryan
2018-05-29 09:11:45 UTC
view on stackexchange narkive permalink

Die Größe der Datei macht keinen Unterschied. MD5 basiert auf der Merkle-Damgård-Konstruktion, die für den Längenerweiterungsangriff anfällig ist. 15kb reichen aus, um den Längenverlängerungsangriff durchzuführen. Es gibt viele bekannte Kollisionen und Methoden zum Erzeugen von MD5-Kollisionen mit einer Länge von nur wenigen hundert Bytes. Sobald eine Basiskollision gefunden wurde, bedeutet die Anfälligkeit für Längenerweiterungen, dass sie zur Erzeugung einer beliebigen Anzahl weiterer Kollisionen verwendet werden können.

Wie ist der Angriff auf die Längenerweiterung relevant, um sicherzustellen, dass Dateien nicht manipuliert wurden?Alle willkürlichen Kollisionen erfordern, dass Dateien tatsächlich mit einer Kollision beginnen, wonach sie weiter erweitert werden können.Es ist nicht möglich, eine beliebige, harmlose Datei durch eine schädliche Datei mit demselben Hash zu ersetzen.
Die Erklärung des Längenerweiterungsangriffs, auf den Sie auf Wikipedia verlinken, stimmt überhaupt nicht mit dieser Situation überein, da es unwahrscheinlich ist, dass eine kompromittierte Datei mit einem / Matching / Hash erstellt wird.
Der Längenerweiterungsangriff soll vor dem Szenario schützen, dass jemand, der den Hash einer Nachricht kennt, aber nicht deren Inhalt, bestimmen kann, wie der Hash der Nachricht aussehen würde, wenn ein bestimmter zusätzlicher Inhalt angehängt würde.Dem Angreifer eine Möglichkeit zu geben, herauszufinden, wie hoch der Hash-Wert einer Datei sein würde, scheint im OP-Szenario keine große Sicherheitslücke zu sein.
Peter Green
2018-05-29 22:36:24 UTC
view on stackexchange narkive permalink

Die Größe an sich ist nicht sehr relevant, die tatsächlichen Kollisionsdaten können so klein wie ein einzelner Block sein.

Mit einer Sammlung von Textdateien sind Sie jedoch viel sicherer als mit einer Sammlung von PDFs oder ähnlichem.

Warum? weil die Ergebnisse eines Kollisionsangriffs im Allgemeinen dazu führen, dass beide Dateien des Paares "zufällig aussehenden Müll" enthalten. In einem umfangreichen Format kann dieser zufällig aussehende Müll nicht sichtbar sein, sodass der Angreifer den Sammlungsadministrator dazu verleiten kann, eine seiner beiden kollidierenden Dateien zu akzeptieren.

In einer Textdatei ist der Inhalt jedoch für jeden sichtbar.

Dies ist teilweise falsch.Bei einem MD5-Kollisionsangriff müssen keine zufälligen Bits umgedreht werden.Sie können die Bits, die Sie umdrehen möchten, leicht auf diejenigen beschränken, die lediglich druckbare ASCII-Zeichen in nicht druckbare ändern (z. B. ENQ oder NAK).Für jede nicht triviale ASCII-Datei gibt es viele Bits, die Sie frei ändern können, ohne den Text sichtbar zu beschädigen.
Squeamish Ossifrage
2018-05-30 18:40:10 UTC
view on stackexchange narkive permalink

Kurze Antwort: Nein, es ist nicht sicher, MD5 zu verwenden, um die Integrität von kurzen oder langen Dateien zu überprüfen.

Die vollständige Antwort hängt davon ab, wie sicher sie sind Sie sind in der Verteilung von Fehlern .

Gibt es eine unabhängige zufällige Wahrscheinlichkeit von Bitflips an jeder Position in der Datei aufgrund der Übertragung auf einem leicht verlustbehafteten Kanal wie einer seriellen Schnittstelle? Wenn ja, könnten Sie MD5 verwenden, aber es ist viel billiger, eine CRC zu verwenden, die garantiert einen einzelnen Bit-Flip erkennt und durch Standardauswahl des CRC-Polynoms zum Erkennen aller ungeraden Anzahlen von Bit-Flips garantiert werden kann.

Sie haben jedoch nach sicher gefragt, was darauf hindeutet, dass Sie etwas intelligentere Gegner in Betracht ziehen als eine verlustbehaftete serielle Schnittstelle. Wenn Sie nicht sicher sind, dass es sich bei den Fehlern um unabhängige zufällige Bitflips handelt, verwenden Sie weder MD5 noch eine CRC. Für intelligente Gegner ist es sehr einfach, Paare zu finden von verschiedenen Dateien, die einen gemeinsamen MD5-Hash oder eine gemeinsame CRC-Prüfsumme verwenden. In vielen Szenarien kann dies einem Gegner ermöglichen, Dokumente zu fälschen, die Ihr MD5-System nicht erkennt. Die Größe der Datei ist nicht relevant: Es ist einfach, MD5-Kollisionen in Dateien mit einer Länge von nur 64 Byte zu finden, ohne deren Begrenzung zu begrenzen.

Es gibt einen Ort, an dem die technischen Unterschiede erörtert werden können zwischen Kollisionsangriffen, Vorbildangriffen und Zweitvorbildangriffen. Eine Antwort auf eine allgemeine Frage , ob es sicher ist, die Integrität von Dateien zu überprüfen, ist kein solcher Ort. Wenn Sie ein spezifisches Protokoll im Auge haben, in dem Sie die genauen Befugnisse des Gegners und das genaue Verhalten der legitimen Benutzer im Protokoll artikulieren können, und gelten Implementierungsbeschränkungen Beschränken Sie Ihre Auswahl an Hash-Funktionen so, dass Sie MD5 berücksichtigen müssen. Dann können wir (möglicherweise auf crypto.SE) diskutieren, ob es sicher ist, MD5 in diesem Protokoll zu verwenden, um dies zu erreichen die Sicherheit, die Sie gegen einen solchen Gegner erreichen möchten.

Es wäre jedoch viel einfacher und sicherer, nur SHA-2, SHA-3 oder BLAKE2 zu verwenden.

Würde der Downvoter gerne erklären, womit Sie in diesem Beitrag nicht einverstanden sind?


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...