Aller au contenu

Mot de passe à usage unique basé sur le temps

Un article de Wikipédia, l'encyclopédie libre.
Exemple d'application de gestion des authentifications TOTP (FreeOTP ici).

Un mot de passe à usage unique basé sur le temps (TOTP, Time based One Time Password en anglais) est un algorithme permettant de générer un mot de passe à usage unique.

Il permet la génération d'une séquence de caractères valable seulement pendant un intervalle de temps limité afin d'utiliser un mécanisme de double authentification. C'est une extension du mot de passe à usage unique basé sur HMAC (HOTP), standardisée en dans la RFC 6238[1] par l'IETF. Contrairement à HOTP qui nécessite un compteur incrémental partagé entre les deux entités pour garantir l'utilisation unique, TOTP utilise l'heure et un secret partagé. Un intervalle de temps de validité est défini pour tolérer une désynchronisation des horloges.

L'algorithme de génération est utilisé symétriquement par les deux parties : le « prouveur » souhaitant se connecter et le « vérifieur » responsable de la vérification de la connexion. Ils doivent donc partager un certain nombre d'informations[1] :

  • un temps Unix, noté T0, correspondant au temps d'origine (par défaut il est à 0, soit l'epoch) ;
  • un choix d'intervalle de temps commun, noté X ;
  • un secret commun (ou une clé secrète identique), noté k.

Le partage de ces caractéristiques est primordial pour le bon fonctionnement de l'algorithme. Il est fréquemment fait grâce à un QRcode[2].

Soit T, le nombre d'intervalle s'étant écoulé depuis l'epoch, c'est-à-dire : T = (temps de la machine sous sa forme POSIX - T0) / X.

Le TOTP est généré en utilisant l'algorithme HOTP, avec pour paramètres la clé secrète et un nombre T, de la façon suivante : TOTP = HOTP(K,T).

Contrairement aux mots de passe, les codes TOTP sont à usage unique, ainsi un identifiant compromis n'est valide que pour une période limitée d'une trentaine de secondes. Les utilisateurs doivent cependant entrer le code TOTP dans un formulaire d'authentification ce qui laisse une possibilité d'attaque par hameçonnage. Grâce à la brève fenêtre durant laquelle est valide un code TOTP, les attaquants peuvent émuler les identifiants en temps réel[3].

Implémentations existantes

[modifier | modifier le code]

Notes et références

[modifier | modifier le code]
  1. a et b (en) D. M'Raihi, S. Machani, M. Pei et J. Rydell, « TOTP: Time-Based One-Time Password Algorithm », sur datatracker.ietf.org, IETF, (consulté le ).
  2. (en) Stéphane Bortzmeyer, « RFC 6238: TOTP: Time-Based One-Time Password Algorithm », sur bortzmeyer.org, (consulté le ).
  3. (en-US) Jovi Umawing, « Has two-factor authentication been defeated? A spotlight on 2FA's latest challenge », sur blog.malwarebytes.com, Malwarebytes Labs, (consulté le ).
  4. GNOME Authenticator
  5. « Proton Authenticator : authentificateur A2F privé et sécurisé », sur Proton (consulté le )
  6. « Application d’authentification pour téléphone mobile Microsoft | Sécurité Microsoft », sur microsoft.com (consulté le ).