Peut-on partager un QR code Google Authenticator ?

Oui, et ça marche : le QR code est le secret. Ce que contient l’image, ce que peut faire le second téléphone, et ce que le fournisseur enregistre.

Oui, et ça marche exactement comme on s’y attend : quiconque scanne ce QR code obtient une entrée d’authentification qui produit les mêmes codes que les vôtres, au même instant, indéfiniment. Rien là-dedans n’est à usage unique, et rien côté fournisseur ne le remarque. Savoir si c’est une bonne idée est une autre question, qui mérite son propre traitement ; cet article-ci parle de ce qui se passe vraiment.

Ça marche parce que le QR code n’est ni un lien vers votre compte ni une invitation à usage unique. C’est une photo de l’identifiant lui-même, et c’est pour ça que le partage ne se défait pas une fois l’image vue. Ce qu’une équipe devrait faire d’un compte Google Authenticator partagé est traité dans partager les codes Google Authenticator en équipe.

Ce qu’il y a vraiment dans l’image

Un QR code de configuration encode un court texte : une URI otpauth://. Le lecteur lit les caractères, l’application les analyse, et l’enrôlement est terminé. Il porte :

  • Le secret, sous forme de chaîne base32, en clair. Ni chiffré, ni signé, et c’est la seule entrée qui compte.
  • Le libellé et l’émetteur : le nom de compte et le nom de service que vous voyez dans la liste de l’application. Cosmétique, et les changer ne change rien aux codes.
  • La période, en général trente secondes, la durée de vie de chaque code.
  • Le nombre de chiffres, en général six.
  • L’algorithme, en général SHA-1 pour TOTP.

Les trois derniers varient chez les fournisseurs qui veulent huit chiffres ou une fenêtre de soixante secondes, et le QR code les transporte pour que l’application n’ait pas à deviner. Tout ce dont une application d’authentification a besoin est dans cette chaîne, ce qui revient à dire qu’une capture du QR code est l’identifiant. La façon dont le secret devient six chiffres est traitée dans le guide complet du TOTP en équipe.

Deux téléphones, les mêmes six chiffres

Deux personnes qui scannent le même QR code verront le même code, changeant au même moment, et ils resteront identiques aussi longtemps que l’enrôlement survivra.

Ce n’est pas une fonctionnalité de synchronisation. Un code TOTP est calculé à partir du secret et de l’heure courante arrondie à la période, sans la moindre requête réseau : l’application ne demande jamais au fournisseur quel est le code. Donnez à deux appareils le même secret et des horloges à peu près justes, et ils ne peuvent pas produire de réponses différentes.

Ces codes identiques donnent au doublon l’air d’un compte partagé avec deux appareils autorisés, alors qu’il existe deux copies indépendantes d’un même identifiant, sans aucun lien entre elles. Une horloge fortement décalée est la seule façon pour l’un des appareils de sortir du rythme.

Ce que le compte enregistre : rien

C’est la partie que les gens ont le plus de mal à croire. Quand une deuxième personne scanne le QR code :

  • aucune requête n’atteint le fournisseur ;
  • aucun appareil n’apparaît dans les réglages de sécurité du compte ;
  • aucun e-mail n’est envoyé ;
  • rien ne distingue la seconde application de la première, dans un sens comme dans l’autre.

L’enrôlement enregistre un secret sur le compte : pas un appareil, pas une liste d’appareils, pas un décompte. Le fournisseur n’a aucun moyen d’apprendre combien d’applications détiennent le secret, donc il n’y a aucune révocation par appareil à invoquer plus tard. La seule chose qui invalide une copie, c’est d’invalider le secret lui-même, en désactivant la 2FA sur le compte et en la reconfigurant, ce qui coupe tous les détenteurs d’un coup, vous compris. Cette réinitialisation est décrite pas à pas dans comment fonctionnent les secrets TOTP et pourquoi il ne faut pas les partager.

Ça explique aussi pourquoi auditer le compte ne vous apprend rien. La page de sécurité d’un service où quatre personnes ont scanné l’écran de configuration ressemble exactement à celle d’un service où une seule l’a fait.

Pourquoi le QR code n’est en général montré qu’une fois

La plupart des fournisseurs affichent le QR code d’enrôlement pendant la configuration et jamais plus. Une fois un code confirmé, la page a disparu, et demander au support de la réafficher ne marche pas. C’est délibéré : le secret est écrit dans le compte au moment de l’enrôlement, et le service n’a aucune raison de l’afficher deux fois.

Certains fournisseurs vont plus loin. Le secret à l’écran est un candidat qui ne devient le vrai secret du compte qu’une fois qu’un code valide en est saisi : si vous abandonnez ou rechargez la page, vous en obtenez un autre, et le QR code photographié une minute plus tôt produit désormais des codes que le compte rejette. Si une image de QR code enregistrée donne des codes refusés, c’est en général l’explication.

Quand vous ne l’avez plus

