
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.
Sì. Il codice QR codifica un URI otpauth: che contiene il segreto in chiaro. Chiunque veda l’immagine può iscrivere la propria app di autenticazione, definitivamente.
Se le persone hanno visto solo codici, basta togliere loro l’accesso ed è fatta. Se detengono il segreto, l’unica revoca reale consiste nel reimpostare la 2FA sull’account stesso e reiscrivere tutti quelli che devono mantenere l’accesso.
Serve che sia recuperabile, che non è la stessa cosa di condiviso. Tienilo dove gli amministratori dell’account possono ritrovarlo, insieme ai codici di recupero del fornitore, e dai a tutti gli altri l’accesso ai codici.
Da leggere anche · Condividere i codici in team
Come condividere codici 2FA in squadra in sicurezzaGuida
Quattro modi di condividere codici 2FA in squadra, quanto costa ciascuno, e come dare i codici senza distribuire il segreto che li produce.
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.
Dare ai dipendenti accesso alla 2FA senza dare loro il segreto
Progettare gli accessi 2FA del personale: che cosa si concede per account e per ruolo, e come gestire ingressi, cambi di ruolo e uscite.