Condividere codici TOTP senza condividere il segreto

Dare ai colleghi un codice TOTP valido tenendo il segreto nello stesso posto, e che cosa implica ogni approccio il giorno in cui bisogna togliere un accesso.

Il segreto e l’ora corrente sono gli unici ingressi di un codice TOTP: non se ne può quindi calcolare uno senza il segreto. Il trucco non è condividere il segreto in altro modo, è fare in modo che il dispositivo di ciascuno non ne abbia più bisogno: qualcosa detiene il segreto e distribuisce i codici su richiesta. Questa distinzione è tutto il tema di come condividere codici 2FA in squadra in sicurezza; questo articolo parla di meccanica.

Perché la differenza conta tanto

Un codice vale una trentina di secondi. Mandarlo a un collega è più o meno sensibile quanto leggere un numero di tracciamento di un pacco: quando trapela è già invalido, e sarebbe comunque servito per un solo tentativo di accesso.

Un segreto vale tutto ciò che vale l’account, finché la 2FA resta configurata. È di solito lungo da 16 a 32 caratteri, è ciò che il codice QR contiene, e le sue copie sono invisibili: nulla nella pagina di sicurezza dell’account vi dirà mai che quattro persone hanno scansionato la schermata di configurazione nel 2024.

È questa asimmetria a fare sì che «condividiamo i codici» e «abbiamo condiviso il codice QR una volta» descrivano due posture di sicurezza completamente diverse, anche se entrambe somigliano a condividere la 2FA.

Tre modi di distribuire codici, non segreti

Una cassaforte condivisa che mostra i codici

Il segreto è inserito una volta, dalla persona che amministra l’account, e conservato cifrato. I colleghi a cui è stato dato accesso aprono la voce e vedono il codice corrente con il suo conto alla rovescia. Non vedono mai la stringa dietro, e non possono iscrivere la propria app a partire da lì.

È la risposta polivalente, e quella che sopravvive agli arrivi e alle uscite, perché l’accesso è un elenco che si modifica invece di un segreto che non si può richiamare.

Sotto forma di prodotto, è un’ app di autenticazione condivisa: la cassaforte detiene il segreto, le persone non detengono nulla.

Una chiamata API dai vostri strumenti

Se l’accesso è fatto da uno script, un export notturno, un job di CI o un bot che pubblica su un account cliente, il codice non ha bisogno di arrivare fino a un umano. I vostri strumenti chiedono il codice corrente al momento di accedere, e il segreto resta lato server.

La regola: la credenziale che il vostro script usa per chiedere il codice dev’essere protetta quanto l’account stesso, e limitata al solo account di cui ha bisogno.

Leggerlo a voce, deliberatamente

Qualcuno che ha l’accesso legge il codice a un collega al telefono. Merita di essere nominato, perché è quello che la maggior parte delle squadre già fa, e perché non è sbagliato. Si condivide esattamente la cosa effimera, e nient’altro.

I suoi limiti sono pratici e non crittografici: servono due persone sveglie nello stesso momento, non lascia alcuna traccia di chi si sia connesso, e fa di una persona il collo di bottiglia di tutte le altre.

Che cosa si perde condividendo il segreto al suo posto

Se il segreto esce, incollato in un canale, catturato in immagine o depositato in una nota condivisa, tre cose diventano vere in un colpo, e restano tali fino alla reimpostazione della 2FA:

  • Si perde il conteggio. Impossibile sapere quanti dispositivi lo detengano.
  • Si perde la revoca. Togliere qualcuno da un canale non toglie il segreto dalla sua app di autenticazione.
  • Si perde l’indipendenza del secondo fattore. Ovunque il segreto si trovi accanto alla password, un attaccante che raggiunga quel posto tiene entrambi i fattori.

Nulla di ciò è teorico, e nulla appare in una verifica dell’account stesso. Si vede mesi dopo, quando qualcuno che ha lasciato l’azienda dispone ancora di un generatore di codici funzionante.

Una breve lista di controllo

  • Il segreto è inserito una volta, in un solo posto, da un amministratore dell’account.
  • Tutti gli altri hanno accesso ai codici, concesso persona per persona e account per account.
  • Le consultazioni sono registrate, perché «chi si è connesso martedì» abbia una risposta.
  • I codici di recupero sono conservati con il segreto, non distribuiti insieme a esso.
  • Ogni segreto che sia stato pubblicato da qualche parte è considerato bruciato: reimpostare la 2FA su quell’account e reiscrivere.

Domande frequenti

Non sul proprio dispositivo: il segreto è l’unico ingresso, insieme all’ora. Ciò che si può fare, invece, è lasciare che qualcos’altro detenga il segreto e produca il codice su richiesta, che è quello che fa una cassaforte condivisa o una chiamata API.

Da leggere anche · Condividere i codici in team

7 min di lettura

Più persone possono usare lo stesso TOTP?

Sì, tecnicamente: più dispositivi con lo stesso segreto producono lo stesso codice. Che cosa succede davvero in due, e quanto costa.