Welchen Wert haben MD5-Prüfsummen, wenn der MD5-Hash selbst möglicherweise auch manipuliert worden wäre?

8558
Austin ''Danger'' Powers

Downloads auf Websites enthalten manchmal eine MD5-Prüfsumme, anhand derer die Integrität der Datei bestätigt werden kann. Ich habe gehört, dass nicht nur beschädigte Dateien sofort erkannt werden können, bevor sie ein Problem verursachen, sondern auch, dass böswillige Änderungen leicht erkannt werden.

Ich folge der Logik in Bezug auf die Dateibeschädigung, aber wenn jemand absichtlich eine schädliche Datei hochladen möchte, kann sie eine entsprechende MD5-Prüfsumme generieren und diese zusammen mit der geänderten Datei auf der Download-Site veröffentlichen. Dies würde jeden täuschen, der die Datei herunterlädt und glaubt, sie sei unverändert.

Wie können MD5-Prüfsummen einen Schutz vor absichtlich veränderten Dateien bieten, wenn nicht bekannt ist, ob die Prüfsumme selbst gefährdet ist?

39
Warum muss eine Datei nach der Änderung dieselbe Größe haben? Ich sage, eine Datei könnte geändert werden, ein neuer Hash wurde für die bösartige Version generiert ... dann könnte der auf der Website veröffentlichte Hash durch die bösartige Entität durch den neuen ersetzt werden. Austin ''Danger'' Powers vor 9 Jahren 0
Die meisten Download-Sites geben die Dateigröße und oft das Erstellungsdatum an. Ich vermute, diese könnten auch auf der Website geändert werden. Würde der Websitebesitzer nicht alle Eingriffe in die Website erkennen? fixer1234 vor 9 Jahren 1
Wenn wir uns darauf verlassen, dass der Host der Website subtile Zeitstempelabweichungen feststellt, anstatt dass der MD5-Hash als Echtheitssiegel fungiert ... dann ist der Schutz durch die Prüfsumme ziemlich verflogen. Austin ''Danger'' Powers vor 9 Jahren 3
Ich beziehe mich auf Dinge wie Protokolle des Websitezugriffs, anstatt subtile Inhaltsänderungen zu bemerken, obwohl die Webseite einen eigenen Hash haben könnte, der dem Websitebesitzer bekannt ist. fixer1234 vor 9 Jahren 1
Der Punkt ist, dass Personen, die auf die Website zugreifen, keine Möglichkeit haben zu wissen, wie proaktiv der Websitehost diese Protokolle überprüft. Die MD5-Prüfsumme soll Menschen die Möglichkeit geben, die Integrität ihrer eigenen Downloads zu überprüfen, ohne sich auf die Handlungen anderer Parteien zu verlassen. Austin ''Danger'' Powers vor 9 Jahren 1
MD5 kann nicht gegen Dateiinhalte generiert werden, so dass es niemals eine Möglichkeit gibt, die Integrität der Datei zu überprüfen - abgesehen von Beschädigungen. Dies führt jedoch häufig zu einer anderen Dateigröße, so dass der Hash anders ist. Wenn eine schädliche Datei über einen gültigen Hash verfügt, gibt es zu diesem Zeitpunkt keine Möglichkeit, dies zu sagen. Kinnectus vor 9 Jahren 1
SHA ersetzt angeblich MD5, weil es schwieriger ist, denselben Hash aus einer modifizierten Datei zu erzeugen. Es macht jedoch keinen Unterschied für das von Ihnen angesprochene Szenario. fixer1234 vor 9 Jahren 0
@ BigChris Ich bin nicht sicher, was du meinst, aber es klingt falsch. Kryptographische Hash-Algorithmen wie MD5 beziehen sich vollständig auf die Nachrichtendaten. Zwei zufällige Nachrichten derselben Länge haben mit großer Wahrscheinlichkeit unterschiedliche Hashwerte. Matt Nordhoff vor 9 Jahren 4
@MattNordhoff genau. Wenn eine MD5-Prüfsumme nicht basierend auf Dateidaten generiert wird, auf welcher * basiert *? Austin ''Danger'' Powers vor 9 Jahren 3
MD5-Hash-Daten würden auf den Daten erstellt, ja, aber es würde nicht zu viel Aufwand erfordern, um eine schädliche Datei mit demselben Hash zu erstellen. Wie gesagt, es gibt keine Möglichkeit zu überprüfen, ob die Datei schädlich ist oder nicht. Lesen Sie: http://www.mscs.dal.ca/~selinger/md5collision/ Kinnectus vor 9 Jahren 2
@MattNordhoff Wobei "fast sicher" = 2 ^ (n / 2) wobei * n * die Anzahl der Bits im ausgegebenen Hashwert ist. [Geburtstagsangriffe] (https://en.wikipedia.org/wiki/Birthday_attack). a CVn vor 9 Jahren 0
In einigen Fällen werden Hashes auf Servern von Drittanbietern veröffentlicht, während tatsächliche Downloads auf Spiegeln und / oder CDNs von Drittanbietern gehostet werden. el.pescado vor 9 Jahren 2
Man sagt, dass es bei der Verschlüsselung nur um die Hebelwirkung geht. Statt die gesamte Datei auszublenden, können Sie nur einen winzigen Schlüssel verbergen. Kryptografisches Hashing ist der gleiche Weg - anstatt die gesamte Datei zu überprüfen, können Sie nur einen winzigen Schlüssel überprüfen. that other guy vor 9 Jahren 0

12 Antworten auf die Frage

89
Daniel B

Ich habe gehört, dass dadurch auch [...] bösartige Änderungen erkannt werden sollen.

Nun, du hast falsch gehört. Prüfsummen für MD5 (oder SHA oder was auch immer) werden ( neben Downloads-Links ) nur zur Überprüfung eines korrekten Downloads bereitgestellt . Sie wollen nur garantieren, dass Sie dieselbe Datei wie der Server haben. Nicht mehr, nicht weniger. Wenn der Server gefährdet ist, sind Sie SOL. Es ist wirklich so einfach.

+1. Sie werden hauptsächlich zum Schutz vor * versehentlicher * Beschädigung (Netzwerkübertragungsfehler, fehlerhafte Sektoren auf der Festplatte usw.) verwendet. Zum Schutz vor böswilliger Korruption muss die Prüfsumme von einem vertrauenswürdigen, nicht verbundenen Standort stammen. Dasselbe gilt für PGP / GPG / ähnliche signierte Nachrichten: Sie stellen den Inhalt nur dann vollständig sicher, wenn Sie vertrauen, wo Sie den öffentlichen Schlüssel erhalten haben. David Spillett vor 9 Jahren 31
MD5 ist in der Tat offensichtlich gegen böswillige Änderungen defekt, sofern die Originaldatei dafür vorbereitet wurde. ratchet freak vor 9 Jahren 0
Möglicherweise möchten Sie Ihrer Antwort auch hinzufügen, dass unterschiedliche Signaturen diese Einschränkung angehen (vorausgesetzt, Sie vertrauen dem Zertifikat / der Zertifizierungsstelle). atk vor 9 Jahren 1
Es ist sogar noch schlimmer: Wenn jemand mit Ihrem Datenverkehr vom / zum Server manipuliert werden kann, kann er, selbst wenn der Server nicht gefährdet ist, sowohl die Datei als auch die Prüfsumme, die Sie erhalten, ändern. cpast vor 9 Jahren 2
@cpast Ja, na und? Wie ich schon sagte, geht es bei MD5 (an sich) überhaupt nicht um Sicherheit. Daniel B vor 9 Jahren 1
@DanielB Es kann also nicht garantiert werden, dass Sie dieselbe Datei wie der Server haben. cpast vor 9 Jahren 1
Erweitern: Wenn _did_ garantiert, dass Sie dieselbe Datei wie der Server haben, wäre dies eine legitime Sicherheitsmaßnahme, da dies bedeuten würde, dass Sie dem Netzwerk nicht vertrauen müssen. Das ist genau das, was die MACs in TLS tun - beweisen Sie, dass der Server den von Ihnen gesendeten Code erhalten hat, aber TLS kann auch nichts gegen einen angegriffenen Server tun. Wenn ein guter Hash über eine vertrauenswürdige Verbindung übertragen wird, kann er Sicherheit bieten (die von der vertrauenswürdigen Verbindung abgeleitet ist). Wenn sie über dieselbe Verbindung wie die Datei gesendet wird, ist _then_ unbrauchbar, da sie nicht manipulationssicherer ist als die Datei selbst. cpast vor 9 Jahren 3
Das ist falsch. Manchmal werden die Prüfsummen sicher bereitgestellt, der Download jedoch nicht. Da MD5 fehlerhaft ist, sind die Sicherheits-MD5-Prüfsummen schwächer als sicherere Prüfsummen, aber bevor MD5 beschädigt wurde, war ein sicher bereitgestelltes MD5 (z. B. eines, das von HTTPs signiert wurde oder gesendet wurde), das mit dem MD5 des Downloads übereinstimmte, ein überzeugender Beweis dafür, dass das MD5 fehlerhaft war Download wurde vom Server zur Verfügung gestellt. Ich werde jetzt eine Antwort mit mehr Details hinzufügen. Matthew Elvey vor 9 Jahren 2
@MatthewElvey MD5 garantiert, dass Sie die richtige Datei erhalten. Es kann nicht garantiert werden, dass Sie eine sichere Datei erhalten. Wenn die Datei selbst von Anfang an böswillig ist, werden Sie vermasselt, da MD5 Ihnen nichts über die Datei selbst sagt Raestloz vor 9 Jahren 0
@Raestloz Deine Beobachtung geht über die eigentliche Frage hinaus. Wenn jemals ein bekanntes und vertrauenswürdiges Unternehmen damit beginnt, schädliche Software zu verteilen (und wir alle wissen, dass es nie passiert ist, nicht wahr?), Dann würde (sollte) es bald nicht vertrauenswürdig sein! matpop vor 9 Jahren 0
@matpop eigentlich war ich an die Frage. Lesen Sie sorgfältig: Die Frage stellt eine "Was wäre wenn" -Situation, in der ein böswillig modifiziertes Programm zusammen mit seinem (bereits böswilligen) MD5 gepostet wird. MD5 ist eine Sicherheitsmaßnahme für "das ist richtig", nicht "das ist sicher", daher ist MD5 in diesem Fall wertlos ("Was ist der Wert?", Heißt es im Titel), es sei denn, jemand hat es während der Übertragung so geändert, dass es noch mehr enthält bösartige Software, aber Sie sind sowieso schon vermasselt. Also habe ich auf Matthew geantwortet, der sagt, dass diese Antwort falsch ist (ist es nicht) Raestloz vor 9 Jahren 0
@Raestloz An erster Stelle hast du geschrieben: "Wenn die Datei selbst von Anfang an böswillig ist" ... Sorry, aber für mich bedeuten diese Wörter nicht dasselbe wie eine absichtlich veränderte Datei. Das OP weiß, dass Hashes kein Bestandteil eines Antiviren-Systems sind und nicht zur Malware-Erkennung verwendet werden können. MatthewElvey hat zwar Recht, diese Antwort ist etwas radikal und unvollständig, da sie eine wichtige Ausnahme übersieht: Wenn Sie eine digitale Signatur der Hash-Summe überprüfen können, kann der Hash auch verwendet werden, um zu zeigen, dass die heruntergeladene Datei UNALTERED ist ( afaik ist jedoch HTTPS selbst nicht ausreichend). matpop vor 9 Jahren 0
@matpop Entschuldigung, aber meine Worte können nicht genauer sein. Wenn eine Datei absichtlich geändert wurde (z. B. ein unschuldiges Exe, das zur Ausführung von schädlichem Code geändert wurde) UND als neuer Eintrag hochgeladen wurde, ist die schädliche Datei eine von der ursprünglichen, unschuldigen Datei getrennte Entität und daher von Anfang an böswillig . Dies unterscheidet sich von einer unschuldigen Datei, die während der Übertragung zwischen Server und herunterladendem Client abgefangen und geändert wird. Raestloz vor 9 Jahren 0
@matpop OP fragt "Was nützt MD5, wenn es nicht aus der ursprünglichen, unveränderten Datei erzeugt wird?", die Antwort ist "wertlos". Diese Antwort zeigt, dass MD5 Ihnen nur sagen kann, dass Sie und der Server genau dieselbe Datei haben und nichts weiter. Es bringt von Natur aus keinen Sicherheitsvorteil. Der Sicherheits- "Vorteil" der Kenntnis, dass die Datei manipuliert wurde, ist ein Nebenprodukt. In der Zwischenzeit sollten wir das vielleicht zum Chatten bewegen? Raestloz vor 9 Jahren 0
@Raestloz Danke für Ihre Antwort :) Wir sind uns nicht einig über die zu verwendenden Begriffe, denken aber fast gleich. Obwohl der "Sicherheitsvorteil" von Hashing als "Nebenprodukt" betrachtet werden kann, ist IMO wichtig zu erwähnen, dass Hashing tatsächlich ein grundlegender Teil des Authentifizierungsprozesses ist (Sie möchten vielleicht meine kurze Antwort etwas genauer betrachten um zu verstehen, was ich meine Trotzdem fügen unsere Kommentare etwas hinzu, also lasst uns jetzt nicht zum Chat gehen. matpop vor 9 Jahren 0
@matpop das ist, was ich sagte, MD5 kann Ihnen nur sagen, dass die Datei korrekt ist, es kann nicht sagen, dass die Datei sicher ist. Ich glaube, ich habe in meinem letzten Kommentar das falsche Wort verwendet Raestloz vor 9 Jahren 0
@Raestloz Sie können jedoch zugeben, dass diese Antwort keine "Erklärung und Kontext" liefert und es hier bessere Antworten gibt, die weit weniger positive Bewertungen erhalten haben. matpop vor 9 Jahren 0
@matpop gut, unsere Diskussion wird ein bisschen zu lang: D Ich werde es hier beenden. Meine persönliche Überzeugung ist, dass diese Antwort die beste ist, denn anstatt zu versuchen, die Sicherheit der Prüfsumme zu verbessern (z. B. wenn die Prüfsumme sicher durch andere Kanäle geliefert wird, Spiegelungen bereitstellt usw.), werden hier nur die Kernpunkte hervorgehoben Problem: Diese Prüfsumme kann die Sicherheit der Daten nicht bestimmen. Der Versuch, die Prüfsumme zu sichern, ist für mich sinnlos, sie vermittelt ein falsches Sicherheitsgefühl. Der einzige Weg zu wissen ist, die Datei selbst zu überprüfen Raestloz vor 9 Jahren 0
@Raestloz Nicht das letzte Wort zu haben, ernsthaft. Hasse mich nicht, erlaube mir noch einen letzten Kommentar. 1. Anscheinend setzen Sie _authentication_ und "Malware-Erkennung" immer auf die gleiche Ebene. der erste ist wirklich ** möglich ** mit (signierten) Hashsummen! 2. Man sagt nicht einfach (!), Dass ** das einzige Ziel von Hashes ist, zu garantieren, dass Sie dieselbe Datei wie der Server haben; Die Tatsache, dass Hashes meistens ohne Signatur bereitgestellt werden **, macht eine solche Aussage nicht generell gültig **. Es ist _nicht_ "wirklich so einfach". Prost. NRN matpop vor 9 Jahren 0
Nun, ich denke, Sie werden alle * begeistert * sein, zu erfahren, dass meine Antwort speziell auf Checksummen neben Download-Links (oder in einer `. * Sum`-Datei) gerichtet ist. Ich glaube, um diese Frage geht es. Es geht bestimmt nicht um Authenticode und dergleichen. ;) Daniel B vor 9 Jahren 0
15
pjc50

