Qu'est-ce que TOTP ? Comment fonctionnent les mots de passe à usage unique basés sur le temps


La version courte

TOTP signifie Time-Based One-Time Password (Mot de passe à usage unique basé sur le temps). C’est le système derrière des applications comme Google Authenticator et Authy qui génèrent des codes à 6 chiffres que vous saisissez lors de la connexion à vos comptes. Chaque code est valide pendant 30 secondes, puis un nouveau le remplace.

C’est l’idée de base. Mais comment ça fonctionne vraiment sous le capot est étonnamment simple.

Une clé secrète et une horloge

TOTP a besoin de deux ingrédients : une clé secrète et l’heure actuelle.

Lorsque vous configurez l’authentification à deux facteurs sur un site web, le site génère une clé secrète aléatoire et la partage avec vous, généralement sous forme de QR code. Votre application d’authentification scanne le code et stocke la clé. Le site web conserve également une copie. Après cet échange initial, le secret n’est plus jamais transmis.

C’est là que ça devient intéressant. Votre application d’authentification et le serveur du site web ont tous deux une horloge. Ils savent tous deux quelle heure il est. Ils peuvent donc indépendamment combiner la clé secrète avec l’heure actuelle, l’exécuter à travers les mêmes calculs mathématiques, et arriver au même code à 6 chiffres. Aucune communication nécessaire.

Lorsque vous saisissez un code dans le formulaire de connexion, le serveur génère son propre code en utilisant le même secret et l’heure actuelle, puis vérifie s’ils correspondent. Si c’est le cas, vous êtes connecté.

À quoi ressemblent les calculs

Vous n’avez pas besoin de comprendre la cryptographie pour utiliser TOTP, mais voici l’essentiel si vous êtes curieux.

L’heure actuelle est divisée en intervalles de 30 secondes. En ce moment, il y a un nombre qui représente “combien de blocs de 30 secondes se sont écoulés depuis le 1er janvier 1970” (c’est l’époque Unix, un point de référence commun en informatique). Ce nombre s’appelle le pas de temps.

L’algorithme injecte la clé secrète et le pas de temps dans HMAC-SHA1, une fonction de hachage à sens unique. Le résultat est une longue chaîne d’octets. TOTP extrait un morceau de ce résultat, le convertit en nombre, et prend les 6 derniers chiffres. C’est votre code.

Comme le pas de temps change toutes les 30 secondes, le code change aussi. Et comme la fonction de hachage est à sens unique, quelqu’un qui voit un code ne peut pas retrouver votre clé secrète à partir de celui-ci.

Pourquoi les codes expirent

La fenêtre de 30 secondes est un compromis. Des fenêtres plus courtes seraient plus sécurisées, des fenêtres plus longues vous donneraient plus de temps pour saisir. Trente secondes est devenu une valeur par défaut raisonnable dans la RFC 6238, la spécification qui définit TOTP.

La plupart des serveurs acceptent en fait les codes des fenêtres précédentes et suivantes de 30 secondes, pour tenir compte du décalage d’horloge entre votre appareil et le serveur. Donc en pratique, vous avez environ 90 secondes.

Une fois qu’un code expire, il ne vaut plus rien. Quelqu’un qui regarde par-dessus votre épaule a une fenêtre très étroite pour utiliser ce qu’il voit, et de nombreux services rejettent un code qui a déjà été utilisé une fois.

RFC 6238 : le standard

TOTP n’est pas propriétaire. Il est défini dans la RFC 6238, publiée par l’Internet Engineering Task Force (IETF) en 2011. La spécification s’appuie sur un standard antérieur appelé HOTP (RFC 4226), qui utilise un compteur au lieu du temps. TOTP a simplement remplacé le compteur par un pas de temps.

Parce que c’est un standard ouvert, n’importe quelle application d’authentification peut générer des codes pour n’importe quel service qui prend en charge TOTP. Vous n’êtes pas bloqué chez un fournisseur spécifique. Google Authenticator, Authy, 1Password, Bitwarden, et des dizaines d’autres utilisent tous le même algorithme.

Comment TOTP se compare aux mots de passe classiques

Un mot de passe classique est statique. C’est la même chaîne à chaque connexion. Si quelqu’un le vole via une violation de données, une attaque de phishing ou un malware, il peut l’utiliser encore et encore jusqu’à ce que vous le changiez.

Les codes TOTP sont différents à plusieurs égards :

  • Ils changent toutes les 30 secondes, donc un code volé n’est utile que pendant un bref moment
  • Ils sont générés à partir d’un secret qui ne quitte jamais votre appareil après la configuration
  • Ils ne peuvent pas être phishés de manière traditionnelle, car au moment où un attaquant essaie d’en utiliser un, il est probablement expiré
  • Ils ne dépendent pas de votre capacité à créer et mémoriser quelque chose de complexe

Cela dit, TOTP ne remplace pas les mots de passe. C’est une couche supplémentaire. Vous avez toujours besoin d’un mot de passe (quelque chose que vous savez), et le code TOTP prouve que vous avez également accès à l’appareil avec la clé secrète (quelque chose que vous avez).

Le côté pratique

Configurer TOTP prend généralement environ une minute par compte. Le service vous montre un QR code, vous le scannez avec votre application d’authentification, et vous confirmez en saisissant un code. C’est tout.

Dès lors, la connexion prend 10 secondes de plus. Vous ouvrez votre application d’authentification, trouvez le bon compte, lisez le code, et le saisissez. C’est une petite friction qui rend votre compte considérablement plus difficile à pirater.

Certaines personnes s’inquiètent de perdre l’accès à leur application d’authentification. C’est une préoccupation légitime. La plupart des services vous donnent des codes de secours pendant la configuration. Sauvegardez-les quelque part de sécurisé. Vous pouvez également utiliser des applications d’authentification qui prennent en charge la sauvegarde cloud, ou conserver vos clés secrètes stockées dans un gestionnaire de mots de passe.

Essayez-le vous-même

Si vous voulez voir TOTP en action sans vous engager, vous pouvez générer des codes sur 2fa.zip. Il fonctionne entièrement dans votre navigateur, sans secret envoyé à aucun serveur, c’est donc un bon moyen de comprendre comment fonctionnent les codes avant de configurer 2FA sur vos vrais comptes.

Sécurisez vos comptes avec l'authentification à deux facteurs

Générez des codes TOTP instantanément, directement dans votre navigateur.

Essayez notre générateur de codes 2FA gratuit

Articles connexes