Warum Prüfsummen für heruntergeladene Dateien berechnen?

19

Ich sehe oft eine Prüfsumme neben einer Datei, die zum Download zur Verfügung steht. Der Zweck dieser Praxis entzieht sich mir. Es ist offensichtlich, beschädigte Dateien zu erkennen, aber was könnte die Ursache für diese Beschädigung sein und ist es überhaupt wahrscheinlich?

Sicherlich wird die Datei nicht durch Übertragungsfehler beschädigt, da diese vom Netzwerkprotokoll erkannt werden. Und sicher kann jeder Angreifer, der die Datei für böswillige Zwecke ändern könnte, die angegebene Prüfsumme ebenfalls ändern. Prüfen wir auf Festplattenfehler? Treten diese beim Schreiben eher auf als beim Lesen? Vermisse ich etwas Wichtiges?

Karolis Juodelė
quelle
2
Und sicher kann jeder Angreifer, der die Datei für böswillige Zwecke ändern könnte, die angegebene Prüfsumme ebenfalls ändern. - Eine Prüfsumme garantiert keine Authentizität, wenn sie nicht über HTTPS bereitgestellt wird, oder Sie sind sich nicht sicher, ob das SSL-Zertifikat dem Ersteller der Software gehört.
Mihai
1
Die TCP-Prüfsumme ist eigentlich ziemlich mies: Es sind nur 16 Bits. Wenn Sie große Dateien für Tausende von Menschen bereitstellen (zum Beispiel Installations-DVD-Images), ist es so gut wie sicher, dass einige dieser Downloads nicht nachweisbar beschädigt werden.
Mark
@Mihai Natürlich verringert es wahrscheinlich das Risiko ein wenig. Wenn Ihr Server beispielsweise von einem Virus infiziert ist, der automatisch alle Binärantworten ändert (oder einfach alle heruntergeladenen ausführbaren Dateien ersetzt). Es ist nicht perfekt, kann aber in einigen Fällen helfen.
Luaan

Antworten:

9

Korruption zu erkennen ist nicht ganz richtig. Die Integrität der Software zu überprüfen, wäre eine korrektere Verwendung. Normalerweise wird eine Software nicht von einem einzelnen Server verteilt. Dieselbe Software kann von vielen Servern verteilt werden. Wenn Sie also eine bestimmte Software herunterladen, wird der Ihrem Ziel am nächsten liegende Server als Downloadquelle ausgewählt, um die Downloadgeschwindigkeit zu erhöhen. Diesen nicht offiziellen Servern (Drittanbietern) kann jedoch nicht immer vertraut werden. Sie könnten / können Trojaner / Viren / Adware / Backdoors in das Programm aufnehmen, was nicht gut ist .

Um sicherzustellen, dass die heruntergeladene Software genau der von der betreffenden Organisation veröffentlichten "offiziellen" Software entspricht, wird die Prüfsumme verwendet. Die zur Generierung von Prüfsummen verwendeten Algorithmen sind derart, dass bereits eine geringfügige Änderung des Programms zu einer völlig anderen Prüfsumme führt.

Beispiel aus Practical Unix und Internet Security

MD5 (In der blauen Box befinden sich 1500 USD.) = 05f8cfc03f4e58cbee731aa4a14b3f03

MD5 (In der blauen Box sind $ 1100.) = D6dee11aae89661a45eb9d21e30d34cb

Die Nachrichten, die sich nur durch ein einziges Zeichen (und innerhalb dieses Zeichens nur durch ein einziges Binärbit) unterscheiden, haben völlig unterschiedliche Nachrichtenauszüge.

Wenn die heruntergeladene Datei dieselbe Prüfsumme aufweist wie die auf der offiziellen Website angegebene Prüfsumme, kann davon ausgegangen werden, dass die Software nicht geändert wurde.

Randnotiz: Theoretisch können zwei verschiedene Dateien den gleichen Hash-Wert haben. Damit der Hash / Checksummen-Algorithmus als sicher gilt, sollte es rechenintensiv sein, eine andere Datei zu finden, die dieselbe Checksumme erzeugt.

Aswin PJ
quelle
1
Also, wenn die Datei und die Prüfsumme vom gleichen Host bereitgestellt werden, ist es etwas nutzlos?
Karolis Juodelė
Vielleicht. Die Prüfsumme dient nur zur Überprüfung der Integrität. Nehmen wir an, in einem bestimmten Szenario kann ein Angreifer die Software ändern, wenn er Zugriff auf den FTP-Server der Organisation erhält. Sie können jedoch dieselbe Prüfsumme verwenden, um die Integrität zu ermitteln, WENN UND NUR WENN der Angreifer nicht in den HTTP-Server eingebrochen ist. Wenn also beide vom Angreifer kontrolliert werden, kann er beide leicht ändern, und Sie würden den Unterschied nicht kennen.
Aswin PJ
1
Eine andere Situation, in der die Prüfsumme relevant sein kann, besteht darin, Situationen zu erkennen, in denen eine Dateiübertragung nach einem Schluckauf fortgesetzt wird, die Datei jedoch in der Zwischenzeit geändert wurde.
Supercat
@ KarolisJuodelė Der Download-Link befindet sich möglicherweise auf derselben Website / demselben Host. Aber wo es sich auflöst, kann je nach nächstgelegenem Server unterschiedlich sein. Beachten Sie auch, dass die Prüfsummenseite https sein sollte, während der Download ein beliebiges Protokoll sein kann: http oder ftp
balki 10.08.15
10

