Google Authenticator est une alternative aux SMS pour la vérification en 2 étapes, en installant une application sur Android où les codes seront envoyés.

Cela fonctionne sans aucune connectivité; cela fonctionne même en mode avion. Cest ce que je nobtiens pas. Comment est-il possible que cela fonctionne sans connectivité? Comment le téléphone mobile et le serveur se synchronisent-ils pour savoir quel code est valide à ce moment précis?

Commentaires

  • Les codes ne sont pas  » envoyés « . Ils sont créés via une graine et un compteur .

Réponse

Google Authenticator prend en charge à la fois le HOTP et TOTP pour générer des mots de passe à usage unique.

Avec HOTP, le serveur et le client partagent une valeur secrète et un compteur, qui sont utilisés pour calculer un mot de passe à usage unique indépendamment des deux côtés. Chaque fois quun mot de passe est généré et utilisé, le compteur est incrémenté des deux côtés, permettant au serveur et au client de rester synchronisés.

TOTP utilise essentiellement le même algorithme que HOTP avec une différence majeure. Le compteur utilisé dans TOTP est remplacé par lheure actuelle. Le client et s erver reste synchronisé tant que les heures système restent les mêmes. Cela peut être fait en utilisant le protocole Network Time .

La clé secrète (ainsi que le compteur dans le cas de HOTP) a à communiquer à la fois au serveur et au client à un moment donné. Dans le cas de Google Authenticator, cela se fait sous la forme dun URI encodé QRCode. Voir: KeyUriFormat pour plus dinformations.

Commentaires

  • Dans le cas de HOTP, comment Google Authenticator sait-il que jai  » utilisé  » le mot de passe sans synchronisation avec le serveur? Ce que fait Google Authenticator, cest quil continue de flasher différentes touches et je peux simplement utiliser nimporte laquelle dentre elles sans donner de commentaires à mon mobile.
  • @MarioAwad La réponse à cela peut être trouvée sur le RFC HOTP, section 7.4 . ietf.org/rfc/rfc4226.txt
  • Merci pour la réponse bien définie et le suivi. Résumé rapide de la section 7.4: La resynchronisation du compteur de temps en temps et une fenêtre de prévision pour le compteur est ce qui fait que les choses fonctionnent sans nécessiter de synchronisation instantanée.
  • Comme la souligné @TerryChia, la clé secrète est dans le code QR. Soyez conscient de la sensibilité du QRCode / Information. Jai écrit un article de blog il y a quelque temps netknights.it/en/the-problem-with-the-google-authenticator

Réponse

Fonctionnement:

Authenticator implémente lalgorithme TOTP (Time-Based One-Time Password). Il contient les ingrédients suivants:

• Un secret partagé (une séquence doctets)

• Une entrée dérivée de lheure actuelle

• Une fonction de signature

Secret partagé: Le secret partagé est ce dont vous avez besoin pour configurer le compte sur votre téléphone . Soit vous prenez une photo dun code QR à laide de votre téléphone, soit vous pouvez entrer le secret manuellement.

Entrée (heure actuelle): La valeur de lheure dentrée que vous obtiendrez simplement de votre téléphone, aucune autre interaction avec le serveur nest requise une fois que vous avez obtenu le secret. Cependant, il est important que lheure de votre téléphone soit exacte comme celle du serveur répétera essentiellement ce qui se passe sur votre téléphone en utilisant lheure actuelle telle que connue par le serveur.

Fonction de signature: La fonction de signature utilisée est HMAC-SHA1. HMAC signifie code dauthentification de message basé sur le hachage et cest un algorithme qui utilise une fonction de hachage unidirectionnelle sécurisée (SHA1 dans ce cas) pour signer une valeur. Lutilisation dun HMAC nous permet de vérifier lauthenticité – seules les personnes connaissant le secret peuvent générer la même sortie pour la même entrée (lheure actuelle).

Algorithme OTP :

Pseudo-code:

original_secret = xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx secret = BASE32_DECODE(TO_UPPERCASE(REMOVE_SPACES(original_secret))) input = CURRENT_UNIX_TIME() / 30 // sets a constant value for 30 seconds hmac = SHA1(secret + SHA1(secret + input)) //apply hashing offset = hmac[len(hmac)-1] & 0x0F //Last nibble four_bytes = hmac[offset : offset+4] //takes a subset of 4 bytes from 20 bytes large_integer = INT(four_bytes) //Covert four bytes to integer small_integer = large_integer % 1,000,00 //gives 6 digit code 

entrez la description de limage ici

Référence: https://garbagecollected.org/2014/09/14/how-google-authenticator-works/

Consultez également ce projet github pour limplémentation GO: https://github.com/robbiev/two-factor-auth/blob/master/main.go

Commentaires

  • Est-ce que ‘ lauthentificateur google prend également en charge HOTP?

Réponse

Il « fonctionnera sur une graine basée sur le temps, donc cest similaire à la façon dont le Les télécommandes RSA fonctionnent. cest-à-dire quils ne nécessitent pas non plus de connectivité.

Je « viens de jeter un œil aux alentours et voici la réponse: https://stackoverflow.com/questions/8340495/how-rsa-tokens-works

Réponse

Si un strace est le sshd, on peut voir comment le serveur « connaît » la clé secrète, en lisant le fichier de configuration des utilisateurs:

#strace -f -v -e open /usr/sbin/sshd -p 2222 -dddd -f /etc/ssh/sshd_config 2>&1 | grep -i goog > > [pid 2105] open("/home/myuser/.google_authenticator", O_RDONLY) = 4 > > [pid 2105] open("/home/myuser/.google_authenticator~", > > O_WRONLY|O_CREAT|O_EXCL|O_TRUNC|O_NOFOLLOW, 0400debug3: > > mm_sshpam_respond: pam_respond returned 1 [preauth] 

Le téléphone mobile le sait déjà; vous lavez scanné via QR ou lavez saisi.

Commentaires

  • Ceci est un bon exemple de la façon de démontrer que les jetons sont nest pas envoyé au serveur, mais nexplique pas ‘ comment cela fonctionne (ce que OP a demandé)
  • Cela ne ‘ t en soi, mais cela résout le manque de connectivité.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *