Guides Sécurité

Comment fonctionnent les codes à deux facteurs (TOTP)

Comment les codes à six chiffres d'une application d'authentification sont dérivés d'un secret partagé et de l'horloge, avec un vecteur de test RFC vérifié, et leurs limites face à l'hameçonnage.

Dernière vérification :

AdSense Placeholder
Slot: header_reference_page
Sur cette page

Un mot de passe à usage unique basé sur le temps (TOTP) est un code court qui change toutes les 30 secondes. Votre application d'authentification et le site connaissent un secret partagé et l'heure actuelle : chacun peut donc calculer seul le même code. La méthode est définie dans la RFC 6238, qui s'appuie sur le HOTP à compteur de la RFC 4226. Essayez avec le générateur TOTP.

L'algorithme en cinq étapes

  1. Transformer le temps en compteur. compteur = floor(temps_unix / 30).
  2. Appliquer HMAC au compteur. Calculez HMAC-SHA1 (ou SHA-256/512) du compteur de 8 octets en big-endian, avec le secret comme clé. Vous pouvez expérimenter avec le générateur HMAC.
  3. Choisir quatre octets. Le dernier quartet du résultat est un décalage ; prenez les quatre octets qui commencent là.
  4. Effacer le bit de poids fort. Appliquez le masque 0x7FFFFFFF pour que le nombre soit positif.
  5. Garder les derniers chiffres. Prenez le nombre modulo 10⁶ (pour six chiffres), complété de zéros.

Un exemple vérifié

Le secret de test de la RFC 4226 est la chaîne ASCII 12345678901234567890, qui sous la forme Base32 utilisée par les applications d'authentification donne GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ. Pour les compteurs 0, 1 et 2, HOTP donne 755224, 287082 et 359152.

Pour TOTP, la RFC 6238 utilise la seconde 59 avec un pas de 30 secondes et 8 chiffres :

Étape Valeur
Compteur 59 ÷ 30 → 1
HMAC-SHA1 75a48a19d4cbe100644e8ac1397eea747a2d33ab
Décalage (dernier quartet) 11
Quatre octets, bit de poids fort effacé 1094287082
8 derniers chiffres 94287082

La version à six chiffres du même code est 287082. Convertissez des horodatages avec le convertisseur de timestamp Unix pour voir dans quel pas tombe un instant.

Ce que contient le QR code

Le QR code contient un lien otpauth://totp/... portant le secret, l'émetteur, le nombre de chiffres, la période et l'algorithme, par exemple otpauth://totp/Example:[email protected]?secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ&issuer=Example&digits=6&period=30. Quiconque voit le secret peut générer vos codes : traitez-le comme un mot de passe.

Limites

Méthode Résistante à l'hameçonnage Remarques
Codes SMS Non Peuvent être interceptés ou victimes d'un échange de SIM
Application TOTP Non Mieux que le SMS, mais un faux site peut relayer le code
Clé matérielle ou passkey Oui Vérifie le vrai domaine du site

Pièges courants

  • Mauvaise horloge. La cause la plus fréquente de codes refusés.
  • Perdre le secret. Gardez les codes de secours ou la clé de configuration d'origine en lieu sûr, sinon vous risquez d'être bloqué.
  • Coller de vrais secrets dans des pages web. N'utilisez le générateur qu'avec des secrets de test.
  • Réutiliser un code. Chaque code vaut pour un pas ; les serveurs rejettent en général un rejeu.

Voir Comment générer des mots de passe et phrases de passe robustes pour le premier facteur, et HMAC et Authentification multifacteur (MFA) pour les définitions.

Essayez ces outils

Voir aussi

  • Glossaire TOTP
    Le TOTP (mot de passe à usage unique basé sur le temps) est un code court, en général à six chiffres.
  • Glossaire HOTP
    Le HOTP (mot de passe à usage unique basé sur HMAC) est un code à usage unique dérivé d'un secret partagé et d'un compteur qui augmente à.
  • Glossaire HMAC
    Le HMAC est un hachage calculé avec une clé secrète : il prouve qu'un message vient du détenteur de la clé et n'a pas été modifié.
  • Glossaire Authentification multifacteur (MFA)
    L'authentification multifacteur (MFA) exige deux types de preuve ou plus pour se connecter.
  • Guide Comment fonctionne le hachage
    Ce que fait une fonction de hachage, l'effet avalanche avec une vraie sortie SHA-256, quels algorithmes restent sûrs.

Questions fréquemment posées

Le code dépend de l'horloge. Si l'heure de votre appareil dérive de plus d'environ un pas (généralement 30 secondes), le serveur calcule un autre code. Activez l'heure automatique sur l'appareil.

Non. Les deux détiennent le même secret et lisent la même heure : chacun calcule le même code de son côté. Le secret n'est échangé qu'une fois, au scan du QR code.

Oui. Une fausse page de connexion peut demander le code et l'utiliser aussitôt, car le code est valable pour tout site qui le demande. Les clés de sécurité matérielles et les passkeys vérifient l'adresse réelle du site, ce qui les rend résistantes à l'hameçonnage.

AdSense Placeholder
Slot: footer_leaderboard