Menü

Werkzeuge durchsuchenÄnderungsprotokoll

zum Navigieren zum ÖffnenBeschreiben Sie das Problem, nicht das Tool

Ratgeber

Was eine Prüfsumme beweist und was nicht

Der Vergleich einer heruntergeladenen Datei mit einem veröffentlichten SHA-256 lohnt sich wirklich und erweist sich als weniger, als die meisten Leute denken. Es gewährleistet Integrität gegen Zufall und, wenn der Hash von einem vertrauenswürdigen Ort stammt, gegen Manipulation – aber nur bis dahin. Zu lesen, was eine Datei über sich selbst aussagt, ist wieder eine andere Frage.

Was für ein Hash ist

Ein kryptografischer Hash reduziert jede Datenmenge auf einen Fingerabdruck fester Länge. Zwei Eigenschaften machen es nützlich: Die gleiche Eingabe liefert immer die gleiche Ausgabe, und es sollte rechnerisch nicht möglich sein, eine andere Eingabe mit der gleichen Ausgabe zu finden.

Die erste Eigenschaft verwenden Sie, wenn Sie einen Download mit einem veröffentlichten SHA-256 vergleichen. Der zweite Grund ist, warum dieser Vergleich überhaupt etwas bedeutet.

Vor dem Weiterlesen

Sie laden eine Datei herunter und ihr SHA-256 stimmt mit dem überein, der auf derselben Seite veröffentlicht wurde. Was hat das bewiesen?

  • Malware verfügt über eine vollkommen gültige Prüfsumme. Integrität und Sicherheit sind voneinander unabhängige Fragen.

  • Nur wenn der Hash vertrauenswürdig ist – und ein Angreifer, der die Datei austauschen kann, kann normalerweise auch den Hash daneben austauschen.

  • Ja, und das allein ist alles, was es beweist.

Dass die Bytes, die Sie haben, die Bytes sind, die den veröffentlichten Digest erstellt haben – nichts wurde hinzugefügt, nichts ging verloren, nichts wurde während der Übertragung beschädigt. Es beweist nichts über die Sicherheit, sondern nur dann, dass keine Manipulation vorliegt, wenn der Hash selbst von einem Ort stammt, an den ein Angreifer nicht gelangen kann. Ein Hash, der neben seinem eigenen Download veröffentlicht wird, ist genauso geschützt wie diese Seite.

Die drei Ansprüche in der Reihenfolge ihrer Stärke

„Diese Bytes sind diese Bytes.“ Stimmt, und das ist alles, was Ihnen ein Hash liefert. Eine Übereinstimmung bedeutet, dass die Datei Stück für Stück das ist, was den veröffentlichten Digest erzeugt hat.

„Diese Datei wurde nicht manipuliert.“ True nur, wenn der Hash selbst vertrauenswürdig ist. Ein Hash, der auf derselben Seite veröffentlicht wird wie die Datei, die er beschreibt, ist genauso geschützt wie diese Seite: Ein Angreifer, der den Download austauschen kann, kann normalerweise auch den Digest daneben austauschen. Der Wert einer Prüfsumme hängt davon ab, woher sie stammt.

„Diese Datei ist sicher.“ Überhaupt nicht etabliert. Malware hat eine gültige Prüfsumme. Integrität und Sicherheit sind zwei voneinander unabhängige Fragen, und ihre Vermischung ist hier das häufigste Missverständnis.

Warum sich der Hash unterscheidet, wenn die Datei „gleich“ ist

Ein Hash hat keinerlei Toleranz. Ein Bit ändert jedes weitere Bit der Ausgabe – die Lawineneigenschaft, die gewollt ist.

Wenn also eine Datei, die identisch aussieht, unterschiedliche Hashes verarbeitet, ändert sich wirklich etwas an den Bytes. Normalerweise einer von:

  • Zeilenenden. Eine unter Windows gespeicherte Textdatei enthält vor jeder neuen Zeile einen Wagenrücklauf. Gleiche Wörter, unterschiedliche Bytes. - Eine abschließende neue Zeile. Einige Editoren fügen beim Speichern eine hinzu; manche nicht. - Eine Bytereihenfolgemarkierung. Drei unsichtbare Bytes am Anfang einer UTF-8-Datei. - Ein teilweiser Download. Abgeschnittene Dateien werden perfekt gehasht und stimmen mit nichts überein. - Metadaten. Durch das erneute Speichern eines Bildes oder einer Audiodatei kann ein Zeitstempel oder ein Tag neu geschrieben werden, während der Inhalt unberührt bleibt.

Nichts davon ist ein Fehler im Hash. Bei jedem handelt es sich um einen Hash, der Ihnen etwas sagt, was Sie sonst nicht sehen könnten.

