Downloads auf Websites haben manchmal eine MD5-Prüfsumme, mit der die Integrität der Datei überprüft werden kann. Ich habe gehört, dass damit nicht nur beschädigte Dateien sofort identifiziert werden können, bevor sie ein Problem verursachen, sondern auch, dass böswillige Änderungen leicht erkannt werden können.
Ich folge der Logik in Bezug auf Dateibeschädigung , aber wenn jemand absichtlich eine schädliche Datei hochladen möchte, kann er eine entsprechende MD5-Prüfsumme generieren und diese zusammen mit der geänderten Datei auf der Download-Site veröffentlichen. Dies würde jeden, der die Datei herunterlädt, täuschen, sie sei unverändert.
Wie können MD5-Prüfsummen vor absichtlich veränderten Dateien schützen , wenn nicht bekannt ist, ob die Prüfsumme selbst kompromittiert wurde?
Antworten:
Nun, Sie haben also falsch gehört. MD5-Prüfsummen (oder SHA-Prüfsummen oder was auch immer) werden (insbesondere neben Download-Links ) nur zur Überprüfung eines korrekten Downloads bereitgestellt . Das einzige, was sie garantieren wollen, ist, dass Sie die gleiche Datei wie der Server haben. Nicht mehr, nicht weniger. Wenn der Server kompromittiert ist, sind Sie SOL. Es ist wirklich so einfach.
quelle
Die von einigen Paketverwaltungssystemen wie dpkg verwendete Lösung besteht darin , den Hash zu signieren : Verwenden Sie den Hash als Eingabe für einen der Signaturalgorithmen für öffentliche Schlüssel. Siehe http://www.pgpi.org/doc/pgpintro/#p12
Wenn Sie den öffentlichen Schlüssel des Unterzeichners haben, können Sie die Signatur überprüfen, was beweist, dass der Hash unverändert ist. Dadurch haben Sie nur das Problem, im Voraus den richtigen öffentlichen Schlüssel zu erhalten. Wenn jedoch jemand einmal die Schlüsselverteilung manipuliert, muss er auch alles manipulieren, was Sie möglicherweise damit überprüfen. Andernfalls werden Sie feststellen, dass etwas Merkwürdiges vor sich geht.
quelle
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 vielleicht sagen: "Hey Leute, lade das von diesem Ort herunter, aber glaube nur, wenn Hash = xxxx". (Dies kann beispielsweise für CDNs nützlich sein.) Ich denke, das war der Grund, warum es jemand getan hat. Dann kamen andere und dachten, wie cool es wäre, den Hash zu zeigen. Ich denke nicht einmal daran, wie nützlich es ist, dass sich nicht einmal die Datei und der Hash am selben Ort befinden.
Das ist es wert, was es ist. Nehmen Sie nicht zu viel Wert auf Sicherheit, wie andere bereits sagten. Wenn und nur wenn Sie dem ursprünglichen Hash absolut vertrauen können, dann ist die Datei gut. Andernfalls kann ein Angreifer mit genügend Motivation und Wissen sowohl die Datei als auch den Hash manipulieren, selbst wenn sich diese auf verschiedenen Servern befinden und von verschiedenen Entitäten verwaltet werden.
quelle
Manchmal werden die Prüfsummen sicher bereitgestellt, der Download jedoch nicht. Da MD5 defekt ist , sind die Sicherheits-MD5-Prüfsummen schwächer als sicherere Prüfsummen. Bevor MD5 defekt war, war es jedoch ein sicher bereitgestelltes MD5 (z. B. eines, das mit PGP oder GPG oder Gatekeeper signiert oder über HTTPS abgerufen wurde), das mit MD5 übereinstimmt Der Download war ein starker Beweis dafür, dass der empfangene Download derjenige war, den der Server zur Verfügung stellte.
Ich habe über den beklagenswerten Mangel an sicheren Prüfsummen seit Jahren geschrieben, hier .
Benutzer sollten nicht vertrauenswürdige ausführbare Dateien nicht über nicht vertrauenswürdige Netzwerke herunterladen und ausführen, da das Risiko von MITM-Angriffen besteht. Siehe z. B. "Unsicherheiten in automatischen Aktualisierungssystemen" von P. Ruissen, R. Vloothuis.
Nachtrag 2014: Nein, es ist NICHT falsch, "dass Prüfsummen, die auf Webseiten veröffentlicht werden, zur Erkennung böswilliger Änderungen verwendet werden", da dies eine Rolle ist, die sie übernehmen können. Sie schützen vor versehentlicher Korruption, und wenn sie über HTTPS oder mit einer verifizierten Signatur (oder besser beides) bereitgestellt werden, schützen sie vor böswilliger Korruption! Ich habe über HTTPS Prüfsummen abgerufen und festgestellt, dass diese häufig mit HTTP-Downloads übereinstimmen.
Heutzutage werden Binärdateien häufig mit signierten, automatisch verifizierten Hashes verteilt, aber auch das ist nicht perfekt sicher .
Auszug aus dem obigen Link: "Die KeRanger-Anwendung wurde mit einem gültigen Mac-App-Entwicklungszertifikat signiert. Daher konnte der Schutz von Apple Gatekeeper umgangen werden." ... "Apple hat das missbrauchte Zertifikat widerrufen und die XProtect-Antivirensignatur aktualisiert. Transmission Project hat die bösartigen Installationsprogramme von seiner Website entfernt. Palo Alto Networks hat außerdem die URL-Filterung und die Bedrohungsverhütung aktualisiert, damit KeRanger keine Auswirkungen auf Systeme hat. Technische Analyse
Die beiden KeRanger-infizierten Übertragungsinstallateure wurden mit einem von Apple ausgestellten, legitimen Zertifikat signiert. Der Entwickler, der dieses Zertifikat aufführt, ist ein türkisches Unternehmen mit der ID Z7276PX673, die sich von der Entwickler-ID unterscheidet, die zum Signieren früherer Versionen des Transmission-Installationsprogramms verwendet wurde. In den Codesignaturinformationen wurde festgestellt, dass diese Installationsprogramme am Morgen des 4. März generiert und signiert wurden. "
2016 Nachträge:
@ Cornstalks: Re. Ihr Kommentar unten: Falsch. Wie im Wikipedia-Artikel zu Kollisionsangriffen, auf den Sie verweisen, "2007 wurde ein Kollisionsangriff mit dem Präfix" gegen MD5 gefunden ". 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 ausgewählten Präfix mit Malware verwenden, was bedeutet, dass MD5 für Kryptozwecke NICHT sicher ist. Dies ist vor allem der Grund, warum laut US-CERT MD5 "als kryptografisch fehlerhaft und für die weitere Verwendung ungeeignet angesehen werden sollte".
Noch ein paar Dinge: CRC32 ist eine Prüfsumme. MD5, SHA usw. sind mehr als nur Prüfsummen. Sie sollen sichere Hashes sein. Das heißt, sie sollen sehr widerstandsfähig gegen Kollisionsangriffe sein. Im Gegensatz zu einer Prüfsumme schützt ein sicher übertragener sicherer Hash vor einem Man-in-the-Middle-Angriff (MITM), bei dem sich der MITM zwischen dem Server und dem Benutzer befindet. Es schützt nicht vor Angriffen, bei denen der Server selbst gefährdet ist. Um sich davor zu schützen, verlassen sich die Leute normalerweise auf etwas wie PGP, GPG, Gatekeeper usw.
quelle
Dies ist der genaue Grund, warum in den gesendeten Prüfsummen häufig ein Haftungsausschluss mit der Aufschrift "Dies kann nicht vor böswilliger Änderung der Datei schützen" enthalten ist. Die kurze Antwort lautet also "Sie können keinerlei Schutz vor einer absichtlich geänderten Datei bieten" (obwohl HTTPS selbst vor Änderungen schützt, wenn die Seite über HTTPS bereitgestellt wird; wenn die Datei nicht über HTTPS, sondern über die Prüfsumme bereitgestellt wird.) ist, dann könnte das einigen helfen, ist aber kein alltäglicher Fall). Wer Ihnen gesagt hat, dass Prüfsummen, die auf Webseiten veröffentlicht werden, zur Erkennung böswilliger Änderungen verwendet werden, ist falsch, da dies keine Rolle ist, die sie ausführen können. Alles, was sie tun, ist, sich vor versehentlicher Korruption und fauler böswilliger Korruption zu schützen (wenn sich jemand nicht die Mühe macht, die Seite mit der Prüfsumme abzufangen).
Wenn Sie vor absichtlichen Änderungen schützen möchten, müssen Sie entweder verhindern, dass Personen mit der Prüfsumme in Konflikt geraten, oder es anderen Personen unmöglich machen, eine gültige Prüfsumme zu generieren. Ersteres kann das persönliche Ausgeben oder ähnliches beinhalten (so dass die Prüfsumme selbst vertrauenswürdig ist); Letzteres bezieht sich auf Algorithmen für digitale Signaturen (bei denen Sie Ihren öffentlichen Schlüssel sicher an den Downloader senden müssen. In TLS wird dies dadurch erreicht, dass letztendlich die Zertifizierungsstellen direkt vertrauenswürdig sind und alle anderen überprüft werden. Dies kann auch über ein Web of Trust erfolgen Aber der Punkt ist, dass irgendwann etwas sicher übertragen werden muss und es nicht ausreicht, etwas auf Ihrer Website zu veröffentlichen.
quelle
Das ist wirklich ein Problem. Das Anzeigen von Prüfsummen auf derselben Site wie die herunterzuladende Datei ist unsicher. 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, was jedoch kaum möglich ist, da dem Benutzer auf sichere Weise mitgeteilt werden kann, wo sich die Prüfsumme befindet.
Eine mögliche Lösung ist die Verwendung signierter Dateien.
(Übrigens: MD5 ist überall unsicher und sollte nicht mehr verwendet werden.)
quelle
Sie haben völlig recht. Das Ziel wäre es also, Ihr "Wenn" falsch zu machen - wenn wir wissen, dass ein sicherer kryptografischer Hash einer Datei nicht gefährdet ist, dann wissen wir, dass die Datei auch nicht gefährdet ist.
Wenn Sie beispielsweise einen Hash einer Datei auf Ihrer Website veröffentlichen und dann einen Link zu einer Kopie der Datei auf einem Spiegelserver eines Drittanbieters erstellen, wie es bei der herkömmlichen Verteilung kostenloser Software üblich ist, können Ihre Benutzer vor bestimmten Typen geschützt werden von Angriffen. Wenn der Spiegelserver böswillig oder kompromittiert ist, Ihre Website jedoch in Ordnung ist, kann der Spiegel Ihre Datei nicht unterwandern.
Wenn Ihre Website HTTPS verwendet oder Sie den Hash mit signieren
gpg
, kann Ihre Datei (meistens) auch vor Netzwerkangriffen wie böswilligen WLAN-Hotspots, Rogue Tor-Exitknoten oder NSA geschützt werden.quelle
Sie können die MD5-Prüfsumme nicht ändern, ohne auch die Datei zu ändern. Wenn Sie die Datei herunterladen, dann laden Sie den Hash herunter, und dann stimmt Ihre Berechnung der Datei nicht mit der angegebenen überein, entweder ist der Hash oder die Datei falsch oder unvollständig.
Wenn Sie die Datei an etwas Externes "binden" möchten, z. B. an einen Autor, einen Computer usw., muss sie mit einem PKI-Prozess mit Zertifikaten signiert werden. Der Dateiautor usw. kann die Datei mit seinem privaten Schlüssel signieren, und Sie können Signaturen mit dem öffentlichen Schlüssel überprüfen, der öffentlich verfügbar sein sollte, der von einer Zertifizierungsstelle signiert ist, der Sie und der Autor vertrauen und der vorzugsweise von heruntergeladen werden kann mehrere Standorte.
Wenn Sie die Datei ändern, wird die Signatur ungültig. Auf diese Weise kann auch die Integrität der Datei überprüft werden.
quelle
Hashes zeigen an, ob Ihre Version der Datei (der "Download") von der Serverversion abweicht. Sie bieten keine Garantie für die Echtheit der Datei.
Mit digitalen Signaturen (asymmetrische Verschlüsselung + Hash-Funktion) kann überprüft werden, ob die Datei von jemandem geändert wurde, der nicht über den entsprechenden privaten Schlüssel verfügt.
Der Ersteller der Datei hackt die Datei und verschlüsselt den Hash mit seinem (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, aber während der Dateiinhalt geändert werden kann, kann niemand den entsprechenden Hash durch einen Hash ersetzen, der mit der Datei übereinstimmt (nachdem der Hash mit entschlüsselt wurde) den öffentlichen Schlüssel) - es sei denn, es gelingt ihnen, den privaten Schlüssel zu brachialisieren oder auf irgendeine Weise darauf zuzugreifen.
Was hindert Herrn "A.Hacker" daran, die Datei einfach zu ändern und sie dann mit ihrem eigenen privaten Schlüssel zu signieren?
Um die Datei zu validieren, müssen Sie ihren Hash mit demjenigen 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 A.Hacker-Schlüssel verschlüsselt wurde.
Digitale Signaturen ermöglichen es daher, sowohl versehentliche als auch böswillige Änderungen zu erkennen.
Aber wie bekommen wir überhaupt den öffentlichen Schlüssel von IMAwesome? Wie können wir sicherstellen, dass der Schlüssel von A.Hacker nicht von einem kompromittierten Server oder einem Man-in-the-Middle-Angriff bereitgestellt wird, wenn wir ihn erhalten haben? Hier kommen Zertifikatsketten und vertrauenswürdige Stammzertifikate ins Spiel, von denen keines eine absolut sichere [1] Lösung für das Problem darstellt und die beide wahrscheinlich auf Wikipedia und bei anderen Fragen zu SO gut erklärt werden sollten.
[1] Bei der Überprüfung enthalten die Stammzertifikate, die mit Microsoft OS auf meinem Arbeits-PC geliefert wurden, ein Zertifikat der US-Regierung. Jeder , der Zugang zu dem entsprechenden privaten Schlüssel Husten NSA Husten daher Inhalt meiner Web - Browser dienen kann , dass das passiert „ist es ein Vorhängeschloss in der Adressleiste“ zu überprüfen. Wie viele Leute werden sich tatsächlich die Mühe machen, auf das Vorhängeschloss zu klicken und zu sehen , mit welchem Schlüsselpaar die Verbindung "gesichert" wird?
quelle
Das ist eine wirklich gute Frage. Im Allgemeinen ist Ihre Einschätzung der MD5-Manipulation genau richtig. Aber ich glaube, der Wert von MD5-Prüfsummen bei Downloads ist bestenfalls oberflächlich. Vielleicht können Sie nach dem Herunterladen einer Datei das MD5, das Sie haben, mit einer Website vergleichen, aber ich neige dazu, MD5-Speicher nebeneinander als "Quittung" oder als etwas zu betrachten, das schön, aber nicht zuverlässig ist. Als solches habe ich mich im Allgemeinen nie um MD5-Prüfsummen aus heruntergeladenen Dateien gekümmert, aber ich kann aus meiner Erfahrung mit der Erstellung von auf Ad-hoc-Servern basierenden MD5-Prozessen sprechen.
Grundsätzlich habe ich getan, wenn ein Client ein Dateisystem für MD5-Prüfsummen durchsuchen möchte, dass diese in CSV-Dateien generiert werden, die Dateinamen, Pfad, MD5 und andere verschiedene Dateiinformationen in einem strukturierten Datenformat abbilden, das ich dann aufgenommen habe in eine Datenbank zum Vergleich und zur Speicherung.
Während in Ihrem Beispiel eine MD5-Prüfsumme neben einer Datei in einer eigenen Textdatei gespeichert sein kann, wird die MD5-Prüfsumme des Normdatensatzes in einem nicht verbundenen Datenbanksystem gespeichert. Wenn sich also jemand in ein Fileshare gehackt hätte, um Daten zu manipulieren, hätte dieser Eindringling keinen Zugriff auf die MD5-Berechtigungsdatensätze oder den verbundenen Verlauf.
Kürzlich entdeckte ich eine nette Archivierungssoftware namens ACE Audit Manager , eine Java-Anwendung, die entwickelt wurde, um ein Dateisystem auf Änderungen hin zu überwachen. Änderungen werden über MD5-Änderungen protokolliert. 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, als eine MD5-Prüfsumme von MD5-Prüfsummen zu erstellen, die als Hash-Baum oder Merkle-Baum bezeichnet wird .
Nehmen wir also an, Sie haben 5 Dateien in einer Sammlung. Diese 5 Dateien in ACE Audit Manager erhalten dann eine andere - nennen wir sie "übergeordnet" - Prüfsumme, die ein Hash ist, 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 MD5-Prüfsummen und zugehörige Integritäts-Hashes anzeigen, da diese möglicherweise beschädigt sind, sofern sie nicht mit einem nicht direkten Speicher für die MD5-Hashes selbst verbunden sind. Und ihr Wert als langfristiges Datenintegritätstool ist gleichbedeutend mit einem billigen Schloss, das für ein neues Gepäckstück „kostenlos“ ist. Wenn Sie es ernst meinen, Ihr Gepäck zu verschließen, erhalten Sie ein Schloss, das nicht in 5 Sekunden mit einer Büroklammer geöffnet werden kann.
quelle
Geschwindigkeit
Oft ist es sehr viel schneller, (a) eine große Datei von einem nicht vertrauenswürdigen "nahe gelegenen" Content Delivery Network (CDN), einer Spiegel-Site, Torrent-Peers usw. herunterzuladen und auch die entsprechende kurze Prüfsummen-Datei herunterzuladen (häufig SHA256; ältere Software) häufig verwendetes MD5) aus wenigen vertrauenswürdigen Quellen. Sie finden es unerträglich langsam, (b) die gesamte große Datei direkt von einer vertrauenswürdigen Quelle herunterzuladen.
Validierung
Oft stellt diese Person fest, dass alles validiert ist - die Quellen (vertrauenswürdig und nicht vertrauenswürdig) stimmen mit derselben Prüfsumme überein und führen shasum (oder md5sum) mit einer dieser kurzen Prüfsummendateien aus (es ist egal, welche, wenn sie alle identisch sind) ) zeigt an, dass die große Datei eine übereinstimmende Prüfsumme hat.
Änderung
Sie haben Recht, wenn Mallory in böswilliger Absicht eine große Datei verändert, die sich auf einer Download-Site befindet, ist es für Mallory einfach, die Prüfsumme für diese Datei auf derselben Download-Site in böswilliger Weise zu ändern, sodass shasum (oder md5sum) auf dieser böswilligen Prüfsummendatei ausgeführt wird scheinen die große Datei zu validieren. Diese Prüfsummendatei ist jedoch nicht die (einzige) Datei, die der Downloader zur Validierung verwenden sollte.
Wenn die Downloader , dass bösartige Prüfsummendatei auf die Prüfsumme vergleichen Dateien aus vertrauenswürdigen Quellen heruntergeladen, wenn die ursprünglichen Prüfsumme rutschen sogar einmal durch, dann wird der Downloader sieht , dass alles funktioniert nicht Validieren, und wird wissen , dass etwas schief gelaufen ist.
Wie bereits erwähnt, kann eine gute kryptografische Prüfsumme, die über eine vertrauenswürdige Verbindung übertragen wird, Sicherheit bieten (die von der vertrauenswürdigen Verbindung abgeleitet wird).
Wie bereits erwähnt, helfen die Prüfsummendateien einer Site nicht denjenigen, die große Dateien von derselben Site und auf dieselbe Weise wie die Prüfsummendateien herunterladen, sondern denjenigen, die Dateien von einer anderen Site herunterladen möchten.
Kryptografische Prüfsummen sind ein wichtiger Bestandteil praktischer Public-Key-Signaturen (wie sie in GnuPG und anderer OpenPGP-kompatibler Software implementiert sind). Public-Key-Signaturen haben einige Vorteile gegenüber den Prüfsummen.
quelle
Nun, Sie haben nicht völlig falsch gehört . Tatsächlich wird die digitale Signatur verwendet, um böswillige Änderungen zu erkennen. Aus einigen wichtigen Gründen ist Hashing ein grundlegender Bestandteil der digitalen Signatur, da nur der Hash tatsächlich signiert wird , nicht die gesamte Originaldatei.
Abgesehen davon, wenn die Quelle die Signatur des Hashs nicht bereitstellt und es nicht vertrauenswürdig überprüft , haben Sie Recht, es wird kein Schutz gegen absichtlich geänderte Dateien gewährt , aber der Hash ist dennoch als Prüfsumme gegen versehentliche Änderungen nützlich Korruption .
Hier ist ein Beispiel aus der Praxis, das das Ganze verdeutlicht. Die folgende Passage ist zu diesem Thema von besonderer Bedeutung:
quelle