Univers Apple

11
Oct.
2020

Astuce macOS : Vérifier les sommes de contrôle de fichiers avec MD5, SHA1, SHA256, SHA384 ou SHA512

Publié par sky

Lorsque vous téléchargez un fichier (ou une application) sur internet, il arrive qu'en plus du lien, l'éditeur du fichier fournisse une valeur de somme de contrôle (ou checksum en anglais).

C'est le cas, par exemple, lorsque l'on souhaite télécharger l'application d'encodage vidéo Handbrake. Une page dédiée est fournie, par l'éditeur, avec l'ensemble des sommes de contrôle pour l'ensemble des téléchargements disponibles.



A quoi servent ces sommes de contrôle ?

Simplement, ces sommes de contrôle permettent de vérifier que le téléchargement n'a pas été altéré par le transfer, que ce soit à cause d'une erreur dans le téléchargement ou parce qu'un tiers aurait modifié le fichier, sur le serveur de l'éditeur ou sur le réseau, lors du transfer.

 

Comment cela fonctionne ?

Les sommes de contrôle utilisent un algorithme de hashage sur l'ensemble du fichier pour retourner une valeur quasi unique, et d'une longueur fixe (selon le type d'algorithme et hash), et ce, quelque soit la taille du fichier original.

Ainsi l'éditeur, lors de la mise en ligne de son fichier va calculer les hashs de son choix, et les publier. Après téléchargement de son fichier, vous pouvez utiliser le même algorithme sur le fichier. Si la somme de contrôle est identique, le fichier n'a pas été altéré, vous pouvez l'utiliser, sans risque. S'il est différent, il sera judicieux de re-télécharger le fichier, et éventuellement, voir avec l'éditeur avant de l'ouvrir.

 

Pourquoi ces sommes de contrôle sont-elles si sûres ?

Il suffit d'un seul octet différent pour que la somme de contrôle soit totalement différente. Ainsi, si un tier tente d'altérer un fichier, pour insérer un virus par exemple, il est très difficile pour lui de maquiller son action, s'il est possible de vérifier le fichier avec une somme de contrôle.

Il est très simple de vérifier ce comportement. Il suffit d'écrire un fichier en texte brut (afin de limiter les "réels" changements dans le fichier), de calculer la somme de contrôle avant et après le changement d'un seul et unique caractère.

Avec une taille fixe, et une somme de contrôle calculable sur tous les fichiers qu'il existe, il est évident que certains fichiers auront le même checksum. Cependant, de par le fonctionnement des algorithmes, cela sera très rare, au hasard et pour un nombre gigantesque de fichiers testés. Il est donc très difficile pour un fichier altéré de retrouver la même somme de contrôle.

 

Difficile mais pas impossible ?

Malgré les tailles très différentes des fichiers, le calcul d'un checksum doit être rapide, afin que cela ne soit pas un calvaire si on souhaite vérifier l'authenticité des fichiers à chaque fois.

Et comme on l'a vu plus haut, ces sommes de contrôle ne peuvent pas, par définition, être uniques.

Certains malintentionnés se servent de la puissance des ordinateurs actuels pour trouver, par la méthode dite de force brute un checksum identique. Pour cela, ils vont faire tourner des ordinateurs, exécutant une minuscule modification anodine sur le fichier, et calculer la somme jusqu'à trouver la même.

Un travail long et fastidieux qui nécessite une forte puissance de calcul. Pour faire face à ces possibilités, les algorithmes de hashage évoluent aussi, augmentant leurs longueurs, afin de multiplier les possibilités, et donc augmentant exponentiellement la puissance de calcul nécessaire pour trouver un hash identique.

 

Le hashage n'est pas du cryptage

Petite aparté, le hashage des sommes de contrôle n'est, en aucun cas, du cryptage. Un cryptage permet grâce à un mot de passe, de transformer un fichier en un autre. Puis, avec le même mot de passe (ou un autre), de revenir en arrière, et de retrouver le fichier original.

De part sa nature et son but, il est strictement impossible de retrouver une quelconque information du fichier original dans le hash des sommes de contrôle.

Pourquoi ne pas l'utiliser plus souvent, si c'est si génial ?

On peut supposer que tous les outils permettant la mise à jour de logiciels utilisent des mécanismes similaires, voir plus complexes, permettant d'assurer que le téléchargement des updates ne contient pas d'erreurs.

Pour les autres logiciels, ou fichiers de données, à télécharger manuellement sur Internet, c'est à l'éditeur de fournir les sommes de contrôle si vous souhaitez vérifier l'intégrité de votre téléchargement.

 

Comment calculer les sommes de contrôle sur macOS ?

macOS intègre, de base, deux des outils de calcul des sommes de contrôle parmi les plus connus, à savoir MD5 et SHA. Ce sont deux algorithmes différents, donnant deux checksums différents. Il est donc nécessaire de connaitre le type de hash proposé pour vérifier l'intégrité de son fichier.

Ces outils sont disponibles en ligne de commande, et donc via le terminal. Ouvrez donc un terminal, et choisissez un fichier dont vous souhaitez calculer les checksums.

Pour vérifier le MD5 d'un fichier, la commande est md5, tout simplement

md5 chemin/vers/mon/fichier

Petite aide, pour ceux qui ne seraient pas (encore) habitués au terminal, tapez md5, suivi d'un espace, puis glissez votre fichier dans le terminal, le chemin exact va s'ajouter automatiquement.

Même avec un gros fichiers, la réponse devrait être assez rapide

MD5 (chemin/vers/mon/fichier) = 44d465edf1898ec71df2d621037e192e

On se retrouve avec une clé de 32 caractères.

Avec SHA, le principe est le même, la commande, dans macOS, est shasum à utiliser dans un terminal

shasum chemin/vers/mon/fichier

de la même manière, la réponse ne tarde pas

d4c9ae43318235f9689036d1cc9cf1b950e3cd37  chemin/vers/mon/fichier

Ici, la somme fait 40 caractères, elle est un peu plus longue que la MD5.

Mais comme indiqué précédemment, il est possible d'augmenter la taille de la clé afin d'obtenir un checksum infiniment plus difficile à dupliquer.

Utilisée sans paramètre, la commande shasum correspond à l'algorithme SHA1, nous pouvons, comme indiqué sur la page du site d'Handbrake, vérifier le SHA256

shasum -a 256 chemin/vers/mon/fichier

la réponse est donc un peu plus longue, avec ses 64 caractères

2ec3b4ae8c0d76f32ddba493c4b3b993ed4dda017c1785bac67d03878ff46e03  chemin/vers/mon/fichier

Selon le niveau de sécurité nécessaire, il est possible d'aller encore plus loin, avec du SHA384 ou du SHA512 pour lesquels je vous laisse faire les tests avec vos fichiers.

A noter que l'application openssl permet aussi de calculer les sommes

openssl md5 chemin/vers/mon/fichier
openssl sha1 chemin/vers/mon/fichier
openssl sha256 chemin/vers/mon/fichier

et donnera les mêmes résultats.

 
 
Commentaires
Commentaire de Fred le 28 Novembre 2021 à 12:28

Bjr,

Si j'en crois la page suivante, le Sha256 de la chaine 0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
devrait être 0f715baf5d4c2ed329785cef29e562f73488c8a2bb9dbc5700b361d54b9b0554
( cf page : bitcointalk.org/index.php?to... )

J'ai pu le vérifier sur plusieurs sites en ligne sur lesquels j'obtiens bien la bonne valeur. Par contre lorsque je tente la même chose sur Mac avec les commandes indiquées dans cette page je ne trouve pas la même valeur. Voici les commandes que je tape et qui ne me retournent pas la bonne valeur de sha256 : echo "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" | shasum -a 256
et qui me retourne : e14ec153aeac0e82c6be5a96e40f30708abacc9a4cef08a369fed79dc87fe1e0

Merci

 
Commentaire de sky le 28 Novembre 2021 à 21:58

Bonsoir Fred, je confirme obtenir le même résultat sur mon Mac. Par acquis de conscience, j'ai testé aussi sur un Linux, avec, sans surprise le même résultat. Je te conseille d'utiliser echo -n pour obtenir la valeur correcte. Par contre, ce n'est pas celle indiquée au début de ton commentaire.

echo -n "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798" | shasum -a 256
d13c888cfd35d6ab67dc3f67edcc401833e6ae4eec20b254b1981b187946ed91 -

Si tu peux nous indiquer sur quels sites tu as testé le calcul du sha 256 ?

 

 

Poster un commentaire
En postant sur skymac.org, je m'engage à être courtois et à ce que mon message soit pertinent avec le sujet de l'article.
En outre, j'accepte, sans condition, que mon message soit refusé et supprimé si ces règles ne sont pas appliquées.
Ouvrir le panneau de gestion des cookies
Fermer le panneau
Ce site utilise des cookies pour assurer son bon fonctionnement. Il utilise aussi des cookies issues de services tiers permettant de proposer des fonctionnalités avancées. À tout moment, vous pouvez choisir quels services vous souhaitez activer ou refuser, afin de retirer votre consentement quant à l'utilisation des cookies.
 
Personnalisation des services
Vous êtes libre de choisir quels services vous souhaitez activer. En autorisant ces services tiers, vous acceptez le dépôt et la lecture de cookies et l'utilisation de technologies de suivi nécessaires à leur bon fonctionnement. En retirant votre consentement pour certains de ces services, certaines fonctionnalités du site peuvent ne plus fonctionner.
Navigation du site  En savoir plus
Le site écrit un cookie de session permettant son bon fonctionnement et aidant à la navigation. Il ne peut être désactivé.
Utilisation : 1 cookie, enregistre l'identifiant de la session.
Durée de vie : Le cookie est présent pendant toute la session sur le site. Il devient obsolète après 24 minutes d'inactivité.
Obligatoire
Popup Média
Afficher des vidéos depuis Yoube ou Dailymotion.
 
Tout accepter Tout refuser Gérer