Aller au contenu

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 :

python3 -c "import math; print(round(12*math.log2(95),1))"

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.

  1. Combien de comptes ont été retrouvés, et en combien de temps ? ______________________
  2. Quels sont les points communs des mots de passe retrouvés ? ______________________
  3. Pourquoi les mots de passe non retrouvés ont-ils résisté ? Quelle valeur d'entropie ont-ils à peu près ? ______________________
  4. Peut-on dire que « MD5 est cassé » pour cette raison ? Que montre cet essai du stockage par MD5 ? ______________________
Éléments de réponse
  1. 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)

echo -n soleil | md5sum
echo -n soleil | md5sum
openssl passwd -6 soleil
openssl passwd -6 soleil

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.

SECRET=JBSWY3DPEHPK3PXP
oathtool --totp -b $SECRET
date
sleep 31
oathtool --totp -b $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.

  1. Que se passe-t-il si un attaquant vole le secret (la base du serveur, par exemple) ? ______________________
  2. 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 :

net accounts

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

  1. Installe un gestionnaire libre (KeePass ou KeePassXC) sur la VM.
  2. 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).
  3. Crée trois entrées de laboratoire avec un mot de passe généré de 20 caractères.
  4. 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 : ______________________