Die Lösung, die von einigen Paketverwaltungssystemen wie dpkg verwendet wird, besteht darin , den Hash zu signieren : Verwenden Sie den Hash als Eingabe für einen der Public-Key-Signaturalgorithmen. Siehe http://www.pgpi.org/doc/pgpintro/#p12

Wenn Sie über den öffentlichen Schlüssel des Unterzeichners verfügen, können Sie die Signatur überprüfen, was zeigt, dass der Hash unverändert ist. Sie haben also nur das Problem, den richtigen öffentlichen Schlüssel im Voraus zu erhalten. Wenn sich jedoch jemand mit der Schlüsselverteilung beschäftigt, muss er auch alles manipulieren, was Sie möglicherweise verifizieren. Ansonsten werden Sie feststellen, dass etwas Seltsames vor sich geht.

9
nsn

Ihre Annahme ist richtig. Es gibt jedoch eine Ausnahme. Wenn der Server, der die Datei bereitstellt, und die Seite, auf der sich der Hash befindet, nicht von derselben Entität verwaltet werden. In diesem Fall möchte der Softwareentwickler sagen "Hey, Leute laden dies von diesem Ort herunter, aber glauben nur, wenn Hash = xxxx". (Dies kann als Beispiel für CDNs nützlich sein). Ich denke, das war der Grund, warum jemand es überhaupt getan hat. Andere folgten einfach und überlegten, wie cool es wäre, den Hash zu zeigen. Nicht einmal zu denken, wie nützlich es ist, nicht einmal die Datei und der Hash befinden sich am selben Ort.

