21.1.6 – Travaux pratiques – Le hachage
Remarque à l’intention de l’instructeur : la couleur de police rouge ou les surlignages gris indiquent que le texte n’apparaît que dans la copie de l’instructeur.
Objectifs
Partie 1: Hachage d’un fichier texte avec OpenSSL
Partie 2 : Vérifier les hashs
Contexte/scénario
Les fonctions de hash sont des algorithmes mathématiques conçus pour prendre des données comme entrée et générer une chaîne unique de caractères de longueur fixe, également appelée « hash ». Les fonctions de hash sont rapides et extrêmement difficiles à inverser. En effet, il est très difficile de récupérer les données ayant servir à créer un hash en se basant uniquement sur le hash en lui-même. Une autre caractéristique majeure des fonctions de hachage est que la moindre modification apportée aux données d’entrée génère un hach complètement différent.
OpenSSL peut être utilisé pour générer et comparer des hashs, mais d’autres outils sont également disponibles. Certains de ces outils sont d’ailleurs utilisés dans ce TP.
Ressources requises
- Poste de travail CyberOps VM
Instructions
Partie 1 : Hachage d’un fichier texte avec OpenSSL
OpenSSL peut être utilisé comme outil de hash autonome. Pour créer un hash d’un fichier texte, procédez comme suit :
a. Ouvrez une fenêtre du terminal depuis le poste de travail virtuel CyberOps.
b. Étant donné que le fichier texte sur lequel appliquer le hash se trouve dans le répertoire /home/analyst/lab.support.files/, définissez le répertoire comme suit :
[analyst@secOps ~]$ cd /home/analyst/lab.support.files/
c. Saisissez la commande suivante pour afficher à l’écran le contenu du fichier texte lettre_à_grand-mère.txt :
[analyst@secOps lab.support.files]$ cat letter_to_grandma.txt Bonjour Grand-mère, Je t'écris cette lettre pour te remercier pour les cookies au chocolat que tu m'as envoyés. Je les ai reçus ce matin et j'ai déjà mangé la moitié de la boîte ! Ils sont vraiment délicieux ! Je t'envoie de tendres pensées. Bien à toi, Ton petit-fils qui adore les cookies.
d. À partir de la même fenêtre du terminal, exécutez la commande suivante pour appliquer un hachage au fichier texte. La commande utilisera l’algorithme de hachage SHA-2-256 pour générer un hachage à partir du fichier texte. Le hash apparaîtra à l’écran dès qu’OpenSSL l’aura calculé.
[analyst@secOps lab.support.files]$ openssl sha256 letter_to_grandma.txt SHA256 (letter_to_grandma.txt) = deff9c9bbece44866796ff6cf21f2612fbb77aa1b2515a900bafb29be118080b
Observez le format de la sortie. OpenSSL affiche l’algorithme d’hach utilisé, SHA-256, suivi du nom du fichier utilisé comme données d’entrée. Le hachage SHA-256 apparaît juste après le signe égal (‘=’) .
e. Les fonctions de hash permettent de vérifier l’intégrité des données, qu’il s’agisse d’une image, d’une chanson ou d’un simple fichier texte. La moindre modification apportée aux données génère un hash complètement différent. Les hashs peuvent être calculés avant et après la transmission, puis comparés. Si les hashs ne correspondent pas, cela signifie que les données ont été modifiées pendant la transmission.
Nous allons modifier le fichier texte lettre_à_grand-mère.txt et recalculer le hash MD5. Exécutez la commande ci-dessous pour ouvrir nano, un éditeur de texte de ligne de commande.
[analyst@secOps lab.support.files]$ nano lettre_à_grand-mère.txt
Dans l’éditeur nano, remplacez la première phrase « Bonjour Grand-mère » par « Bonjour Grand-père ». Vous remarquerez que nous remplaçons un seul caractère (« m » par « p »). Une fois la modification effectuée, appuyez sur les touches <CONTROL+X> pour enregistrer le fichier modifié. Appuyez sur « Y » pour confirmer le nom et enregistrer le fichier. Appuyez sur la touche <Entrée> pour quittr nano et passer à l’étape suivante.
f. Maintenant que le fichier a été modifié et enregistré, exécutez la même commande pour générer un hachage SHA-2-256 du fichier.
[analyst@secOps lab.support.files]$ openssl sha256 lettre_à_grand-mère.txt SHA256 (letter_to_grandma.txt) = 43302c4500b7c4b8e574ba27a59d83267812493c029fd054c9242f3ac73100bc
Le nouveau hash est-il différent du hash calculé à l’étape (d) ? En quoi est-il différent ?
Oui. Le nouveau hachage est complètement différent du hachage précédent.
g. Un algorithme de hachage avec une longueur de bits plus longue, tel que SHA-2-512, peut également être utilisé. Pour générer un hachage SHA-2-512 du fichier letter_to_grandma.txt , utilisez la commande suivante:
[analyst@secOps lab.support.files]$ openssl sha512 letter_to_grandma.txt SHA512 (letter_to_grandma.txt) = 7c35db79a06aa30ae0f6de33f2322fd419560ee9af9cedeb6e251f2f1c4e99e0bbe5d2fc32ce5 01468891150e3be7e288e3e568450812980c9f8288e31031d3 [analyst@secOps lab.support.files]$
h. Utilisez sha256sum et sha512sum pour générer un hachage SHA-2-256 et un hachage SHA-2-512 du fichier letter_to_grandma.txt :
[analyst@secOps lab.support.files]$ sha256sum letter_to_grandma.txt 43302c4500b7c4b8e574ba27a59d83267812493c029fd054c9242f3ac73100bc letter_to_grandma.txt [analyst@secOps lab.support.files]$ sha512sum letter_to_grandma.txt 7c35db79a06aa30ae0f6de33f2322fd419560ee9af9cedeb6e251f2f1c4e99e0bbe5d2fc32ce5 01468891150e3be7e288e3e568450812980c9f8288e3103a1d3 letter_to_grandma.txt
Les hachages générés à l’aide sha256sum et sha512sum correspondent-ils aux images générées au cours des étapes (g) et (h), respectivement? Expliquez votre réponse.
Oui. Bien que différents outils soient utilisés, ils utilisent le même algorithme de hachage et les mêmes données d’entrée.
Remarque: On recommande désormais l’utilisation de SHA-2 pour toute opération de hachage. Si les hackers n’ont pas encore réussi à pirater de manière efficace la fonction de hash SHA-2 , les ordinateurs s’avèrent de plus en plus puissants. Cette évolution naturelle devrait donc bientôt rendre SHA-2 vulnérable aux attaques.
SHA-3 est le plus récent algorithme de hachage et éventuellement être le remplacement de la famille SHA-2 de hachages.
Remarque: La machine virtuelle CyberOps Workstation inclut uniquement la prise en charge de SHA-2- 224, SHA-2-256 et SHA-2-512 (sha224sum, sha256sumet sha512sum, respectivement).
Partie 2 : Vérifier les hashs
Comme mentionné précédemment, les hashs sont souvent utilisés pour vérifier l’intégrité des fichiers. Suivez les étapes ci-dessous pour utiliser les hashs SHA-2-256 afin de vérifier l’intégrité du fichier sample.img qui a été téléchargé sur Internet.
a. sample.img_SHA256.sig a été téléchargé en même temps que sample.img. Le fichier sample.img_SHA256.sig contient le hachage SHA-2-256 calculé par le site web. Tout d’abord, utilisez la commande cat pour afficher le contenu du fichier sample.img_SHA256.sig :
[analyst@secOps lab.support.files]$ cat sample.img_SHA256.sig c56c4724c26eb0157963c0d62b76422116be31804a39c82fd44ddf0ca5013e6a
b. Utilisez la commande SHA256sum pour calculer le hash SHA-2-256 du fichier sample.img :
[analyst@secOps lab.support.files]$ sha256sum sample.img c56c4724c26eb0157963c0d62b76422116be31804a39c82fd44ddf0ca5013e6a sample.img
Le sample.img a-t-il été téléchargé sans erreurs? Expliquez votre réponse.
Oui. Étant donné que les deux hachages correspondent, le hachage calculé avant le téléchargement et celui calculé après, il est correct d’indiquer qu’aucune erreur n’a été introduite lors du téléchargement.
Remarque: Si la comparaison des hachages est une méthode relativement efficace pour détecter les erreurs de transmission, il existe de meilleurs moyens de s’assurer que le fichier n’a pas été altéré. Des outils tels que gpg, offrent des fonctionnalités bien plus efficaces pour s’assurer que le fichier téléchargé n’a pas été modifié par des tiers et qu’il s’agit bien du fichier que l’éditeur souhaitait publier.