Message-Digest mit PassPhrase


Dieses KommandoZeilenProgramm arbeitet in der Art der bekannten Utilities "md5sum" oder "sha1sum" - das heisst, fuer eine Liste von Dateien oder fuer stdin werden "Message-Digests" erstellt. Es stehen die Message-Digests MD5, SHA1 und SHA256 zur Verfuegung. (Spaeter gibt's vielleicht irgendwann auch SHA512.)

Der Unterschied zu den ueblichen Utilities dieser Art ist, dass vor der Erstellung der MDs die Messages mit einer "PassPhrase" geprefixed werden koennen. Der MD-Wert ist dann natuerlich ein anderer, und er kann nur mit der PassPhrase reproduziert werden.

Dieses Dokument ist kein LehrText fuer Hash-Algorithmen. Deshalb gibt es hier keine tiefgehenderen Erklärungen.

Diese Seite kann in FirmenNetze gespiegelt werden - damit erwirbt die betreffende Firma keinerlei Rechte an diesem Dokument. Das ist schon deshalb nicht möglich, weil der Code unter der GPL steht.


Ein paar Beispiele. Als BeispielsDateien verwenden wir die beiden Dateien hash1 und hash2, die am 17. August auf der Crypto 2004 vorgestellt wurden, und die denselben MD5-Message-Digest haben.

 $ csum --md5sum hash1 hash2
a4c0d35c95a63a805915367dcfe6b751  hash1
a4c0d35c95a63a805915367dcfe6b751  hash2
 $

zeigt die MD5-CheckSumme der beiden Dateien hash1 und hash2. Diese beiden Dateien sind von besonderem Interesse, da sie auf der Crypto 2004 am 17. August 2004 vorgestellt wurden als zwei unterschiedliche Dateien, die aber denselben MD5-Message-digest haben.

Die KomandoZeilenOption "--md5sum" anstatt "--md5" unterdrueckt die Warnung fuer ein fehlendes PassWort.

 $ csum --sha1sum hash1 hash2
2783c4ff4a3f20d25f2598a8b052b890c37dcac4  hash1
3c35410823ef00b12d020981c1cf8564c0f89bcc  hash2
 $

zeigt die SHA1-CheckSumme der beiden Dateien hash1 und hash2. Obwohl die MD5-CheckSummen fuer diese Dateien gleich sind, ist das fuer SHA1 nicht mehr der Fall.

 $ csum --sha256sum hash1 hash2
8e278f3ad99b4f78e7b27ce324b8f7c0b2813d8ae22a82b47ad7f4d3b2f5be09  hash1
642900cf972f2a11f7dfa5e792f879cf89a7c6db85844b8b99e765297eb4e5be  hash2
 $

zeigt die SHA256-CheckSumme der beiden Dateien hash1 und hash2.

Mit der PassPhrase ("qwertz") sieht das Ganze so aus:





 $ csum --md5 -p qwertz hash1 hash2
0664c274fb342ced94f7bcc70f5f0e7b  hash1
37375f6b912e1e5b414926c7a48b2353  hash2
 $ csum --sha1 -p qwertz hash1 hash2
5a06a57fad5b8b1843c1f9d3c50e17365647bac4  hash1
e84631e05c5d3201a465d1d44e4bc5e8698762f2  hash2
 $ csum --sha256 -p qwertz hash1 hash2
49222800ee312cfad668d4aee0cae1ead0268747ac36b8ad9c35fcaa745dc566  hash1
68f084ee3a1742045fee40dceb036725c14b551656f930a0c0afc11388f4660b  hash2
 $

Diese PassPhrase kann auch anders angegeben werden, etwa vermoege der Option "--ask-passphrase", die das Programm veranlasst, die PassPhrase interaktiv nachzufragen, oder auch etwa durch Environment-Variablen:

 $ export CSUMPASS=qwertz
 $ csum --sha256 hash1 hash2
49222800ee312cfad668d4aee0cae1ead0268747ac36b8ad9c35fcaa745dc566  hash1
68f084ee3a1742045fee40dceb036725c14b551656f930a0c0afc11388f4660b  hash2
 $

Weitere Optionen beziehen sich auf einen help-Text ("-h" oder "--help"), Verbosity ("-v" oder "--verbose"), Debugging-Output ("-d" oder "--debug").

Das Pruefen gegen eine vorhandene Datei mit CheckSummen ("-c", faengt gerade an, zu funktionieren. In einer PruefDatei muss etwas drinstehen, was durch csum selbst erzeugt wurde:

 $ csum -p DasRichtigePassWort --sha256 hash1 hash2 > pruefdatei.sha256c
 $ csum -p DasRichtigePassWort --sha256 -c pruefdatei.sha256c
   number of file matches      =    2
 $ csum -p DasFalschePassWort --sha256 -c pruefdatei.sha256c
   number of FILE MISSMATCHES! =    2
 $

Mit der "--verbose" Option kann man sich fuer jede einzelne Datei das PruefErgebnis ausgeben lassen.

Das Programm ist noch in einem fruehen Stadium der Entwicklung. LizenzLage wie Open-Source.


Hier ist der Source-Code csum.c,

und das Linux-Binary csum, das sofort ablauffähig ist, wenn man mir traut.

und hier die beiden schon erwaehnten TestDateien von der Crypto 2004: hash1 und hash2

Zur Produktion: die eigentlichen Hash-Algorithmen sind gar nicht von mir, sondern von den WebSeiten
http://www.cr0.net:8040/code/crypto/md5/
http://www.cr0.net:8040/code/crypto/sha1/
http://www.cr0.net:8040/code/crypto/sha256/
entnommen. Dieser Code steht auch unter der GPL. Das notwendige "makefile" zur Produktion ist oben im csum.c angedeutet.


HomePage


© 2004 Herwig Huener 2004-08-19 20:15:00 MESZ
© 2004 Herwig Huener 2004-09-02 00:11:00 MESZ
Email-Adresse: csum!@!Herwig-Huener.de