Nachdem dies gesagt wurde, ist es das wert, was es ist. Gehen Sie nicht zu viel von der Sicherheit aus, wie andere bereits gesagt haben. Wenn und nur wenn Sie dem ursprünglichen Hash absolut vertrauen können, ist die Datei gut. Andernfalls kann ein Angreifer mit ausreichender Motivation und ausreichend Wissen sowohl die Datei als auch den Hash manipulieren, auch wenn sich diese auf verschiedenen Servern befinden und von verschiedenen Entitäten verwaltet werden.

8
Matthew Elvey

Manchmal werden die Prüfsummen sicher bereitgestellt, der Download jedoch nicht. Da MD5 fehlerhaft ist, sind die Sicherheits-MD5-Prüfsummen schwächer als sicherere Prüfsummen. Bevor MD5 jedoch beschädigt wurde, wurde ein sicher bereitgestelltes MD5 (z. B. ein mit PGP oder GPG oder Gatekeeper signiertes oder über HTTPS abgerufenes Protokoll) bereitgestellt, das mit dem MD5 übereinstimmte Der Download war ein starker Beweis dafür, dass der erhaltene Download der Server war.

Ich habe über den beklagenswerten Mangel an sicheren Prüfsummen seit Jahren geschrieben, hier .

Benutzer sollten nicht vertrauenswürdige ausführbare Dateien über nicht vertrauenswürdige Netzwerke herunterladen und ausführen, da MITM-Angriffe drohen. Siehe zB "Unsicherheiten in automatischen Aktualisierungssystemen" von P. Ruissen, R. Vloothuis.

