Français
  • sans mot de passe
  • mot de passe à usage unique
  • otp
  • otp basé sur le temps
  • otp basé sur le hachage

Comment fonctionne le mot de passe à usage unique (OTP) ?

Dans cet article, nous allons introduire deux méthodes différentes de mot de passe à usage unique : email/téléphone + code de vérification et code dynamique.

Darcy Ye
Darcy Ye
Developer

À mesure qu'Internet a évolué, nous avons utilisé une large gamme de services en ligne pour répondre à presque tous nos besoins. La première étape de l'utilisation de ces services est souvent l'inscription et la connexion. En ce qui concerne l'inscription et la connexion, l'authentification par identifiant et mot de passe utilisateur est encore largement utilisée, même si plus de trois décennies se sont écoulées depuis l'époque où l'on utilisait des ordinateurs de bureau autonomes qui ne pouvaient pas se connecter à Internet.

Dans le passé, nous devions peut-être seulement nous souvenir du mot de passe de notre compte email, mais maintenant nous utilisons souvent des dizaines ou même des centaines de services en ligne, et nous ne pouvons pas utiliser le même mot de passe pour tous (si le mot de passe d'un compte est compromis, tous les comptes utilisant le même mot de passe seront en danger). En conséquence, la connexion sans mot de passe devient de plus en plus populaire et devient progressivement l'approche dominante.

Il existe de nombreuses méthodes différentes pour l'authentification sans mot de passe, y compris, mais sans s'y limiter, la connexion sociale, l'email/téléphone + code de vérification, et l'utilisation d'applications d'authentification avec des mots de passe dynamiques. Ces deux dernières méthodes peuvent être classées comme des mots de passe à usage unique (OTPs).

Qu'est-ce qu'un mot de passe à usage unique (OTP) ?

Un OTP est une séquence de caractères générée automatiquement et valable pour une seule session de connexion ou une courte période de temps. Comme un OTP ne peut être utilisé qu'une seule fois, il peut prévenir le risque de fuite des informations d'identification, comme un mot de passe perdu ou volé.

En théorie, un OTP peut être une chaîne de caractères aléatoire d'une certaine longueur, y compris des lettres majuscules et minuscules, et même des symboles spéciaux. Mais pour le confort de l'utilisateur, la plupart des services utilisent des chiffres purs lors de l'utilisation des OTP.

Email / téléphone + code de vérification

De nombreux sites Web vous demandent de vérifier votre identité en envoyant un code de vérification (ou mot de passe) à l'email ou au numéro de téléphone que vous avez enregistré.

Imaginez que Jack et Joe jouent à un jeu de devinettes, où Jack pense à un nombre entre 0 et 999, et donne à Joe trois chances de deviner le nombre en moins d'une minute. À part connaître la plage du nombre, Joe n'a aucune autre information.

Nous savons tous qu'il est presque impossible pour Joe de deviner le nombre correctement en une minute en utilisant seulement trois tentatives.

L'email / téléphone + code de vérification fonctionne sur le même principe : le code de vérification est généralement valable pour une très courte période, généralement pas plus de 10 minutes (semblable à Jack donnant à Joe "une minute" pour deviner le nombre). De plus, l'API ou la méthode de vérification du code de vérification a généralement une limite de débit pour prévenir les attaques par force brute sur le mot de passe (comme Jack donnant seulement "trois chances" à Joe).

Pour les attaquants potentiels, il est presque impossible de cracker cette méthode. Cependant, le système communique le code de vérification à l'utilisateur à travers un canal de confiance (email ou téléphone), permettant ainsi l'utilisateur de le vérifier directement.

Code dynamique

Le code dynamique, également connu sous le nom de OTP basé sur le temps (TOTP), est "dynamique" dans le sens où il change au fil du temps. Généralement, si une application Web utilise le TOTP, elle suivra RFC6238 - TOTP : Algorithme de mot de passe à usage unique basé sur le temps.

Mot de passe à usage unique basé sur le hachage

Avant de présenter le TOTP, nous devons expliquer brièvement RFC4226 - HOTP : Algorithme de mot de passe à usage unique basé sur HMAC (HMAC est un algorithme de hachage). L'algorithme HOTP fonctionne comme suit :

  1. Clé secrète : HOTP nécessite une clé secrète partagée K, qui est la même entre le serveur et le client.

  2. Compteur : Le cœur de HOTP est un compteur C, qui est incrémenté à chaque fois qu'un nouveau mot de passe est généré.

  3. Calcul HMAC :

    • Utilisez HMAC-SHA-1 (ou d'autres fonctions de hachage) pour calculer le code d'authentification :

      calcule de hmac
    • Ici, H est une valeur de hash de 160 bits.

  4. Troncation : Extrait une partie de la valeur de hash H pour générer l'OTP. Supposons que nous souhaitions un OTP de 6 chiffres, le processus est le suivant :

    • Extraire le dernier octet de H comme décalage de troncation O.
    • Extraire les 4 octets à partir de O, les convertir en un entier T.
    • Prendre les derniers d chiffres de T, c'est-à-dire OTP = T mod 10^d.

En résumé, la formule HOTP est :

calculation otp basé sur hash

où d est la longueur OTP souhaitée (habituellement 6-8 chiffres).

Mot de passe à usage unique basé sur le temps

TOTP est une extension de HOTP, où le compteur est remplacé par une étape de temps. Il utilise l'heure actuelle pour générer un code de vérification dynamique, donc l'OTP expirera automatiquement après un certain temps. Le principe de fonctionnement est le suivant :

  1. Étape de temps : TOTP utilise l'heure actuelle T au lieu du compteur HOTP C. L'étape de temps est un intervalle de temps fixe prédéfini (généralement 30 secondes).

    • Par exemple, en supposant que l'étape de temps soit de 30 secondes, et que l'horodatage Unix actuel soit T. Le compteur TOTP est calculé comme suit : T' = T / time_step
    • Où T′ est le compteur d'étape de temps, en unités de 30 secondes.
  2. Génération OTP : Substituer T′ dans l'algorithme HOTP pour générer l'OTP :

    génération totp
  3. Mise à jour dynamique : Comme TOTP est basé sur l'étape de temps, l'OTP change au fil du temps, donc le serveur peut vérifier sa validité tant que l'OTP est dans la fenêtre de temps valide.

En résumé, la formule TOTP est :

calcul de totp

D'après notre expérience de l'utilisation des applications d'authentification, nous pouvons synchroniser la valeur secrète entre l'appareil et le serveur en scannant un code QR ou en copiant et collant directement, puis nous devons entrer le code dynamique actuel une fois pour nous assurer que la valeur secrète est la même.

Dans les premiers jours de l'utilisation des appareils mobiles, nous pouvions constater que l'heure sur différents appareils n'était pas la même, et nous devions ajuster manuellement l'heure sur les appareils périodiquement. Ces dernières années, presque tous les appareils utilisent le service de temps réseau (NTP) pour synchroniser et mettre à jour régulièrement l'heure de l'appareil. Même si l'horloge de l'appareil n'est pas entièrement précise, les mises à jour fréquentes peuvent assurer que l'heure est raisonnablement cohérente sur différents appareils. Sur cette hypothèse, le code dynamique peut toujours être utilisé même si l'appareil est hors ligne, alors qu'il serait difficile de recevoir un code de vérification dans un état hors ligne.

Notes de clôture

Dans cet article, nous avons introduit deux méthodes différentes de mot de passe à usage unique : email/téléphone + code de vérification et code dynamique.

L'email/téléphone + code de vérification repose sur les infrastructures de communication et les services de messagerie ou de SMS tiers pour être mis en œuvre ; le code dynamique ne dépend pas des services et infrastructures de communication externes, et peut être utilisé hors ligne.

Logto, en tant que service IAM (Identity and Access Management) populaire, puissant et hautement extensible, prend en charge les deux méthodes OTP, permettant aux utilisateurs de choisir la solution qui répond le mieux à leurs besoins d'un point de vue commercial.