Calculer une empreinte MD5 sous Linux pour vérifier l’intégrité d’un fichier
I. Présentation
Dans ce tutoriel, nous allons apprendre à utiliser la commande md5sum pour calculer l'empreinte d'un fichier ou plutôt d'un message pour reprendre le terme adapté à ce contexte. Pour information, une empreinte sert à calculer et vérifier l'intégrité d'un fichier ou d'une donnée. Si l'on prend un même fichier, dans deux versions, mais avec un seul bit de différence, son empreinte sera totalement différente !
Si un fichier n'a plus la même empreinte après avoir été transféré d'une machine A vers une machine B, ceci remet en cause son intégrité. Que s'est-il passé ? Le fichier a pu être altéré de façon volontaire ou accidentelle. Par exemple, le fichier a pu être corrompu à cause d'une perte de paquets liée au réseau local. À l'inverse, si l'empreinte est toujours la même, c'est que le fichier est strictement identique au fichier d'origine : son intégrité a été préservée.
Par exemple, lorsque l'on télécharge un fichier sur Internet, il est fréquent de voir l'empreinte du fichier, soit en MD5, en SHA1 ou en SHA256. Cette valeur de référence vous permet de vérifier l'intégrité du fichier suite à son téléchargement. Aujourd'hui, MD5 reste encore utilisable pour vérifier l'intégrité d'un fichier après son téléchargement. Toutefois, pour d'autres usages liés à la sécurité, le MD5 est obsolète et doit être abandonné au profit de méthode plus sûre comme le SHA256.
Version originale de l'article : 01/04/2013
II. Utilisation de la commande md5sum
Intégré nativement à Linux, la commande md5sum va permettre de calculer l'empreinte d'un fichier via la fonction MD5.
Si nous voulons par exemple calculer l'empreinte du fichier "linux.txt", nous utiliserons la commande de cette façon :
md5sum linux.txt
Nous aurons alors en résultat l'empreinte de ce fichier :
La valeur retournée correspond à l'empreinte MD5 du fichier, que l'on appelle aussi "somme de contrôle" ou encore "checksum" en anglais.
Si l'on effectue la moindre modification dans ce fichier, par exemple en ajoutant un caractère, la somme de contrôle ne sera plus la même :
On peut aussi stocker cette empreinte dans un fichier pour que les utilisateurs puissent la comparer à nouveau :
md5sum linux.txt > linux.checksum
On peut également faire un checksum de plusieurs fichiers pour pouvoir les comparer facilement :
md5sum linux.txt linux2.txt
Ici, il s'agit d'un copier-coller du fichier d'origine sous un autre nom : son contenu n'est pas altéré, donc l'empreinte reste la même ! Ceci est important : l'empreinte est basée sur le contenu du fichier, pas sur son nom.