Un SMS OTP (One-Time Password) est un code de vérification à usage unique envoyé par SMS pour confirmer l'identité d'un utilisateur. Il est généré aléatoirement, valable quelques minutes seulement, et ne peut être utilisé qu'une seule fois. C'est le mécanisme d'authentification à deux facteurs (2FA) le plus répandu au monde : il est utilisé par les banques, les plateformes SaaS, les e-commerces et toutes les applications qui nécessitent de sécuriser une connexion, un paiement ou une inscription.
Qu'est-ce qu'un SMS OTP ?
OTP signifie One-Time Password, soit "mot de passe à usage unique" en français. C'est un code — généralement 4 à 6 chiffres — qui est généré aléatoirement par votre système, envoyé par SMS au numéro de téléphone de l'utilisateur, et qui expire automatiquement après une courte durée (généralement 3 à 10 minutes).
Le SMS OTP repose sur un principe simple : même si un attaquant connaît le mot de passe d'un utilisateur, il ne peut pas accéder au compte sans avoir physiquement accès à son téléphone mobile. C'est le deuxième facteur d'authentification — quelque chose que l'utilisateur possède (son téléphone), en plus de quelque chose qu'il connaît (son mot de passe).
En France et en Europe, le SMS OTP est obligatoire pour les paiements en ligne supérieurs à un certain seuil dans le cadre de la directive DSP2 (Authentification Forte du Client). Les banques, les néobanques et tous les acteurs du paiement en ligne l'utilisent quotidiennement pour valider les transactions sensibles.
Les principaux cas d'usage du SMS OTP
Le SMS OTP s'applique à tous les moments où vous devez vérifier qu'un utilisateur est bien la personne qu'il prétend être. Voici les cas d'usage les plus courants :
SMS OTP vs autres méthodes d'authentification 2FA
Le SMS OTP n'est pas la seule méthode d'authentification à deux facteurs. Voici une comparaison objective avec les alternatives les plus courantes :
| Méthode | Avantages | Limites |
|---|---|---|
| SMS OTP | Universel (tout téléphone) Pas d'app à installer Familier pour tous les utilisateurs | Vulnérable au SIM swapping Nécessite réseau mobile |
| Application TOTP (Google Auth…) | Plus sécurisé hors ligne Pas de coût d'envoi | Friction à l'installation Taux d'adoption plus faible |
| Email OTP | Pas de coût SMS Universel | Email peut être compromis Moins immédiat que le SMS |
| Clé physique (FIDO2) | Sécurité maximale Phishing-resistant | Coût matériel élevé Réservé aux usages enterprise |
| Notification push | Expérience fluide Pas de frappe de code | App dédiée obligatoire Dépend de la connectivité |
Dans la pratique, le SMS OTP reste la méthode privilégiée pour les applications grand public pour une raison simple : il fonctionne sur 100 % des téléphones mobiles, sans installation préalable, et les utilisateurs sont familiers avec le processus. Pour des contextes à très haute sécurité (accès administrateur, transactions à très grand montant), il peut être complété ou remplacé par une clé FIDO2.
Comment rédiger un bon SMS OTP ?
La rédaction d'un SMS OTP obéit à des règles précises. Un SMS OTP mal rédigé génère de la confusion, des appels au support, et peut même affaiblir la sécurité si l'utilisateur est incité à partager le code.
Votre code de vérification :
Ne communiquez jamais ce code à un tiers.
- 1Identifiez clairement votre marque en Sender ID. L'utilisateur doit savoir immédiatement de qui vient le message. Utilisez votre nom de marque court (ex : "MONAPP", "MABANQUE") plutôt qu'un numéro inconnu.
- 2Affichez le code de façon lisible. Séparez les chiffres en groupes de 3 (847 291 plutôt que 847291) pour faciliter la lecture et la saisie, surtout sur mobile.
- 3Précisez la durée de validité. Indiquez explicitement "Valable 5 minutes" ou "Expire dans X minutes". Sans cette information, les utilisateurs gardent le code et tentent de l'utiliser plus tard.
- 4Ajoutez la mention anti-phishing. "Ne communiquez jamais ce code à un tiers" est une protection essentielle contre les attaques d'ingénierie sociale où un fraudeur appelle l'utilisateur pour lui soutirer son code.
- 5Contextualisez l'action. "Votre code pour valider votre paiement de 149€" est plus rassurant que "Votre code de vérification". L'utilisateur sait pourquoi il reçoit ce code.
- 6Pas de mention STOP. Les SMS OTP sont transactionnels — ils ne nécessitent pas de mention STOP car ils font partie de l'exécution du service souscrit par l'utilisateur.
Sécurité du SMS OTP : bonnes pratiques techniques
Du côté de votre backend, la génération et la validation des codes OTP doivent suivre des règles strictes pour garantir leur efficacité.
Génération du code
Envoi via l'API Conexteo
Limitez les tentatives : bloquez le compte après 3 à 5 essais incorrects consécutifs pour empêcher le brute force. Invalidez le code après usage : un code utilisé avec succès doit être immédiatement marqué comme consommé dans votre base. Durée de validité courte : 5 minutes maximum, idéalement 3 minutes pour les opérations sensibles. Un code par session : si l'utilisateur redemande un code, invalidez l'ancien avant d'en générer un nouveau.
Stockage sécurisé du code
Ne stockez jamais un code OTP en clair dans votre base de données. Stockez son hash (SHA-256 ou bcrypt) avec la date d'expiration et un flag "utilisé". Si votre base est compromise, les codes hachés ne peuvent pas être réutilisés.
Pourquoi le SMS surpasse l'email pour les OTP ?
Une question revient souvent : pourquoi utiliser un SMS OTP plutôt qu'un code envoyé par email ? La réponse tient en trois points :
La vitesse. Un SMS OTP est délivré en moins de 3 secondes sur une route prioritaire. Un email peut prendre 30 secondes à plusieurs minutes, et peut tomber en spam. Pour une expérience utilisateur fluide sur une page de connexion, chaque seconde compte.
La séparation des canaux. Si un attaquant a compromis l'email d'un utilisateur, il peut intercepter un OTP envoyé par email. Le SMS utilise un canal différent (le réseau téléphonique), ce qui oblige l'attaquant à avoir également accès au téléphone physique de la victime.
Le taux de lecture. Les SMS ont un taux d'ouverture de 98 % dans les 3 minutes suivant la réception. Un email de sécurité peut rester non ouvert, surtout s'il est filtré dans un dossier "promotions" ou "spam".
Pour les opérations critiques (paiements, modification de données sensibles), utilisez systématiquement le SMS OTP comme canal prioritaire, et l'email uniquement comme fallback si le numéro de téléphone n'est pas disponible. Sur la plateforme Conexteo, la route SMS transactionnel prioritaire garantit une délivrabilité de 99,5 % en moins de 3 secondes.
Les limites du SMS OTP et comment les mitiger
Soyons honnêtes : le SMS OTP n'est pas parfait. Il présente deux vulnérabilités connues qu'il faut connaître pour les anticiper.
Le SIM swapping
Une attaque de SIM swapping consiste pour un fraudeur à convaincre un opérateur téléphonique de transférer le numéro de téléphone de la victime sur une nouvelle SIM qu'il contrôle. Il peut alors recevoir tous les SMS OTP destinés à cette personne. Cette attaque est rare (elle nécessite de l'ingénierie sociale poussée) mais existe, notamment pour cibler des comptes à très forte valeur (comptes crypto, dirigeants d'entreprise).
Comment mitiger : pour les comptes à très haute valeur, complétez le SMS OTP par une vérification d'identité supplémentaire (question de sécurité, biométrie) ou passez à FIDO2 pour les administrateurs. Pour la très grande majorité des usages, le SMS OTP reste suffisant.
Le SS7 interception
Les attaques SS7 exploitent des vulnérabilités dans le protocole historique des réseaux téléphoniques pour intercepter des SMS en transit. Ces attaques sont très techniques, nécessitent un accès à des équipements de réseau, et sont quasi exclusivement réservées à des acteurs étatiques ou à des groupes criminels très organisés.
Si vous protégez des accès administrateur, des transactions supérieures à plusieurs dizaines de milliers d'euros, ou des données de santé sensibles, envisagez de combiner le SMS OTP avec une application TOTP (Google Authenticator, Authy) ou une clé physique FIDO2 pour une sécurité maximale.
Questions fréquentes sur le SMS OTP
La recommandation standard est de 5 minutes pour la majorité des usages (connexion, inscription, réinitialisation de mot de passe). Pour les transactions financières très sensibles, réduisez à 3 minutes. La durée doit être clairement indiquée dans le SMS pour éviter la frustration des utilisateurs qui saisissent un code expiré.
Le standard est de 6 chiffres, qui offre 1 million de combinaisons possibles. Certaines applications utilisent 4 chiffres pour simplifier la saisie (10 000 combinaisons), mais c'est moins sécurisé et plus vulnérable au brute force si le nombre de tentatives n'est pas limité. 8 chiffres est utilisé pour les opérations très sensibles. Ne jamais utiliser des lettres — elles sont sources de confusion (0 vs O, 1 vs I).
Non. Le SMS OTP est un SMS transactionnel déclenché par une action de l'utilisateur (connexion, paiement, inscription). Il fait partie de l'exécution du service souscrit et ne nécessite pas d'opt-in marketing préalable. Il peut également être envoyé à toute heure, y compris la nuit, contrairement aux SMS marketing soumis aux restrictions horaires légales.
Les deux termes désignent le même concept avec une nuance. Le SMS OTP désigne le code lui-même (One-Time Password). Le SMS 2FA (Two-Factor Authentication) désigne le mécanisme global d'authentification à deux facteurs qui utilise un SMS OTP comme deuxième facteur. Dans la pratique, les deux expressions sont utilisées de façon interchangeable.
Plusieurs bonnes pratiques permettent de réduire les coûts sans nuire à la sécurité : vérifiez les numéros à l'inscription (HLR lookup) pour ne pas envoyer vers des numéros invalides ; implémentez un rate limiting pour éviter qu'un utilisateur ou un bot ne déclenche des centaines d'envois ; et utilisez le cache — si un utilisateur redemande un code dans les 30 secondes, renvoyez le même code plutôt que d'en générer un nouveau.
Intégrez le SMS OTP à votre application
Route prioritaire dédiée, délivrabilité 99,5 %, latence inférieure à 3 secondes, API documentée. Testez gratuitement avec vos premiers envois.