Une application d'authentification peut produire un code sans recevoir de message. Un code de vérification envoyé par SMS arrive via un canal de livraison, ce qui change la configuration et la gestion des erreurs.
Que signifie chaque terme ?
OTP décrit un code accepté une seule fois. HOTP et TOTP décrivent des algorithmes pour générer ce code.
| Terme | Ce qui fournit le code | Ce dont l'utilisateur a besoin |
|---|---|---|
| OTP | La catégorie générale, indépendante de la méthode de génération | Dépend de la méthode choisie |
| HOTP | Un secret partagé et un compteur incrémenté | Un jeton ou une application enrôlé(e) |
| TOTP | Un secret partagé et l'intervalle de temps courant | Un authentificateur enrôlé avec une horloge fiable |
RFC 4226 définit le secret partagé et le compteur de HOTP. RFC 6238 utilise le temps à la place de ce compteur pour TOTP.
L'authentificateur et le vérificateur ont besoin du même secret pour calculer des codes identiques. Protégez ce secret lors de l'enrôlement et du stockage, car le posséder suffit à générer des codes.
Comment HOTP change-t-il son code ?
Le jeton incrémente un compteur lorsqu'il génère un code. Le vérificateur met à jour son état correspondant après avoir accepté le code attendu.
Un code HOTP n'expire pas simplement parce que le temps passe. Générer des codes sans les soumettre peut faire avancer le jeton au-delà du vérificateur.
Fournissez la resynchronisation du compteur exigée par la spécification de HOTP. Bornez la recherche de valeurs de compteur ultérieures, car accepter plus de candidats augmente les possibilités de deviner le code.
Limitez les tentatives d'authentification échouées pendant ce processus. La resynchronisation ne doit pas devenir une voie vers des tentatives illimitées.
Comment TOTP change-t-il son code ?
TOTP génère un code à partir du secret partagé et de l'intervalle de temps courant, même si personne ne demande un nouveau code.
La RFC 6238 recommande un pas de temps de 30 secondes. Le code affiché change lorsque l'horloge franchit l'intervalle suivant.
Un code saisi près de la fin d'un intervalle peut atteindre le vérificateur pendant l'intervalle suivant. Autorisez un délai borné pour que le rythme normal de saisie ne provoque pas d'échecs inutiles.
La RFC recommande au plus un pas pour le délai réseau. Cette recommandation concerne le délai de transmission ; ce n'est pas une limite universelle sur toute resynchronisation d'horloge.
Maintenez les horloges de l'appareil et du serveur alignées. Une fenêtre d'acceptation large tolère plus de dérive. Elle accepte aussi plus de codes candidats.
Refusez un code déjà accepté même à l'intérieur de son intervalle de temps. Le changement ultérieur de l'horloge ne garantit pas à lui seul l'usage unique.
Un code de vérification envoyé par Bird est-il un TOTP ?
Non. Bird Verify génère un code de vérification aléatoire et le transmet via le canal sélectionné.
Le destinataire n'enrôle pas de secret d'authentificateur partagé pour recevoir ce code. Sa validité dépend de l'expiration et de la politique de tentatives de la vérification, et non du compteur ou de l'intervalle de temps d'un authentificateur.
Choisissez la longueur du code, l'expiration et la limite de tentatives pour le flux de vérification. Mesurez les délais de livraison et de complétion lorsque les destinataires signalent des retards.
HOTP et TOTP génèrent les codes localement après l'enrôlement et n'attendent donc pas de message à la connexion. Leur récupération doit en revanche prévoir la perte d'un authentificateur ou d'un secret partagé.
Quelle méthode choisir ?
- Utilisez un code de vérification envoyé lorsque le flux doit vérifier l'accès à un numéro ou une adresse joignable.
- Utilisez TOTP lorsque les utilisateurs peuvent enrôler et conserver un authentificateur avec une horloge fiable.
- Utilisez HOTP lorsque le jeton ne peut pas se fier au temps et que vous pouvez maintenir la synchronisation du compteur.
- Pour chaque méthode, limitez les tentatives, imposez l'usage unique et définissez la récupération de compte avant le lancement.
En bref
OTP est la catégorie.
HOTP et TOTP sont des méthodes pour générer des codes à usage unique. Un serveur peut aussi générer et envoyer un code de vérification aléatoire.
HOTP suit un compteur.
Générer des codes sans les utiliser peut faire avancer l'appareil au-delà du vérificateur. Prévoyez un mécanisme borné pour les resynchroniser.
TOTP suit l'horloge.
Le pas de temps recommandé est de 30 secondes. Tenez compte du délai de saisie sans élargir inutilement la fenêtre d'acceptation.
Choisissez le modèle d'enrôlement et de récupération.
Les codes d'authentificateur nécessitent un secret partagé au préalable. Les codes envoyés nécessitent un canal de livraison fonctionnel.