Utilisation de SHA-1 pour vérifier la conformité d’un fichier
Si je me suis intéressé à SHA-1 ce soir, c’est parce que j’ai voulu téléchargé NOOBS, la distribution pour débuter sur Raspberry PI et proposé par le site de la fondation. Comme souvent avec ce genre de gros fichiers, on nous fournit un checksum, qu’il soit MD5 ou SHA-1. Je savais que ça servait à vérifier la conformité du fichier téléchargé mais je ne m’y étais jamais intéressé.
SHA-1 est une fonction de hachage utilisée en cryptographie. Pour des détails sur son fonctionnement, vous pouvez lire l’article Wikipédia qui lui est consacrée. Le résultat de la fonction SHA-1 appliquée sur le message constitué par les bytes de l’archive téléchargée donne une signature unique au fichier. Si lors de son téléchargement, il y a eu une erreur, alors le résultat ne sera pas concordant avec celui donné sur le site de Raspberry Pi et je n’aurai plus qu’à télécharger à nouveau mon fichier. SHA-1 accepte un message d’une taille pouvant allé jusqu’à 2^64 bits. Ça laisse de la marge quant à la taille du fichier.
Le site d’Apple m’a donné une technique simple pour le calculer, avec la commande openssl. Voici ce que ça donne sur l’archive téléchargée avec Vuze :
$ openssl sha1 NOOBS_v1_2_1.zip SHA1(NOOBS_v1_2_1.zip)= bdb61930b077dcefd22b36caaa9698bdf76b290d
Le résultat contient 40 caractères hexadécimaux, ce qui correspond bien aux 160 bits que rend la fonction. Je compare ce long numéro à celui fourni sur le site Raspberry Pi (par exemple, avec un petit copier-coller et la fonction de recherche dans la page de mon navigateur) et hop ! Correspondante parfaite ! Mon fichier va bien !
PS : notez qu’il est possible de remplacer sha1 par md5 dans la commande fournie au cas où on vous donnerait un checksum md5 et non SHA-1 😉


