Qu’est-ce qu’une somme de contrôle et que pouvez-vous en faire?

Vous êtes sur le point de cliquer sur un bouton de téléchargement et de remarquer un code étrange à côté. Il ne semble pas avoir quoi que ce soit à faire sur la taille du fichier ou sur le fait que vous devriez prendre note de quelque chose. Alors allez-y, récupérez le fichier et désastre! Cela ne semble pas être la même chose que ce à quoi vous vous attendiez.

Si seulement il y avait un moyen rapide de voir si l’élément que vous venez de télécharger est exactement le même que le fichier qui se trouvait sur le site Web. Eh bien, il y en a. Bienvenue dans le monde des sommes de contrôle!

Qu’est-ce qu’une somme de contrôle?

TL; DR: Une somme de contrôle est un nombre, sous la forme d’une valeur binaire ou hexadécimale, qui a été dérivé d’une source de données. Les éléments importants à savoir: une somme de contrôle est généralement beaucoup plus petite que la source de données, et elle est également presque entièrement unique. Cela signifie que les chances que d’autres données donnent exactement la même somme de contrôle sont extrêmement peu probable.

Jetons un coup d’œil à quelques exemples, dont le premier est un simple fichier texte (ci-dessous), contenant des informations critiques! Tous les fichiers contiennent des données qui couvrent plus que, disons, le texte que nous pouvons voir – il y aura des bits alloués pour nous dire de quel type de fichier il s’agit, comment les données sont organisées, etc.

Tout cela est géré dans le processus de création de la somme de contrôle, et nous vous montrerons comment cela fonctionne et comment vous pouvez le faire vous-même plus loin dans cet article.

Mais pour l’instant, regardons la valeur que nous obtenons:

798B38084999FA50E7D1861E07E45F4E3AA39668DC6A12A84A058CAAA32DE0EB

En soi, ce code ne nous dit rien. Nous ne pouvons pas inverser le «piratage» pour comprendre en quoi consistait le motif des uns et des zéros du fichier texte. Cependant, il est censé être spécifique à ce fichier particulier, alors modifions maintenant le fichier texte d’origine en réorganisant certains des mots.

L’image ci-dessus montre clairement qu’il s’agit toujours du même texte, et donc techniquement les mêmes données, mais la séquence des bits est maintenant différente. Et la somme de contrôle cette fois-ci est:

22698AA81AFF43B48ADA1BCC7E26D641F0077C0AA24B5B19C8C801147A41B30D

Remarquez que c’est la même longueur – c’est un aspect clé du processus d’obtention du code – mais c’est une somme de contrôle entièrement différente. Mêmes données, ordre différent, somme de contrôle totalement nouvelle.

Mais peut-être aurait-on dû s’y attendre; après tout, les modifications apportées au fichier n’étaient pas entièrement anodines. Alors voyons ce qui se passe quand on change juste une lettre dans le tout: voyez si vous pouvez repérer laquelle!

Repérez le roulement de tambour en arrière-plan, alors que nous examinons la somme de contrôle de ce fichier à peine modifié.

790DD6BF0733981E4EBF9BA116970D943D91C2CDD3531CF877E30F3E92F29453

Ce changement d’une seule lettre nous a encore une fois donné un autre code unique. En ce qui concerne les sommes de contrôle, c’est tout l’intérêt du système: toute modification apportée à une source de données d’origine, aussi petite soit-elle, devrait entraîner une toute nouvelle somme de contrôle et permettre de voir extrêmement facilement si quelque chose a été modifié.

Avec cela à l’écart, voyons comment tout cela fonctionne alors!

La technologie derrière le chèque

Au cœur d’une somme de contrôle se trouve l’algorithme logiciel utilisé pour créer les codes que nous avons vus. Dans le cas de nos exemples, nous avons utilisé un très courant connu sous le nom de SHA-256 (Algorithme de hachage sécurisé – 256 bits). Cet algorithme est un type de fonction de hachage cryptographique (CHF), avec les données source étiquetées comme un message, et la sortie étant appelée le valeur de hachage ou juste hacher (la somme de contrôle, dans ce cas).

Développé par la NSA et publié il y a près de 20 ans, SHA-256 appartient à une classe de CHF largement utilisée dans le monde. Leur popularité est due au fait qu’ils travaillent rapidement et qu’ils résistent aux tentatives de «  piratage  » du code – bien qu’il y en ait de bien meilleurs disponibles de nos jours.

Chaque algorithme a sa propre façon de faire les choses, mais nous nous concentrerons simplement sur ce que fait SHA-256. Le processus donne toujours un hachage d’une longueur fixe (256 bits dans ce cas), quelle que soit la taille du message, bien que techniquement il s’agisse en fait de 8 valeurs, chacune de 32 bits.

