HOTP : comprendre le mécanisme derrière les codes de sécurité à usage unique
Vous utilisez probablement des codes à 6 chiffres pour vous connecter à votre banque ou à votre messagerie professionnelle.
Derrière cette simple série de chiffres se cache souvent le mot de passe à usage unique basé sur HMAC (HOTP), un algorithme fondamental de l'authentification forte. Pourtant, sa différence avec le TOTP, plus répandu, reste floue pour beaucoup.
Qu'est-ce qui distingue vraiment ces deux technologies? Comment fonctionne le HOTP dans le détail, et dans quels cas est-il toujours pertinent face aux solutions basées sur le temps ? Cet article démystifie le HOTP, de sa mécanique technique à ses applications pratiques, pour vous permettre de faire des choix de sécurité éclairés.
1-Qu'est-ce que le HOTP ? Définition et principe de base
Le HOTP est un algorithme standardisé (RFC 4226) qui génère des mots de passe à usage unique basés sur un secret partagé et un compteur. À chaque authentification réussie, le compteur s'incrémente, rendant le code précédent inutilisable. Cette approche "event-based" (basée sur les événements) diffère fondamentalement des OTP basés sur le temps comme le TOTP.

2-Le fonctionnement technique du HOTP en détail
Le processus de génération d'un code HOTP suit un algorithme précis :
Secret partagé : Une clé secrète connue du serveur et du client
Compteur (C) : Une valeur qui s'incrémente à chaque utilisation
Fonction HMAC : Application de HMAC-SHA-1 au compteur avec le secret
Truncation : Réduction du résultat HMAC à 6-8 chiffres
Vérification : Le serveur calcule le même code et compare
3-HOTP vs TOTP : La comparaison décisive
Pour choisir entre HOTP et TOTP, il faut comprendre leurs mécanismes fondamentaux et les contraintes de chaque environnement. Le tableau suivant résume leurs différences techniques et, surtout, vous indique quel algorithme privilégier selon votre situation :
Critère | HOTP | TOTP | Quand utiliser lequel ? |
Principe de base | Compteur d'événements qui s'incrémente à chaque utilisation. | Timestamp basé sur l'heure système (généralement par intervalles de 30s). | HOTP : Lorsque l'appareil n'a pas d'horloge fiable ou pour des actions événementielles. TOTP : Pour les appareils avec une horloge précise (smartphones). |
Synchronisation | Nécessite la synchronisation du compteur entre le client et le serveur. | Basée sur la synchronisation de l'heure (via NTP généralement). | HOTP : Environnements où le temps réseau n'est pas disponible ou fiable. TOTP : Environnements connectés avec une heure synchronisée. |
Fenêtre de validité | Jusqu'à l'utilisation suivante (pas d'expiration temporelle). | Très courte : 30 à 60 secondes (expire automatiquement). | HOTP : Quand on veut que le code reste valide jusqu'à son utilisation (ex. tokens bancaires). TOTP : Pour une sécurité renforcée avec expiration automatique. |
Résistance au décalage | Excellente : aucune dérive temporelle possible. | Sensible aux décalages d'heure entre le client et le serveur. | HOTP : Privilégié dans les environnements où la gestion de l'heure est problématique. TOTP : Convient aux systèmes où l'heure est gérée de manière centralisée. |
Applications typiques | Tokens matériels (YubiKey, RSA SecurID) • Environnements hors ligne • Systèmes bancaires • Badges d'accès physique | Applications mobiles (Google Authenticator) • 2FA pour services en ligne (Google, GitHub) • Tout service SaaS moderne | Utilisez HOTP pour : Tokens matériels, zones sécurisées sans réseau, systèmes embarqués. Utilisez TOTP pour : Applications grand public sur smartphone, services cloud, simplicité de déploiement. |
4-Sécurité du HOTP : avantages et limites
Avantages :
Résistant aux attaques par rejeu (chaque code unique)
Pas de problématique de synchronisation temporelle
Fonctionne en environnement déconnecté
Limites et vulnérabilités connues :
Risque de désynchronisation du compteur
Vulnérabilité aux attaques par brute-force si la fenêtre de validation est trop large
Moins adapté aux applications mobiles grand public que TOTP
5-Comment implémenter HOTP ? Les bonnes pratiques
Pour une implémentation sécurisée de HOTP :
Génération sécurisée du secret : Utiliser une vraie source d'entropie
Gestion du compteur : Sauvegarde régulière et mécanisme de resynchronisation
Fenêtre de validation : Autoriser quelques codes en avance pour compenser les appuis accidentels
Protection contre le brute-force : Limiter les tentatives et implémenter des timeouts
6-Conclusion
Le HOTP représente une pierre angulaire de l'authentification forte, particulièrement adaptée aux environnements contrôlés et aux tokens matériels.
Bien que le TOTP soit aujourd'hui plus populaire pour les applications grand public, le HOTP conserve des avantages uniques dans des contextes spécifiques. Comprendre leurs différences fondamentales permet de faire le choix technologique optimal pour chaque situation de sécurité.
Quelle est la différence principale entre HOTP et TOTP ?
HOTP est basé sur un compteur qui s'incrémente à chaque utilisation, tandis que TOTP est basé sur l'heure actuelle. HOTP n'expire pas tant qu'il n'est pas utilisé, TOTP expire après 30-60 secondes.
Le HOTP est-il toujours sécurisé ?
Oui, HOTP reste sécurisé pour ses cas d'usage appropriés. Sa sécurité dépend principalement de la robustesse du secret partagé et de la gestion correcte du compteur.
Pourquoi utiliser HOTP plutôt que TOTP ?
Utilisez HOTP quand :
• L'appareil n'a pas d'horloge fiable
• L'environnement est souvent déconnecté
• Vous utilisez des tokens matériels spécifiques
Quelle est la longueur standard d'un code HOTP ?
Les codes HOTP font généralement 6 chiffres, mais la RFC 4226 permet de 6 à 8 chiffres selon le niveau de sécurité souhaité.
Que se passe-t-il si le compteur HOTP se désynchronise ?
La RFC prévoit un mécanisme de resynchronisation : le serveur accepte quelques codes en avance (fenêtre de look-ahead) pour recaler le compteur.