Episode Transcript
Available transcripts are automatically generated. Complete accuracy is not guaranteed.
(00:00):
A volte ci sono degli aspetti dell'informatica che tendiamo a dare per scontati, salvo poi
(00:07):
accorgerci che non lo sono affatto.
Ultimamente ho scoperto che per me, ad esempio, una di queste convinzioni è che le persone
conoscano il funzionamento delle cosiddette OTP, le One Time Password, e non mi riferisco
ai dettagli tecnici, quelli alla fine si possono anche ignorare e vivere comunque benissimo,
(00:30):
chi se ne frega.
Ma almeno dovrebbe essere chiaro come utilizzare questi strumenti e quali sono le possibilità
che offrono.
Invece mi sono reso conto che questi concetti sfuggono ai più, e anche a tanti informatici
di mestiere, il che per me è inconcepibile.
(00:50):
Quindi ho pensato che fosse il caso di farci un episodio di Pensieri in Codice.
Sigla!
Benvenuti su Pensieri in Codice, il podcast dove si ragiona da informatici, con Valerio Galan.
(01:12):
Per parlare di OTP dobbiamo partire con il chiarire, almeno dal punto di vista dell'utente,
il concetto di autenticazione a due fattori, anche detta Two Step Authentication, o 2FA,
o Two Factor Authentication, e così via.
Fino a qualche anno fa eravamo tutti abituati ad utilizzare un solo fattore di autenticazione,
(01:38):
cioè la combinazione di Username e Password, o Email e Password, a seconda dei casi.
Caselle email, siti e-commerce, banca online, sito della parrocchia, il concetto era più o meno sempre lo stesso.
Ci registravamo fornendo un indirizzo email e o scegliendo un username, impostavamo una password
(02:01):
e il gioco era fatto.
Ogni volta che serviva a autenticarsi il sito in questione ci avrebbe chiesto quella coppia
di credenziali per riconoscerci.
Poi, con il tempo, ha iniziato a fare la sua comparsa il secondo fattore di autenticazione,
cioè una seconda informazione che alcuni siti richiedono dopo l'inserimento delle credenziali
(02:24):
per confermare l'identità dell'utente.
Questa seconda informazione però non è semplicemente un ulteriore password,
non si tratta di qualcosa che possiamo annotare insieme alle credenziali
sul nostro taccuino lasciato di fianco alla tastiera.
E questo perché il meccanismo è pensato per accertare la nostra identità
(02:47):
sfruttando il concetto di possesso,
facendo cioè leva sul fatto che per fornire correttamente l'informazione richiesta
dobbiamo utilizzare qualcosa che possediamo.
Ed ecco quindi che con il tempo hanno iniziato a fare la loro comparsa
le chiavette fornite dalle banche,
quelle specie di calcolatrici in cui inserire la carta Bancomat,
(03:11):
come era per i conti della posta ad esempio,
i codici via sms o email e le app come Google Authenticator o Auti.
E poi le impronte digitali, il Face ID, le schede con il chip,
è stato un momento confusionario, ammettiamolo pure.
Ora però non è più così, il panorama si è stabilizzato
(03:33):
e non ci sono scuse per non utilizzare oggi un meccanismo di sicurezza
che ormai è uno standard de facto.
Non è il caso di approfondire l'argomento ora,
ma tanto per dire per chi necessita di un livello di sicurezza molto elevato,
ormai esiste anche la MFA, la Multi Factor Authentication,
(03:56):
che utilizza almeno tre fattori di autenticazione.
Io ad esempio utilizzo tre fattori per accedere al Password Manager
in cui custodisco tutte le password mie e quelle dei miei clienti.
Per aprire questi database occorre la password,
una chiavetta hardware e una chiave software che si trova solo sui miei dispositivi.
(04:20):
Ma non divaghiamo, restiamo sulle cose semplici
e vediamo brevemente quali sono le moderne tipologie di autenticazione a due fattori.
Quando si sceglie di utilizzare il secondo fattore di autenticazione su un sito,
questo di solito mette a disposizione una o più opzioni per farlo.
(04:44):
Migliore è il sito, maggiore è il numero di opzioni che metterà a disposizione.
Mi raccomando, diffida dei siti che al giorno d'oggi, nel 2024,
non offrono il supporto per la 2FA.
Evita di inserirvi carte di credito o dati importanti
(05:05):
e anzi, se puoi, evita proprio di usarli questi siti.
Implementare la 2FA ormai è piuttosto semplice.
Se i gestori del sito non l'hanno fatto,
è un sintomo che probabilmente non pongono la dovuta attenzione all'aspetto della sicurezza,
a meno che non abbiano delle motivazioni particolari.
(05:29):
In generale, poi, il livello di invasività della 2FA nei processi di autenticazione
dipende molto da che cosa deve essere protetto.
La banca richiederà il secondo fattore ad ogni operazione, ad esempio.
Siti ben fatti, come GitHub o ProtonMail,
(05:52):
la richiederanno alla prima autenticazione da un nuovo browser
e poi solo nel caso in cui si cerchi di accedere o modificare impostazioni e informazioni particolarmente importanti.
In ogni caso, quale che sia il momento in cui viene richiesto il secondo fattore,
le moderne opzioni sono essenzialmente cinque.
(06:15):
Anzi, per essere precisi, diciamo che le cinque che ti sto per elencare
sono quelle più comuni, perché in casi speciali ci si potrebbe inventare di tutto.
La prima tipologia di 2FA, intendo proprio nel senso di apparizione temporale,
è quella basata su SMS o chiamata telefonica,
(06:40):
in rari casi anche su e-mail, come nel caso di Steam, ad esempio.
In pratica, funziona inviando un codice al numero telefonico
o all'indirizzo e-mail che l'utente ha indicato qua.
Al momento della richiesta del secondo fattore da parte del sito,
viene inviato un SMS o un e-mail contenente un codice,
(07:04):
oppure se l'utente lo richiede, viene effettuata una chiamata al suddetto numero
in cui la voce registrata recita tale codice per un paio di volte.
In tutta onestà, questa è la meno sicura possibilità,
In tutta onestà, questa è la meno sicura e meno efficiente
(07:26):
di tutte le varie tipologie di 2FA che ti racconterò oggi.
Primo perché risente dell'intrinseca insicurezza del protocollo utilizzato.
Anche senza voler considerare le possibilità di un furto dell'e-mail o del numero,
si tratta in entrambi i casi di trasmissioni non criptate,
(07:48):
facilmente osservabili da occhi indiscreti.
E secondo perché bisogna per forza dare il numero di telefono al sito
e comunque, se non dovesse esserci campo,
non sarà nemmeno possibile ricevere l'SMS o la chiamata con il codice,
bloccando così, di fatto, l'accesso al servizio desiderato.
(08:13):
La seconda tipologia di secondo fattore, scusa il gioco di parole,
è rappresentata invece dalle cosiddette app di autenticazione.
Google Authenticator, Microsoft Authenticator e Auti
sono probabilmente le più conosciute.
(08:33):
In questo caso, il codice che rappresenta il secondo fattore
viene generato tramite l'utilizzo di un software installato solitamente sul nostro cellulare
o a volte anche sul PC o un altro dispositivo, ma ne parleremo più avanti.
Operativamente è tutto molto semplice.
Il sito chiede il codice, noi apriamo l'app,
(08:56):
leggiamo il codice presente in quel momento,
lo copiamo nel campo designato, premiamo invio e il gioco è fatto.
Funziona senza dare il numero e anche se non c'è segnale telefonico.
Terzo meccanismo di secondo fattore di autenticazione è la chiave di sicurezza.
(09:19):
Si tratta proprio di una chiavetta hardware, solitamente USB o NFC
per poter funzionare anche con gli smartphone.
Secondo gli esperti di sicurezza, il token hardware, così chiamato in gergo,
è il metodo più sicuro disponibile sul mercato consumer.
Personalmente ne uso uno con grande soddisfazione,
(09:42):
ovviamente sui siti e sui software che lo supportano, che non è cosa scontata.
Per configurare questo comodo sistema di autenticazione
serve innanzitutto comprare una chiave di sicurezza.
Io ne consiglio almeno due perché una si potrebbe sempre perdere
e poi registrarla presso ogni sito a cui siamo interessati.
(10:07):
A questo punto, per accedere, dopo l'inserimento della classica username e password,
il sito ci chiederà di inserire la chiavetta e toccare l'apposito pulsantino
oppure di avvicinarla allo smartphone.
Sicuramente tra le più comode opzioni c'è la quarta tipologia di 2FA, la notifica push.
(10:32):
Molto utilizzata dai big di internet, tipo Google o Meta,
consiste nell'inviare direttamente una notifica ai dispositivi configurati del mercato consumer.
Non bisogna comprare chiavette, configurare app specifiche,
il gestore del sito può usare semplicemente le app di sua proprietà già installate sullo smartphone.
(10:57):
Inoltre, il sistema di autenticazione si può inserire in un'app,
che può essere utilizzata da parte del mercato consumer.
Inoltre, il sistema di autenticazione può essere utilizzato da parte del mercato consumer.
Nel mio caso, ad esempio, io ho installato solo YouTube come app di Google
e quando accedo a Gmail o qualsiasi altro servizio,
(11:20):
ogni notifica di autenticazione mi arriva tramite quest'app.
Per contro, però, nel marasma di notifiche che riceviamo ogni giorno,
potrebbe facilmente accadere di autenticare per sbaglio un tentativo di accesso fraudolento.
(11:42):
Infine, abbiamo il più particolare dei metodi di 2FA,
quello biometrico, in cui il fattore di autenticazione è la nostra impronta o il nostro viso,
come nel caso del lettore dello smartphone o del Face ID di Apple.
Anche in questo caso, viene sfruttato qualcosa che già possediamo
(12:06):
e i dati biometrici stanno venendo utilizzati sempre di più anche per il cosiddetto accesso passwordless,
cioè senza utilizzo di password.
Il problema di questo approccio, però, è che viso o impronte possono essere replicati con vari metodi
e sta molto alla qualità del dispositivo riuscire a distinguere un soggetto vero da uno falso.
(12:33):
E inoltre, dato che alla fine le scansioni biometriche vengono convertite in dati,
in caso di furto di questi ultimi, beh, non sono mica così semplici da cambiare come una password.
Fatta questa veloce carrellata di metodi a disposizione, però,
(12:56):
non ci discostiamo troppo dall'argomento principale di oggi
e torniamo quindi a parlare di OTP.
Le OTP sono quelle brevi password, solitamente composte da 6 cifre decimali,
che vengono richieste all'utente in caso abbia scelto come fattore di autenticazione
la prima o la seconda tipologia che abbiamo menzionato,
(13:20):
insomma, quella basata su SMS o e-mail,
oppure quella basata su specifiche app di autenticazione.
In entrambi questi casi il funzionamento è abbastanza semplice,
che sia inviata da un server o che sia generata dall'app,
la OTP ha una durata breve, tipicamente 30 o 60 secondi,
(13:43):
e se non è inserita entro il lasso di tempo definito, diventa inutile.
Il metodo basato su SMS e quello basato su app possono apparire simili, se non identici,
ma ciò dipende dal fatto che come utenti abbiamo una visione parziale
del funzionamento dell'intero sistema.
(14:04):
Nel pratico esistono vari meccanismi di OTP che funzionano in modi diversi
e con logiche sottostanti diverse.
Capirne e conoscerne qualche dettaglio può essere molto comodo quando li si va a utilizzare.
Oggi noi parleremo dei tre più diffusi, cioè le OTP basate su trasmissione,
(14:27):
quelle basate sul tempo e quelle basate su hashing.
Togliamoci subito davanti le OTP più semplici, quelle inviate per e-mail o SMS.
Sono definite Trasmission Based OTP e consistono in un codice che viene generato
(14:48):
dal server del sito tramite un suo algoritmo e spedito appunto via email
Questo codice ha una durata più o meno breve e quando l'utente lo inserisce
il sito non fa altro che controllare che il numero inserito corrisponda a quello
(15:09):
generato e inviato e che non sia passato troppo tempo.
Come già detto, questo non è così semplice.
Come già detto, questo non è un metodo molto sicuro per tutta una serie di ragioni
e ora che ti ho svelato il trucco posso dirti che non è nemmeno particolarmente comodo
(15:32):
perché di solito si può specificare solo un indirizzo e-mail o un numero di telefono
e a volte i messaggi arrivano in ritardo rendendo inutilizzabile il codice.
Molto più interessante del precedente è invece il metodo della TOTP
cioè delle Time Based One Time Password.
(15:55):
Sono i codici che solitamente configuriamo all'interno di app come
Auty o Google Authenticator e sono basate, indovina un po', sull'orario.
Semplicemente, e dico semplicemente solo perché ne parliamo senza approfondire i dettagli,
al momento della configurazione iniziale di una TOTP il server genera un valore detto
(16:19):
SEME o in inglese SEED.
Questo valore, inserito in una particolare funzione matematica insieme all'orario corrente,
genera l'indirizzo e-mail.
La particolare funzione matematica insieme all'orario corrente
genera le 6 cifre che dobbiamo inserire come secondo fattore di autenticazione.
(16:41):
Ogni 30 secondi sia il server che il dispositivo in cui abbiamo configurato la 2FA
ricalcolano le 6 cifre utilizzando la stessa formula, lo stesso SEME e lo stesso orario corrente
ottenendo sempre entrambi lo stesso identico risultato.
L'algoritmo di generazione ed il SEME, che ovviamente devono essere noti a entrambi,
(17:06):
server e dispositivo, vengono scambiati al momento della configurazione
quando all'utente viene chiesto di scansionare un codice QR
e poi di inserire la prima OTP per prova.
SEME
Molto simile al precedente è poi il metodo chiamato HOTP
(17:30):
che funziona quasi come la TOTP
solo che si basa sull'utilizzo di un contatore al posto dell'orario.
Il concetto è esattamente lo stesso, server e dispositivo generano entrambi il proprio codice
e se tutto funziona correttamente i due codici risultano uguali e possono essere utilizzati come autenticazione
(17:55):
ma la differenza con TOTP sta nel fatto che i codici non si aggiornano con scadenza regolare
ma solo quando l'utente tenta un accesso.
A seguito di tale evento un contatore avanza e viene generata la relativa sequenza di 6 numeri.
Esistono molte varianti di questa HOTP che differiscono fondamentalmente per l'algoritmo di generazione utilizzato
(18:23):
ma qualsiasi sia la variante può essere configurata e utilizzata tramite QR code o scambio di informazioni di altro tipo.
Microsoft Authenticator ad esempio richiede l'inserimento di username e password dell'account Microsoft.
Una differenza interessante rispetto alle HOTP basate sul tempo è che in quelle basate su hashing
(18:48):
se si tentano più accessi senza inserire il codice i contatori di server e dispositivo possono disallinearsi
ed è necessario fare più tentativi affinché i due valori tornino a combaciare.
E veniamo dunque al cuore di questo episodio.
Ora che abbiamo visto a grandi linee come funzionano TOTP e HOTP
(19:13):
che cosa ce ne facciamo di queste informazioni?
Come ci aiutano ad utilizzare meglio la nostra autenticazione a due fattori?
Beh, innanzitutto cominciamo col dire che la 2FA va utilizzata.
Si tratta di un livello di sicurezza ormai imprescindibile nel 2024 quindi per favore attivala dovunque.
(19:36):
In più aggiungiamo o in realtà ripetiamo che ov'è possibile va utilizzato un metodo diverso
da quello della HOTP inviata tramite sms o email.
Dico ov'è possibile perché a volte non ci sono alternative
e in questi casi una 2FA basata su sms è sempre meglio di nessuna 2FA.
(19:59):
Detto questo però facciamo un piccolo ragionamento su quanto spiegato fino ad ora.
Abbiamo detto che esiste un seme o contatore e un algoritmo
e che questi sono condivisi tra server e dispositivo.
Al momento dell'attivazione il server fornisce tramite QR code tutte le informazioni necessarie al dispositivo
(20:24):
per generare correttamente l'HOTP di cui avremo bisogno in futuro.
Per funzionare dunque il metodo delle HOTP basate su tempo o su contatore
non necessita di alcuna comunicazione tra server e app di autenticazione.
Tutto quello che serve è già stato comunicato in fase di attivazione.
(20:45):
Conoscere questo semplice fatto tuttavia rappresenta un vantaggio non da poco.
Se sappiamo che i due sistemi sono totalmente indipendenti
possiamo attuare tutta una serie di comportamenti che possono renderci la vita molto più semplice
quando abbiamo a che fare con le nostre autenticazioni a due fattori.
Innanzitutto, ad esempio, possiamo configurare più dispositivi per generare la stessa HOTP.
(21:12):
È un problema che molti mi hanno paventato.
Se quando ne ho bisogno non ho accesso al dispositivo con la HOTP
se non voglio portarlo sempre con me
se siamo in due o più persone a dover utilizzare un unico account
e dobbiamo sempre farci mandare la HOTP da chi ha il dispositivo in quel momento
(21:34):
beh, questi sono tutti limiti che ora che sappiamo come funziona il sistema
possiamo facilmente aggirare.
Se il dispositivo per generare la HOTP è totalmente indipendente dal server
allora perché non ne posso configurare un secondo o un terzo?
Quale che sia l'app utilizzata o il software
(21:56):
gli basteranno il seme, l'algoritmo e l'orario corrente
niente che non possa risiedere su tutti i dispositivi di cui dispongo.
Ecco, ora dovrebbe essere ovvio
ma io ho visto tecnici non sapere di poter configurare la HOTP per la 2FA
ho visto persone disattivare e riattivare la 2FA
(22:21):
ogni volta che volevano aggiungere o cambiare un dispositivo
dovendone configurare la prima volta uno, la seconda due e così via
e la lista è lunga
ho scoperto che moltissimi, persino informatici di mestiere
hanno scoperto che la HOTP può essere configurata per due dispositivi
(22:43):
moltissimi, persino informatici di mestiere
non sanno, pur avendone la necessità
utilizzare questi sistemi in maniera efficiente ed efficace
a questo proposito può essere utile anche parlare di come funziona
l'operazione di configurazione di una HOTP via app
così che tu che mi ascolti sia in grado di configurarla
(23:07):
nei modi e nei tempi che ritieni adatti a te
con il minimo sforzo possibile
hai presente quando attivi la 2FA e compare il codice QR da scansionare?
ecco, questo è solo il comportamento di default scogitato dai gestori dei siti
per, secondo loro, semplificare al massimo l'esperienza utente
(23:31):
e, secondo me invece, lasciarlo nell'ignoranza
in verità, se osservi bene, in tantissimi casi
nella mia esperienza solo una volta non è stato così
sotto a quel codice QR c'è un piccolo link con scritto
non posso scansionare il codice in questo momento
(23:53):
o qualcosa del genere
se clicchi tale link vedrai che ti appariranno tutti i dati
per configurare manualmente l'app di HOTP
il seme, l'algoritmo, il lasso di tempo e gli altri parametri
ed ecco che il gioco è fatto
hai tutte le informazioni per fare quello che vuoi
(24:14):
con il tuo codice per accedere al tuo account
io, per esempio, li configuro tutti nel mio password manager
anziché nelle app per smartphone
perché mi trovo molto meglio ad utilizzarlo così
sincronizzo i database tramite cloud
e ho tutti gli HOTP sul Mac, su Windows, su iPhone, ecc
(24:36):
e se ti sta venendo il dubbio
su quanto sicura possa essere questa pratica
ricorda sempre che, come ti ho detto all'inizio dell'episodio
i miei password manager hanno ben 3 fattori di autenticazione
quindi sono più sicuri di un qualsiasi smartphone
con PIN o impronta digitale
ad ogni modo, il punto è che
(24:58):
conoscendo le informazioni nascoste nel QR della tua HOTP
hai il pieno controllo sulle tue credenziali di 2FA
e puoi configurarle e riconfigurarle dove ti pare
e dove ritieni che per te siano più sicure e comode
(25:21):
per concludere, se vuoi un consiglio da amico
pensa seriamente ad iniziare ad utilizzare una chiave hardware
è un modo molto sicuro e comodo di gestire un sacco di autenticazioni
perché in realtà non servono solo come secondo fattore
ma permettono anche di memorizzare chiavi SSH
(25:43):
HOTP in generale, accedere ai sistemi operativi, ecc
ti lascio il link in descrizione alla Yupico
che utilizzo io e con la quale mi trovo veramente bene
a suo tempo me la consigliò Francesco Tucci del podcast Pillole di Bit
e devo dire che gli sono molto grato per avermi fatto scoprire questo mondo
(26:07):
anzi, ti lascio il link anche al suo podcast in descrizione
se non lo conosci e ti interessa l'argomento di oggi
non puoi assolutamente perderti Pillole di Bit
e lo so che la chiavetta costicchia un po'
e che ti ho anche detto che dovresti prenderne almeno due
però ti svelo un trucco
(26:29):
fai come ho fatto io
che ne ho comprata una per me e una per mia moglie
ogni volta che configuriamo la chiave di uno dei due ad un qualsiasi servizio
inseriamo anche quella dell'altro
così in caso una delle due dovesse essere persa o si rompesse
noi avremmo comunque l'altra per non rimanere bloccati fuori dai account
(26:54):
comprala per tuo fratello, per tuo figlio, tua madre
insomma una persona affidata e configurale allo stesso modo
poi nell'utilizzo quotidiano ognuno userà la propria per conto suo
fidati, mi ringrazierai
Bene, spero che questo viaggio nel funzionamento di una misura di sicurezza
(27:16):
della quale non si può fare ormai a meno
ti abbia dato qualche informazione in più su come utilizzarla al meglio
ti ricordo che se acquisterai la chiave partendo dal link in descrizione
tu non pagherai un centesimo in più
tu non pagherai un centesimo in più
ma una piccola parte della cifra andrà a Pensieri in Codice
(27:39):
e servirà a supportare il progetto
detto questo ringrazio i donatori mensili
Edoardo e Carlo
e ti ricordo che Pensieri in Codice è un progetto indipendente
che si sostiene solo grazie al mio impegno e al supporto dei vari sostenitori
niente pubblicità, niente sponsor
e da poco anche niente tracciamento con il nuovo feed self-hosted che trovi sul sito
(28:06):
quindi se vuoi dare una mano e contribuire anche tu alle spese
trovi tutti i dettagli su pensieriincodice.it
e se doni almeno 10€ hai diritto a ricevere stickers e segnalibro
basta che mi fai avere un indirizzo a cui spedirli
che mi puoi scrivere via email o su telegram
(28:27):
se lo preferisci puoi dare una mano anche condividendo il podcast
e parlandone ai potenziali ascoltatori
più persone riusciamo a raggiungere e più il progetto potrà crescere sotto tutti gli aspetti
prima di lasciarti oggi ti ricordo anche un po' di appuntamenti interessanti
organizzati dai partner di Pensieri in Codice
(28:49):
il 7 e l'8 marzo a Firenze si terrà l'Open Source Day 2024
organizzata dai ragazzi della community Schrödinger Hut
l'edizione dello scorso anno è stata un successone
io c'ero lì a Firenze e non dubito che sarà lo stesso anche quest'anno
ingresso gratuito
il 14 e 15 invece sempre di marzo si terranno due conferenze organizzate dal GRUSP
(29:17):
rispettivamente il Developer Experience Day e l'incontro DevOps Italia
altri due eventi a cui parteciperò anche se in remoto perché li trovo veramente interessanti
tutti i link a conferenze e partner li trovi sempre in descrizione
dunque direi che per oggi non c'è altro
io ti saluto, ti do appuntamento al prossimo episodio
(29:41):
e ti ricordo che un informatico risolve problemi a volte anche usando il computer
Sottotitoli e revisione a cura di QTSS