Fiche TP - Hash, chiffrement, utilisation et limitations. Cette fiche TP Vise à accompagner le cour sur le hachage et le chiffrement. Le contenu sera déroulé en parallèle du cour pour illustrer le propos. Prérequis : Les TP ci-dessous seront réalisés sur openSSL. Installation sur debian : apt install openssl Installation sur windows : winget install openssl TP1 - Hashage Objectif : Comprendre le fonctionnement des fonctions de hachage. Voir les différences entre les algorithmes. Observer un effet "avalanche" Exercice 1 : Génération des empreintes et tests de hash Créer un fichier texte qui contiendra un message simple : echo "Bonjour les BTS SIO/CIEL !" > message.txt Calculer un premier hash : openssl dgst -sha1 message.txt copier / coller le fichier en message1.txt et calculer également son hash. info : On constate bien que si même donnée d'entrée, même donnée de sortie. Tester ensuite avec des algorithmes plus complexe ayant une clé suppérieure. openssl dgst -sha256 message.txt openssl dgst -sha512 message.txt Info : On constate bien la différence de complexité d'un algo à l'autre. Tester maintenant l'effet "Boule de neige". Modifier un caractère dans le fichier, en changeant par exemple le '!' en '?'. Recalculer le hash. Info : On constate bien que toute modification, aussi infime soit-elle, entraîne une modification conséquente du hash. Exercice 2 : Limitation du hash sur les mots de passe faibles. Chiffrer un mot de passe avec un algorithme volontairement vulnérable dans un fichier texte : echo -n "azerty" | md5sum Copier la chaîne de caractères sans le '    -' dans un fichier texte appelé par exemple 'password.txt' Installer 'hashcat'. Récupérer ou éditer un dictionnaire simple ( il y en a un fourni en pièce jointe de cette page). Pour casser le hash, il suffit d'exécuter la commande suivante : hashcat -m 0 password.txt dictionnaire.txt Info : On voit ici que le mot de passe a été correctement deviné et que cela à pris moins d'une seconde. Nous pouvons en conclure que l'utilisation de mots de passe simple et d'algorithmes obsolètes est à proscrire. TP2 - Chiffrement symétrique Objectif : Comprendre AES et les modes de chiffrement. Manipuler une clé symétrique. Observer les différences entre ECB et CBC. Exercice 1 : chiffrer et déchiffrer un fichier Conseil : Proposer aux étudiants de chiffrer un message, puis d'échanger leurs messages et se donner la clé sur un support à part ou à l'oral. Chiffrer le fichier 'message.txt'. Il va demander un mot de passe qui fera office de clé de chiffrement. openssl enc -aes-256-cbc -salt -in message.txt -out message.enc Déchiffrer le message : openssl enc -aes-256-cbc -d -salt -in message.enc -out message.dec Exercice 2 : ECB vs CBC Selon les cas, certaines méthodes de chiffrements sont plus efficaces que d'autres. Récupérer l'image fournie dans le TP ou la télécharger. Puis créer deux version chiffrées de cette image. openssl enc -aes-256-ecb -in Tux-PNG-Pic.png -out image1.enc openssl enc -aes-256-cbc -in Tux-PNG-Pic.png -out image2.enc Le résultat est qu'il est facile avec le SCB, d'isoler des paterns avec un editeur hexadécimal ou avec un visualiseur d'images chiffrées. TP3 - Chiffrement asymétrique Objectif : Générer une paire de clés RSA. Chiffrer/déchiffrer. Signer/vérifier. Conseil : Proposer aux étudiants d'échanger les clés publiques avec un binôme, puis de se faire passer un message chiffré. Exercice 1 : Générer un couple de clé privée/publique Générer le couple de clé avec les commandes suivantes : openssl genrsa -out private.key 2048 openssl rsa -in private.key -pubout -out public.key Échanger les clé ou procéder soi-même au chiffrement / déchiffrement. Chiffrer le message avec la clé publique : openssl pkeyutl -encrypt -inkey public.key -pubin -in message.txt -out message.enc Déchiffrer ou faire déchiffrer par son binôme avec la clé privée : openssl pkeyutl -decrypt -inkey private.key -in message.enc -out message_decrypt.txt Exercice 2 : Signature numérique de document Signer un document avec la clé privée : openssl dgst -sha256 -sign private.key -out signature.bin message.txt La signature (.bin) et le message (.txt) sont transmis au binôme ou vérifié par soi-même avec la clé publique. openssl dgst -sha256 -verify public.key -signature signature.bin message.txt Info : Le message 'verified OK' signifie que l'identité de l'émeteur du fichier est vérifié. Mais également que le message en question n'a pas été altéré. En effet, faire une modification sur le message.txt et relancer la commande :