Addendum 2014: Nein, es ist NICHT falsch, "dass auf Webseiten veröffentlichte Prüfsummen verwendet werden, um bösartige Änderungen zu erkennen", da dies eine Rolle ist, die sie ausführen können. Sie schützen vor versehentlicher Korruption und wenn sie über HTTPS oder mit einer verifizierten Signatur (oder besser noch beidem) bedient werden, helfen sie vor böswilliger Korruption! Ich habe Prüfsummen über HTTPS erhalten und festgestellt, dass sie mit HTTP-Downloads mehrmals übereinstimmen.

Heutzutage werden Binärdateien häufig mit signierten, automatisch verifizierten Hashes verteilt, doch selbst dies ist nicht vollkommen sicher .

Auszug aus dem obigen Link: "Die KeRanger-Anwendung wurde mit einem gültigen Entwicklungszertifikat für Mac-Apps signiert und konnte daher den Gatekeeper-Schutz von Apple umgehen." ... "Apple hat das missbrauchte Zertifikat inzwischen zurückgezogen und die Antivirensignatur von XProtect aktualisiert, und Transmission Project hat die schädlichen Installationsprogramme von seiner Website entfernt. Palo Alto Networks hat außerdem die URL-Filterung und die Bedrohungsverhütung aktualisiert, um zu verhindern, dass KeRanger die Systeme beeinflusst. Technische Analyse

