L'authentification à deux facteurs (2FA) est une méthode de sécurité qui nécessite deux actions différentes d'identification pour accéder à un compte ou à un système.
Note : Cet article est composé de notes de la réunion du 14 février 2025.
Ce thème a déjà fait l'objet de cet article : L'authentification à double facteur
1. Caractéristiques
Voici un résumé sur les techniques actuelles d'authentification à deux facteurs, avec leurs avantages et inconvénients :
SMS (Messages Textes)
- Un code est envoyé par SMS au numéro de téléphone enregistré de l'utilisateur.
- Facile à mettre en place et à utiliser, largement supporté par de nombreux services.
- Vulnérable aux attaques de type SIM swapping, dépend de la couverture réseau et peut être retardé.
Applications d'Authentification (TOTP)
- Utilise des applications comme Google Authenticator ou Authy pour générer des codes temporaires.
- Plus sécurisé que les SMS et ne nécessite pas de connexion internet pour générer les codes.
- Nécessite l'installation d'une application supplémentaire et peut paraitre moins pratique pour les utilisateurs non techniques.
Clés de Sécurité (U2F/WebAuthn)
- Utilise des dispositifs physiques comme YubiKey ou Titan Security Key.
- Très sécurisé contre le phishing et facile à utiliser une fois configuré.
- Coût initial pour l'achat de la clé et nécessite un port USB ou NFC.
Notifications Push
- Envoie une notification push à une application mobile pour approuver la connexion.
- Convivial et rapide, moins sensible aux interceptions que les SMS.
- Nécessite une connexion internet et dépend de la disponibilité de l'application mobile.
Emails de Vérification
- Envoie un code ou un lien de vérification par email.
- Facile à mettre en place et accessible depuis n'importe quel appareil avec accès à l'email.
- Moins sécurisé que d'autres méthodes, peut être retardé par les délais de livraison des emails.
Appels Téléphoniques
- Un code est transmis par un appel téléphonique automatisé.
- Utile pour les utilisateurs qui préfèrent les interactions vocales, accessible même sans smartphone.
- Moins sécurisé que d'autres méthodes, peut être sujet à des retards ou des problèmes de réseau.
Biometrics
- Utilise des caractéristiques biométriques comme les empreintes digitales ou la reconnaissance faciale.
- Très pratique et rapide et difficile à contrefaire.
- Problèmes de confidentialité et de stockage des données biométriques. Peut ne pas fonctionner correctement dans certaines conditions (ex. : doigts sales, mauvais éclairage, …).
Codes de Récupération
- Fournit une liste de codes de secours à utiliser en cas de perte d'accès au deuxième facteur.
- Utile en cas de perte de l'appareil ou de problèmes techniques.
- Doit être stocké de manière sécurisée, peut être perdu ou volé.
Chaque méthode d'authentification à deux facteurs possède ses propres avantages et inconvénients. Le choix de la méthode dépend des besoins spécifiques en matière de sécurité et de convivialité. Pour une sécurité optimale, il est souvent recommandé de combiner plusieurs méthodes.
Les codes temporaires générés par des applications comme Google Authenticator ou Authy utilisent un algorithme appelé Time-based One-Time Password (TOTP). Voici comment ces codes sont calculés :
2. Calcul des codes temporaires
TOTP est une extension de l'algorithme HOTP (HMAC-Based One-Time Password), il utilise le temps comme facteur pour générer des codes uniques.
Chaque utilisateur a une clé secrète unique, généralement sous forme de chaîne de caractères ou de code QR.
Cette clé est partagée entre le serveur et l'application d'authentification lors de la configuration initiale.
- L'horodatage actuel est utilisé comme facteur pour générer le code.
- L'horodatage est généralement divisé par un intervalle de temps fixe (par exemple, 30 secondes) pour obtenir un compteur de temps.
- HMAC est une fonction de hachage cryptographique qui utilise la clé secrète et le compteur de temps pour générer un code unique.
- Le compteur de temps est haché avec la clé secrète pour produire un hachage.
- Le hachage résultant est tronqué pour obtenir un code numérique de longueur fixe (généralement 6 chiffres).
- Seule une partie du hachage est utilisée pour former le code final.
- Le code final est un nombre à 6 chiffres qui change toutes les 30 secondes (ou un autre intervalle défini).
- Ce code est affiché à l'utilisateur et doit être saisi pour compléter l'authentification.
Exemple de Calcul d’un code temporaire
- Clé Secrète : JBSWY3DPEHPK3PXP
- Horodatage Actuel : 1633072800 (par exemple, en secondes depuis l'époque Unix)
- Intervalle de Temps : 30 secondes
- Compteur de Temps : 1633072800 / 30 = 54435760
- HMAC : HMAC-SHA1(Clé Secrète, Compteur de Temps)
- Troncature : Prendre les 6 derniers chiffres du hachage résultant.
- Code Final : 123456 (exemple de code généré)
Avantages de TOTP
- Les codes changent fréquemment, réduisant le risque d'interception et de réutilisation.
- Facile à implémenter et à utiliser.
- Ne nécessite pas de connexion internet pour générer les codes.
Inconvénients de TOTP
- Nécessite une synchronisation précise de l'heure entre le serveur et l'application.
- Les codes ont une durée de vie limitée, ce qui peut poser un problème si l'utilisateur est lent à saisir le code.
3. Documents présentés en réunion