Plusieurs personnes peuvent-elles utiliser le même TOTP ?

Oui, techniquement : plusieurs appareils portant le même secret produisent le même code. Ce qui se passe vraiment à deux, et ce que ça coûte.

Oui. TOTP n’a aucune notion du nombre de personnes qui détiennent un secret, et n’importe quel nombre d’appareils détenant le même afficheront les mêmes six chiffres au même instant. Ce qui va de travers, ce n’est pas l’arithmétique. Ce sont les deux connexions qui se percutent dans les mêmes trente secondes, l’horloge qui dérive sur un téléphone, et le fait que rien ensuite ne puisse dire qui s’est connecté.

Deux questions différentes se cachent dans celle-là

« Plusieurs personnes peuvent-elles utiliser le même TOTP » veut presque toujours dire l’une de ces deux choses, et elles ont des réponses opposées.

Plusieurs personnes détenant le même secret. Le secret est l’identifiant permanent : il n’expire pas, il n’est lié à aucun appareil, et il n’y a aucun enregistrement à annuler. Chaque détenteur supplémentaire est une copie incomptable et irrévocable du second facteur du compte.

Plusieurs personnes lisant le même code. Le code, c’est six chiffres qui valent une trentaine de secondes, bons pour une tentative de connexion. En passer un à un collègue ne cède rien qui survive à la conversation.

Les deux ressemblent à « partager la 2FA », et c’est pour ça que les équipes finissent par faire la chose permanente alors qu’elles n’avaient besoin que de la temporaire. Cet arbitrage, et les moyens d’en sortir, font le sujet de comment partager des codes 2FA en équipe en toute sécurité. Cet article-ci reste sur la question étroite : ce que vous observerez vraiment quand plus d’une personne travaille depuis le même TOTP.

Ce qui se passe réellement avec deux appareils

Les codes concordent, tant que les horloges concordent

Deux appareils portant le même secret ne sont synchronisés entre eux d’aucune façon. Ils n’en ont pas besoin : le code est dérivé du secret et de l’heure courante, et rien d’autre n’y entre. Entrées identiques, sortie identique. La mécanique est dans le guide complet du TOTP en équipe ; le point pratique, c’est qu’un second enrôlement est invisible pour tout le monde, vous compris.

Deux connexions dans la même fenêtre : la seconde peut être refusée

C’est le symptôme qui envoie les gens chercher une configuration cassée. Deux personnes se connectent dans le même pas de trente secondes, lisant toutes les deux le bon code, et la seconde tentative est rejetée.

La RFC 6238 demande aux vérificateurs de n’accepter un code donné qu’une fois par pas de temps, et la plupart des implémentations s’y tiennent en enregistrant le dernier pas utilisé pour un compte. Du point de vue du compte, il n’y a qu’un utilisateur : la seconde connexion ressemble donc au rejeu d’un code déjà dépensé.

Le remède est d’attendre le code suivant. Ça vaut la peine de le savoir à l’avance, parce que la réaction naturelle, supposer qu’on s’est trompé en tapant et retaper le code, aggrave le problème suivant.

Les nouvelles tentatives s’accumulent contre la limite du fournisseur

Six chiffres, c’est un million de possibilités : les fournisseurs limitent donc les tentatives. Cette limite compte par compte, pas par personne.

Trois personnes qui essaient deux fois chacune ont produit six échecs sur un seul compte, ce qui peut suffire à déclencher un verrouillage temporaire, une vérification supplémentaire ou un e-mail de sécurité à qui détient l’adresse enregistrée. Chaque comportement individuel est raisonnable ; l’agrégat ressemble à une attaque.

Une horloge dérive et une seule personne le remarque

La dérive d’horloge est en général décrite comme une panne qui touche tout le compte, mais avec plusieurs appareils elle se présente autrement : les codes marchent pour tout le monde sauf une personne, systématiquement, et seulement depuis son appareil.

Le téléphone de cette personne calcule les codes d’un pas de temps que le serveur a déjà dépassé ou pas encore atteint. Le secret n’a rien d’anormal, et le ressaisir n’aide en rien. Ce qu’il faut vérifier, c’est le réglage automatique de l’heure, sur l’appareil qui échoue.

Des connexions simultanées depuis plusieurs endroits ressemblent à une intrusion

