Verify

Que signifie OTP ? Les mots de passe à usage unique expliqués

OTP signifie mot de passe à usage unique (parfois code de vérification à usage unique). C'est un code court, généralement de quatre à huit chiffres, valable pour une seule connexion ou une seule transaction, puis qui expire. Comme chaque code ne fonctionne qu'une fois et pendant une courte fenêtre, un code divulgué après utilisation n'a aucune valeur pour un attaquant. Ce caractère jetable est la raison même pour laquelle les OTP existent.

Vous en avez presque certainement déjà saisi un : les six chiffres qu'une banque vous envoie par SMS avant un virement, le code qu'une application d'authentification affiche quand vous vous connectez, le numéro qu'un site web vous envoie par e-mail pour confirmer que c'est bien vous. Ce sont tous des OTP, qui diffèrent principalement par la façon dont le code est généré et dont il vous parvient.

Comment fonctionne un OTP ?

Le service et l'utilisateur ont besoin d'un moyen de s'accorder sur le code valide à un instant donné, sans faire circuler le mot de passe lui-même de manière prévisible. Il existe deux méthodes standard, et la différence réside dans ce qui fait changer le code.

  • HOTP (mot de passe à usage unique basé sur un HMAC). Le code est dérivé d'un secret partagé et d'un compteur. Le jeton de l'utilisateur incrémente un compteur lorsqu'il génère un code. Le vérificateur du service incrémente son état correspondant après avoir accepté le code attendu. Un code HOTP n'expire pas uniquement parce que le temps passe.
  • TOTP (mot de passe à usage unique basé sur le temps). Le code est dérivé d'un secret partagé et de l'heure actuelle, arrondie à une fenêtre (généralement 30 secondes). Le code change de lui-même au fil du temps, que quelqu'un l'ait utilisé ou non. C'est ce que les applications d'authentification génèrent.

TOTP est le plus courant des deux, car l'expiration automatique limite la durée pendant laquelle un code volé reste exploitable. HOTP apparaît encore dans les jetons matériels et dans les flux où une horloge synchronisée est difficile à garantir.

Comment un OTP est-il délivré ?

La méthode de génération et le canal de livraison sont deux choix distincts. Un code peut être calculé sur l'appareil de l'utilisateur ou généré sur le serveur et envoyé à l'utilisateur.

  • SMS. Le serveur génère un code et l'envoie par SMS au numéro de téléphone de l'utilisateur. Portée universelle, aucune application requise. C'est aussi le canal le plus interceptable, via un échange de carte SIM ou des attaques réseau.
  • E-mail. Le code arrive dans la boîte de réception de l'utilisateur. Pratique et sans application, mais seulement aussi sûr que le compte e-mail lui-même.
  • Appel vocal. Un appel automatisé lit le code à voix haute, ce qui aide les utilisateurs qui ne peuvent pas recevoir de SMS ou qui ont besoin d'une option accessible.
  • Application d'authentification. Le code est calculé localement avec TOTP. Rien n'est envoyé sur le réseau, il n'y a donc rien en transit à intercepter.

Chaque canal échange la portée contre la difficulté d'attaque. SMS et l'e-mail atteignent presque tout le monde ; les codes générés par une application sont plus difficiles à voler, mais nécessitent que l'utilisateur ait préalablement configuré une application.

Où les OTP sont-ils utilisés ?

L'usage le plus courant est comme second facteur dans l'authentification à deux facteurs, où le OTP prouve la possession d'un téléphone ou d'un appareil en plus d'un mot de passe. Mais les OTP interviennent bien au-delà de la connexion.

  • Vérification de connexion : confirmer une connexion, surtout depuis un nouvel appareil ou un nouvel emplacement.
  • Confirmation de transaction : approuver un paiement, un virement ou une modification des coordonnées de versement.
  • Récupération de compte : confirmer le contrôle d'un numéro de téléphone ou d'un e-mail avant de réinitialiser un mot de passe.
  • Vérifications renforcées : demander un nouveau code avant une action sensible, même en cours de session.

Si vous vous demandez si un OTP rend une connexion véritablement "two-factor", cela dépend du reste du flux. La distinction est abordée dans authentification à deux facteurs vs. vérification en deux étapes.