Und sicher kann jeder Angreifer, der die Datei für böswillige Zwecke ändern könnte, die angegebene Prüfsumme ebenfalls ändern.

Nicht immer.

Sie könnten einen Inhaltslink zusammen mit einer auf HTTPS bereitgestellten Prüfsumme haben. Der Link kann ein unverschlüsselter Link sein - normales HTTP oder FTP oder etwas anderes.

Auf der anderen Seite kann die unverschlüsselte Verbindung leicht überlastet werden, auf der anderen Seite kann sie für den Webmaster schneller oder bequemer sein (weniger Rechenressourcen werden benötigt und das Netzwerk kann das Zeug zwischenspeichern).

Wenn die Prüfsumme auf einer nicht unterbrochenen vertrauenswürdigen Verbindung bereitgestellt wird und die Nutzdaten mit der Prüfsumme übereinstimmen, erhalten Sie das Beste aus beiden Welten (vorausgesetzt, die Prüfsumme ist kryptografisch sicher).


Sie haben mich jedoch daran erinnert, dass es Distributionen gibt, die behaupten, "sicher" zu sein, und die Website und die Links zu ihren Bildern nur auf HTTP geschaltet sind.

Beispiele:

Es ist irgendwie lustig, weil man das unmöglich unsicherer machen kann. Selbst wenn sie selbst nicht böswillig sind, kann jeder ISP leicht sowohl die Website als auch das Image durch Fälschungen ersetzen und jemanden dazu bringen, ein manipuliertes Betriebssystem zu installieren, während es den Anschein erweckt, dass er eine "sichere" Linux-Distribution erhält pwnage.

PSkocik
quelle
1
Es gibt viele Dinge, die weniger sicher sind als nicht authentifiziertes HTTP, für dessen Umstellung eine aktive MITM erforderlich ist.
user253751
4

Inwiefern die TCP / IP-Fehlerprüfung nicht alles erfasst: Von /programming//a/17083365/2551539

Es gibt verschiedene Fehler, die auftreten können (die TCP erkennt ) [auf die Jacob Krall hingewiesen hat] :

  • Falsche Reihenfolge der Pakete
  • Verlust von Paketen
  • Beschädigte Daten im Paket
  • Phantompakete (Empfänger erhält Pakete, die noch nie gesendet wurden)

Bearbeiten Sie mit einigen zusätzlichen Informationen:

Seite 9 dieser Studie: http://paperhub.s3.amazonaws.com/8ff1e4414c070e900da8ab3885593085.pdf weist darauf hin, dass es Fehler gibt, die von TCP nicht erkannt werden können. Meines Erachtens geschieht dies, wenn ein fehlerhaftes Datagramm (in der Studie als "schlechter Zwilling" bezeichnet) die gleiche Prüfsumme aufweist wie das beabsichtigte Datagramm (in der Studie als "guter Zwilling" bezeichnet).

Jesse Adam
quelle
2
Lesen Sie diese Antwort genauer durch - das sind alles Fehler, die von TCP behoben werden.
Jacob Krall,
4

Übertragungsfehler können auftreten. Link-Layer-Protokolle enthalten normalerweise Prüfsummen oder fehlerkorrigierende Codes, um sie zu vermeiden. Sie sind jedoch nicht perfekt: Es besteht eine geringe Wahrscheinlichkeit, dass ein Fehler nicht korrigiert wird. TCP- Pakete enthalten außerdem eine Prüfsumme, die die Fehlerwahrscheinlichkeit um 2 ^ 16 verringert. Das macht eine sehr kleine, aber nicht null Wahrscheinlichkeit für einen Übertragungsfehler. Dies ist etwas, dem die meisten Menschen in ihrem Leben niemals unwissentlich begegnen werden, aber es liegt nicht in der Wahrscheinlichkeitsspanne von kryptografischen Prüfsummen, die in einer Milliarde Jahren niemals erreicht werden kann.

Es ist unwahrscheinlich, dass ein Hardwarefehler auf dem Client, wie z. B. eine Beschädigung der Festplatte, direkt nach dem Herunterladen überprüft wird, da die Prüfsumme anhand der zwischengespeicherten Kopie berechnet wird. Das Überprüfen der Startmedien auf Beschädigungen, wenn sie nicht gestartet werden konnten, ist andererseits nützlich - Sie testen die Medien wirklich und setzen voraus, dass die Hardware möglicherweise fehlerhaft ist.

