HOTP et TOTP : quelle est la différence ?
HOTP et TOTP sont les deux principaux protocoles permettant de créer des mots de passe utilisables une seule fois, mais quelles sont leurs implications du point de vue de la sécurité, et lequel choisir ?
Avec HOTP comme avec TOTP, le token (le générateur d'OTP) crée un code numérique, généralement à 6 ou 8 chiffres. La sécurité offerte par l'OTP se base sur le changement permanent des codes et sur leur usage unique, d'où le nom d'OTP.
HOTP : Mot de passe à usage unique basé sur les événements
L'OTP basé sur les événements (également appelé HOT, signifiant Mot de passe à usage unique basé HMAC) est l'algorithme original utilisé pour le mot de passe à usage unique et créé à partir de deux informations. La première est la clé secrète, la "graine", qui est connue uniquement du jeton et du serveur qui valide les codes OTP soumis. La seconde information est le facteur de changement qui, pour un OTP basé sur les événements, est un compteur. Ce compteur est stocké dans le jeton et sur le serveur. Le compteur du jeton s'incrémente lorsqu'on appuie sur le bouton du jeton, tandis que le compteur du serveur s'incrémente uniquement lorsqu'un OTP est correctement validé.
Pour calculer un OTP, le jeton introduit le compteur dans l'algorithme HMAC en prenant la graine du jeton comme clé. Le protocole HOTP utilise la fonction de hâchage SHA-1 dans le HMAC. Cette opération crée une valeur à 160 bits qui est ensuite réduite au nombre à 6 (ou 8) décimales affiché par le jeton.
TOTP : Mot de passe à usage unique basé sur le temps
OTP basé sur le temps (abrégé : TOTP) est basé sur HOTP mais le facteur de changement est le temps au lieu d'un compteur. TOTP utilise le temps de manière incrémentale ; ces périodes s'appellent des intervalles de temps, qui sont habituellement de 30 à 60 secondes. Cela veut dire que chaque OTP est valide pendant la durée de l'intervalle de temps.
Comparaison
Les deux protocoles OTP offrent des codes à usage unique mais il diffère essentiellement par le fait qu'avec HOTP, un OTP donné est valide jusqu'à son utilisation ou jusqu'à l'utilisation de l'OTP suivant. HOTP génère plusieurs codes "OTP suivant" valide parce que le bouton du jeton peut être activé plusieurs fois, ce qui incrémente le compteur du jeton sans que l'OTP créé soit envoyé au serveur de validation. Pour cette raison, les serveurs de validation HOTP acceptent une série d'OTP. Pour être plus précis, ils accepteront un OTP généré par un compteur et qui se situe dans une plage déterminée d'incréments après la valeur de compteur précédente stockée sur le serveur. Cette plage s'appelle la fenêtre de validation. Si le compteur du jeton se trouve hors de la plage autorisée par le serveur, la validation échoue et le jeton doit être resynchronisé.
Ainsi, avec HOTP, il faut clairement faire un compromis. Plus la fenêtre de validation est large, moins il y aura de chance de devoir resynchroniser le jeton avec le serveur, ce qui n'est pas pratique pour l'utilisateur. Mais élément plus important, plus la fenêtre est large, plus il y aura de chance qu'une attaque par force brute devine l'un des OTP acceptés.
Par contre, avec TOTP, il n'existe qu'un seul OTP valide à un quelconque moment - celui généré par l'heure UNIX courante.
Choix
D'un point de vue purement sécuritaire, le choix entre HOTP et TOTP penche clairement pour TOTP. Il est important de noter que le serveur de validation doit pouvoir gérer les dérives temporelles potentielles avec les jetons TOTP afin de minimiser les conséquences sur les utilisateurs.
Les jetons TOTP offrent également un plus grand choix de facteurs de forme. La taille des jetons OTP des porte-clés traditionnels diminue et Microcosm a introduit la carte OTP - jeton OTP de la taille d'une carte de crédit avec affichage EPD. Les cartes peuvent être une option plus pratique car il est possible de les ranger avec d'autres cartes dans un portefeuille ou un étui, ou les mettre à l'arrière d'une coque de téléphone portable.
Les protocoles HOTP et TOTP sont produits par OATH, l'Initiative pour l'authentification ouverte. Tous les jetons OTP de Microcosm sont compatibles avec OATH.