N’organisez rien autour de la récupération de l’image d’origine. Réenrôlez plutôt :

  1. Ayez en main les codes de récupération du compte, en en générant une nouvelle série si le fournisseur refuse d’afficher les existants.
  2. Désactivez la 2FA dans les réglages de sécurité du fournisseur.
  3. Réactivez-la, et pointez le nouvel enrôlement vers l’endroit où le secret doit vivre désormais.
  4. Vérifiez qu’un code fonctionne avant de fermer l’onglet, puis rangez les nouveaux codes de récupération ailleurs que dans le compte qu’ils récupèrent.

Ça prend quelques minutes, et ça met à la retraite toutes les copies de l’ancien secret qui traînent, ce qui est souvent la vraie raison de le faire.

Scanner un QR code que quelqu’un d’autre a déjà scanné

Rien de particulier ne se produit. L’image n’est pas consommée, le premier enrôlement n’est pas perturbé, et personne n’est prévenu. Vous obtenez une entrée fonctionnelle, la personne suivante aussi, sans limite haute. Le scanner deux fois sur un même téléphone donne deux entrées portant le même nom, qui produisent les mêmes chiffres.

Il n’y a aucun conflit à résoudre parce qu’il n’y a aucun état partagé. Un lien de réinitialisation de mot de passe existe une fois et se dépense ; un QR code est la photographie d’une chaîne de caractères.

Ce que Google Authenticator fait, et ne fait pas, ici

Google Authenticator n’a aucune fonction de partage, et les deux fonctions que les gens prennent pour ça font autre chose :

  • La synchronisation copie vos comptes vers vos propres appareils via votre compte Google. Elle concerne votre téléphone et votre tablette, pas vos collègues. S’en servir pour une équipe revient à faire connecter plusieurs personnes à un même compte Google.
  • Le transfert existe pour déplacer vos entrées quand vous changez de téléphone. Pointé vers l’appareil de quelqu’un d’autre, il copie les secrets, avec le même résultat que de donner le QR code.

L’application ne peut pas non plus vous dire ce que vous détenez. Une entrée que quelqu’un d’autre a configurée sur votre téléphone est identique à une entrée que vous avez créée, parce que les deux sont un secret avec un libellé : pas de propriétaire, pas d’expiration, pas d’avertissement. L’application de Microsoft se comporte différemment sur un point, parce que les approbations par notification ne se dupliquent pas ainsi, ce qui est traité dans partager les codes Microsoft Authenticator en équipe.

Supprimer l’image ensuite ne change rien

Une fois un QR code scanné, la copie est faite. Supprimer la capture d’écran, annuler l’envoi du message ou demander à un collègue de retirer la photo de sa galerie n’atteint pas une application qui détient déjà le secret.

L’image survit aussi au moment pour lequel on en avait besoin : une pellicule photo synchronisée avec une sauvegarde dans le cloud, une pièce jointe dans un historique de conversation que les nouveaux arrivants peuvent remonter, une copie dans le ticket où quelqu’un demandait un accès. Considérez tout QR code qui a été envoyé quelque part comme définitivement sorti, et si ça compte pour le compte concerné, le remède est le réenrôlement ci-dessus.

Que faire quand plusieurs personnes ont besoin de codes

D’abord, vérifiez si la plateforme peut donner à chacun son propre identifiant. Quand elle le peut, il n’y a aucun QR code à partager, puisque chacun enrôle son propre second facteur. Quels comptes n’ont vraiment qu’un identifiant est le sujet de la 2FA d’un compte partagé : comment une équipe devrait-elle s’y prendre ?.

Pour les comptes qui n’en ont réellement qu’un, cessez de distribuer le secret et distribuez les codes : un seul endroit détient le secret, et l’accès aux codes qu’il produit est une liste qu’on modifie plutôt qu’une copie qu’on ne peut pas rappeler. La mécanique est dans partager des codes TOTP sans partager le secret, et la comparaison des approches, téléphone dédié et entrée de gestionnaire de mots de passe partagée comprises, est dans les meilleures façons de gérer la 2FA d’un compte partagé.

Où Share Auth se place

Share Auth est l’endroit unique qui détient le secret. Le secret de chaque compte est saisi une fois et chiffré au repos, et les membres invités voient le code courant avec son décompte plutôt que la chaîne derrière : il n’y a donc rien qu’ils puissent scanner dans une application à eux. Les permissions se règlent par membre et par compte, chaque consultation de code est écrite dans un journal d’accès, et retirer un membre retire son accès partout d’un coup. Les scripts qui doivent se connecter peuvent demander les codes par l’API, au lieu qu’une personne les lise à voix haute.

Le forfait gratuit couvre trois secrets et trois membres sans carte bancaire, de quoi sortir un compte partagé du QR code et voir si ce fonctionnement convient à votre équipe.

Questions fréquentes

Oui. Le QR code n’est pas une invitation à usage unique, c’est une image contenant le secret. Tous ceux qui le scannent enrôlent dans leur propre application une copie parfaitement fonctionnelle du second facteur du compte.

À lire aussi · Applications d’authentification

9 min de lecture

Est-il sûr de partager un QR code 2FA ?

Non, et le plus utile est de savoir pourquoi : qui voit un QR code partagé, ce qu’il peut en faire, et si une fuite mérite une réinitialisation.