Der eigentliche Grund für die Berechnung von Prüfsummen ist die Erkennung von Fehlern auf Softwareebene. Diese passieren. Mögliche Fehler sind:

  • Eine Datei wurde teilweise heruntergeladen. Webserver und Browser sind in der Regel schlecht darin, unterbrochene Verbindungen zu erkennen und Teildateien zu bereinigen. Der Fehler könnte während des Herunterladens oder während des Hochladens aufgetreten sein.
  • Es gab einige Korruption auf dem Weg. Beispielsweise hat ein Zwischenknoten in der Verteilung der Datei beschlossen, eine Textcodierungskonvertierung auf eine Binärdatei anzuwenden. Oder auf einem falsch konfigurierten Server wurde anstelle des Inhalts eine Fehlermeldung angezeigt.
  • Eine Variante: Die falsche Datei wurde hochgeladen.
  • Selten, kann aber zum Schutz nützlich sein: Ein Angreifer hat die Datei geändert, konnte jedoch die Referenzprüfsumme nicht ändern. Sicherheitsinfrastrukturen erschweren einem Angreifer in der Regel die Weitergabe einer ungültigen Prüfsumme als eine ungültige Datei. Beispielsweise werden große Dateien häufig über Spiegel verteilt, während die Prüfsummen von einem zentralen Standort mit weniger Manipulationsmöglichkeiten bereitgestellt werden (Serverzugriff nur für Projektleiter, Verteilung über HTTPS).

In der Praxis werden beim Überprüfen der Größe der heruntergeladenen Datei die häufigsten Fehler festgestellt, bei denen es sich um abgeschnittene oder ungültig konvertierte Dateien handelt. Prüfsummen haben den Vorteil, dass sie wesentlich mehr Probleme erkennen.

Gilles 'SO - hör auf böse zu sein'
quelle
2

Theoretisch würde das Netzwerk jedes einzelne Segment ordnungsgemäß bereitstellen, und sie würden ordnungsgemäß auf der Festplatte zusammengestellt, und nichts würde schief gehen.

In Wirklichkeit sind Computer Maschinen und Software, die beide von fehlbaren Menschen entworfen und gebaut werden. Für den Fall, dass ein Download aus dem einen oder anderen Grund nicht richtig funktioniert, zum Beispiel durch ein Zwischengerät, das harmlos oder ruchlos ist und die Daten verfälscht, ist es schön zu wissen, ob die Datei mit ziemlicher Sicherheit heruntergeladen wurde heruntergeladen als eine genaue Kopie der Datei auf der Seite des Anbieters.

Eine qualitativ hochwertige Prüfsumme ist eine zuverlässige Methode zur Überprüfung der Datenintegrität.

Jason
quelle
0

Keine Prüfsumme kann zu 100% zuverlässig sein, da viele Dateien derselben Prüfsumme zugeordnet sind.

Wenn wir dem Zug eine weitere Prüfsumme hinzufügen, multiplizieren wir die Wahrscheinlichkeit, einen Fehler zu erkennen.

Es gibt so viel Verkehr im Internet, dass Fehler häufig vorkommen.

chasly aus UK
quelle
Es gibt auch ein bisschen Rot.
Deer Hunter
Was von der Speicherhardware selbst erkannt werden sollte, aber Prüfsummen sind ein Schlüsselmerkmal von ZFS und btrfs. Ich bezweifle, dass es perfekt funktioniert.
Max Ried
0

Die Prüfsumme hilft auch dabei, einen beschädigten Download aufgrund der folgenden Situation zu verhindern:

Auf dem Server ist ein interner Fehler aufgetreten, während der Download ausgeführt wurde. Daher wird der Download abgebrochen.

In diesem Fall gibt es einige mögliche Ergebnisse:

  • Guter Server - Die Implementierung der Chunked-Transfer-Codierung auf dem Server ist nicht fehlerhaft :
    • Ein guter Client (wie cURL, wget) kann Ihnen mitteilen, dass es sich um einen schlechten Download handelt, da der terminierende Chunk noch nie vom Server gesendet wurde.
    • Der fehlerhafte Client glaubt, dass der Download abgeschlossen ist, da keine Daten mehr vom Server empfangen werden.
  • Fehlerhafter Server - Die Implementierung der Chunked-Übertragungscodierung auf dem Server ist fehlerhaft , da der terminierende Chunk für diesen fehlerhaften Download gesendet wird :
    • Jeder Kunde wird denken, dass dieser Download erfolgreich abgeschlossen wurde.

Ich habe diese Verhaltensweisen bei gängigen Client-Tools und Server-Frameworks beobachtet. Wenn Sie also keine Prüfsumme verwenden, werden Sie im Fall von "guter Server + schlechter Client" oder "schlechter Server + beliebiger Client" nicht bemerkt, dass der Download beschädigt ist .


quelle