Séance 4 : Fonctions de Hachage
Introduction
Recrues, l’intégrité est le deuxième pilier de la sécurité (CIA : Confidentialité, Intégrité, Disponibilité). Le hachage (hashing) ne sert pas à cacher un message, mais à lui donner une empreinte numérique unique. Si le message change, ne serait-ce que d’un minuscule point, l’empreinte change totalement.
Analogie : Une fonction de hachage est comme un mixeur. Vous pouvez y mettre des fruits pour faire un smoothie (le hash), mais vous ne pourrez jamais retrouver les fruits entiers à partir du smoothie.
Outils requis :
Pas de VM nécessaire pour ce TP . Un terminal Linux suffit (ex: wsl) — si vous n’en avez pas, WebVM fonctionne directement dans votre navigateur et sera suffisant pour les 4 premiers exercices.
- Outils
md5sum,sha256sum(terminal Linux) - CyberChef
Exercice 1: L’Effet Avalanche
Durée estimée : 10 min
Contexte
Une bonne fonction de hachage doit être sensible au moindre changement. C’est ce qu’on appelle l’effet avalanche.
- Générez un hash simple :
echo "Agent 007" | sha256sum - Provoquez l’avalanche : Changez juste un caractère (ex: “agent 007” avec un ‘a’ minuscule) et comparez le résultat.
echo "agent 007" | sha256sum
Questions d’analyse
- Les deux empreintes se ressemblent-elles ?
- Est-il possible de deviner le message original en regardant simplement le hash ?
- Pourquoi est-ce utile pour vérifier que personne n’a modifié un fichier pendant son téléchargement ?
Exercice 2 : Casser un Hash (Rainbow Tables)
Durée estimée : 15 min
Contexte
Le hachage est “à sens unique” (on ne peut pas revenir en arrière mathématiquement). Cependant, si un attaquant possède une liste de milliards de mots de passe et leurs hashs correspondants (une Rainbow Table), il peut retrouver votre mot de passe en une fraction de seconde.
- Le défi : On vous a transmis ce hash MD5 intercepté sur un vieux serveur :
01a2da07bf36766155f48fc670d53fe8 - L’attaque :
- Allez sur CyberChef.
- Cherchez si une opération peut vous aider, ou utilisez un service en ligne comme CrackStation.
- Analyse : Essayez de faire la même chose avec un hash SHA-256 d’une phrase très longue et complexe que vous inventez.
Questions d’analyse
- Quel était le mot de passe caché derrière le hash MD5 ?
- Pourquoi le site CrackStation a-t-il trouvé le premier mais pas le second ?
- MD5 est-il encore considéré comme sûr aujourd’hui ? Pourquoi ?
Exercice 3 : Le Sel (Salt) — La contre-mesure
Durée estimée : 10 min
Contexte
Pour empêcher l’utilisation des Rainbow Tables, les administrateurs ajoutent un “Sel” (une chaîne de caractères aléatoire) au mot de passe avant de le hacher.
Hash(MotDePasse + Sel)
Mission 3.A : Réflexion
Deux utilisateurs, Alice et Bob, utilisent le même mot de passe : 123456.
- Sans sel, leurs hashs dans la base de données seront identiques.
- Si on ajoute le sel
alice_78pour Alice etbob_22pour Bob :- Alice :
sha256("123456" + "alice_78") - Bob :
sha256("123456" + "bob_22")
- Alice :
Questions d’analyse
- Les hashs finaux seront-ils identiques ou différents ?
- Pourquoi cela rend-il le travail d’un attaquant beaucoup plus difficile ?
Exercice 4 : Vérification d’Intégrité (Checksum)
Durée estimée : 10 min
Contexte
Lorsque vous téléchargez un logiciel sensible (comme une ISO Linux ou un outil de sécurité), le site fournit souvent un “Checksum” (une empreinte SHA256).
- Simulez un téléchargement :
echo "Ceci est un logiciel de sécurité légitime" > logiciel.exe sha256sum logiciel.exe > checksum.txt - L’attaque : Modifiez le contenu de
logiciel.exe(ajoutez un espace, une lettre…) pour simuler l’injection d’un virus. - La vérification :
sha256sum -c checksum.txt
Questions d’analyse
- Quel message affiche le terminal ?
- Pourquoi est-il important de récupérer le checksum sur un canal différent (ex: HTTPS) de celui du téléchargement du fichier ?
Exercice 5: Déduplication avec fdupes
Durée estimée : 10 min
Linux requis (WSL ou VM).
fdupesne peut pas s’installer dans WebVM. Cet exercice nécessite un terminal Linux natif.EDIT: https://killercoda.com/playgrounds/scenario/ubuntu Permet aussi d’avoir un Linux depuis son navigateur et est fonctionnel pour cet exercice
Contexte
Le hachage est aussi utilisé pour gagner de la place. Si deux fichiers ont le même hash, ils sont identiques, quel que soit leur nom.
- Installation :
sudo apt install fdupes -y - Préparez le terrain :
echo "Identique" > fichier1.txt echo "Identique" > fichier2.txt echo "Différent" > fichier3.txt - Lancez le scan :
fdupes .
Questions d’analyse
- Quels fichiers l’outil a-t-il regroupés ?
- Comment l’outil sait-il qu’ils sont identiques sans comparer chaque lettre une par une ?
Pour aller plus loin : Signature Numérique (GPG)
Le hachage est la base de la signature GPG. On hache le message, puis on chiffre ce hash avec sa clé privée (vue au TP3). C’est ce qui garantit que le message n’a pas été modifié ET qu’il vient bien de vous.