29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
29-01-2012 : Parce que nous sommes un peuple debout, agissons pour rester dignes et responsables !
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / Système / Sécurité / Contrôler l'intégrité d'un fichier : signature GnuPG, MD5 et SHA





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox

Contrôler l'intégrité d'un fichier : signature GnuPG, MD5 et SHA

Date de publication: le mercredi 15 août 2007 à 21h00
Dernière modification: par Pascal BOYER le mardi 28 décembre 2010 à 13h37

Signature GnuPG

Télécharger une archive

Pour l'exemple, on se servira de l'archive du serveur web Apache 1.3.37

Sur ce serveur:

http://mir2.ovh.net/ftp.apache.org/dist/httpd/

...il est possible de télécharger la dernière version de Apache dans la branche 1.3, soit l'archive apache_1.3.37.tar.gz:

wget http://mir2.ovh.net/ftp.apache.org/dist/httpd/apache_1.3.37.tar.gz

--20:53:42--  http://mir2.ovh.net/ftp.apache.org/dist/httpd/apache_1.3.37.tar.gz
           => `apache_1.3.37.tar.gz'
Résolution de mir2.ovh.net... 213.186.33.38
Connexion vers mir2.ovh.net|213.186.33.38|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 2 665 370 (2.5M) [application/x-gzip]
 
100%[==================================================>] 2 665 370      6.21M/s
 
20:53:43 (6.21 MB/s) - « apache_1.3.37.tar.gz » sauvegardé [2665370/2665370]

Télécharger la signature

Il faut ensuite être en possession de la signature de l'archive:

wget http://mir2.ovh.net/ftp.apache.org/dist/httpd/apache_1.3.37.tar.gz.asc

--20:31:09--  http://mir2.ovh.net/ftp.apache.org/dist/httpd/apache_1.3.37.tar.gz.asc
           => `apache_1.3.37.tar.gz.asc'
Résolution de mir2.ovh.net... 213.186.33.38
Connexion vers mir2.ovh.net|213.186.33.38|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 481 [text/plain]
 
100%[=============================================>] 481           --.--K/s
 
20:31:09 (21.39 MB/s) - « apache_1.3.37.tar.gz.asc » sauvegardé [481/481]

Télécharger la clef

Enfin, on télécharge le dernier morceau du puzzle:

wget http://mir2.ovh.net/ftp.apache.org/dist/httpd/KEYS

