Linux : comment vérifier l’intégrité d’un fichier grâce à son empreinte SHA256 ?
I. Présentation
Dans ce tutoriel, nous allons apprendre à utiliser la commande sha256sum pour vérifier l'intégrité d'un fichier (que l'on appellera message) à la suite d'un téléchargement. Grâce à cette commande, nous allons obtenir l'empreinte de ce fichier, que l'on appelle aussi "somme de contrôle" ou "checksum" en anglais.
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é. Ceci signifie que le fichier a pu être altéré de façon volontaire ou accidentelle. Lors d'un téléchargement de fichier, ce dernier a pu être corrompu à cause d'une perte de paquets liée au réseau local ou d'un dysfonctionnement sur le serveur qui transmet le fichier. À l'inverse, si l'empreinte du fichier téléchargé est identique à celle du fichier d'origine, on peut affirmer que l'intégrité a été préservée. On peut affirmer que la version du fichier stocké sur le serveur est identique, au bit près, à celle stockée sur ma machine : le fichier peut être utilisé en toute sérénité.
II. Utilisation de la commande sha256sum
Lorsque l'on télécharge l'exécutable d'un logiciel ou une image ISO, il est fréquent d'avoir accès à la somme SHA256 (ou éventuellement SHA1 ou MD5) du fichier. L'éditeur met à disposition cette information pour que l'on puisse vérifier l'intégrité du fichier téléchargé.
Prenons l'exemple d'Ubunut, dont les images ISO sont téléchargeables sur cette page :
Si l'on clique sur "Ubuntu 23.04 (Lunar Lobster)", on aura accès à une liste de fichiers. Dans le cadre de cet exemple, il y a deux fichiers particulièrement intéressants :
- SHA256SUMS : il donne accès à l'empreinte SHA256 de plusieurs fichiers mis à disposition sur cette page de téléchargement
- ubuntu-23.04-desktop-amd64.iso : l'image ISO pour installer Ubuntu Desktop
Si l'on regarde le contenu du fichier SHA256SUMS, on constate qu'il y a la somme de contrôle SHA256 de plusieurs fichiers, dont le fichier "ubuntu-23.04-desktop-amd64.iso".
Désormais, à partir d'une machine sous Linux, on peut télécharger le fichier avec wget (ou d'une autre façon...) :
wget https://releases.ubuntu.com/lunar/ubuntu-23.04-desktop-amd64.iso
Quelques minutes plus tard, le téléchargement est terminé ! J'ai en ma possession l'image ISO d'Ubuntu. Mais, le fichier a-t-il conservé son intégrité pendant le téléchargement ?
La seule façon de le savoir, c'est de comparer la valeur fournie sur le site d'Ubuntu avec celle obtenue si l'on effectue le calcul de l'empreinte sur la version locale du fichier ISO. Pour cela, on va utiliser la commande sha256sum, comme ceci :
sha256sum ubuntu-23.04-desktop-amd64.iso
Quelques secondes plus tard, l'information est retournée :
L'empreinte entre les deux fichiers (version du serveur et version locale) est identique ! Ceci signifie que l'intégrité de mon fichier a été conservée ! Ma version est strictement identique à celle stockée sur les serveurs de Canonical, l'éditeur d'Ubuntu.
Sachez que vous pouvez aussi obtenir l'empreinte SHA256 de plusieurs fichiers. Ceci est utile si vous avez besoin de comparer la valeur entre deux fichiers :
sha256sum fichier1.txt fichier2.txt
III. Conclusion
Désormais, lorsque vous téléchargez un fichier et que l'éditeur met à votre disposition l'empreinte SHA256, vous serez en mesure de vérifier l'intégrité du fichier avant de l'utiliser !
L’option -c de sha256sum permet de lui donner à manger directement le fichier SHA256SUMS qui fait qu’il dire juste « OK/NOK » et nous évitera de faire la vérification nous-même (et donc de limiter les erreurs).