Md5sum: Unterschied zwischen den Versionen
Boenki (Diskussion | Beiträge) K ok, auf deutsch: SEITENTITEL |
Dirk (Diskussion | Beiträge) →Alternativen: hinweise auf die sha*sum-tools |
||
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 5: | Zeile 5: | ||
Alle in diesem Artikel verwendeten Hashes stellen exemplarische Werte dar oder wurden anhand von Testdateien ermittelt, die nach dem Erstellen des Artikels gelöscht wurden. | Alle in diesem Artikel verwendeten Hashes stellen exemplarische Werte dar oder wurden anhand von Testdateien ermittelt, die nach dem Erstellen des Artikels gelöscht wurden. | ||
== Alternativen == | |||
Da MD5 im Jahre 2008 erfolgreich und komplett gebrochen wurde, wird von einer weiteren Verwendung in Verbindung mit sicherheitsrelevanten Prozessen dringend abgeraten. Bei SHA-1 gab es bereits erfolgreiche Angriffe auf einzelne Runden; zwar ist der komplette Algorithmus noch nicht gebrochen, dies ist jedoch nur noch eine Frage der Zeit. Stattdessen sollte einer SHA-2-Algorithmen verwendet werden. | |||
Die Programme {{ic|sha224sum}}, {{ic|sha256sum}}, {{ic|sha384sum}} und {{ic|sha512sum}} haben eine – bis auf minimale Unterschiede – zu {{ic|md5sum}} identische Syntax und liefern entsprechende Ergebnisse. Sofern es nicht ausschließlich um Integritätsprüfung von nicht sicherheitsrelevanten Dateien geht, sind diese Programme der Verwendung von {{ic|md5sum}} vorzuziehen. | |||
== Verfügbarkeit == | == Verfügbarkeit == | ||
Zeile 19: | Zeile 24: | ||
Die einfachste Verwendung stellt das Erzeugen und Anzeigen eines MD5-Hashes einer Datei dar. | Die einfachste Verwendung stellt das Erzeugen und Anzeigen eines MD5-Hashes einer Datei dar. | ||
{{hc|md5sum testfile|1d38e0faac4f9a83d2775e0c20c275aa testfile}} | |||
Der MD5-Hash von der Datei „testfile“ ist also „1d38e0faac4f9a83d2775e0c20c275aa“. Eine weitere Methode ist das direkte Eingeben von Informationen über STDIN. | Der MD5-Hash von der Datei „testfile“ ist also „1d38e0faac4f9a83d2775e0c20c275aa“. Eine weitere Methode ist das direkte Eingeben von Informationen über STDIN. | ||
{{hc|md5sum|Aus diesem Text wird nun ein MD5-Hash ermittelt. | |||
afdff141e572e2f9e92c53ee09238000 -}} | |||
{{hc|1=cat testfile | md5sum|2=1d38e0faac4f9a83d2775e0c20c275aa -}} | |||
Hier wird ein mal ein Text eingegeben. Wenn die Eingabe vollständig ist, wird sie mittels Strg+D beendet. Daraufhin generiert md5sum den Hash. Im zweiten Beispiel wird die Datei „testfile“ direkt auf der Shell ausgegeben, und mittels Pipe an md5sum [[Umleitungen#Pipes|weitergegeben]]. Im zweiten Fall ist der Hash mit dem allerersten Beispiel identisch. | Hier wird ein mal ein Text eingegeben. Wenn die Eingabe vollständig ist, wird sie mittels Strg+D beendet. Daraufhin generiert md5sum den Hash. Im zweiten Beispiel wird die Datei „testfile“ direkt auf der Shell ausgegeben, und mittels Pipe an md5sum [[Umleitungen#Pipes|weitergegeben]]. Im zweiten Fall ist der Hash mit dem allerersten Beispiel identisch. | ||
Zeile 35: | Zeile 37: | ||
Will man eine Prüfdatei erstellen, genügt es, wenn man die Ausgabe von md5sum in eine Datei umleitet. | Will man eine Prüfdatei erstellen, genügt es, wenn man die Ausgabe von md5sum in eine Datei umleitet. | ||
md5sum testfile > testfile.md5 | |||
Es hat sich eingebürgert, bei einzelnen Dateien die Prüfdatei genau so zu benennen, wie die zu prüfende Datei, und „.md5“ an den Dateinamen anzuhängen. Für die Funktionsweise von md5sum ist dies allerdings nicht von Bedeutung. Will man mehrere MD5-Hashes von Dateien zum Prüfen in die Prüfdatei schreiben, kann man einfach mehrere Dateinamen angeben. | Es hat sich eingebürgert, bei einzelnen Dateien die Prüfdatei genau so zu benennen, wie die zu prüfende Datei, und „.md5“ an den Dateinamen anzuhängen. Für die Funktionsweise von md5sum ist dies allerdings nicht von Bedeutung. Will man mehrere MD5-Hashes von Dateien zum Prüfen in die Prüfdatei schreiben, kann man einfach mehrere Dateinamen angeben. | ||
{{hc|md5sum * > mehreredateien.md5|md5sum: Desktop: Ist ein Verzeichnis | |||
md5sum: testkram: Ist ein Verzeichnis | |||
md5sum: zeugs: Ist ein Verzeichnis | |||
[…]}} | |||
Verzeichnisse werden hier natürlich nicht mit in die Liste der zu prüfenden Dateien aufgenommen. Wenn man sich nun den Inhalt der Datei betrachtet, sieht man mehrere Hashes mit den dazugehörigen Dateinamen. | Verzeichnisse werden hier natürlich nicht mit in die Liste der zu prüfenden Dateien aufgenommen. Wenn man sich nun den Inhalt der Datei betrachtet, sieht man mehrere Hashes mit den dazugehörigen Dateinamen. | ||
{{hc|cat mehreredateien.md5|1d38e0faac4f9a83d2775e0c20c275aa filename | |||
d62dbecba408d9fb056e38d1860a455e komplett.png | |||
1d38e0faac4f9a83d2775e0c20c275aa screenshot.png | |||
58024bdbee7739233546bc6d6accf367 testfile | |||
[…]}} | |||
Über einen „Trick“ können jedoch auch Dateien in Unterverzeichnissen berücksichtigt werden. | Über einen „Trick“ können jedoch auch Dateien in Unterverzeichnissen berücksichtigt werden. | ||
Zeile 73: | Zeile 73: | ||
Das Überprüfen von MD5-Hashes gestaltet sich genau so einfach, wie das Erzeugen von ebendiesem. Man benötigt lediglich die Datei, in der die Hashes nach dem o.a. Schema verzeichnet sind. | Das Überprüfen von MD5-Hashes gestaltet sich genau so einfach, wie das Erzeugen von ebendiesem. Man benötigt lediglich die Datei, in der die Hashes nach dem o.a. Schema verzeichnet sind. | ||
{{hc|md5sum -c filename.md5|filename: OK}} | |||
Es werden dann für alle Dateien die entsprechenden Resultate ausgegeben. Sollte der Hash von „filename“ in der Prüfdatei nicht mit dem von md5sum zum Testen selbständig generierten Hash übereinstimmen, wird eine Fehlermeldung ausgegeben. | Es werden dann für alle Dateien die entsprechenden Resultate ausgegeben. Sollte der Hash von „filename“ in der Prüfdatei nicht mit dem von md5sum zum Testen selbständig generierten Hash übereinstimmen, wird eine Fehlermeldung ausgegeben. | ||
{{hc|md5sum -c filename.md5|filename: FEHLSCHLAG | |||
md5sum: Warnung: die berechnete Prüfsumme passte NICHT}} | |||
Mittels des Parameters „-c“ wird md5sum angewiesen, die angegebene Datei als Prüfdatei zu verwenden. Im Beispiel ist dies die im ersten Teil generierte Prüfdatei „filename.md5“, in der sich ein Eintrag (der Eintrag für „filename“) befindet. Sollte eine der zu prüfenden Dateien nicht vorhanden sein, wird ebenfalls eine Fehlermeldung ausgegeben. | Mittels des Parameters „-c“ wird md5sum angewiesen, die angegebene Datei als Prüfdatei zu verwenden. Im Beispiel ist dies die im ersten Teil generierte Prüfdatei „filename.md5“, in der sich ein Eintrag (der Eintrag für „filename“) befindet. Sollte eine der zu prüfenden Dateien nicht vorhanden sein, wird ebenfalls eine Fehlermeldung ausgegeben. | ||
{{hc|md5sum -c filename.md5|md5sum: filenameblubb: Datei oder Verzeichnis nicht gefunden | |||
filename: FEHLSCHLAG bei open oder read | |||
md5sum: WARNUNG: die eine aufgeführte Datei konnte nicht gelesen werden}} | |||
Will man informiert werden, welche Zeilen in der übergebenen Prüfdatei nicht der Syntax gemäß formatiert sind, ist dies mit dem Parameter „-w“ beim Überprüfen möglich. | Will man informiert werden, welche Zeilen in der übergebenen Prüfdatei nicht der Syntax gemäß formatiert sind, ist dies mit dem Parameter „-w“ beim Überprüfen möglich. | ||
{{hc|md5sum -cw filename.md5|md5sum: filename.md5: 1: nicht korrekt formatierte MD5‐Prüfsummenzeile | |||
md5sum: filename.md5: keine korrekt formatierte MD5‐Prüfsummenzeile gefunden}} | |||
Je nicht richtig formatierter Zeile wird ein Hinweis ausgegeben, um welche Zeile es sich handelt. Abschließend wird darüber auch noch mal eine Zusammenfassung ausgegeben. Die Syntax der Datei ist recht einfach. | Je nicht richtig formatierter Zeile wird ein Hinweis ausgegeben, um welche Zeile es sich handelt. Abschließend wird darüber auch noch mal eine Zusammenfassung ausgegeben. Die Syntax der Datei ist recht einfach. | ||
Zeile 104: | Zeile 100: | ||
Beim Generieren und Prüfen von MD5-Hashes ermittelt md5sum selbständig, ob es sich um eine Datei mit binärem Inhalt, oder um eine Textdatei handelt. Bei der normalen Verwendung von md5sum ist eine Anpassung hier nicht nötig, daher wird diese Unterscheidung nur kurz angerissen. | Beim Generieren und Prüfen von MD5-Hashes ermittelt md5sum selbständig, ob es sich um eine Datei mit binärem Inhalt, oder um eine Textdatei handelt. Bei der normalen Verwendung von md5sum ist eine Anpassung hier nicht nötig, daher wird diese Unterscheidung nur kurz angerissen. | ||
{{hc|md5sum -b filename|1d38e0faac4f9a83d2775e0c20c275aa *filename}} | |||
Der Parameter „-b“ definiert, dass alle Dateien, die eingelesen werden, als binär markiert werden, und zwar unabhängig von ihrem Inhalt. Durch ein Sternchen vor dem Dateinamen in der Hash-Liste wird die Datei als binär markiert. Der binary-Parameter hat keinen Einfluss auf den Erzeugten MD5-Hash. Dieses Verhalten ist zum Beispiel unter ''MS DOS'' Standard. | Der Parameter „-b“ definiert, dass alle Dateien, die eingelesen werden, als binär markiert werden, und zwar unabhängig von ihrem Inhalt. Durch ein Sternchen vor dem Dateinamen in der Hash-Liste wird die Datei als binär markiert. Der binary-Parameter hat keinen Einfluss auf den Erzeugten MD5-Hash. Dieses Verhalten ist zum Beispiel unter ''MS DOS'' Standard. | ||
{{hc|md5sum -t filename|1d38e0faac4f9a83d2775e0c20c275aa filename}} | |||
Mittels des Parameters „-t“ wird md5sum angewiesen, alle Dateien, die eingelesen werden, als Textdateien zu behandeln. Dies ist unter Linux Standard, unter anderen Systemen ist dies Standard beim einlesen von Dateien. | Mittels des Parameters „-t“ wird md5sum angewiesen, alle Dateien, die eingelesen werden, als Textdateien zu behandeln. Dies ist unter Linux Standard, unter anderen Systemen ist dies Standard beim einlesen von Dateien. |
Aktuelle Version vom 16. Juni 2013, 22:22 Uhr
Um die Integrität von Dateien zu überprüfen, kann man mehrere Methoden verwenden. Die verbreitetste Methode zu Integritätsprüfung stellt MD5 dar. MD5 ist ein Algorithmus, der aus der Eingabe (eine Datei, STDIN, etc.) eine Prüfsumme (in der MD5-Terminologie „Hash“) berechnet.
Anhand dieses Hashes kann die Integrität der Datei überprüft werden indem z.B. nach dem Download der Datei dieser Hash erzeugt, und mit dem vom Anbieter angegebenen Hash verglichen wird. Wenn beide Hashes übereinstimmen, ist die Datei mit sehr hoher Wahrscheinlichkeit integer.
Alle in diesem Artikel verwendeten Hashes stellen exemplarische Werte dar oder wurden anhand von Testdateien ermittelt, die nach dem Erstellen des Artikels gelöscht wurden.
Alternativen
Da MD5 im Jahre 2008 erfolgreich und komplett gebrochen wurde, wird von einer weiteren Verwendung in Verbindung mit sicherheitsrelevanten Prozessen dringend abgeraten. Bei SHA-1 gab es bereits erfolgreiche Angriffe auf einzelne Runden; zwar ist der komplette Algorithmus noch nicht gebrochen, dies ist jedoch nur noch eine Frage der Zeit. Stattdessen sollte einer SHA-2-Algorithmen verwendet werden.
Die Programme sha224sum
, sha256sum
, sha384sum
und sha512sum
haben eine – bis auf minimale Unterschiede – zu md5sum
identische Syntax und liefern entsprechende Ergebnisse. Sofern es nicht ausschließlich um Integritätsprüfung von nicht sicherheitsrelevanten Dateien geht, sind diese Programme der Verwendung von md5sum
vorzuziehen.
Verfügbarkeit
Das Programm „md5sum“ gehört zu den so genannten „core utils“, und somit zur Grundinstallation eines Linux-Systems. Mittels dieses Tools können MD5-Hashes erzeugt und überprüft werden. Zudem stellen die meisten Programmier- und Scriptsprachen ebenfalls MD5-Funktionen zur Verfügung.
Die gängigste Verwendung von MD5-Hashes ist die Integritätsprüfung von herunterladbaren Dateien. Dazu wird vom Anbieter der Datei neben dieser Datei ein MD5-Hash bereitgestellt. Nach dem Herunterladen wird für die heruntergeladene Datei ebenfalls ein MD5-Hash erstellt und überprüft, ob der vom Anbieter bereitgestellte Hash und der selbst-erzeugte Hash identisch sind.
Die meisten Downloadmanager verfügen ebenfalls über die Möglichkeit MD5-Hashes zu überprüfen. Auch Pacman verwendet für die Integritätsprüfung MD5.
Verwendung
Es gibt zwei Haupt-Verwendungsarten von md5sum, zum Einen das Erzeugen und Anzeigen von MD5-Hashes, zum Anderen das Prüfen einer Datei auf Integrität anhand eines bestehenden MD5-Hashes.
Erzeugen
Die einfachste Verwendung stellt das Erzeugen und Anzeigen eines MD5-Hashes einer Datei dar.
md5sum testfile
1d38e0faac4f9a83d2775e0c20c275aa testfile
Der MD5-Hash von der Datei „testfile“ ist also „1d38e0faac4f9a83d2775e0c20c275aa“. Eine weitere Methode ist das direkte Eingeben von Informationen über STDIN.
md5sum
Aus diesem Text wird nun ein MD5-Hash ermittelt. afdff141e572e2f9e92c53ee09238000 -
cat testfile | md5sum
1d38e0faac4f9a83d2775e0c20c275aa -
Hier wird ein mal ein Text eingegeben. Wenn die Eingabe vollständig ist, wird sie mittels Strg+D beendet. Daraufhin generiert md5sum den Hash. Im zweiten Beispiel wird die Datei „testfile“ direkt auf der Shell ausgegeben, und mittels Pipe an md5sum weitergegeben. Im zweiten Fall ist der Hash mit dem allerersten Beispiel identisch.
Will man eine Prüfdatei erstellen, genügt es, wenn man die Ausgabe von md5sum in eine Datei umleitet.
md5sum testfile > testfile.md5
Es hat sich eingebürgert, bei einzelnen Dateien die Prüfdatei genau so zu benennen, wie die zu prüfende Datei, und „.md5“ an den Dateinamen anzuhängen. Für die Funktionsweise von md5sum ist dies allerdings nicht von Bedeutung. Will man mehrere MD5-Hashes von Dateien zum Prüfen in die Prüfdatei schreiben, kann man einfach mehrere Dateinamen angeben.
md5sum * > mehreredateien.md5
md5sum: Desktop: Ist ein Verzeichnis md5sum: testkram: Ist ein Verzeichnis md5sum: zeugs: Ist ein Verzeichnis […]
Verzeichnisse werden hier natürlich nicht mit in die Liste der zu prüfenden Dateien aufgenommen. Wenn man sich nun den Inhalt der Datei betrachtet, sieht man mehrere Hashes mit den dazugehörigen Dateinamen.
cat mehreredateien.md5
1d38e0faac4f9a83d2775e0c20c275aa filename d62dbecba408d9fb056e38d1860a455e komplett.png 1d38e0faac4f9a83d2775e0c20c275aa screenshot.png 58024bdbee7739233546bc6d6accf367 testfile […]
Über einen „Trick“ können jedoch auch Dateien in Unterverzeichnissen berücksichtigt werden.
find . -type f -print0 | xargs -0 md5sum > MD5SUM
Die entsprechende Datei beinhaltet dann auch Dateien in Unterverzeichnissen.
eff514a9c55bc6b8ce8e836ee0119441 ./Desktop/dateiA 1d38e0faac4f9a83d2775e0c20c275aa ./filename ab55a144d95bc43b492cce938234af57 ./testkram/script.sh 61383947e7868f2177ec1e6491095c98 ./testkram/wwwcheck […]
Es ist allerdings sinnvoller, Verzeichnisse zu packen und für das erzeugte Archiv einen MD5-Hash zu generieren, als alle Dateien in Unterverzeichnissen zu erfassen. Damit das Prüfen erfolgreich ist, müssen alle Dateien später in der selben Verzeichnisstruktur vorhanden sein, wie beim Generieren der Prüfdatei.
Der Einfachheit halber wird in den nachfolgenden Beispielen allerdings nur das Prüfen einer einzelnen Datei behandelt. Das Prüfen mehrerer Dateien verhält sich allerdings analog dazu.
Überprüfen
Das Überprüfen von MD5-Hashes gestaltet sich genau so einfach, wie das Erzeugen von ebendiesem. Man benötigt lediglich die Datei, in der die Hashes nach dem o.a. Schema verzeichnet sind.
md5sum -c filename.md5
filename: OK
Es werden dann für alle Dateien die entsprechenden Resultate ausgegeben. Sollte der Hash von „filename“ in der Prüfdatei nicht mit dem von md5sum zum Testen selbständig generierten Hash übereinstimmen, wird eine Fehlermeldung ausgegeben.
md5sum -c filename.md5
filename: FEHLSCHLAG md5sum: Warnung: die berechnete Prüfsumme passte NICHT
Mittels des Parameters „-c“ wird md5sum angewiesen, die angegebene Datei als Prüfdatei zu verwenden. Im Beispiel ist dies die im ersten Teil generierte Prüfdatei „filename.md5“, in der sich ein Eintrag (der Eintrag für „filename“) befindet. Sollte eine der zu prüfenden Dateien nicht vorhanden sein, wird ebenfalls eine Fehlermeldung ausgegeben.
md5sum -c filename.md5
md5sum: filenameblubb: Datei oder Verzeichnis nicht gefunden filename: FEHLSCHLAG bei open oder read md5sum: WARNUNG: die eine aufgeführte Datei konnte nicht gelesen werden
Will man informiert werden, welche Zeilen in der übergebenen Prüfdatei nicht der Syntax gemäß formatiert sind, ist dies mit dem Parameter „-w“ beim Überprüfen möglich.
md5sum -cw filename.md5
md5sum: filename.md5: 1: nicht korrekt formatierte MD5‐Prüfsummenzeile md5sum: filename.md5: keine korrekt formatierte MD5‐Prüfsummenzeile gefunden
Je nicht richtig formatierter Zeile wird ein Hinweis ausgegeben, um welche Zeile es sich handelt. Abschließend wird darüber auch noch mal eine Zusammenfassung ausgegeben. Die Syntax der Datei ist recht einfach.
{md5hash} {flag}{dateiname}
An Anfang einer jeden Zeile steht der MD5-Hash gefolgt von einem Leerzeichen, nach dem Leerzeichen steht das Flag der Datei. Dies ist entweder ein Sternchen oder ein Leerzeichen, je nachdem ob die Datei als Binär- oder als Text-Datei eingelesen wurde. Direkt nach dem Flag folgt der Dateiname. Nach dem Dateinamen erfolgt ein Zeilenumbruch.
Binary und Text
Beim Generieren und Prüfen von MD5-Hashes ermittelt md5sum selbständig, ob es sich um eine Datei mit binärem Inhalt, oder um eine Textdatei handelt. Bei der normalen Verwendung von md5sum ist eine Anpassung hier nicht nötig, daher wird diese Unterscheidung nur kurz angerissen.
md5sum -b filename
1d38e0faac4f9a83d2775e0c20c275aa *filename
Der Parameter „-b“ definiert, dass alle Dateien, die eingelesen werden, als binär markiert werden, und zwar unabhängig von ihrem Inhalt. Durch ein Sternchen vor dem Dateinamen in der Hash-Liste wird die Datei als binär markiert. Der binary-Parameter hat keinen Einfluss auf den Erzeugten MD5-Hash. Dieses Verhalten ist zum Beispiel unter MS DOS Standard.
md5sum -t filename
1d38e0faac4f9a83d2775e0c20c275aa filename
Mittels des Parameters „-t“ wird md5sum angewiesen, alle Dateien, die eingelesen werden, als Textdateien zu behandeln. Dies ist unter Linux Standard, unter anderen Systemen ist dies Standard beim einlesen von Dateien.