Besonders deutlich wird der Unterschied nach einer verlustfreien Bearbeitung. Wenn Sie eine WAV-Datei zuschneiden, ohne sie neu zu kodieren, können die beibehaltenen Beispielbytes exakt kopiert werden, während die gesamte Datei einen anderen Digest erhält. Die RIFF-Länge, die Datenlänge und der physische Satz von Bytes haben sich geändert; Metadaten wurden möglicherweise entfernt; und der Ton beginnt nun bei einem anderen Frame. „Die aufbewahrten Proben sind unverändert“ und „die beiden Dateien sind identisch“ sind unterschiedliche Behauptungen, und nur die zweite würde eine übereinstimmende Prüfsumme ergeben.

SHA-1 ist mittlerweile ein veraltetes Format

SHA-1 wurde 2017 in der Praxis gebrochen, als zwei verschiedene PDF-Dateien mit demselben SHA-1-Digest veröffentlicht wurden. Der Angriff ist nur billiger geworden.

Es überlebt, weil es von einem großen Teil der Infrastruktur emittiert wird und weil die Erkennung zufälliger Korruption keine Kollisionsresistenz erfordert. Das ist der ehrliche Nutzen: Vergleichen mit etwas Altem, das nichts Besseres veröffentlicht. Für alles, wo ein Gegner beteiligt sein könnte, SHA-256.

Lesen, was eine Datei über sich selbst aussagt

Eine verwandte, aber eindeutige Frage: Nicht „Sind das die richtigen Bytes“, sondern „Was behaupten diese Bytes zu sein?“.

Jedes Medienformat trägt einen Header, der beschreibt, was folgt: Abtastrate, Kanalanzahl, Bittiefe, Dauer, Codec. Das Lesen erfordert das Parsen einiger Dutzend Bytes, anstatt den Inhalt zu dekodieren, weshalb es selbst bei einer großen Datei sofort verfügbar ist.

Zwei Dinge, die es zu wissen gilt:

Die Erweiterung ist eine Behauptung, keine Tatsache. Eine Datei mit dem Namen .wav kann alles enthalten. Das Erkennen der führenden Bytes ist die einzige Möglichkeit herauszufinden, was eine Datei tatsächlich ist. Deshalb identifizieren die Tools hier Formate anhand des Inhalts und nicht anhand der Namen.

Ein Header kann mit dem Inhalt nicht übereinstimmen. Eine deklarierte Dauer ist Metadaten, und eine abgeschnittene oder schlecht geschriebene Datei kann eine Länge angeben, während sie eine andere enthält. Ein Header sagt Ihnen, was die Datei über sich selbst aussagt, und das ist wirklich nützlich – auch dann, wenn sich herausstellt, dass es sich um eine Lüge handelt.

Fragen

Was beweist eigentlich eine passende Prüfsumme?

Dass die Bytes, die Sie haben, genau die Bytes sind, die den veröffentlichten Hash erzeugt haben – nichts wurde hinzugefügt, nichts ging verloren, nichts wurde während der Übertragung beschädigt. Es beweist nichts darüber, ob diese Bytes sicher sind oder wer sie erstellt hat. Auch eine schädliche Datei verfügt über eine vollkommen gültige Prüfsumme.

Ist SHA-1 noch sicher in der Anwendung?

Nicht aus sicherheitsrelevanten Gründen. Im Jahr 2017 wurde eine praktische Kollision demonstriert – zwei verschiedene PDFs mit demselben SHA-1 – und die Kosten für die Erstellung eines PDFs sind seitdem gesunken. Es bleibt nützlich, um versehentliche Korruption zu erkennen und mit Altsystemen abzugleichen, die nichts anderes veröffentlichen. Dies ist der einzige Grund, es heute zu berechnen.

Warum gibt dieselbe Datei einen anderen Hash aus?

Denn irgendetwas an den Bytes unterscheidet sich und die üblichen Übeltäter sind unsichtbar: eine Textdatei, die mit Windows-Zeilenenden im Vergleich zu Unix-Zeilenenden gespeichert wurde, ein nachgestellter Zeilenumbruch, eine Byte-Reihenfolgemarkierung oder ein teilweiser Download. Ein Hash hat überhaupt keine Toleranz – ein Bit verändert die gesamte Ausgabe, was die Eigenschaft ist, die ihn nützlich macht.

Kann ich einer Prüfsumme vertrauen, die auf derselben Seite wie der Download veröffentlicht wird?

Nur gegen Unfälle. Wenn ein Angreifer die Datei ersetzen kann, kann er normalerweise den Hash daneben ersetzen, sodass das Paar beweist, dass der Download während der Übertragung nicht beschädigt wurde, und kaum mehr. Ein Hash ist viel mehr wert, wenn er von einem anderen Kanal kommt – einer signierten Veröffentlichung, einer separaten Domain, dem eigenen Index eines Paketmanagers.

Passende Werkzeuge

Quellen