La détection d’abus, côté fournisseur, réagit à des motifs, et un compte qui s’authentifie depuis deux villes en quelques minutes est exactement le motif qu’elle est faite pour repérer. Selon le service, ça produit une étape de vérification supplémentaire, un e-mail « nouvel appareil », une réinitialisation forcée du mot de passe, ou une session qui se termine en pleine tâche.

Rien de tout cela n’est un problème de TOTP, et rien ne se règle par configuration de votre côté. C’est simplement à quoi ressemble un identifiant partagé vu de l’extérieur, et ça devient plus fréquent à mesure que le nombre d’utilisateurs augmente.

Rien n’enregistre quel appareil a produit le code accepté

Le vérificateur compare six chiffres. Il n’apprend pas d’où ils viennent, parce qu’il n’y a rien à apprendre dans le code, et parce qu’enrôler un appareil n’a rien envoyé nulle part au départ.

Alors quand le journal du compte montre une connexion à 14 h 12, la piste s’arrête là. Si quatre personnes peuvent produire des codes, quatre personnes ont pu se connecter, et le compte ne peut pas réduire davantage. C’est la partie qui compte après un incident, et c’est la raison pour laquelle donner à ses employés accès à la 2FA sans leur donner le secret traite l’attribution comme une exigence et non comme un supplément agréable.

Donc « oui, techniquement », à quel prix

Tout ce qui précède est de la friction : agaçante, diagnosticable, surmontable. Le coût de plusieurs personnes détenant le secret appartient à une autre catégorie, et il ne produit aucun symptôme.

Vous ne pouvez pas compter les copies. Rien dans les réglages de sécurité du compte ne dira jamais combien d’appareils ont été enrôlés : le nombre vaut ce que vaut votre souvenir des enrôlements passés.

Vous ne pouvez pas en retirer une. Le protocole ne prévoit aucune rotation ni aucun enregistrement par appareil, ce qui veut dire que la seule révocation disponible consiste à désactiver la 2FA sur le compte et à la reconfigurer, pour tout le monde en même temps.

Et le second facteur cesse d’être indépendant partout où le secret finit à côté du mot de passe : une note partagée, une entrée de coffre, un document. Un seul endroit atteint, et les deux facteurs sont perdus. Comment fonctionnent les secrets TOTP (et pourquoi il ne faut pas les partager) passe en revue les endroits où les copies s’accumulent. En résumé : elles s’accumulent en silence, et elles restent.

Ce que la question demande vraiment

Ce que les gens veulent en la posant, c’est que plusieurs collègues puissent se connecter à un même compte. Ça ne demande pas que plusieurs personnes détiennent le secret. Ça demande trois choses.

Un seul détenteur du secret. Saisi une fois, par la personne qui administre le compte, gardé à un seul endroit connu qu’au moins deux administrateurs peuvent atteindre. Tous les autres participants consomment des codes plutôt que de stocker quoi que ce soit.

Des codes distribués par personne. Chaque personne autorisée obtient le code courant et son décompte quand elle en a besoin, accordé compte par compte, et retirable en une action. L’appareil de personne ne détient quoi que ce soit qui survive à son accès.

Une trace des consultations. Puisque le journal du fournisseur ne pourra jamais montrer que le compte partagé, le registre de qui a demandé un code est la seule chose qui mette un nom en face d’un horodatage.

Si la plateforme en question peut donner à chaque collègue son propre identifiant, faites-le, c’est mieux que de partager quoi que ce soit, et la 2FA d’un compte partagé : comment une équipe devrait-elle s’y prendre ? détaille quels comptes n’ont vraiment aucune option par personne. Les trois exigences ci-dessus valent pour ceux qui n’ont réellement qu’un identifiant.

Où Share Auth se place

Share Auth est fait pour ce cas. Le secret est saisi une fois et chiffré au repos ; les membres invités voient le code et son décompte, jamais le secret derrière. 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 en une action. Les scripts qui doivent se connecter peuvent demander les codes par l’API plutôt que d’impliquer une personne.

Le forfait gratuit couvre trois secrets et trois membres, sans carte bancaire, ce qui suffit pour voir si la forme décrite ci-dessus correspond à la façon dont votre équipe travaille vraiment.

Questions fréquentes

Elles peuvent détenir le même secret et voir le même code, mais elles ne pourront pas forcément se connecter toutes les deux dans la même fenêtre de trente secondes. La plupart des vérificateurs refusent une seconde authentification avec un code déjà utilisé pour ce pas de temps : la deuxième personne voit un code correct rejeté et doit attendre le suivant.

À lire aussi · Partager des codes en équipe