--20:30:10--  http://mir2.ovh.net/ftp.apache.org/dist/httpd/KEYS
           => `KEYS'
Résolution de mir2.ovh.net... 213.186.33.38
Connexion vers mir2.ovh.net|213.186.33.38|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 302 597 (296K) [text/plain]
 
100%[===========================================>] 302 597        1.50M/s
 
20:30:10 (1.50 MB/s) - « KEYS » sauvegardé [302597/302597]

Effectuer le contrôle

Dans le même répertoire, on est donc en présence des trois fichiers suivants:

ls -la

total 336
drwxrwxrwx  3 root root    4096 2007-08-15 20:50 .
drwxrwxrwx 15 root staff   4096 2007-08-14 22:43 ..
-rw-r--r--  1 root root  2665370 2006-07-27 20:38 apache_1.3.37.tar.gz
-rw-r--r--  1 root root     481 2006-07-27 20:38 apache_1.3.37.tar.gz.asc
-rw-r--r--  1 root root  302597 2006-11-09 08:13 KEYS

Le contrôle s'effectue avec les deux commandes suivantes:

gpg --import KEYS

gpg: key 2719AF35: "Ben Laurie <ben@gonzo.ben.algroup.co.uk>" not changed
gpg: key A99F75DD: "Rodent of Unusual Size <coar@ACM.Org>" not changed
gpg: key 302DA568: "Rodent of Unusual Size (DSA) <coar@ACM.Org>" not changed
gpg: key 2C312D2F: "Rodent of Unusual Size <coar@ACM.Org>" not changed
gpg: key A0BB71C1: "Jim Jagielski <jim@jaguNET.com>" not changed
gpg: key 08C975E5: "Jim Jagielski <jim@apache.org>" not changed
gpg: key DD919C31: "sameer@c2.net" not changed
gpg: key 940A64BD: "Robert Hartill <robh@imdb.com>" not changed
gpg: key 631B5749: "Randy Terbush <randy@zyzzyva.com>" not changed
gpg: key 49A563D9: "Mark Cox <mjc@redhat.com>" not changed
gpg: key 2F90A69D: "Paul Sutton <paul@ukweb.com>" not changed
gpg: key BA20321D: no valid user IDs
gpg: this may be caused by a missing self-signature
gpg: key 26BB437D: "Ralf S. Engelschall <rse@engelschall.com>" not changed
gpg: key 45B91DF1: no valid user IDs
gpg: this may be caused by a missing self-signature
gpg: key 163751F5: "Dean Gaudet <dgaudet@arctic.org>" not changed
gpg: key EE65E321: "Martin Kraemer <martin@apache.org>" not changed
gpg: key FDE534D1: "Martin Kraemer <martin@apache.org>" not changed
gpg: key FDE534D1: "Martin Kraemer <martin@apache.org>" not changed
gpg: key EC140B81: "Dirk-Willem van Gulik <dirkx@webweaving.org>" not changed
gpg: key F08E012A: "Dean Gaudet <dgaudet@apache.org>" not changed
gpg: key F88341D9: "Lars Eilebrecht <lars@eilebrecht.org>" not changed
gpg: key 28AA55C5: "Daniel Lopez Ridruejo <ridruejo@apache.org>" not changed
gpg: key C808A7BF: "rbb@apache.org" not changed
gpg: key 06A14C05: no valid user IDs
gpg: this may be caused by a missing self-signature
gpg: key 00ADEBF5: "Marc Slemko <marcs@znep.com>" not changed
gpg: key 62C48B29: "Ask Bjoern Hansen <ask@apache.org>" not changed
gpg: key 10FDE075: "wrowe@covalent.net" not changed
gpg: key B96CD0C7: "Bill Stoddard <bill@wstoddard.com>" not changed
gpg: key 423FF2F1: "Paul J. Reder <rederpj@raleigh.ibm.com>" not changed
gpg: key 82AB7BD1: "Cliff Woolley <jwoolley@apache.org>" not changed
gpg: key 6BBA9D5D: "Cliff Woolley <jwoolley@apache.org>" not changed
gpg: key B0D5F771: "Cliff Woolley <jwoolley@virginia.edu>" not changed
gpg: key 37114B39: "Cliff Woolley <jwoolley@virginia.edu>" not changed
gpg: key 751D7F27: "Graham Leggett <minfrin@apache.org>" not changed
gpg: key 6D791A41: "Greg Ames <gregames@apache.org>" not changed
gpg: key E04F9A89: "Roy T. Fielding <fielding@gbiv.com>" not changed
gpg: key E2226795: "Justin R. Erenkrantz <jerenkrantz@apache.org>" not changed
gpg: key 2CF86427: "Ian Holsman <ianh@apache.org>" not changed
gpg: key 2CF86427: "Ian Holsman <ianh@apache.org>" not changed
gpg: key CC8B0F7E: "Aaron Bannert <abannert@kuci.org>" not changed
gpg: key 3A4E7AC9: "Brad Nicholes <bnicholes@novell.com>" not changed
gpg: key DE885DD3: "Sander Striker <striker@apache.org>" not changed
gpg: key E005C9CB: "Greg Stein <gstein@lyra.org>" not changed
gpg: key 8103A37E: "Andre Malo <nd@apache.org>" not changed
gpg: key 75A67692: "Erik Abele <erik@codefaktor.de>" not changed
gpg: key 2261D073: "Astrid Kessler (Kess) <kess@kess-net.de>" not changed
gpg: key 208F5064: "Joe Schaefer <joe@sunstarsys.com>" not changed
gpg: key 0300A2E9: no valid user IDs
gpg: this may be caused by a missing self-signature
gpg: key A879FCF5: "Gregory Trubetskoy (Grisha) <grisha@ispol.com>" not changed
gpg: key E76CF6D0: "Stas Bekman <stas@stason.org>" not changed
gpg: key 42721F00: "Paul Querna <chip@force-elite.com>" not changed
gpg: key F39B3750: "Colm MacCarthaigh <colm.maccarthaigh@heanet.ie>" not changed
gpg: key 311A3DE5: "Ruediger Pluem <rpluem@apache.org>" not changed
gpg: key 83E6AE0D: "Maxime Petazzoni (Bulix.org) <maxime.petazzoni@bulix.org>" not changed
gpg: key 40581837: "Nick Kew <nick@webthing.com>" not changed
gpg: key 152924AF: "Sander Temme <sander@temme.net>" not changed
gpg: key 7F4436ED: "Sander Temme <sander@temme.net>" not changed
gpg: key EC88A0BF: "Philip M. Gollucci <pgollucci@p6m7g8.com>" not changed
gpg: Total number processed: 58
gpg:           w/o user IDs: 4
gpg:              unchanged: 54

Et enfin:

gpg --verify apache_1.3.37.tar.gz.asc

gpg: Signature made jeu 27 jui 2006 20:35:51 CEST using RSA key ID 10FDE075
 gpg: Good signature from "wrowe@covalent.net"
 gpg:                 aka "William A. Rowe, Jr. <wrowe@rowe-clan.net>"
 gpg:                 aka "wrowe@lnd.com"
 gpg:                 aka "wrowe@apache.org"
 gpg: WARNING: This key is not certified with a trusted signature!
 gpg:          There is no indication that the signature belongs to the owner.
 Primary key fingerprint: 33 16 9B 46 FC 12 D4 01  CA 6D DB D7 DE EA 4F D7

La deuxième ligne nous indique que la signature est correcte («Good signature from...»)

Empreinte MD5

Pour une description détaillés de cet outil, je vous renvoie à la page que lui consacre Wikipedia: MD5

Prenons l'exemple d'une archive openssl téléchargée sur le site officiel.

Télécharger l'archive

wget http://www.openssl.org/source/openssl-0.9.8e.tar.gz

Télécharger l'empreinte MD5

wget http://www.openssl.org/source/openssl-0.9.8e.tar.gz.md5

Contrôle d'intégrité

On calcule l'empreinte unique engendrée par le fichier dont on souhaite vérifier l'intégrité:

md5sum openssl-0.9.8e.tar.gz

3a7ff24f6ea5cd711984722ad654b927  openssl-0.9.8e.tar.gz

L'empreinte est la longue chaîne de caractères qui précède le nom de l'archive.

Il ne reste plus qu'à comparer avec l'empreinte contenue dans le second fichier:

cat openssl-0.9.8e.tar.gz.md5

3a7ff24f6ea5cd711984722ad654b927

Signature SHA-1 ou SHA-256 ou SHA-384 ou SHA-512

Pour la description détaillé de toute la famille SHA des fonctions de hachage cryptographique je vous renvoie à nouveau vers Wikipedia: SHA

Le principe est en tout point identique à celui de MD5.

Prenons l'exemple d'une archive openssl téléchargée sur le site officiel.

Télécharger l'archive

wget http://www.openssl.org/source/openssl-0.9.8e.tar.gz

Télécharger l'empreinte SHA-1

wget http://www.openssl.org/source/openssl-0.9.8e.tar.gz.sha1

Contrôle d'intégrité

On calcule l'empreinte unique engendrée par le fichier dont on souhaite vérifier l'intégrité:

sha1sum openssl-0.9.8e.tar.gz

b429872d2a287714ab37e42296e6a5fbe23d32ff openssl-0.9.8e.tar.gz

L'empreinte est la longue chaîne de caractères qui précède le nom de l'archive.

:
Sur votre distribution Debian vous trouverez également les utilitaires sha224sum, sha256sum, sha384sum et sha512sum

Il ne reste plus qu'à comparer avec l'empreinte contenue dans le second fichier:

cat openssl-0.9.8e.tar.gz.sha1

b429872d2a287714ab37e42296e6a5fbe23d32ff
 

Commentaires