Die beiden mit KeRanger infizierten Transmitter installierten ein von Apple ausgestelltes Zertifikat. Bei dem in der Liste aufgeführten Entwickler handelt es sich um ein türkisches Unternehmen mit der ID Z7276PX673, die sich von der Entwickler-ID unterschied, die zum Signieren früherer Versionen des Transmission-Installationsprogramms verwendet wurde. In den Informationen zur Codesignierung haben wir festgestellt, dass diese Installer am Morgen des 4. März generiert und signiert wurden. "

Nachtrag 2016:

@Cornstalks: Re. Ihr Kommentar unten: Falsch. Wie bereits bei dem Kollisionsangriff bei Wikipedia angegeben, verweisen Sie auf den Link "In 2007 wurde ein gewählter Präfixkollisionsangriff gegen MD5 gefunden" und "der Angreifer kann zwei willkürlich unterschiedliche Dokumente auswählen und dann verschiedene berechnete Werte anhängen, die das Ganze ergeben Dokumente mit gleichem Hashwert. " Selbst wenn das MD5 sicher bereitgestellt wird und ein Angreifer es nicht ändern kann, KANN ein Angreifer dennoch einen Kollisionsangriff mit einem Präfix mit ausgewähltem Präfix mit einem Präfix mit gewähltem Präfix, der Malware enthält, verwenden. Dies bedeutet, dass MD5 für Krypto-Zwecke NICHT sicher ist. Dies ist weitgehend der Grund, warum das US-CERT sagte, MD5 "sollte als kryptographisch gebrochen und für die weitere Verwendung ungeeignet angesehen werden."

Noch ein paar Dinge: CRC32 ist eine Prüfsumme. MD5, SHA usw. sind mehr als Prüfsummen; Sie sollen sichere Hashes sein. Das heißt, sie sollen gegen Kollisionsangriffe sehr resistent sein. Im Gegensatz zu einer Prüfsumme schützt ein sicher kommunizierter sicherer Hash vor einem Man-in-the-Middle-Angriff (MITM), bei dem sich der MITM zwischen Server und Benutzer befindet. Es schützt nicht vor Angriffen, bei denen der Server selbst gefährdet ist. Um sich dagegen zu schützen, verlassen sich die Menschen normalerweise auf etwas wie PGP, GPG, Gatekeeper usw.

Diese Antwort gefällt mir, weil sie einen grundlegenden Teil einer ** Prüfsumme ** hervorhebt - es ist einfach eine * eine * Metrik, um die Gültigkeit des Inhalts einer Datei zu überprüfen. Wenn das Netzwerk selbst nicht vertrauenswürdig ist, ist es nicht so unmöglich, sich vorzustellen, dass MD5-Hashes und Binärdateien im laufenden Betrieb ausgetauscht werden müssen (wie wir bereits an einigen Tor-Exit-Knoten gesehen haben). Natürlich bietet MD5 keinen Schutz vor * absichtlich geänderte Dateien *, weil Sie dem Anbieter dieser Dateien bereits vertrauen. Breakthrough vor 9 Jahren 0
MD5 ist nicht * total * kaputt: der Angriff darauf ist ein [Kollisionsangriff] (https://en.wikipedia.org/wiki/Collision_attack), kein [preimage attach] (https: //en.wikipedia). org / wiki / Preimage_attack) (was sehr viel schlimmer wäre). Wenn das MD5 sicher bereitgestellt wird und ein Angreifer es nicht ändern kann, kann ein Angreifer keinen Kollisionsangriff ausführen (und muss einen Vorzeichenangriff durchführen). Dies bedeutet, dass MD5 für diesen Zweck immer noch ziemlich sicher ist. MD5 ist wegen seiner Kollisionsanfälligkeit wert, ausgemustert zu werden, aber es gibt keine (bekannte) Präimage-Sicherheitsanfälligkeit, daher ist es nicht * total * kaputt. Nur halb gebrochen. Cornstalks vor 9 Jahren 2
+1! Aber ... Ist ein signierter Hash wirklich genauso sicher (_trustable_) wie ein über https (ssl / tls) geholter unsignierter Hash? Ich denke, es ist immer noch vorzuziehen, dass der Hash selbst trotzdem signiert ist ... matpop vor 9 Jahren 0
4
marsh-wiggle

Das ist wirklich ein Problem. Das Anzeigen von Prüfsummen auf derselben Site wie die herunterzuladende Datei ist nicht sicher. Eine Person, die die Datei ändern kann, kann auch die Prüfsumme ändern. Die Prüfsumme sollte durch ein vollständig getrenntes System angezeigt werden. Dies ist jedoch kaum machbar, da dem Benutzer auf sichere Weise mitgeteilt wird, wo die Prüfsumme gefunden werden kann.

Eine mögliche Lösung ist die Verwendung von signierten Dateien.

(Übrigens: MD5 ist überall unsicher und sollte nicht mehr verwendet werden.)

4
cpast

Aus genau diesem Grund wird in den Prüfsummen häufig ein Haftungsausschluss mit dem Hinweis "Dies kann nicht vor böswilliger Änderung der Datei geschützt werden" angezeigt. Die kurze Antwort lautet also: "Sie können keinen Schutz vor einer absichtlich geänderten Datei bieten" (obwohl HTTPS die Seite über HTTPS übermittelt, schützt HTTPS selbst vor Änderungen; wenn die Datei nicht über HTTPS, sondern über die Prüfsumme übermittelt wird) ist, dann könnte das einigen helfen, ist aber kein gewöhnlicher Fall). Wer Ihnen gesagt hat, dass auf Webseiten veröffentlichte Prüfsummen zum Erkennen böswilliger Änderungen verwendet werden, war falsch, da dies keine Rolle ist, die sie ausführen können. Alles, was sie tun, ist der Schutz vor versehentlicher Korruption und fauler böswilliger Korruption (wenn jemand die Seite nicht abfängt, die Ihnen die Prüfsumme gibt).

