Chapitre 615 minDébutant
Mots de passe et authentification forte (MFA)
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- distinguer identification, authentification et autorisation ;
- calculer l'entropie d'un mot de passe aléatoire ;
- appliquer les seuils de la recommandation de la CNIL ;
- choisir une méthode d'authentification multifacteur adaptée ;
- stocker et vérifier un mot de passe correctement dans une application.
4 exercices corrigés1 schéma
L'authentification est l'étape où un système vérifie que tu es bien la personne que tu prétends être, avant de te donner accès. Le mot de passe en reste le moyen le plus répandu et le plus attaqué ; l'authentification multifacteur (MFA) le complète avec un second élément qu'un attaquant à distance ne possède pas. Ce chapitre explique comment on attaque un mot de passe, comment mesurer sa robustesse, ce que recommandent la CNIL et l'ANSSI, et comment choisir une méthode d'authentification forte.
Identification, authentification, autorisation
Trois étapes à ne pas confondre :
| Étape | Question | Exemple |
|---|---|---|
| Identification | Qui prétends-tu être ? | Saisir l'identifiant n.benali |
| Authentification | Prouve-le | Saisir le mot de passe, puis valider la notification sur son téléphone |
| Autorisation | À quoi as-tu droit ? | Le compte n.benali peut lire le dossier Comptabilité, pas le dossier RH |
L'authentification protège la confidentialité de tout le reste : une fois authentifié, l'attaquant hérite de tous les droits du compte. C'est pourquoi les comptes d'administration méritent la protection la plus forte.
Les trois facteurs d'authentification
| Facteur | Ce que c'est | Exemples |
|---|---|---|
| Connaissance | Quelque chose que tu sais | Mot de passe, phrase de passe, code PIN |
| Possession | Quelque chose que tu as | Téléphone avec une application d'authentification, clé de sécurité USB ou NFC, carte à puce, badge |
| Inhérence | Quelque chose que tu es | Empreinte digitale, reconnaissance du visage |
L'authentification multifacteur combine au moins deux facteurs de catégories différentes. Un mot de passe plus une question secrète, ce sont deux éléments de la même catégorie (connaissance) : ce n'est pas de la MFA. Un mot de passe plus un code reçu sur le téléphone, oui.
Comment on attaque un mot de passe
| Attaque | Principe | Parade principale |
|---|---|---|
| Force brute | Essayer toutes les combinaisons possibles | Mot de passe long, limitation des tentatives |
| Dictionnaire | Essayer les mots de passe les plus courants et leurs variantes (Soleil2026!, P@ssw0rd) | Refuser les mots de passe courants, phrases de passe aléatoires |
| Pulvérisation (password spraying) | Essayer un ou deux mots de passe très courants sur des centaines de comptes, pour ne pas déclencher le verrouillage | Liste de mots de passe interdits, MFA, détection des échecs répartis |
| Bourrage d'identifiants | Réutiliser des couples identifiant et mot de passe volés sur un autre site | Un mot de passe différent par service, MFA |
| Hameçonnage | Faire saisir le mot de passe sur un faux site | Sensibilisation, MFA résistante à l'hameçonnage |
| Enregistreur de frappe, voleur d'informations | Récupérer le mot de passe sur la machine de la victime | Antivirus, droits limités, MFA |
| Cassage hors ligne | Voler la base des mots de passe d'un site, puis tester des milliards de candidats par seconde sur ses propres machines | Stocker les mots de passe hachés avec un algorithme lent et salé |
Le cassage hors ligne explique pourquoi la façon dont un site stocke les mots de passe compte autant que leur robustesse. Une carte graphique récente teste des milliards de candidats par seconde contre un hachage rapide comme MD5 ou SHA-256, mais seulement quelques milliers par seconde contre un algorithme volontairement lent comme bcrypt ou Argon2id.
Mesurer la robustesse : l'entropie
La robustesse d'un mot de passe tiré au hasard se mesure par son entropie, en bits : le nombre de combinaisons possibles, exprimé en puissance de 2. Pour un mot de passe de L caractères choisis au hasard parmi N symboles possibles :
entropie = L × log₂(N) bits, et le nombre de combinaisons vaut N^L = 2^entropie.
Chaque bit supplémentaire double le nombre de combinaisons à essayer. Quelques valeurs :
| Mot de passe aléatoire | Symboles possibles (N) | Entropie |
|---|---|---|
| Code PIN de 4 chiffres | 10 | 13,3 bits |
| 8 lettres minuscules | 26 | 37,6 bits |
| 8 caractères parmi minuscules, majuscules, chiffres | 62 | 47,6 bits |
| 8 caractères parmi environ 90 (avec caractères spéciaux) | 90 | 51,9 bits |
| 12 caractères parmi 99 (26 + 26 + 10 + 37 spéciaux) | 99 | 79,6 bits |
| 14 caractères parmi minuscules, majuscules, chiffres | 62 | 83,4 bits |
| Phrase de passe de 7 mots tirés au hasard dans une liste de 7 776 mots | 7 776 par mot | 90,5 bits |
Le cas des 12 caractères donne 79,6 bits : la CNIL l'arrondit à 80 bits dans ses exemples.
Pour une phrase de passe, chaque mot tiré au hasard dans une liste de 7 776 mots (la taille des listes Diceware) apporte log₂(7 776) ≈ 12,9 bits.
Ce que cela change pour un attaquant qui teste 10 milliards (10^10) de candidats par seconde contre un hachage rapide : un mot de passe aléatoire de 47,6 bits (8 caractères alphanumériques) est épuisé en 2^47,6 / 10^10 ≈ 21 300 secondes, soit moins de 6 heures. À 80 bits, il faudrait environ 3,8 millions d'années.
Les recommandations de la CNIL
La CNIL a publié en 2022 une recommandation sur les mots de passe (délibération n° 2022-100 du 21 juillet 2022). Elle ne fixe plus une longueur minimale mais un niveau d'entropie à atteindre, qui dépend des autres protections en place.
| Situation | Entropie minimale | Conditions |
|---|---|---|
| Mot de passe seul | 80 bits | Aucune autre mesure : il doit résister seul au cassage |
| Mot de passe avec restriction d'accès | 50 bits | Au moins un mécanisme qui freine les essais : temporisation après plusieurs échecs, nombre de tentatives limité dans le temps, CAPTCHA, ou verrouillage du compte après 10 échecs au plus |
| Mot de passe avec un matériel détenu par la personne | 13 bits | Une carte bancaire, une carte SIM, un certificat sur une carte, et un blocage après 3 échecs (c'est le code PIN) |
Pour le cas « mot de passe seul » (80 bits), la CNIL donne trois exemples équivalents :
- au moins 12 caractères mêlant majuscules, minuscules, chiffres et caractères spéciaux (pris dans une liste d'au moins 37 caractères spéciaux) ;
- au moins 14 caractères mêlant majuscules, minuscules et chiffres, sans caractère spécial obligatoire ;
- une phrase de passe d'au moins 7 mots.
Elle recommande aussi :
- de ne plus imposer de renouvellement périodique pour les comptes ordinaires (cela pousse à des mots de passe prévisibles :
Printemps2026!, puisEte2026!), tout en le gardant pour les comptes à privilèges ; - de forcer le changement dès qu'une compromission est suspectée ;
- de ne jamais stocker un mot de passe en clair, mais de le transformer avec une fonction cryptographique non réversible, avec un sel, comme scrypt ou Argon2 ;
- d'encourager l'usage d'un gestionnaire de mots de passe.
L'ANSSI, dans son guide sur l'authentification multifacteur et les mots de passe (2021), va dans le même sens : privilégier l'authentification multifacteur, des mots de passe longs plutôt qu'une composition compliquée, un mot de passe différent pour chaque service, et un gestionnaire de mots de passe pour tous les retenir.
Le gestionnaire de mots de passe
Retenir un mot de passe différent et long pour chacun des dizaines de services qu'on utilise est impossible. Un gestionnaire de mots de passe le fait pour toi : il génère des mots de passe aléatoires, les stocke dans un coffre chiffré et les remplit automatiquement. Tu ne retiens qu'un seul mot de passe maître, qui doit être très robuste (une phrase de passe), et que tu protèges par la MFA si le gestionnaire la propose.
Exemples : KeePassXC (logiciel libre, coffre stocké localement), Bitwarden, ou le gestionnaire intégré au navigateur ou au système. Un gestionnaire a un autre avantage : il ne remplit pas automatiquement les identifiants sur un faux site dont le domaine ne correspond pas, ce qui aide à repérer un hameçonnage.
Choisir une méthode d'authentification multifacteur
Toutes les méthodes de MFA ne se valent pas.
| Méthode | Fonctionnement | Faiblesse |
|---|---|---|
| Code par SMS | Un code envoyé sur le téléphone | Détournement de la ligne (échange frauduleux de carte SIM), interception, hameçonnage en temps réel |
| Code à usage unique (TOTP) | Une application (Microsoft Authenticator, Google Authenticator, FreeOTP…) affiche un code qui change toutes les 30 secondes | Le code peut être saisi sur un faux site et relayé en temps réel |
| Notification à valider | Le téléphone demande « Est-ce bien vous ? » | Bombardement de notifications jusqu'à ce que la victime, lassée, valide ; mieux protégé quand il faut recopier un nombre affiché à l'écran |
| Clé de sécurité FIDO2 | Une clé USB ou NFC signe un défi envoyé par le site | Il faut la distribuer et prévoir une clé de secours |
| Clé d'accès (passkey) | Une paire de clés cryptographiques stockée sur le téléphone ou l'ordinateur, débloquée par empreinte, visage ou PIN | Récente : tous les services ne la proposent pas encore |
Les clés FIDO2 et les clés d'accès sont dites résistantes à l'hameçonnage : la clé est liée au nom de domaine du vrai site, et elle refuse tout simplement de répondre à soleane-medical.fr.account-verify.example. C'est la méthode à privilégier pour les comptes d'administration.
Le même raisonnement en SLAM et en SISR
En SLAM, c'est le développeur qui décide comment l'application stocke et vérifie les mots de passe. En PHP, password_hash() et password_verify() font le travail correctement :
// À l'inscription : hachage lent et salé (sel généré automatiquement)
$hash = password_hash($motDePasse, PASSWORD_ARGON2ID);
// À la connexion : comparaison sûre avec le hachage stocké
if (password_verify($saisie, $hash)) {
// authentification réussie
}
Si ton PHP n'a pas été compilé avec Argon2, la constante PASSWORD_ARGON2ID n'existe pas : PASSWORD_DEFAULT (bcrypt) est alors un choix correct.
Le développeur limite aussi le nombre de tentatives, renvoie un message générique (« identifiant ou mot de passe incorrect », sans dire lequel des deux est faux), refuse les mots de passe les plus courants ou déjà apparus dans des fuites, et propose la MFA. Le cours SQL montre comment stocker un mot de passe haché dans la base.
En SISR, la politique de mots de passe du domaine se règle par stratégie de groupe dans Active Directory : longueur minimale, historique, seuil et durée de verrouillage. Pour respecter le cas « 50 bits avec restriction d'accès » de la CNIL, on combine une longueur suffisante et un verrouillage après 10 échecs au plus. Les comptes d'administration reçoivent une politique plus stricte (stratégies de mots de passe affinées), la MFA pour l'accès à distance, et les mots de passe administrateur locaux des postes sont rendus uniques et renouvelés automatiquement par Windows LAPS (cours Windows Server).
Pour aller plus loin. Le cours Authentification détaille la politique de mots de passe selon la CNIL et l'ANSSI et les facteurs et la MFA ; le stockage des mots de passe (sel, bcrypt, Argon2) est dans le chapitre Stocker un mot de passe du cours Cryptographie.
Exercices
Exercice 1 sur 4 Calculer une entropie Réussi À revoir
Pour chaque mot de passe généré au hasard, calcule l'entropie et dis s'il atteint 80 bits.
- 10 caractères parmi les 26 minuscules et les 10 chiffres.
- 16 caractères parmi les 26 minuscules.
- Une phrase de passe de 5 mots tirés au hasard dans une liste de 7 776 mots.
Données : log₂(36) ≈ 5,17 ; log₂(26) ≈ 4,70 ; log₂(7 776) ≈ 12,92.
Voir la réponseMasquer la réponse de l'exercice 1
- 10 × 5,17 ≈ 51,7 bits : non. Il suffirait pour le cas « avec restriction d'accès » (50 bits), pas pour un mot de passe seul.
- 16 × 4,70 ≈ 75,2 bits : non, il manque environ 5 bits. Il faudrait 18 minuscules (18 × 4,70 ≈ 84,6 bits).
- 5 × 12,92 ≈ 64,6 bits : non. Il faut 7 mots (7 × 12,92 ≈ 90,4 bits), ce qui correspond à l'exemple de la CNIL.
Tu avais trouvé ?
Exercice 2 sur 4 Auditer une politique de mots de passe Réussi À revoir
La politique actuelle de l'extranet de Soléane, pour les comptes des pharmacies, est la suivante : 8 caractères minimum dont une majuscule, un chiffre et un caractère spécial ; changement obligatoire tous les 60 jours ; aucune limitation du nombre de tentatives ; mots de passe stockés avec SHA-256 sans sel.
Relève les écarts avec les recommandations de la CNIL et propose une politique corrigée.
Voir la réponseMasquer la réponse de l'exercice 2
Écarts :
- Aucune restriction d'accès : le mot de passe doit donc atteindre seul 80 bits. Or 8 caractères parmi environ 90 symboles donnent au mieux 51,9 bits, et bien moins si l'utilisateur choisit
Pharma01!. - Renouvellement périodique imposé à des comptes ordinaires : déconseillé par la CNIL, il pousse à des mots de passe prévisibles.
- Stockage en SHA-256 sans sel : fonction rapide, sans sel ; deux comptes avec le même mot de passe ont la même empreinte et un attaquant qui vole la base teste des milliards de candidats par seconde.
Politique corrigée (une possibilité) : ajouter une restriction d'accès (temporisation croissante après 3 échecs et verrouillage après 10, avec déblocage par lien envoyé par courriel), ce qui permet un objectif de 50 bits, par exemple 12 caractères minimum sans règle de composition imposée mais avec refus des mots de passe courants ; ou viser 80 bits sans restriction (14 caractères alphanumériques ou phrase de 7 mots). Supprimer le renouvellement périodique, sauf compromission. Stocker les mots de passe avec Argon2id (ou bcrypt), salés. Proposer la MFA, et l'imposer aux comptes d'administration.
Tu avais trouvé ?
Exercice 3 sur 4 MFA ou pas MFA ? Réussi À revoir
Ces combinaisons sont-elles de l'authentification multifacteur ? Justifie.
- Un mot de passe et un code PIN.
- Un badge sans contact et une empreinte digitale.
- Un mot de passe et un code reçu par SMS.
- Un mot de passe et la réponse à « Quel est le nom de votre premier animal ? ».
Voir la réponseMasquer la réponse de l'exercice 3
- Non : deux éléments de connaissance.
- Oui : possession (badge) et inhérence (empreinte).
- Oui : connaissance et possession (le téléphone), même si le SMS est la méthode la plus faible.
- Non : deux éléments de connaissance, et la réponse se trouve souvent sur les réseaux sociaux.
Tu avais trouvé ?
Exercice 4 sur 4 Revue de code Réussi À revoir
Un développeur a écrit ce code de connexion pour l'extranet. Relève trois problèmes de sécurité et corrige-les.
$sql = "SELECT * FROM client WHERE email = '$email'";
$client = $pdo->query($sql)->fetch();
if (!$client) {
echo "Adresse inconnue";
} elseif ($client['mdp'] !== md5($mdp)) {
echo "Mot de passe incorrect";
} else {
$_SESSION['id'] = $client['id'];
}
Voir la réponseMasquer la réponse de l'exercice 4
- Injection SQL : l'adresse est collée dans la requête. Il faut une requête préparée.
- MD5 : hachage rapide, cassé, sans sel. Il faut
password_hash()à l'inscription etpassword_verify()à la connexion. - Messages différents selon que l'adresse existe ou non : un attaquant peut savoir quelles adresses ont un compte (énumération). Il faut un message unique.
On ajoute aussi une limitation des tentatives et la régénération de l'identifiant de session après connexion.
$stmt = $pdo->prepare('SELECT id, mdp FROM client WHERE email = ?');
$stmt->execute([$email]);
$client = $stmt->fetch();
if ($client && password_verify($mdp, $client['mdp'])) {
session_regenerate_id(true);
$_SESSION['id'] = $client['id'];
} else {
echo 'Identifiant ou mot de passe incorrect';
}
Tu avais trouvé ?