Wie können Null-Byte-Dateien einen Hash-Wert erzeugen?

20

Wie kann eine Null-Byte-Textdatei einen Hash erzeugen, wenn sie mit sha1sum, sha256sum usw. gehasht wird? Welche Daten werden von den Programmen gehasht, um einen Hashwert zu generieren?

Ta

QuickHash unter Linux

Terminal-Befehle

Gizmo_the_Great
quelle

Antworten:

21

Hash-Algorithmen lesen die Eingabe und verarbeiten sie, egal ob überhaupt Daten vorliegen. Dies ist ein gültiges und gewünschtes Verhalten und wird sogar verwendet, um zu überprüfen, ob eine bestimmte Implementierung korrekt ist. Dies führt zu "Null-Hashes" für alle wichtigen Algorithmen.

Um es zusammenzufassen: da39a3ee5e6b4b0d3255bfef95601890afd80709 ist der sha1-Hash für eine leere Datei überall, dasselbe gilt für die Null-Hashes anderer Algorithmen.

Sascha Kaupp
quelle
1
Du lernst jeden Tag etwas Neues! Ich wusste nicht, dass es für jeden Algorithmus einen "Nullwert" gibt. Danke vielmals.
Gizmo_the_Great
3
Die Hash-Algorithmen haben eine vorgegebene Anfangsbedingung - eine Art Zahl, mit der sie beginnen und beim Einlesen der Daten mutieren. Wenn keine Daten zu lesen sind, ist der Hash nur ein Ergebnis dieser voreingestellten Anfangsbedingung.
Kevin
Der Grund ist auch, dass der sha1-Algorithmus die Länge der Daten anfügt (in diesem Fall: Null) und der Nachricht auch einige Flags und Auffüllungen hinzugefügt werden. Sogar "keine Daten" führen immer noch dazu, dass einige Daten verarbeitet werden.
user92979
14

Alle Hash-Algorithmen in Quick Hash sind Merkle-Damgård-Konstruktionen . Als solches füllen sie die Nachricht auf ein Vielfaches der Blockgröße auf.

Die Algorithmen von Quick Hash erreichen dies, indem sie ein 1Bit, so viele 0Bits wie nötig und schließlich die Nachrichtenlänge anhängen .

Dies ermöglicht das Hashing von Nachrichten beliebiger Länge, einschließlich Nachrichten mit Nulllänge.

Dennis
quelle
Wenn mein Bearbeitungsgrund verwirrend ist, habe ich Ihre Antwort zunächst falsch gelesen und "aus Gründen der Klarheit" umformuliert. Dann habe ich festgestellt, dass meine Bearbeitung falsch war, und bin zurückgegangen und habe sie korrigiert. Das System konsolidierte die beiden Erklärungen, da sie sich im selben Zeitfenster befanden.
Fixer1234
1

(Add-on zu Dennis und fixer1234s Antwort?)

Kurz gesagt:

$ shasum -a 256 /dev/null e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null

Alle 0-Byte-Dateien haben dieselbe Prüfsumme.

$ shasum -a 512 /dev/null cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e /dev/null

$ shasum /dev/null da39a3ee5e6b4b0d3255bfef95601890afd80709 /dev/null

$ md5 /dev/null MD5 (/dev/null) = d41d8cd98f00b204e9800998ecf8427e (Hinweis: MD5 ist defekt; es ist kein "sicherer Hash". Dies ist im MD5-Eintrag in Wikipedia dokumentiert.)

Wenn Sie beispielsweise versuchen, die Unschädlichkeit von Dateien auf virustotal.com mit einem der hier aufgelisteten sicheren Hash-Werte zu überprüfen , können Sie z. B. da39a3ee5e6b4b0d3255bfef95601890afd80709sicher sein, dass die Datei tatsächlich 0 Byte groß war (oder ein Ordner, der virustotal, verwirrenderweise, Hashes, als ob es eine 0-Byte-Datei ist.)

Matthew Elvey
quelle
Wie ergänzt dies die aktuellen Antworten?
Máté Juhász
Indem ein Skeptiker direkt nachprüfen kann, ob alle 0-Byte-Dateien dieselbe Prüfsumme haben. Mehrere Personen standen dem skeptisch gegenüber, als sie auf virustotal.com über die Unschädlichkeit von 0-Byte-Dateien diskutierten. Ich denke, es fügt der Lösung einen Weg für jemanden hinzu, der auf diese Frage kommt und nicht sicher ist, ob es wahr ist, dass wenn die Prüfsumme cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877d2877e9a9a9a9a9a9a9a9a8
Matthew Elvey