Wenn Sie sich vor absichtlichen Änderungen schützen möchten, müssen Sie entweder verhindern, dass sich die Benutzer mit der Prüfsumme herumschlagen, oder anderen Personen die Erstellung einer gültigen Prüfsumme unmöglich machen. Ersteres kann bedeuten, dass es persönlich oder ähnlich ausgegeben wird (so dass die Prüfsumme selbst vertrauenswürdig ist) Letzteres gilt für digitale Signaturalgorithmen (bei denen Sie Ihren öffentlichen Schlüssel sicher zum Downloader bringen müssen; dies geschieht in TLS, indem Sie den Zertifizierungsstellen letztendlich direkt vertrauen und alle anderen überprüfen lassen; dies kann auch über ein Vertrauensnetz erfolgen, aber der Punkt ist, dass etwas sicher irgendwann übertragen werden muss und es einfach nicht genug ist, etwas auf Ihrer Website zu veröffentlichen.

Hashes können vor böswilligen Änderungen schützen *, wenn * man über eine * unabhängige * Quelle weiß, wie der erwartete Hash einer vertrauenswürdigen Version einer Datei sein soll. Der Wert einer Website, die die Hashwerte ihrer Dateien auflistet, besteht nicht darin, dass Personen, die Dateien von einer Website herunterladen, den Hash der heruntergeladenen Datei gegen dieselbe Website prüfen, sondern Personen, die * von anderen Seiten kennen source * der Hash der Datei *, die * sie * haben möchten, wissen Sie, ob die betreffende Datei mit ihr übereinstimmt, bevor Sie sie herunterladen. Übrigens, eine Sache, die ich gerne sehen würde ... supercat vor 9 Jahren 2
... wäre eine Form von URL / URI, die einen erwarteten Hashwert enthielt (wahrscheinlich SHA anstelle von MD5) und würde angeben, dass ein Browser eine Datei nur akzeptieren soll, wenn der Hash den angegebenen Werten entspricht. In Fällen, in denen auf dieselbe große Datei von vielen Personen zugegriffen werden muss, muss allen diesen Personen eine URL über https: // zugewiesen werden. Wenn sie jedoch die Datei von einem Proxy herunterladen, kann dies effizienter sein, als dass sie alle https: // verwenden. direkt von der Quelle. supercat vor 9 Jahren 0
@supercat Das meinte ich mit "Verhindere, dass Leute die Prüfsumme nicht durcheinander bringen" - etwas muss sicher übertragen werden. Wenn dies die Prüfsumme ist, kann die Prüfsumme vor böswilliger Manipulation der Datei schützen. cpast vor 9 Jahren 0
Eine MD5-Prüfsumme, die über einen anderen Pfad als eine Datei selbst übertragen wird, bietet Schutz gegen Manipulation *, sofern * die Datei nicht absichtlich erstellt wurde, um eine solche Manipulation zu ermöglichen. Im Gegensatz dazu bietet CRC32 so gut wie keinen Schutz gegen Manipulation, selbst wenn die ursprüngliche Quelle der Datei vertrauenswürdig war und der CRC32 sicher ausgeliefert wurde. supercat vor 9 Jahren 0
2
Matt Nordhoff

Wie können MD5-Prüfsummen einen Schutz vor absichtlich veränderten Dateien bieten, wenn nicht bekannt ist, ob die Prüfsumme selbst gefährdet ist?

Du hast vollkommen recht. Das Ziel wäre also, Ihr "Wenn" falsch zu machen. Wenn wir wissen, dass ein sicherer kryptografischer Hash einer Datei nicht gefährdet ist, wissen wir, dass auch die Datei nicht gefährdet ist.

Wenn Sie beispielsweise einen Hashwert einer Datei auf Ihrer Website bereitstellen und dann auf eine Kopie der Datei auf einem Spiegelserver eines Drittanbieters verlinken - eine übliche Vorgehensweise bei der Verteilung von Freier Software nach alter Art - können Ihre Benutzer vor bestimmten Typen geschützt werden von Angriffen. Wenn der Spiegelserver schädlich oder gefährdet ist, Ihre Website jedoch in Ordnung ist, kann der Spiegel Ihre Datei nicht unterlaufen.

Wenn Ihre Website HTTPS verwendet oder Sie den Hash mit signieren gpg, kann Ihre Datei auch (meistens) vor Netzwerkangreifern wie bösartigen WLAN-Hotspots, schädlichen Tor-Exit-Knoten oder NSA geschützt werden.

In Bezug auf gpg: Denken Sie daran, dass dies ähnliche Probleme hat, wenn Sie nicht völlig vertrauen, dass der öffentliche Schlüssel nicht durch einen kompromittierten Schlüssel ersetzt wurde und der Inhalt mit dem entsprechenden privaten Schlüssel signiert ist. David Spillett vor 9 Jahren 1
1
JakeGould

Wie können MD5-Prüfsummen einen Schutz vor absichtlich veränderten Dateien bieten, wenn nicht bekannt ist, ob die Prüfsumme nicht beeinträchtigt wurde?

Das ist eine wirklich gute Frage. Im Allgemeinen ist Ihre Beurteilung der MD5-Manipulation genau richtig. Ich glaube jedoch, dass der Wert von MD5-Prüfsummen für Downloads bestenfalls oberflächlich ist. Nachdem Sie eine Datei heruntergeladen haben, können Sie vielleicht die MD5, die Sie haben, mit einer Website vergleichen, aber ich sehe nebeneinander liegenden MD5-Speicher eher als "Quittung" oder als etwas, was nett ist, aber nicht zuverlässig ist. Als solches habe ich mich in der Regel nie mit MD5-Prüfsummen aus heruntergeladenen Dateien befasst, aber ich kann aus meiner Erfahrung bei der Erstellung von Ad-hoc-Server-basierten MD5-Prozessen sprechen.

Grundsätzlich habe ich, wenn ein Client ein Dateisystem nach MD5-Prüfsummen durchsuchen möchte, diese in CSV-Dateien generieren lassen, die Dateinamen, Pfad, MD5 (und andere Informationen zu verschiedenen Dateien) in ein strukturiertes Datenformat überführt, das ich dann aufgenommen habe in eine Datenbank zum Vergleich und zur Speicherung.

Wenn Sie also in Ihrem Beispiel eine MD5-Prüfsumme in einer eigenen Textdatei neben einer Datei ablegen, wird die MD5-Prüfsumme des Berechtigungsdatensatzes in einem nicht verbundenen Datenbanksystem gespeichert. Wenn also jemand irgendwie in ein Fileshare gehackt wurde, um Daten zu manipulieren, hätte dieser Eindringling keinen Zugriff auf die MD5-Autoritätsdatensätze oder den verbundenen Verlauf.

Vor kurzem entdeckte ich eine schöne Bibliothekssoftware namens ACE Audit Manager, eine Java-Anwendung, die entwickelt wurde, um ein Dateisystem auf Änderungen zu überprüfen. Es protokolliert Änderungen über MD5-Änderungen. Und es funktioniert nach einer ähnlichen Philosophie wie mein Ad-hoc-Prozess - Speichern der Prüfsummen in einer Datenbank -, aber es geht noch einen Schritt weiter, aber es wird eine MD5-Prüfsumme aus MD5-Prüfsummen erstellt, die als Hash-Baum oder Merkle-Baum bezeichnet wird .

Nehmen wir an, Sie haben 5 Dateien in einer Sammlung. Diese 5 Dateien in ACE Audit Manager würden dann eine andere - nennen wir sie "übergeordnet" - Prüfsumme, ein Hash, der aus den 5 MD5-Prüfsummen jeder Datei generiert wird. Wenn also jemand nur eine Datei manipuliert, ändert sich der Hash für die Datei und der Hash für die gesamte "übergeordnete" Sammlung.

Im Allgemeinen müssen Sie sich MD5-Prüfsummen und zugehörige Integritätshashes ansehen, es sei denn, sie sind nicht mit nicht direktem Speicher für die MD5-Hashes selbst verbunden. Sie können beschädigt werden. Ihr Wert als langfristiges Datenintegritätsinstrument entspricht einem billigen Schloss, das für ein neues Gepäckstück „frei“ ist; Wenn Sie Ihr Gepäck wirklich verschließen möchten, erhalten Sie ein Schloss, das mit einer Büroklammer nicht in 5 Sekunden geöffnet werden kann.

"MD5-Prüfsumme von MD5-Prüfsummen" wird als * Merkle Tree * bezeichnet. pjc50 vor 9 Jahren 0
@ pjc50 Danke! Die Antwort wurde bearbeitet, um darauf zu verweisen. JakeGould vor 9 Jahren 0
1
LawrenceC

Sie können die MD5-Prüfsumme nicht ändern, ohne auch die Datei zu ändern. Wenn Sie die Datei herunterladen und dann den Hash herunterladen, stimmt die Berechnung der Datei nicht mit den Angaben überein. Entweder ist der Hash oder die Datei falsch oder unvollständig.

Wenn Sie die Datei an ein externes Element (z. B. Autor, Computer usw.) "binden" möchten, muss diese mit einem PKI-Prozess mit Zertifikaten signiert werden. Der Dateiautor usw. kann die Datei mit seinem / ihrem privaten Schlüssel signieren, und Sie können Signaturen mit dem öffentlichen Schlüssel überprüfen, der öffentlich verfügbar sein sollte, selbst von einer Zertifizierungsstelle sowohl von Ihnen als auch vom Autor als vertrauenswürdig signiert und herunter geladen werden kann, vorzugsweise von mehrere Standorte.

Wenn Sie die Datei ändern, wird die Signatur ungültig. Dies kann auch zur Überprüfung der Dateiintegrität verwendet werden.

1
Mark K Cowan

Hashes zeigen an, ob Ihre Version der Datei (der "Download") sich von der Version des Servers unterscheidet. Sie geben keine Gewähr für die Echtheit der Datei.

Mittels digitaler Signaturen (asymmetrische Verschlüsselung + Hash-Funktion) kann überprüft werden, ob die Datei nicht von Personen geändert wurde, die nicht über den entsprechenden privaten Schlüssel verfügen.

Der Ersteller der Datei hashes die Datei und verschlüsselt den Hash mit ihrem (geheimen) privaten Schlüssel. Auf diese Weise kann jeder mit dem entsprechenden (nicht geheimen) öffentlichen Schlüssel überprüfen, ob der Hash mit der Datei übereinstimmt. Während der Dateiinhalt jedoch geändert werden kann, kann niemand den entsprechenden Hash durch einen mit der Datei übereinstimmenden Hash ersetzen (nachdem der Hash mit entschlüsselt wurde.) den öffentlichen Schlüssel) - es sei denn, sie schaffen es, den privaten Schlüssel brutal zu erzwingen oder irgendwie darauf zuzugreifen.

