TOTP (algorithme de mot de passe à usage unique basé sur le temps)

Avec la montée des menaces de cybersécurité, il devient de plus en plus impératif pour les développeurs de mettre à jour les normes de sécurité des applications Web tout en garantissant la sécurité des comptes utilisateurs. À cette fin, de nombreuses applications en ligne demandent désormais aux utilisateurs d'ajouter une couche de sécurité supplémentaire à leur compte. Pour ce faire, ils activent l'authentification à deux facteurs. Il existe différentes méthodes pour implémenter l'authentification à deux facteurs, et l'authentification TOTP (Time Based One Time Password) en fait partie.





Pour comprendre ce qu'est TOTP et comment il est utilisé, il est d'abord nécessaire de passer brièvement en revue les concepts les plus élémentaires. Le premier d'entre eux est l'authentification à deux facteurs. L'authentification à deux facteurs (ou authentification à plusieurs facteurs) est une méthode d'identification d'un utilisateur dans un service (généralement sur Internet) en demandant deux types de données d'authentification différents, ce qui fournit deux couches, ce qui signifie une protection plus efficace du compte contre les entrées non autorisées. Cela signifie qu'après avoir activé l'authentification à deux facteurs, l'utilisateur doit passer par une étape supplémentaire pour se connecter avec succès. Les étapes standard de connexion à un compte sont le login et le mot de passe (Figure 1).





Figure 1. Procédure de connexion à un compte sans authentification à deux facteurs
Figure 1. Procédure de connexion à un compte sans authentification à deux facteurs

(.2). , , , .





Figure 2. Connexion à un compte avec authentification à deux facteurs connectée
2.

:





  1. SMS. , , , .





  2. TOTP. QR- , .





SMS . , . , SMS , . . NIST 2016 . SMS, TOTP - .





, , , , . :





  • , ,





  • ( ), ,





  • , , ,





, , , . , SMS , , . . SMS , TOTP , , .





, TOTP, ( ) . , . . , , , , .





TOTP – , .





:





,

















  1. ,





  2. ,





, . , . TOTP – HOTP.





HOTP « HMAC». (IETF) RFC4226. HOTP .





:





  • HMAC ( SHA-1)





hmacHash = HMAC-SHA-1 ( , )
      
      



  • 20 . . , . HOTP





hmacHash[19] means 19th byte of the string.offset = hmacHash[19] & 0xf;
truncatedHash = (hmacHash[offset++] & 0x7f) << 24 | (hmacHash[offset++] & 0xff) << 16 | (hmacHash[offset++] & 0xff) << 8 | (hmacHashh[offset++] & 0xff);
finalOTP = (truncatedHash % (10 ^ numberOfDigitsRequiredInOTP));
      
      



, 4 hmacHash [19]



. hmacHash [offset]



hmacHash [offset + 3]



31 truncatedHash



. , , .





HOTP. RFA4226 , .





, . ? TOTP. TOTP « ». IETF RFC6238. TOTP HOTP . , «» «», . , HOTP OTP. , , . , , Unix, . Unix , . , , . . , Google Authenticator 30 .





counter = currentUnixTime / 30
      
      



, . : . QR-. , , . , , QR-, . , – QR- . (, Google Authenticator App, Authy ..), . . TOTP -.





When user request to enable 2-factor authentication
// Generate a secret key of length 20.secretKey = generateSecretKey (20);
// Save that secret key in database for this particular user. SaveUserSecretKey (userId, secretKey);
// convert that secret key into qr image.qrCode = convertToQrCode (secretKey);
// send the qr image as responseresponse (qrCode);
      
      



QR-. QR-, . , Unix HOTP, . QR-. , , .





User types the code displayed in the application.
// Fetch secret key from database.secretKey = getSecretKeyOfUser (userId);
if (codeTypedByUser == getHOTP (secretKey, currentUnixTime / 30)) {enableTwoFactorAuthentication (userId);}
      
      



HOTP , OTP Unix. OTP , . , , , . , , . , .





User types the code displayed in the phone application to login
// Fetch secret key from database.secretKey = getSecretKeyOfUser (userId);
if (codeTypedByUser == getHOTP (secretKey, currentUnixTime)) {signIn (userId);}
      
      



, . , , QR- . , Google Authenticator App, . , , . SMS, , .





L'authentification à deux facteurs gagne en popularité. De nombreuses applications Web l'implémentent pour plus de sécurité. Contrairement à la méthode SMS, la méthode TOTP nécessite également peu d'efforts. Cette fonctionnalité vaut donc la peine d'être mise en œuvre pour n'importe quelle application.








All Articles