Le protocole TOTP (Time-based One-Time Password) est un moyen d’authentification qui se présente sous la forme d’un mot de passe à usage unique (OTP).
Il est apparu en 2011 et fait partie des standards développés par l’Initiative for Open Authentication (OATH), un groupe de collaboration international qui vise à promouvoir l’authentification forte en open-source.

TOTP est utilisable comme moyen d’authentification en complément d’une autre solution d’authentification, cela fait partie des solutions de multi-factor authentication, ou MFA (on parle parfois aussi de 2FA, ou authentification à 2 facteurs).

TOTP est un standard open-source, il s’agit d’un algorithme standardisé, implémenté à travers une application mobile ou un logiciel de façon gratuite.

De nombreux sites et services proposent d’utiliser cette option (Facebook, Google, KeePass, nombreuses banques, services mails ou de messagerie,…).
Une liste non-exhaustive de sites supportant ce type d’authentification est disponible ici : twofactorauth.org

Figure 1 : Exemple d’application de TOTP,
implémenté pour plusieurs sites et services

La solution la plus connue de TOTP est Google Authenticator, mais bien d’autres solutions existent (https://alternativeto.net/software/freeotp/ )

Figure 1 : Exemple d’application de TOTP, implémenté pour plusieurs sites et services.

La sécurité de TOTP repose donc sur le fait que la personne en possession du support est bien la bonne personne, ou plus exactement, sur le fait que la personne qui utilise le logiciel (ou l’application) sur lequel TOTP est configuré est la bonne.

En ce sens, elle offre la même garantie qu’un envoi de SMS, mais est bien plus sécurisée.

Avantages et propriétés

TOTP est l’extension du protocole HOTP (HMAC-based One-Time Password), apparu en 2005, et premier standard diffusé par l’OATH.

L’utilisation de TOTP est similaire pour l’utilisateur à celle d’une authentification par envoi de SMS ou de mail. L’installation d’un logiciel (ou une application mobile) supportant ce protocole est la seule adaptation nécessaire pour l’utilisateur.

TOTP présente les avantages suivants :

  • Ne requiert pas d’information personnelle ou adresse de contact de l’utilisateur (mail, numéro de téléphone, …)
  • TOTP est open-source, il s’agit d’un standard, et est ainsi implémenté sous de nombreuses formes, et fonctionne indifféremment du support utilisé.
    Il n’y a donc pas de contrainte concernant l’appareil (ordinateur, tablette, téléphone,..), ni l’environnement logiciel (Mac, Windows, Linux, …).
  • Le code généré est à usage unique (One-Time Password).
    Si quelqu’un prend connaissance du mot de passe TOTP que vous venez de taper (interception réseau, récupération des frappes de clavier, …) , il/elle ne peut donc rien tirer de cette information.
  • Le support du logiciel TOTP n’a pas besoin d’internet.
    L’accès entre ce logiciel implémenté par l’utilisateur et le serveur n’est nécessaire que pour la phase d’initialisation.
Les prémices de TOTP : HOTP

TOTP est une extension du protocole HOTP (HMAC-based One-Time Password).

HOTP requiert les paramètres suivants:

  • Une fonction de hachage (SHA1 initialement, les implémentations plus récentes proposent des algorithmes plus récents comme ceux de la famille SHA2).
  • Une clé secrète K, générée aléatoirement, qui sert de vecteur d’initialisation (concept cryptographique de graine, ou seed).
  • Une longueur pour la valeur du mot de passe généré (généralement 6 ou 8 caractères)
[Rappel]
Une fonction de hachage est une fonction cryptographique qui permet, à partir d’une donnée en entrée, de produire un résultat unique de taille fixe (empreinte ou hash), et qui, entre autre, sert à identifier la donnée d’entrée sans révéler sa valeur.
L’empreinte est complètement dépendante de la donnée en entrée, mais sa valeur est complètement indépendante (de sorte que la plus subtile modification de l’input produira une empreinte entièrement différente).
Il s’agit de la classe des fonctions à sens unique (One-Way Function), qui ont pour propriété qu’il est impossible de remonter à la donnée d’entrée en ne connaissant que le résultat (possible d’aller dans un sens, mais pas dans l’autre).

A l’initialisation, le service proposant ce mode d’authentification (le serveur typiquement) génère une clé secrète, et la transmet à l’utilisateur (via un QR code ou une chaîne de caractères aléatoire).
A partir de ce moment-là, plus aucun secret exploitable n’est transmis entre les 2 parties.

Le mot de passe est généré à partir de la clé secrète en « passant » celle-ci à travers cette fonction de hachage, puis en la compressant (tronquage selon certaines règles, non détaillé ici).

Un système de compteur est utilisé. A chaque utilisation du HOTP, le compteur est « mixé » avec la clé secrète, puis passé à travers cette fonction.
Ainsi, à chaque itération, on calcule le hash de clé secrète + compteur.
De par la nature des fonctions de hachage, le résultat est donc intégralement différent et imprévisible à chaque itération, rendant impossible la prise d’information concernant la valeur de la clé secrète.

Après chaque « utilisation » (chaque fois qu’un mot de passe HOTP est requis par le serveur, et fourni correctement par le client), le client et le serveur mettent ensuite à jour ce compteur simultanément, mais indépendamment (pas de synchronisation).

L’évolution : TOTP

L’inconvénient de HOTP est qu’il n’existe pas de moyen de s’assurer de la bonne synchronisation entre le client et le serveur, et à l’usage, un « décalage » de compteur peut apparaître selon les implémentations, ce qui peut amener à des blocages, pour lesquelles les remédiations sont très difficile à mettre en œuvre, ou peuvent compromettre la sécurité de l’authentification.

TOTP est très proche de HOTP, mais constitue un avancement en ce qu’il remplace simplement le compteur incrémenté par un autre facteur : l’heure.
Tous les processeurs, quel que soit leur support ou leur marque possèdent une horloge interne, et implémentent directement ou indirectement « l’heure Posix » (standard sur la gestion des horloges en informatique).

Figure 2 : Diagramme de fonctionnement de TOTP

Le partage initial de la clé secrète est donc similaire, cependant, au moment de l’authentification, le serveur va effectuer le calcul en « mixant » la clé secrète avec l’heure (on parle de « timestamp »), avec un découpage effectué selon une période définie (en général 30 secondes).

Le client de son côté, va donc effectuer le même calcul.
Le système d’horloge étant suffisamment perfectionné à l’échelle mondiale, toutes les horloges sont synchronisées avec un décalage raisonnable.

Dans la pratique et selon les paramétrages, le serveur accepte souvent le code de la période de 30 seconde précédente, afin d’éviter la lourdeur qu’entraîne une mise à jour du mot de passe pendant la saisie de l’utilisateur.

En terme d’utilisation, la personne souhaitant s’authentifier sur un site ou un service doit donc entrer d’abord son mot de passe : il s’agit du premier facteur d’authentification, qui se base sur ce que l’utilisateur connaît.
Dans un deuxième temps, il lui sera donc demandé de renseigner le code TOTP nécessaire, ce qui constitue le deuxième facteur, et prouve qu’il est en possession de l’appareil qu’il a rattaché.

Figure 3 : Interface de connexion avec TOTP activé sur le système de mail ProtonMail

Conclusion

TOTP fait donc partie des solutions viables et gratuites pour améliorer la sécurité de l’authentification utilisateur à travers l’ajout d’un facteur d’authentification supplémentaire et de nature différente.
Les mots de passe traditionnels étant extrêmement vulnérables (risque d’interception, faiblesse, réutilisation et prévisibilité des mots de passe utilisés, non-renouvellement, …), l’implémentation d’une solution de MFA/2FA est donc un gain considérable en terme de sécurité, et il y a fort à parier que ce type de mécanisme devienne extrêmement répandu, dans les contextes professionnels comme pour une utilisation personnelle pour se prémunir des usurpations d’identités et des vols de données toujours plus nombreux.

Des évolutions du protocole TOTP existent également, ainsi que d’autre protocoles de MFA, ajoutant d’autres garanties pour assurer une sécurité toujours plus étanche :

  • Signature cryptographique du code d’authentification
  • Gestion automatisée via un support physique (« token »)
  • Intégration de logiciels dédiées dans un contexte d’entreprise

Cependant, ces solutions ne sont majoritairement pas open source, et nécessitent souvent l’achat de licences coûteuses ou une intégration fastidieuse et complexe.

L’implémentation d’un mode d’authentification complémentaire au mot de passe exige naturellement une certaine adaptation, mais la diffusion d’un standard open-source et simple d’utilisation comme TOTP permet de relativiser grandement cet effort : gratuit, installation simple, pas besoin de connaissance particulière, pas de matériel spécifique à se procurer, etc…

De très nombreux standards open-source et gratuits tels que TOTP sont d’ors et déjà disponibles et accessibles publiquement, et s’inscrivent dans la logique de l’accès pour tous à une informatique sécurisée : coffre forts de mot de passe, pare-feu, scanners de malware, détecteurs de spams, …
Cela doit toutefois se faire grâce à la sensibilisation des utilisateurs, il est donc à souhaiter que ce panel de solutions devienne connu, et utilisé de tous, de même que les bonnes pratiques à respecter, et la connaissance des risques existants.