
TOTP-codes delen zonder het geheim te delen
Je collega's een geldige TOTP-code geven terwijl het geheim op dezelfde plek blijft, en wat elke aanpak betekent op de dag dat je toegang moet intrekken.
Het geheim en de huidige tijd zijn de enige invoer van een TOTP-code: je kunt er dus geen berekenen zonder het geheim. De truc is niet het geheim op een andere manier te delen, maar ervoor te zorgen dat ieders toestel het niet meer nodig heeft: iets bewaart het geheim en deelt de codes op verzoek uit. Dat onderscheid is het hele onderwerp van hoe je 2FA-codes veilig met je team deelt; dit artikel gaat over de werking.
Waarom het verschil zo zwaar telt
Een code is een dertigtal seconden waard. Hem naar een collega sturen is ongeveer zo gevoelig als een pakketvolgnummer voorlezen: tegen de tijd dat hij uitlekt is hij al ongeldig, en hij zou hoe dan ook maar voor één inlogpoging hebben gediend.
Een geheim is alles waard wat het account waard is, zolang de 2FA ingesteld blijft. Het is meestal 16 tot 32 tekens lang, het is wat de QR-code bevat, en zijn kopieën zijn onzichtbaar: niets op de beveiligingspagina van het account zal je ooit vertellen dat vier mensen in 2024 het installatiescherm hebben gescand.
Die asymmetrie maakt dat „we delen de codes” en „we hebben de QR-code één keer gedeeld” twee volstrekt verschillende beveiligingsposities beschrijven, ook al lijken ze allebei op 2FA delen.
Drie manieren om codes uit te delen, geen geheimen
Een gedeelde kluis die de codes toont
Het geheim wordt één keer ingevoerd, door wie het account beheert, en versleuteld opgeslagen. Collega’s die toegang hebben gekregen openen de vermelding en zien de actuele code met het aftellen. De tekenreeks erachter zien ze nooit, en ze kunnen er geen eigen app mee inschrijven.
Dat is het veelzijdige antwoord, en het antwoord dat komen en gaan overleeft, omdat toegang een lijst is die je aanpast in plaats van een geheim dat je niet kunt terughalen.
In productvorm is dat een gedeelde authenticator-app: de kluis bewaart het geheim, de mensen bewaren niets.
Een API-aanroep vanuit je eigen tools
Wordt de aanmelding gedaan door een script, een nachtelijke export, een CI-job of een bot die op een klantaccount post, dan hoeft de code niet tot bij een mens te komen. Je tools vragen de actuele code op het moment van inloggen op, en het geheim blijft aan de serverkant.
De regel: de sleutel waarmee je script de code opvraagt moet even goed beschermd zijn als het account zelf, en beperkt tot het ene account dat het nodig heeft.
Hem bewust voorlezen
Iemand met toegang leest de code aan de telefoon voor aan een collega. Dat verdient benoemd te worden, want de meeste teams doen het al, en het is niet verkeerd. Je deelt precies het vluchtige, en verder niets.
De grenzen zijn praktisch en niet cryptografisch: er moeten twee mensen tegelijk wakker zijn, het laat geen spoor na van wie inlogde, en het maakt van één persoon de flessenhals voor alle anderen.
Wat je verliest door in plaats daarvan het geheim te delen
Komt het geheim naar buiten, geplakt in een kanaal, als beeld vastgelegd of in een gedeelde notitie gezet, dan worden drie dingen tegelijk waar, en blijven ze dat tot de 2FA gereset wordt:
- Je verliest de telling. Onmogelijk te weten hoeveel toestellen het hebben.
- Je verliest de intrekking. Iemand uit een kanaal halen haalt het geheim niet uit zijn authenticator-app.
- Je verliest de onafhankelijkheid van de tweede factor. Overal waar het geheim naast het wachtwoord ligt, heeft een aanvaller die die plek bereikt beide factoren.
Niets daarvan is theoretisch, en niets ervan verschijnt in een controle van het account zelf. Het blijkt maanden later, wanneer iemand die het bedrijf heeft verlaten nog altijd over een werkende codegenerator beschikt.
Een korte controlelijst
- Het geheim wordt één keer ingevoerd, op één plek, door een beheerder van het account.
- Alle anderen hebben toegang tot de codes, verleend per persoon en per account.
- De raadplegingen worden gelogd, zodat „wie logde er dinsdag in” een antwoord heeft.
- De herstelcodes liggen bij het geheim, ze worden er niet mee uitgedeeld.
- Elk geheim dat ergens is gepubliceerd geldt als verbrand: de 2FA op dat account resetten en opnieuw inschrijven.
Veelgestelde vragen
Niet op je eigen toestel: het geheim is samen met de tijd de enige invoer. Wat je wel kunt doen, is iets anders het geheim laten bewaren en de code op verzoek laten maken, wat een gedeelde kluis of een API-aanroep doet.
Ja. De QR-code codeert een otpauth:-URI die het geheim in het klaar bevat. Iedereen die het beeld ziet kan zijn eigen authenticator-app inschrijven, definitief.
Hebben de mensen alleen codes gezien, dan volstaat het hun toegang in te trekken en klaar. Hebben ze het geheim, dan bestaat de enige echte intrekking uit de 2FA op het account zelf resetten en iedereen die de toegang moet houden opnieuw inschrijven.
Het moet terugvindbaar zijn, wat niet hetzelfde is als gedeeld. Bewaar het waar de beheerders van het account het kunnen terugvinden, samen met de herstelcodes van de aanbieder, en geef alle anderen toegang tot de codes.
Lees ook · Codes delen met je team
Hoe je 2FA-codes veilig met je team deeltGids
Vier manieren om 2FA-codes met een team te delen, wat elk ervan kost, en hoe je de codes geeft zonder het geheim te verspreiden dat ze maakt.
Kunnen meerdere mensen dezelfde TOTP gebruiken?
Ja, technisch: meerdere toestellen met hetzelfde geheim maken dezelfde code. Wat er met z'n tweeën echt gebeurt, en wat het kost.
Medewerkers toegang tot 2FA geven zonder hun het geheim te geven
De 2FA-toegangen van je personeel ontwerpen: wat je per account en per rol verleent, en hoe je instroom, functiewissels en vertrek regelt.