L'authentification multi-facteurs (MFA, pour Multi-Factor Authentication) est un mécanisme de sécurité qui exige au moins deux preuves d'identité distinctes avant d'accorder l'accès à un système. Elle renforce considérablement la sécurité par rapport à un simple mot de passe.
Le principe repose sur la combinaison de facteurs issus de catégories différentes :
| Facteur | Type | Exemples |
|---|---|---|
| 1er facteur | Ce que vous savez | Mot de passe, code PIN |
| 2e facteur | Ce que vous possédez | Application TOTP, clé FIDO2, SMS |
| 3e facteur | Ce que vous êtes | Empreinte digitale, reconnaissance faciale |
L'implémentation la plus courante combine un mot de passe avec un code temporaire (TOTP) généré par une application comme Google Authenticator ou Authy :
import pyotp
# Génération d'un secret partagé (côté serveur, à stocker)
secret = pyotp.random_base32()
totp = pyotp.TOTP(secret)
# Vérification du code saisi par l'utilisateur
def verify_mfa(user_code: str) -> bool:
return totp.verify(user_code)
Les standards modernes comme WebAuthn/FIDO2 offrent une expérience sans mot de passe (passwordless) en s'appuyant sur des clés cryptographiques matérielles, considérées comme le niveau de sécurité le plus élevé.
À retenir
Même avec le MFA activé, le premier facteur reste souvent un mot de passe. S'il est faible ou réutilisé, la sécurité globale est compromise. Assurez-vous qu'il soit généré aléatoirement avec une entropie suffisante pour résister aux attaques.
Termes connexes : authentification, TOTP, FIDO2, WebAuthn, 2FA.
