🔑 Politique de mots de passe et MFA
| Formation | BTS SIO option SISR — IRIS Mediaschool |
|---|---|
| Bloc | B3 — Cybersécurité des services informatiques |
| Module | M3.2 — Identité numérique et authentification |
| Durée | 3,5 heures |
| Prérequis | C3.2.1 — Gestion des identités et des comptes |
🎯 Objectifs
- Définir et implémenter une politique de mots de passe robuste
- Comprendre le stockage sécurisé des mots de passe (hachage, salage)
- Connaître les attaques sur les mots de passe (force brute, dictionnaire, credential stuffing)
- Déployer l'authentification multi-facteurs (MFA) : TOTP, FIDO2, SMS
- Configurer la MFA via Active Directory et Azure AD
- Comprendre l'évolution vers le passwordless
📖 Politique de mots de passe
Recommandations actuelles (ANSSI / NIST)
Les recommandations ont évolué. L'ANSSI et le NIST (SP 800-63B) ont révisé leurs préconisations :
| Critère | Ancienne pratique | Recommandation actuelle |
|---|---|---|
| Longueur minimale | 8 caractères | 12 caractères minimum (idéalement 16+) |
| Complexité | Maj + min + chiffre + spécial obligatoires | Longueur privilégiée sur complexité arbitraire |
| Renouvellement | Changement tous les 90 jours | Pas de renouvellement périodique sauf suspicion de compromission |
| Passphrases | Non encouragées | Très recommandées (ex : "MonChienMangeDes3Pommes!") |
| Gestionnaire de mots de passe | Méfiance | Fortement recommandé |
| Vérification contre listes compromises | Rare | À implémenter (ex : API HaveIBeenPwned) |
Les études montrent que forcer le changement régulier du mot de passe conduit les utilisateurs à adopter des patterns prévisibles (ex : "Janvier2024!" → "Fevrier2024!"). Le NIST recommande désormais de ne changer le mot de passe qu'en cas de suspicion de compromission, et de compenser avec la MFA.
Configuration de la politique de mots de passe Active Directory
# GPO — Politique de mot de passe de domaine
# Chemin : Configuration ordinateur > Paramètres Windows > Paramètres de sécurité
# > Stratégies de compte > Stratégie de mot de passe
# Via PowerShell (Fine-Grained Password Policy — FGPP)
# Créer une politique renforcée pour les admins
New-ADFineGrainedPasswordPolicy `
-Name "PSO_Admins" `
-Precedence 10 `
-MinPasswordLength 16 `
-PasswordHistoryCount 24 `
-ComplexityEnabled $true `
-ReversibleEncryptionEnabled $false `
-MaxPasswordAge "180.00:00:00" `
-LockoutThreshold 5 `
-LockoutDuration "00:30:00" `
-LockoutObservationWindow "00:30:00"
# Appliquer à un groupe
Add-ADFineGrainedPasswordPolicySubject -Identity "PSO_Admins" -Subjects "GRP_Admins"
📖 Stockage sécurisé des mots de passe
Hachage et salage
Les mots de passe ne doivent jamais être stockés en clair. Le stockage correct utilise :
- Hachage cryptographique : transformation unidirectionnelle (bcrypt, Argon2, scrypt)
- Salage : ajout d'une valeur aléatoire unique à chaque mot de passe avant hachage, pour empêcher les attaques par rainbow tables
# Python — Hachage sécurisé avec bcrypt
import bcrypt
# Hachage lors de la création du compte
password = "MonMotDePasse2026!".encode('utf-8')
salt = bcrypt.gensalt(rounds=12) # Facteur de coût : 12 (recommandé)
hashed = bcrypt.hashpw(password, salt)
# Stocker 'hashed' en base, jamais le mot de passe en clair
# Vérification lors de la connexion
def verify_password(plain_password, hashed_password):
return bcrypt.checkpw(plain_password.encode('utf-8'), hashed_password)
# Algorithmes recommandés (2026) : bcrypt, Argon2id, scrypt
# Algorithmes à éviter : MD5, SHA-1, SHA-256 seul (trop rapides)
Attaques sur les mots de passe
| Attaque | Description | Contre-mesure |
|---|---|---|
| Force brute | Test exhaustif de toutes les combinaisons | Longueur, verrouillage de compte, MFA |
| Dictionnaire | Test de mots communs et variantes | Vérification contre listes connues, complexité |
| Rainbow tables | Tables précalculées de hash | Salage unique par mot de passe |
| Credential stuffing | Réutilisation de couples login/mdp issus de fuites | MFA, pas de réutilisation, surveillance des connexions |
| Phishing | Vol du mot de passe par tromperie | MFA résistant au phishing (FIDO2), sensibilisation |
| Pass-the-Hash | Réutilisation du hash Windows sans connaître le clair | Credential Guard, LAPS, segmentation réseau |
📖 Authentification Multi-Facteurs (MFA)
Les trois facteurs d'authentification
- Ce que je sais : mot de passe, code PIN
- Ce que je possède : token physique, smartphone, carte à puce
- Ce que je suis : empreinte digitale, reconnaissance faciale, iris
La MFA combine au moins deux facteurs différents. Elle réduit drastiquement le risque de compromission : selon Microsoft, la MFA bloque 99,9% des attaques de prise de contrôle de compte.
TOTP — Time-based One-Time Password
Le TOTP (RFC 6238) génère un code à 6 chiffres qui change toutes les 30 secondes, basé sur un secret partagé et l'heure courante. Implémentations : Google Authenticator, Microsoft Authenticator, Authy.
# Python — Génération TOTP (bibliothèque pyotp)
import pyotp
import qrcode
# Générer un secret (à stocker côté serveur)
secret = pyotp.random_base32()
print(f"Secret: {secret}")
# Créer le TOTP
totp = pyotp.TOTP(secret)
# Vérifier un code saisi par l'utilisateur
user_code = "123456" # code saisi
if totp.verify(user_code):
print("Code valide !")
else:
print("Code invalide ou expiré")
# Générer l'URI pour QR Code (compatible Authenticator)
uri = totp.provisioning_uri("jdupont@iris.local", issuer_name="IRIS")
img = qrcode.make(uri)
img.save("totp_qrcode.png")
FIDO2 / WebAuthn — Authentification sans mot de passe
FIDO2 est un standard d'authentification forte basé sur la cryptographie asymétrique. La clé privée reste sur l'appareil de l'utilisateur (token USB, smartphone), jamais envoyée sur le réseau. Avantages :
- Résistant au phishing : le challenge est lié au domaine exact, impossible à intercepter sur un faux site
- Pas de secret partagé côté serveur : seule la clé publique est stockée
- Supports : YubiKey, Google Titan Key, Apple Touch/Face ID, Windows Hello
Déploiement MFA avec Azure AD (Entra ID)
# Azure AD — Activer la MFA via Conditional Access (PowerShell)
# Prérequis : module Microsoft.Graph
Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess"
# Créer une politique d'accès conditionnel forçant la MFA
$params = @{
displayName = "Require MFA for All Users"
state = "enabled"
conditions = @{
users = @{ includeUsers = @("All") }
applications = @{ includeApplications = @("All") }
}
grantControls = @{
operator = "OR"
builtInControls = @("mfa")
}
}
New-MgIdentityConditionalAccessPolicy -BodyParameter $params
📖 Vers le Passwordless
Le passwordless (authentification sans mot de passe) est l'évolution naturelle de la MFA. Les solutions incluent :
- Windows Hello for Business : PIN + biométrie, basé sur FIDO2
- Microsoft Authenticator (Passwordless) : notification push + biométrie
- Passkeys (FIDO2/WebAuthn) : synchronisation entre appareils via le cloud du fournisseur (Apple, Google, Microsoft)
🛠️ Outils / Ressources
- HaveIBeenPwned : vérification des mots de passe compromis
- KeePass, Bitwarden, 1Password : gestionnaires de mots de passe
- Google Authenticator, Microsoft Authenticator : apps TOTP
- YubiKey : token physique FIDO2/U2F
- NIST SP 800-63B : guide de référence des politiques d'authentification
- Recommandations ANSSI sur les mots de passe
📝 QCM — Testez vos connaissances
- Pourquoi le renouvellement périodique des mots de passe n'est-il plus recommandé par le NIST ?
- Qu'est-ce que le salage (salting) d'un mot de passe et pourquoi est-il important ?
- Quels sont les trois facteurs d'authentification ?
- En quoi FIDO2 est-il plus résistant au phishing que le TOTP ?
- Qu'est-ce qu'une attaque par credential stuffing ?
- Quel algorithme de hachage est recommandé pour stocker des mots de passe en 2026 ?
📝 Afficher les corrections
- Car les utilisateurs adoptent des patterns prévisibles (variations du même mot de passe, ajout d'un chiffre incrémental), rendant la rotation contreproductive. Mieux vaut un mot de passe long + MFA.
- Le salage ajoute une valeur aléatoire unique à chaque mot de passe avant le hachage, rendant les attaques par rainbow tables inopérantes : même deux utilisateurs avec le même mot de passe auront des hashs différents.
- Ce que je sais (mot de passe, PIN), ce que je possède (token, smartphone), ce que je suis (biométrie — empreinte, visage).
- FIDO2 lie le challenge cryptographique au domaine exact du site : un attaquant interceptant la communication ne peut pas rejouer l'authentification sur un autre site. Le TOTP, lui, peut être transmis sur un faux site.
- Réutilisation de couples identifiant/mot de passe issus d'une fuite de données sur d'autres services. Fonctionne car de nombreux utilisateurs réutilisent les mêmes mots de passe.
- Argon2id (vainqueur du Password Hashing Competition) ou bcrypt avec facteur de coût ≥ 12. À éviter : MD5, SHA-1, SHA-256 seul (trop rapides à calculer).