Considérations de sécurité et bonnes pratiques

Les OTP sont simples, et c'est précisément pour cela que les détails comptent. Quelques bonnes habitudes les maintiennent efficaces.

  • Expiration courte. Limitez strictement la durée des codes. Quelques minutes pour SMS et l'e-mail, la fenêtre standard de 30 secondes pour TOTP. Plus la fenêtre est courte, plus la probabilité de réutilisation d'un code diminue.
  • Limitation du débit. Plafonnez à la fois le nombre de codes qu'un utilisateur peut demander et le nombre de tentatives qu'il peut effectuer. Un code à six chiffres a un million de possibilités, qu'un attaquant sans limitation peut tester par force brute ; quelques tentatives par code ferment cette porte.
  • Usage unique, imposé côté serveur. Invalidez un code dès qu'il est accepté, ainsi qu'après trop d'échecs. Ne comptez pas sur le client pour empêcher la réutilisation.
  • Ne journalisez jamais le code. Gardez les OTP hors des journaux applicatifs, des outils d'analyse et des rapports d'erreur. Un code présent dans un fichier de journalisation est un code qu'un initié ou une fuite de journaux peut lire.
  • Liez le code au contexte. Associez un code à l'utilisateur et à l'action spécifiques pour lesquels il a été émis, de sorte qu'un code destiné à un usage ne puisse pas être rejoué pour un autre.

Un aparté sur le hameçonnage : un utilisateur peut être piégé et amener à communiquer un SMS ou un code d'application à un attaquant sur un faux site. Les OTP ne sont donc pas à l'épreuve du hameçonnage comme le sont les clés matérielles. Ils bloquent néanmoins l'attaque bien plus courante : quelqu'un qui se connecte uniquement avec un mot de passe volé.

Envoi et vérification des OTP

Vous pouvez gérer un flux OTP vous-même : générez un code, stockez-le avec une expiration, envoyez-le et vérifiez la saisie de l'utilisateur dans la fenêtre impartie. Si vous souhaitez que la livraison et la vérification soient prises en charge pour vous (y compris la limitation du débit et l'expiration), le produit Verifications de Bird envoie et valide des codes par SMS, voix et e-mail. Si vous n'avez besoin que du transport et souhaitez gérer vous-même la logique de vérification, le produit SMS couvre la livraison de codes vers les téléphones.

FAQ

Quelle est la différence entre HOTP et TOTP ?

HOTP incrémente le compteur du jeton de l'utilisateur lorsqu'il génère un code. Le vérificateur du service incrémente son état après avoir accepté le code attendu. TOTP dérive son code de l'heure actuelle, il change donc selon un calendrier fixe (généralement toutes les 30 secondes). TOTP est plus courant, car l'expiration automatique limite l'utilité d'un code volé.

Les OTP par SMS sont-ils sûrs ?

Ils sont suffisamment sûrs pour la plupart des comptes et bloquent la majorité des attaques par mot de passe seul, mais les SMS peuvent être interceptés par fraude à l'échange de carte SIM ou par des attaques réseau. Pour les comptes à haute valeur, préférez une application d'authentification ou une clé matérielle.

Combien de temps un OTP doit-il rester valide ?

Assez longtemps pour que l'utilisateur le lise et le saisisse, pas plus. Quelques minutes pour SMS ou l'e-mail, et la fenêtre standard de 30 secondes pour TOTP. Des fenêtres plus courtes réduisent la probabilité qu'un code divulgué soit encore utilisable.

Le même OTP peut-il être utilisé deux fois ?

Non. Un système correctement implémenté invalide un code dès qu'il est accepté, ainsi qu'après trop de tentatives échouées. Imposez l'usage unique côté serveur, jamais côté client.

Les mots de passe à usage unique sont un concept simple qui pèse lourd dans la sécurité des comptes. Pour voir comment ils s'intègrent dans une défense de connexion complète, lisez ce qu'est l'authentification à deux facteurs, ou découvrez comment Bird génère, délivre et vérifie les codes dans le produit Verifications.

Développez sur le même réseau.

Une clé API de test est disponible immédiatement. La production est activée dès que vous ajoutez un moyen de paiement et vérifiez un expéditeur.

Votre prochaine idée.
Prête à se connecter.