On parle parfois de somme de contrôle pour vérifier l'intégrité d'un fichier téléchargé, mais de quoi s'agit-il précisément ?

De nos jours, avec la vitesse et la fiabilité d'internet, on ne les utilise plus tellement. Encore moins quand on télécharge, une distribution comme c'est mon cas, via un Torrent, qui s'en charge lui-même.

Alors pourquoi une somme de contrôle, comment la calcule-t-on et concrètement comment s'en sert-on ?

Pourquoi calculer une somme de contrôle

Prenons le cas de la dernière distribution d'Ubuntu, disponible par exemple à l'adresse suivante:

http://www.ubuntu.com/download/desktop

Quand on clique sur le bouton "Download", on abouti au téléchagrement du fichier iso de la distribution, le fichier est:

ubuntu-14.04-desktop-amd64.iso d'une taille de 964 Mo

Il s'agit d'un fichier énorme. Comment être sûr qu'on a téléchargé chaque octet du fichier sans aucune erreur, c'est une question qu'on est en droit de se poser. En effet, une erreur sur un seul octet peut empêcher l'installation mais elle peut aussi ne se révéler que longtemps après, et on imagine les conséquences: perte de données, plantages à répétition, ...

Pour vérifier que le fichier reçu a bien les mêmes caractéristiques que le fichier hébergé sur le serveur, on peut calculer la somme de contrôle du fichier reçu, et vérifier que c'est bien celle qui est indiquée par le fournisseur.

Dans le cas de Ubuntu, on remarque un lien tout en bas de la page :

View Ubuntu’s md5 hashes

Ce lien aboutit sur la page qui donne les sommes de contrôles pour les différentes versions d'Ubuntu.

On retrouve une entrée pour le fichier indiqué plus haut; le tableau nous indique que sa somme de contrôle MD5 est:

dccff28314d9ae4ed262cfc6f35e5153

Comment est calculée la somme de contrôle

L'idée est de combiner l'ensemble des données binaires du fichier pour en produire un seul nombre, plus ou moins long, et qui sera sa signature numérique.

L'une des méthodes les plus courantes est le MD5 mais on utilise aussi d'autres algorithmes comme le SHA-1.

Ce sont des fonctions de hachage; elles sont utilisées ici pour vérifier la signature numérique d'un fichier. Mais on utilise aussi ces algorithmes, dans des versions plus complexes , pour la cryptographie.

En pratique, comment utiliser la somme de contrôle

3 solutions:

Simple

Une fois le fichier reçu, lancer la commande suivante:

md5sum mon_fichier

En réponse, le programme affiche la somme de contrôle calculée sur le fichier local. Il suffit alors de comparer -de visu- l'identité entre la somme calculée et celle affichée chez le serveur.

Direct

Le serveur propose parmi les fichiers à télécharger un fichier qui contient les sommes de contrôle de tous les fichiers du répertoire; ce fichier s'appelle par exemple MD5SUMS.

On peut comparer les sommes calculées localement avec celles contenues dans ce fichier, après l'avoir téléchargé. Pour cela, on lance la commande:

md5sum -c MD5SUMS

En retour, le programme affiche, pour chaque fichier listé dans MD5SUMS, s'il le trouve ou pas; et s'il le trouve, si le test est Ok.

Pour Ubuntu, le fichier MD5SUMS se trouve dans le dossier suivant:

http://releases.ubuntu.com/14.04/

Le lien vers la page ci-dessus ne s'invente pas; il est indiqué dans le HowTo ci-dessous (en anglais):

https://help.ubuntu.com/community/HowToMD5SUM

Compliqué

On peut aussi recréer un fichier MD5SUMS à la main.

Par exemple, pour OpenMandriva, l'iso est téléchargeable à la page suivante:

http://sourceforge.net/projects/openmandriva/files/release/2014/

Pour afficher la somme de contrôle MD5, par exemple pour le fichier OpenMandrivaLx-2014.0.x86_64.iso, on va aller cliquer sur la petite icône (i) en bout de ligne (View Details).

On peut alors reconstituer le fichier MD5SUMS : avec son éditeur de texte préféré, créer un nouveau fichier et entrer la somme de contrôle suivi d'un espace, puis faire suivre une astérisque immédiatement suivie du nom du fichier dont c'est la somme de contrôle. Avec 2 copier-coller on crée la ligne pour un fichier à tester.

Exemple, pour tester l'image iso de la version OpenMandrivaLx-2014.0, on aurait la ligne ci-dessous:

e9062128992ccc32283a684fc918d09a *OpenMandrivaLx-2014.0.x86_64.iso

Il reste à faire un md5sum -c MD5SUMS avec le contenu ci-dessus pour vérifier l'intégrité de l'iso reçue.

Des questions, des compléments ? Suivez-nous sur le forum !