Codes QR TOTP 2FA expliqués

Une analyse technique approfondie du format URI otpauth://, des secrets base32 et des calculs TOTP de la RFC 6238.

Qu'est-ce que TOTP

TOTP (Time-based One-Time Password, RFC 6238) est l'algorithme qui alimente Google Authenticator, Authy, 1Password, Bitwarden et toutes les autres applications d'authentification. Il produit un code à 6 chiffres qui change toutes les 30 secondes en fonction d'un secret partagé et de l'heure Unix actuelle.

L'URI otpauth

otpauth://totp/Issuer:account@example.com?secret=BASE32SECRET&issuer=Issuer&algorithm=SHA1&digits=6&period=30

Le schéma URI est otpauth://, le type est totp (l'autre option est hotp, basé sur un compteur), puis le libellé, puis les paramètres de requête. Les applications d'authentification analysent cet URI et l'ajoutent au coffre de l'utilisateur en un seul scan.

Le libellé

Format optionnel : Issuer:account@example.com. Le préfixe Issuer est redondant avec le paramètre de requête issuer, mais la plupart des applications respectent les deux.

Le secret

Une chaîne d'octets encodée en base32 (A-Z et 2-7, sans rembourrage). Au moins 128 bits recommandés, la plupart des serveurs utilisent 160 bits (32 caractères base32). Ne jamais encoder le secret en URL ; laissez-le en base32 brut.

Algorithme, chiffres, période

algorithm : SHA1 (par défaut, universellement pris en charge), SHA256 ou SHA512. digits : 6 (par défaut) ou 8. period : 30 secondes (par défaut) ou 60. Gardez les valeurs par défaut sauf raison contraire, certaines applications n'implémentent pas les options non standard.

Comment le code est calculé

À chaque intervalle de 30 secondes, l'authentificateur effectue : HMAC-SHA1(secret, floor(unix_time / 30)), prend les 4 derniers bits du HMAC comme décalage dynamique, lit 4 octets à partir de ce décalage, masque à 31 bits et réduit modulo 106 pour obtenir un code à 6 chiffres.

Générer un code avec Abundera QR

Ouvrez le générateur TOTP, renseignez l'émetteur (votre nom de marque), le compte (e-mail ou nom d'utilisateur) et un secret base32. Les valeurs par défaut pour l'algorithme, les chiffres et la période sont correctes pour presque tous les serveurs. Téléchargez le PNG et envoyez-le par e-mail ou SMS à l'utilisateur, ou intégrez-le dans votre flux d'inscription.

Note sur la confidentialité

Votre secret TOTP est une information partagée entre le serveur et l'utilisateur. Abundera QR ne la voit jamais. Tout l'encodage se fait dans le navigateur. Lire la politique de confidentialité complète.