TP – Mesurer la force d'un mot de passe, casser des empreintes faibles et mettre en place un second facteur
BTS SIO SISR 1re année – Bloc 3 – S03
Note
But. Situation : Comment s'assurer que celui qui se connecte est bien celui qu'il prétend être, même quand un mot de passe fuite ?
Comment ce TP fonctionne. Avant de manipuler, tu écris ce que tu anticipes (« J'anticipe »). Puis tu testes et tu notes ce que tu constates. Tu comprends ce que fait chaque commande (« Je comprends »). Un bilan de compétences clôt la séance. Les manipulations se font sur des machines virtuelles de laboratoire, isolées du réseau de l'établissement. Les identifiants communs d'un TP sont des identifiants de laboratoire : ils ne se réutilisent jamais ailleurs.
Objectif
Calculer l'entropie de mots de passe, casser en laboratoire des empreintes faibles pour comprendre pourquoi elles tombent, constater l'effet du sel, générer un code TOTP et rédiger une politique de mots de passe argumentée.
Contraintes
- Durée : 2 h 30 en séance. Sur la VM Debian de laboratoire, avec les fichiers de l'annexe.
- On ne casse que les empreintes fournies pour l'exercice. Casser un mot de passe qui n'est pas le sien, ou une base de données sans autorisation, est une infraction (voir S08).
- Installation :
sudo apt install john oathtool(une fois).
Partie A. Calculer l'entropie (30 min)
Entropie en bits = L × log₂(N). Dans un terminal, avec Python :
Je comprends. math.log2(95) donne le nombre de bits apportés par un caractère tiré parmi 95 ; on multiplie par la longueur 12.
Complète (hypothèse : tirage au hasard, 10¹⁰ essais par seconde) :
| Mot de passe | L | N | Entropie (bits) | Temps pour tout essayer |
|---|---|---|---|---|
| 6 chiffres (code PIN) | 6 | 10 | ||
| 10 minuscules | 10 | 26 | ||
| 10 caractères parmi 95 | 10 | 95 | ||
| 14 caractères majuscules, minuscules, chiffres | 14 | 62 | ||
| 5 mots tirés dans une liste de 7 776 | 5 | 7 776 | ||
| 7 mots tirés dans une liste de 7 776 | 7 | 7 776 |
J'anticipe. Lesquels de ces mots de passe atteignent les 80 bits que la CNIL recommande pour un mot de passe seul ? ______________________
Éléments de réponse
Seuls ceux de plus de 80 bits : les 14 caractères de trois types (≈ 83 bits) et les 7 mots (≈ 90 bits). Les 10 caractères parmi 95 donnent ≈ 66 bits : suffisant avec une restriction d'accès (50 bits), pas pour un mot de passe seul.
Question. Pourquoi Soleil2024! est-il (très) en dessous de l'entropie qu'indique la formule ? ______________________
Éléments de réponse
La formule suppose un tirage aléatoire. Ici : un mot du dictionnaire, une majuscule initiale, une année, un point d'exclamation : des choix prévisibles que les attaquants essaient en premier. L'espace réel à explorer est minuscule.
Partie B. Casser des empreintes faibles (50 min)
Dans l'annexe, copie le fichier empreintes.txt (six comptes fictifs, empreintes MD5) et le dictionnaire dico.txt dans un dossier ~/labo-mdp/.
cd ~/labo-mdp
john --format=raw-md5 --wordlist=dico.txt empreintes.txt
john --show --format=raw-md5 empreintes.txt
Je comprends.
| Commande | Ce qu'elle fait |
|---|---|
--format=raw-md5 |
Indique que les empreintes sont de simples MD5, sans sel |
--wordlist=dico.txt |
Essaie chacun des mots du dictionnaire ; l'empreinte de chaque mot est calculée et comparée |
john --show |
Affiche les mots de passe retrouvés |
J'anticipe. Sur six comptes, combien de mots de passe va retrouver le dictionnaire, et lesquels resteront sûrs ? ______________________
Éléments de réponse
Le dictionnaire retrouve ceux qui y figurent (mots courants, variantes classiques). Les deux mots de passe longs et non prévisibles ne sont pas dans le dictionnaire : l'attaque par dictionnaire ne les trouve pas. Une attaque par force brute sur 18 caractères ne finirait jamais.
Questions.
- Combien de comptes ont été retrouvés, et en combien de temps ? ______________________
- Quels sont les points communs des mots de passe retrouvés ? ______________________
- Pourquoi les mots de passe non retrouvés ont-ils résisté ? Quelle valeur d'entropie ont-ils à peu près ? ______________________
- Peut-on dire que « MD5 est cassé » pour cette raison ? Que montre cet essai du stockage par MD5 ? ______________________
Éléments de réponse
- Ce n'est pas MD5 qui permet de retrouver
soleil, c'est la faiblesse du mot de passe. En revanche MD5 est un format très rapide et sans sel : l'attaquant essaie des milliards de mots de passe par seconde et peut réutiliser ses calculs contre tous les comptes. Un format lent et salé limite ces deux avantages.
Le sel en pratique (15 min)
J'anticipe. Les deux premières lignes donneront-elles le même résultat ? Et les deux dernières ? ______________________
Éléments de réponse
Les deux premières : identiques (aucun sel : deux utilisateurs ayant le même mot de passe ont la même empreinte, ce qui se voit dans une base volée). Les deux dernières : différentes, car openssl passwd -6 génère un sel aléatoire à chaque appel et l'enregistre au début du résultat.
Je comprends. openssl passwd -6 produit une empreinte SHA-512 crypt, utilisée pour les mots de passe de comptes Linux. Le texte renvoyé contient trois parties séparées par $ : l'algorithme (6), le sel, l'empreinte.
Question. Dans une base volée qui contient deux empreintes MD5 identiques, que sais-tu des deux utilisateurs ? ______________________
Partie C. Mettre en place un second facteur TOTP (25 min)
Simule un serveur et une application d'authentification qui partagent le même secret.
Je comprends.
| Élément | Rôle |
|---|---|
SECRET |
Le secret partagé à l'inscription (c'est ce que contient le QR code), au format base32 |
oathtool --totp -b |
Calcule le code à 6 chiffres à partir du secret et de l'heure courante |
sleep 31 |
Attend le changement de période (30 secondes) |
J'anticipe. Le deuxième code sera-t-il identique au premier ? Si deux machines ont des heures différentes, que se passe-t-il ? ______________________
Éléments de réponse
Non : le code change toutes les 30 secondes. Si les horloges sont décalées de plus de quelques dizaines de secondes, les codes ne correspondent plus et le serveur refuse la connexion : c'est pourquoi on synchronise l'heure des machines (service NTP).
Questions.
- Que se passe-t-il si un attaquant vole le secret (la base du serveur, par exemple) ? ______________________
- Un code TOTP protège-t-il contre un faux site qui le rejoue immédiatement ? Quelle autre technique le fait ? ______________________
Partie D. Rédiger une politique de mots de passe (30 min)
Situation. L'entreprise fictive Aubry (40 salariés) n'a aucune règle écrite. Sur un poste Windows de laboratoire, relève la politique locale :
Écris ensuite une politique de mots de passe en une page, qui précise :
| Point | Ta décision | Justification (cours, CNIL) |
|---|---|---|
| Longueur ou phrase de passe minimale | ||
| Blocage après échecs (seuil, durée) | ||
| Renouvellement imposé ? | ||
| Contrôle des mots de passe déjà compromis | ||
| MFA : pour quels accès ? quel type ? | ||
| Comptes d'administration | ||
| Gestionnaire de mots de passe | ||
| Réinitialisation d'un mot de passe oublié |
Note
Les identifiants de laboratoire que tu utilises dans les TP (communs à toute la classe) servent seulement à faire la même chose en environnement contrôlé. On ne les reprend jamais dans une vraie politique ni dans une réalisation.
Partie E. Gestionnaire de mots de passe (30 min)
- Installe un gestionnaire libre (KeePass ou KeePassXC) sur la VM.
- Crée une base protégée par une phrase de passe de 6 mots tirés au hasard (utilise un dé ou un générateur de phrases de passe).
- Crée trois entrées de laboratoire avec un mot de passe généré de 20 caractères.
- Ferme et rouvre la base. Note ce qui se passe si tu perds la phrase de passe.
Question. Un gestionnaire concentre tous les secrets : n'est-ce pas un point faible unique ? Pourquoi reste-t-il recommandé ? ______________________
Éléments de réponse
Oui, c'est un point de concentration, d'où une phrase de passe forte et un second facteur sur la base. Il reste recommandé car l'alternative réaliste est de réutiliser des mots de passe faibles, ce qui est bien pire (bourrage d'identifiants). Il aide aussi à repérer les faux sites : il ne remplit pas un identifiant sur un domaine qu'il ne connaît pas.
Retour en entreprise
Si ta situation le permet : observe comment ton entreprise traite ce sujet, note en quelques lignes l'écart avec le TP, et, avec l'accord de ton tuteur, réalise une partie sur une situation réelle. Anonymise tes captures. Voir Transfert en entreprise.
Bilan de la séance
Remplis ce bilan seul, honnêtement : il sert à décider ce qu'il faut reprendre. Niveau : Non maîtrisé, Maîtrise partielle, Bonne maîtrise ou Excellente maîtrise (le vocabulaire des grilles nationales d'évaluation) ; Non évalué si tu n'as pas travaillé la compétence aujourd'hui.
| Compétence du référentiel | Ce que j'ai fait dans cette séance | Niveau |
|---|---|---|
| B3.3 – Sécuriser les équipements et les usages des utilisateurs |
Note
Les codes sont ceux du référentiel (l'arrêté numérote des activités : les codes « B… » sont un usage courant).
Je sais faire, sans aide :
- Calculer l'entropie d'un mot de passe en bits ;
- Expliquer pourquoi une phrase de passe longue vaut mieux qu'un mot court « complexe » ;
- Casser des empreintes faibles en laboratoire et expliquer pourquoi les empreintes fortes résistent ;
- Expliquer le rôle du sel et d'une fonction de hachage lente ;
- Générer et vérifier un code TOTP ;
- Rédiger une politique de mots de passe argumentée.
Ce que je dois reprendre : ______________________
Ma question à poser à l'enseignant : ______________________