Ainsi, la somme de contrôle de notre fichier test1 est en fait 798B3808 4999FA50 E7D1861E 07E45F4E 3AA39668 DC6A12A8 4A058CAA A32DE0EB. Cela a été écrit en hexadécimal – l’écrire sous la forme d’une chaîne de 256 uns et zéros serait très fastidieux!

La première étape de la séquence de l’algorithme consiste à traiter le message, c’est donc une collection de blocs, chacun d’une taille de 512 bits. Pour les fichiers qui ne sont pas des multiples entiers de 512, ou si le fichier est plus petit que cette taille, une astuce appelée rembourrage Est employé. C’est là que toute une pile de zéros est ajoutée une fois les bits du message terminés, pour en faire un rond 512.

Par exemple, disons que nous essayons de trouver la somme de contrôle d’un fichier d’une taille totale de 10145 bits. Cela se diviserait en 19 blocs entiers, laissant 417 bits à remplir. Pour indiquer où les données se terminent et où le remplissage commence, la chaîne de bits qui constitue la source a un 1 ajouté à la fin. Donc ici, le remplissage ajouterait 352 zéros.

Attendez, pourquoi n’est-ce pas 416? La toute dernière partie du dernier bloc est un nombre spécial de 64 bits: la longueur du fichier d’origine. Cela signifie que, pour notre exemple, le 20e bloc devrait se terminer avec la valeur binaire de 10145, ce qui fait que le message ne nécessite que 402 bits d’espace vide pour se remplir.

Une fois que cela est fait, l’algorithme prend le tout premier bloc de 512 bits et le découpe en 16 parties, chacune d’une longueur de 32 bits; chacune de ces valeurs sera utilisée dans le processus de calcul de hachage.

Jusque-là, c’est la partie la plus facile: le reste du processus implique un parcelle des mathématiques.

Tout cela va bien au-delà de la portée de cet article, mais si vous souhaitez en savoir plus, vous pouvez en savoir plus ici. Mais pour vous donner un bref aperçu, il s’agit de créer d’abord un hachage de départ, en utilisant les 8 premiers nombres premiers. Ceux-ci sont exécutés à travers une équation pour donner une valeur longue de 256 bits qui est ensuite modifiée à plusieurs reprises, car le reste de l’algorithme se fraye un chemin à travers toutes les parties, dans chaque bloc, à partir des données source traitées.

Cela semble horriblement compliqué, n’est-ce pas? Pour un processeur moderne, cependant, c’est un jeu d’enfant.

Il ne faut pas plus d’une douzaine de cycles de processeur, pour chaque octet de données source, pour générer le hachage.

Alors, que pouvez-vous faire avec une somme de contrôle?

TL; DR: Une somme de contrôle vous permet de vérifier facilement intégrité des données qui composent un fichier.

Imaginez ce scénario: vous devez télécharger un fichier important, essentiel pour faire fonctionner un ordinateur. Vraiment critique, à tel point que vous ne voulez pas qu’il y ait d’erreurs ou de problèmes. Vous avez également une connexion Internet lente et instable, et vous craignez que cela n’affecte le fichier lors de son téléchargement.

L’hôte du fichier sait tout cela, il exécute donc un algorithme de somme de contrôle sur le fichier et met la réponse sur la page Web de téléchargement. Une fois que vous l’avez, vous pouvez exécuter le même processus et comparer les valeurs – si elles sont identiques, vous saurez que le fichier que vous avez téléchargé est correct.

Et c’est la principale utilisation d’une somme de contrôle: vérifier l’intégrité des données qui composent un fichier. Cela peut être fait manuellement, comme nous le verrons très prochainement, ou cela peut faire partie d’une opération automatisée. Valve utilise les sommes de contrôle sur la plate-forme Steam dans le cadre du processus de vérification des fichiers.

Exécutez votre propre somme de contrôle

Tous les principaux systèmes d’exploitation ont également un outil de somme de contrôle intégré.

les fenêtres

Pour exécuter une somme de contrôle dans Windows, le moyen le plus simple est d’utiliser PowerShell: cliquez avec le bouton droit sur le bouton du menu Démarrer ou appuyez sur Win + X. Si vous exécutez une ancienne version de Windows, vous pouvez télécharger PowerShell à partir d’ici.

Entrez la commande get-filehash suivi de l’emplacement du fichier. Vous pouvez également entrer la commande, puis faire glisser et déposer le fichier dans la fenêtre PowerShell. Voici comment notre premier fichier de test a été réalisé.

Par défaut, PowerShell utilise SHA-256 pour produire la somme de contrôle, mais vous pouvez en utiliser d’autres tels que SHA-512 ou MD5. Ceux-ci produiront tous un hachage différent, mais il sera toujours unique pour ce fichier. Pour utiliser une fonction différente, ajoutez la commande -algorithme suivi du code correspondant.

