Prüfsummen SHA1, SHA256, MD5 überprüfen

Prüfsummen oder auch Checksummen als Hash codiert dienen oft um die Authentizität einer Datei, die man aus dem Internet herunterladen kann, zu gewährleisten. Die Gebräuchlichsten sind hier md5, SHA1 und SHA256. Die Abkürzungen stehen für kryptographische Verfahren. Allen ist gemeinsam, dass eine kleine Abweichung in einer Datei zu großen Unterschieden in den Hashwerten führt. Das folgende Beispiel zeigt das Verhalten exemplarisch:

$ echo "123456789" > testfile
$ md5sum testfile && sha1sum testfile && sha256sum testfile 
b2cfa4183267af678ea06c7407d4d6d8 testfile
179c94cf45c6e383baf52621687305204cef16f9 testfile
6d78392a5886177fe5b86e585a0b695a2bcd01a05504b3c4e38bc8eeb21e8326 testfile
$ echo "023456789" > testfile
$ md5sum testfile && sha1sum testfile && sha256sum testfile 
c159e1a7fa9951401680d5e6aead65e8 testfile
d61c99de943fb8a1c707d54612961304a001a0b8 testfile
0accf17861b34d7b06477da622ff4506458593496cedf107e5403e65b10b58bd testfile

Die Checksumme kann also die Integrität von einer Datei durch Vergleich bestätigen. Das Wesen dieser Checksummen ist, dass die Zeichkette eindeutiger einer Datei zugeordnet werden kann aber sich aus dieser nicht die Datei ableiten lässt. Idealerweise würde diese Zeichenkette eindeutig die Datei umschreiben. Da aber in dieser Zeichenkette deutlich weniger Informationen enthalten sind als in den meisten gewöhnlichen Dateien führt dazu, dass eine Checksumme nicht eindeutig eine einzige Datei repräsentiert. Der Trick ist nun die Verwendung von kryptographischen Algorithmen die eine Vorhersage einer geänderten Datei – durch Viren, Trojaner, Backdoors usw. – deutlich erschweren soll. Gelingt eine Vorhersage so gilt ein Algorithmus als gebrochen und es entsteht eine sogenannte Kollision. Aufgrund von Forschungen in der Richtung von Vorhersagbarkeit von Hashwerten gilt heute, obwohl immer noch in Benutzung, md5 als unsicher und SH1 als nicht mehr empfehlenswert.

Unter Linux gibt es mehrere Wege einen Hashwert mit dem einer Datei zu vergleichen. Die einfachste Möglichkeit ist ein Dateimanager und ich zeige das hier anhand von Screenshots vom Standard-Dateimanager von KDE Dolphin. Die Hashwerte findet man dort durch rechte Maustaste auf die Datei klicken unter Eigenschaften und dem Reiter Prüfsummen. In die obere Eingabezeile kann man den Hashwert von der Website eintragen und man erhält direkt den Vergleich mit den ermittelten Hashwerten.

Website mit Hashwerten (hier SHA256)
Gleiche Datei mit korrektem SHA256-Hashwert in Dolphin
Gleiche Datei mit falschen SHA256-Hashwert in Dolphin

Ein andere Möglichkeit wäre die Shell bzw. Konsole um die errechneten Hashwerte mit den angegebenen zu vergleichen. Es gibt für die verschiedene Hash-Verfahren jeweils einen Befehl (md5sum, sha1sum und sha256sum) um diese aus der Datei zu ermitteln. Der Vergleich kann dann händisch erfolgen (die Hashwerte unterscheiden sich, wie schon erwähnt, bei einer geringfügigen Änderung dramatisch) oder per Option -c der Checksum-Befehle. Für die den händischen Vergleich und die dazu benötigten Befehle siehe erstes Terminalprotokoll auf dieser Seite. md5sum, sha1sum und auch sha256sum funktionieren alle mit der Option -c. Exemplarisch wird das hier mit md5sum gezeigt:

$ echo 123456789 > testfile
$ md5sum testfile > checksum.md5
cat checksum.md5
b2cfa4183267af678ea06c7407d4d6d8 testfile
$ md5sum -c checksum.md5
testfile: OK

Zunächst wird wieder ein die Datei testfile angelegt und der Hash in die Datei checksum.md5 geschrieben. Als letztes erfolgt der Vergleich von berechneter und vorgegebenem Hash der hier natürlich stimmen muss. Verändert man die Datei testfile nachträglich so sollte der Vergleich einen Fehler ausgeben:

$ echo 0 >> testfile 
$ md5sum -c checksum.md5
testfile: FEHLSCHLAG
md5sum: WARNUNG: die 1 berechnete Prüfsumme passte NICHT

 

1 Gedanke zu „Prüfsummen SHA1, SHA256, MD5 überprüfen“

Kommentare sind geschlossen.

kais-universum.de