Comment vérifier l’intégrité d’un fichier que l’on télécharge ?
Principe
Quand on télécharge un fichier, par exemple une iso de distribution Linux, on veut être sûr que le fichier a été correctement téléchargé/est le bon. Pour cela, il existe des commandes (MD5, Sha1), des sortes de moulinette qui génère un code unique pour le fichier. On compare ce code unique du fichier que l’on a sur notre ordinateur avec le code qu’indique le site qui a mis à disposition le fichier.
Si le fichier est modifié, différent, corrompu, incomplet, le code est différent. Si le fichier est strictement identique, on aura le même code, on est sûr que le fichier est bon.
MD5, Sha1, sha256
sha1 et md5 sont pas des algorithmes de hashage dont les algorithmes de calcul sont différents.
md5sum monfichier > monfichier.md5
En ligne de commande, l’utilitaire md5sum permet de calculer les sommes de contrôle MD5, l’utilitaire sha1sum permet de calculer les sommes de contrôle SHA.
sha1sum monfichier > monfichier.sha1
Pour vérifier
md5sum -c monfichier.md5
sha1sum -c monfichier.sha1
md5sum/sha1sum cherchera à calculer les empreintes des fichiers listés dans monfichier.md5 ou monfichier.sha1 et les comparera aux valeurs stockées dans le fichier.
Idem pour sha256sum qui utilise sha255, évolution plus "sécurisée" de sha1...
Pour une interface graphique à md5sum/sha1sum , il y a Check-file-integrity par exemple.
Fichier .asc - gpg
Encore plus "sécurisé", on a la signature via gpg. Cela repose sur le même principe que la signature d’un mail, avec le système de clef publique/clef privée. Un exemple d’utilisation de gpg pour certifier/signer un fichier est celui du Tor Browser Bundle. Un développeur a signé avec sa clef (privée) le package et quand on télécharge le Tor Browser Bundle, on vérifie qu’il est bon en le validant via gpg.
Signer un fichier de signature
Si je veux faire pareil, sur mon PC, je dois avoir une clef GPG privée de créer. Je tape la commande
gpg -ab file.pdf
Signification des arguments :
– a Create ASCII armored output.
– b –detach-sign Make a detached signature.
En utilisant ma clef privée, le fichier (ici file.pdf) est utilisé pour générer un fichier .asc de signature.
Les deux fichiers sont mis à disposition.
Toute personne qui les récupère aura le fichier file.pdf et le fichier file.asc qui a été généré.
Vérifier l’intégralité via la signature
Pour cela, il est nécessaire d’avoir la clef publique correspondant à la signature pour la vérification (procédure de récupération non expliquée ici. Ma clef publique quand à elle est disponible ici).
Cela se fait avec la commande
gpg --verify file.asc file.pdf
Rq : le fichier de signature est un fichier texte et l’extension varie. Elle peut être .asc (pour la signature du Tor Browser Bundle), sig (c’est celle qu’utilise TrueCrypt), .gpg pour les ISO d’Ubuntu...
Conclusion
On trouve de nombreuses explications/tutoriaux sur md5/sha1 et gpg sur le Net’. Si j’ai fait ce billet, c’est plus sensibiliser à l’usage de gpg dans le cadre de la signature d’un fichier, afin de garantir son intégrité/sa validité.
– Comment vérifier l’intégrité du TorBrowser quand on le télécharge ?.
– Comment vérifier l’intégrité de Firefox quand on le télécharge ?.