Pour les sommes de contrôle, l’utilisation d’une fonction de hachage différente n’apporte aucun avantage significatif, bien que certains des plus anciens (par exemple MD5, SHA-1) produisent le même hachage pour différents fichiers – un problème connu sous le nom de collision. Les algorithmes plus récents sont plus résistants aux collisions, c’est pourquoi PowerShell utilise par défaut SHA-256.

La raison principale pour laquelle il est nécessaire de passer à une fonction différente est due au choix de l’hôte de fichiers d’utiliser autre chose que SHA-256, vous devrez donc basculer vers cette fonction afin de comparer les fichiers.

Comparer deux longues chaînes de chiffres et de lettres peut être un peu difficile à faire, mais avec un peu de programmation, vous pouvez faire en sorte que PowerShell évalue les sommes de contrôle pour vous. Utilisons le code MD5 ci-dessus comme exemple et prétendons que le hachage du fichier d’origine se terminait en fait par le numéro 8.

L’image ci-dessous montre les lignes de code que vous devez saisir, en utilisant Maj + Entrée après chacun.

Voyez comment ça dit ‘Faux‘? Cela vous dit que le fichier n’est pas le même. Si vous êtes certain que vous avez le hachage correct pour le fichier que vous voulez, alors tous les soupçons reposent sur les données.

Notez qu’une somme de contrôle ne peut pas vous dire comment les fichiers sont différents – c’est un test très binaire, si vous pardonnez le jeu de mots. Mais c’est un outil utile et il existe des fonctions de somme de contrôle très spécifiques (telles que le chiffre de contrôle et le bit de contrôle) qui sont utilisées tout le temps pour rechercher les erreurs dans les données.

Microsoft a rendu PowerShell disponible pour macOS 10.13 ou plus récent, et Linux également, mais si l’idée d’utiliser quelque chose qui provient de Windows vous donne les heebie-jeebies, sachez que vous pouvez faire la même chose de manière native sur l’un ou l’autre des systèmes d’exploitation.

macOS

Pour les utilisateurs de Mac, vous devez lancer l’application Terminal, qui se trouve dans le dossier Utilitaires dans Applications. Les commandes à saisir sont shasum -a 256, suivi de l’adresse du fichier que vous souhaitez vérifier (ou faites simplement un glisser-déposer dans la fenêtre du terminal).

L’instruction shasum est l’équivalent de Get-FileHash dans PowerShell, et la partie ‘-a 256’ est là pour indiquer l’algorithme à utiliser: 1 pour SHA-1, 256 pour SHA-256 et 512 pour SHA-512.

Remarquez comment il nous a donné la même somme de contrôle pour le fichier de test, comme nous l’avons obtenu avec PowerShell dans Windows? C’est la vraie puissance de celui-ci: quel que soit l’ordinateur ou le système de fichiers que vous utilisez, tant que l’algorithme est le même, vous obtiendrez toujours des valeurs de hachage qui peuvent être directement comparées.

Linux

Si vous préférez les plaisirs de Linux, vous serez heureux de savoir que c’est le même processus que ci-dessus – lancez le terminal et entrez sha1sum, sha256sum, ou sha512sum suivi de l’adresse du fichier pour générer le hachage requis.

Une fois de plus, vous pouvez voir que nous avons la même somme de contrôle pour notre fichier texte. Toutes les exécutions font exactement le même calcul pour créer le hachage, donc rien de tout cela n’aurait dû être une surprise, mais il est réconfortant de savoir que les sommes de contrôle peuvent être effectuées sur tout dispositif informatique.

Ajouter de la puissance à vos téléchargements

Compte tenu de la rapidité et de la facilité des sommes de contrôle, il est peut-être un peu surprenant que nous ne les effectuions pas plus souvent ou pas du tout.

Bien que Steam gère le processus pour nous automatiquement, nous dépendons des hôtes de fichiers fournissant des sommes de contrôle précises pour les données qu’ils fournissent. Dans le cas des téléchargements , par exemple, nous ne fournissons pas explicitement de somme de contrôle, mais les outils que nous utilisons pour certifier que les téléchargements sont propres, tels que VirusTotal, utilisent la somme de contrôle pour vérifier l’intégrité des fichiers et agréger les données lorsque plusieurs parties analysent le même fichier au fil du temps.

Certains sites Web fournissent des sommes de contrôle pour chaque fichier, tandis que d’autres ne le font que pour des éléments importants ou très volumineux (par exemple Microsoft dans leurs sections de téléchargement sécurisées), mais cela devient de plus en plus rare. Il y a plusieurs raisons possibles à cela, telles que les gens ne sont tout simplement pas au courant.

Mais là où les hébergeurs le proposent, au moins vous savez maintenant comment utiliser le hachage – toute chose supplémentaire pour vous donner un peu plus de tranquillité d’esprit est toujours une bonne chose.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.