Was hält Herr "A.Hacker" davon ab, die Datei einfach zu ändern und sie dann mit ihrem eigenen privaten Schlüssel zu signieren?

Um die Datei zu überprüfen, müssen Sie ihren Hashwert mit dem Hash vergleichen, den Sie durch Entschlüsseln der zugehörigen digitalen Signatur erhalten haben. Wenn Sie der Meinung sind, dass die Datei von "IMAwesome" stammt, entschlüsseln Sie den Hash mit seinem Schlüssel, und der Hash stimmt nicht mit der Datei überein, da der Hash mit dem Schlüssel von A.Hacker verschlüsselt wurde.

Digitale Signaturen ermöglichen es daher, sowohl versehentliche als auch böswillige Änderungen zu erkennen.

Aber wie bekommen wir den öffentlichen Schlüssel von IMAwesome überhaupt? Wie können wir sicherstellen, dass es nicht tatsächlich der Schlüssel eines A. Hackers war, der von einem angegriffenen Server oder einem Man-in-the-Middle-Angriff bedient wurde, als wir seinen / ihren Schlüssel erhalten haben? Hier kommen Zertifikatsketten und vertrauenswürdige Stammzertifikate ins Spiel, von denen keine absolut sichere [1] Lösungen für das Problem sind, und beide sollten wahrscheinlich auf Wikipedia und anderen Fragen zu SO gut erklärt werden.

