web-dev-qa-db-fra.com

En quoi les générateurs de mots de passe à usage unique comme Google Authenticator diffèrent-ils d'avoir deux mots de passe?

Google Authenticator utilise algorithme TOTP pour générer votre mot de passe à usage unique (OTP). TOTP fonctionne comme ceci: Le serveur génère une clé secrète et partage avec le client (vous) lorsque le client s'enregistre auprès du serveur. À l'aide de la clé partagée et de l'horodatage actuel, un nouveau mot de passe est généré toutes les 30 secondes.

Si quelqu'un a la clé partagée, il peut générer lui-même l'OTP à l'aide de l'algorithme TOTP. N'est-ce pas similaire à un mot de passe? Cela ne se réduit-il pas à deux mots de passe - l'un est le mot de passe que vous utilisez pour vous connecter et l'autre est la clé partagée entre vous et le serveur?

62
Ashwin

Les mots de passe sont révélés chaque fois que vous les utilisez: si vous avez deux mots de passe et que vous les saisissez dans un formulaire Web frauduleux, ils sont tous deux volés.

Le secret partagé ne peut pas être calculé à partir d'un seul OTP (ou même d'un ensemble d'entre eux **), donc un OTP volé n'est valide que pour une durée limitée. Le secret partagé n'est jamais transféré lors de l'authentification, donc le voler nécessite un vecteur d'attaque différent: accéder à l'appareil où il est conservé ou le copier (par exemple son code QR) lors de l'initialisation.

** Le calcul des secrets partagés à l'envers serait très peu pratique, car il s'agit d'un algorithme à sens unique. De plus, la longueur de clé minimale est de 128 bits et l'algorithme ne produit que 6 chiffres, c'est-à-dire environ 20 bits OTP. Cela signifie que pour chaque OTP, il y aurait des océans de secrets partagés potentiels, et trouver une seule correspondance ne serait possible qu'avec la force brute, c'est-à-dire calculer 2 ^ 128 hachages toutes les 30 secondes et exclure tous les OTP qui ne correspondent pas.

99
Esa Jokinen