
Partager des codes TOTP sans partager le secret
Donner à ses collègues un code TOTP valide en gardant le secret au même endroit, et ce que chaque approche implique le jour où il faut retirer un accès.
Le secret et l’heure courante sont les seules entrées d’un code TOTP : on ne peut donc pas en calculer un sans le secret. L’astuce n’est pas de partager le secret autrement, elle est de faire en sorte que l’appareil de chacun n’en ait plus besoin : quelque chose détient le secret et distribue les codes à la demande. Cette distinction fait tout le sujet de comment partager des codes 2FA en équipe en toute sécurité ; cet article-ci parle de mécanique.
Pourquoi la différence compte autant
Un code vaut une trentaine de secondes. L’envoyer à un collègue est à peu près aussi sensible que lire un numéro de suivi de colis : le temps qu’il fuite, il est déjà invalide, et il n’aurait de toute façon servi qu’à une seule tentative de connexion.
Un secret vaut tout ce que vaut le compte, aussi longtemps que la 2FA reste configurée. Il fait généralement 16 à 32 caractères, c’est lui que contient le QR code, et ses copies sont invisibles : rien dans la page de sécurité du compte ne vous dira jamais que quatre personnes ont scanné l’écran de configuration en 2024.
C’est cette asymétrie qui fait que « on partage les codes » et « on a partagé le QR code une fois » décrivent deux postures de sécurité complètement différentes, même si les deux ressemblent à du partage de 2FA.
Trois façons de distribuer des codes, pas des secrets
Un coffre partagé qui affiche les codes
Le secret est saisi une fois, par la personne qui administre le compte, et stocké chiffré. Les collègues à qui l’accès a été donné ouvrent l’entrée et voient le code courant avec son décompte. Ils ne voient jamais la chaîne derrière, et ne peuvent pas enrôler leur propre application à partir de là.
C’est la réponse polyvalente, et celle qui survit aux arrivées et aux départs, parce que l’accès est une liste qu’on modifie plutôt qu’un secret qu’on ne peut pas rappeler.
Sous forme de produit, c’est une application d’authentification partagée : le coffre détient le secret, les gens ne détiennent rien.
Un appel d’API depuis vos propres outils
Si la connexion est faite par un script, un export nocturne, un job de CI ou un robot qui publie sur un compte client, le code n’a pas besoin d’arriver jusqu’à un humain. Vos outils demandent le code courant au moment de se connecter, et le secret reste côté serveur.
La règle : l’identifiant que votre script utilise pour demander le code doit être aussi protégé que le compte lui-même, et limité au seul compte dont il a besoin.
Le lire à voix haute, délibérément
Quelqu’un qui a l’accès lit le code à un collègue au téléphone. Ça mérite d’être nommé, parce que c’est ce que font déjà la plupart des équipes, et que ce n’est pas faux. On partage exactement la chose éphémère, et rien d’autre.
Ses limites sont pratiques et non cryptographiques : il faut deux personnes éveillées en même temps, ça ne laisse aucune trace de qui s’est connecté, et ça fait d’une personne le goulot d’étranglement de toutes les autres.
Ce qu’on perd à partager le secret à la place
Si le secret sort, collé dans un canal, capturé en image ou déposé dans une note partagée, trois choses deviennent vraies d’un coup, et le restent jusqu’à la réinitialisation de la 2FA :
- On perd le compte. Impossible de savoir combien d’appareils le détiennent.
- On perd la révocation. Retirer quelqu’un d’un canal ne retire pas le secret de son application d’authentification.
- On perd l’indépendance du second facteur. Partout où le secret se trouve à côté du mot de passe, un attaquant qui atteint cet endroit tient les deux facteurs.
Rien de tout cela n’est théorique, et rien n’apparaît dans un audit du compte lui-même. Ça se voit des mois plus tard, quand quelqu’un qui a quitté l’entreprise dispose toujours d’un générateur de codes fonctionnel.
Une courte liste de contrôle
- Le secret est saisi une fois, à un seul endroit, par un administrateur du compte.
- Tous les autres ont accès aux codes, accordé personne par personne et compte par compte.
- Les consultations sont journalisées, pour que « qui s’est connecté mardi » ait une réponse.
- Les codes de récupération sont rangés avec le secret, pas distribués avec lui.
- Tout secret qui a été publié quelque part est considéré comme brûlé : réinitialiser la 2FA sur ce compte et réenrôler.
Questions fréquentes
Pas sur son propre appareil : le secret est la seule entrée, avec l’heure. Ce qu’on peut faire, en revanche, c’est laisser autre chose détenir le secret et produire le code à la demande, ce que fait un coffre partagé ou un appel d’API.
Oui. Le QR code encode une URI otpauth: qui contient le secret en clair. Quiconque voit l’image peut enrôler sa propre application d’authentification, définitivement.
Si les personnes n’ont jamais vu que des codes, il suffit de retirer leur accès et c’est fait. Si elles détiennent le secret, la seule révocation réelle consiste à réinitialiser la 2FA sur le compte lui-même et à réenrôler tous ceux qui doivent garder l’accès.
Il faut qu’il soit récupérable, ce qui n’est pas la même chose que partagé. Gardez-le là où les administrateurs du compte peuvent le retrouver, avec les codes de récupération du fournisseur, et donnez à tous les autres l’accès aux codes.
À lire aussi · Partager des codes en équipe
Comment partager des codes 2FA en équipe en toute sécuritéGuide
Quatre façons de partager des codes 2FA en équipe, ce que chacune coûte, et comment donner les codes sans distribuer le secret qui les produit.
Les meilleures façons de gérer la 2FA d’un compte partagé
Cinq façons de faire tourner la 2FA sur un compte partagé, comparées sur la mise en place, le coût, le travail à distance et les départs.