[1] Bei der Überprüfung enthalten die Stammzertifikate, die mit dem Microsoft-Betriebssystem auf meinem Arbeits-PC geliefert wurden, ein Zertifikat der US-Regierung. Jeder, der Zugriff auf den entsprechenden privaten Schlüssel Husten- NSA- Husten hat, kann daher Inhalte an meinen Webbrowser liefern, der die Prüfung "Ist da ein Vorhängeschloss in der Adressleiste" übergibt. Wie viele Leute werden sich tatsächlich die Mühe machen, auf das Vorhängeschloß zu klicken und zu sehen , mit welchem Schlüsselpaar die Verbindung "gesichert" wird?

Es braucht nur eine Person, die die Zertifikatskette überprüft, um einen Skandal auszulösen. Wenn Sie der Meinung sind, dass die NSA einen Regierungs-CA-Schlüssel für MITM verwenden würde, anstatt einen, der von einer privaten oder - noch besser - fremden Zertifizierungsstelle gestohlen wurde (und damit eine plausible Leugnung liefert), zu verwenden, kann ich Sie verkaufen. Charles Duffy vor 9 Jahren 0
Ich schlug vor, die Möglichkeit zu verwenden, ein MITM auf einen bestimmten Benutzer auszurichten. Ob es tatsächlich wahrscheinlich ist, ist für die Blechfolienleute darüber zu debattieren Mark K Cowan vor 9 Jahren 0
Ich frage mich nicht, ob ein gezieltes MITM wahrscheinlich ist. Ich frage mich, ob es leicht ist, sorglos genug zu sein, um einen leicht nachverfolgten und zugewiesenen CA-Schlüssel zu verwenden. Insbesondere für ein ausreichend wertvolles Ziel wird der ausgehende Netzverkehr wahrscheinlich so detailliert aufgezeichnet, dass er Metadaten bis hin zum öffentlichen Teil des SSL-Handshakes enthält, selbst wenn der Benutzer nicht nach seinem Sicherheitspersonal sucht Die automatisierte Infrastruktur könnte dies in einer retrospektiven Analyse tun. Charles Duffy vor 9 Jahren 0