Skip to main content

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

image.png


Calculer un premier hash :

openssl dgst -sha1 message.txt

image.png

copier / coller le fichier en message1.txt et calculer également son hash.

image.png

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

image.png

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.

image.png

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

image.png

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).

image.png

Pour casser le hash, il suffit d'exécuter la commande suivante :

hashcat -m 0 password.txt dictionnaire.txt

image.png

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

image.png

image.png

Déchiffrer le message :

openssl enc -aes-256-cbc -d -salt -in message.enc -out message.dec

image.png

image.png

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.

image.png

image.png


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

image.png

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

image.png

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

image.png

image.png

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

image.png

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 :

image.png