One-time password

Da Wikipedia, l'enciclopedia libera.

Una One-Time Password (password valida una sola volta) è una password che è valida solo per una singola sessione di accesso o una transazione. La OTP evita una serie di carenze associate all'uso della tradizionale password (statica). Il più importante problema che viene risolto da OTP è che, al contrario della password statica, esso non è vulnerabile agli attacchi con replica. Ciò significa che, se un potenziale intruso riesce a intercettare una OTP che è stata già utilizzata per accedere a un servizio o eseguire una transazione, non sarà in grado di riutilizzarla, in quanto non sarà più valida. D'altra parte, una OTP non può essere memorizzata da una persona. Essa richiede quindi una tecnologia supplementare per poter essere utilizzata (un dispositivo fisico con la calcolatrice OTP incorporata, o un numero di cellulare specifico).[1] Le OTP possono essere utilizzate come unico fattore di autenticazione, o in aggiunta ad un altro fattore, come può essere la password dell'utente, i dati della carta di credito o un PIN.

Come sono generate e memorizzate le OTP[modifica | modifica wikitesto]

Gli algoritmi OTP che sono stati realizzati sono abbastanza diversi tra loro. Ciò che li accomuna è che ogni OTP viene generata applicando una funzione crittografica ad una serie di valori univoca. Questo è necessario perché altrimenti sarebbe facile prevedere la OTP futura osservando quelle precedenti. I vari approcci per la generazione di OTP sono elencati di seguito:

  • Algoritmi basati sulla sincronizzazione temporale tra server di autenticazione e client che fornisce la password: le OTP sono valide solo per un breve periodo di tempo, il valore da cui viene generata la OTP è l'ora corrente.
  • Algoritmi matematici che generano una nuova password in base alla password precedente. Il valore da cui viene generata la OTP è un numero all'interno di una sequenza predefinita (le OTP sono, di fatto, una catena di password legate tra loro, e devono essere utilizzate in un ordine predefinito).
  • Algoritmi matematici dove la password è basata su una challenge (per esempio, un numero casuale scelto dal server di autenticazione o dai dettagli della transazione) e/o su un contatore.

Metodi per generare l'OTP[modifica | modifica wikitesto]

Sincronizzazione Temporale[modifica | modifica wikitesto]

Un OTP basato sulla sincronizzazione temporale è generalmente collegato a un componente hardware chiamato token (sicurezza), ad ogni utente viene assegnato un token personale per generare le proprie OTP. Il token è dotato di un orologio interno, che è stato sincronizzato con l'orologio sull'autenticazione proprietaria server. Su questi sistemi OTP, il tempo è una parte importante dell'algoritmo di generazione delle password, poiché la generazione di nuove password si basa sul tempo corrente anziché, o in aggiunta, sulla password precedente o su chiave privata. Questo token può essere un dispositivo proprietario, un telefono cellulare o simile dispositivo mobile che esegue software che è proprietario, gratuito o open source.

Algoritmi Matematici[modifica | modifica wikitesto]

Ogni nuova OTP deriva dalla precedente utilizzata. Un esempio di questo algoritmo, accreditato a Leslie Lamport utilizza una funzione unidirezionale (chiamiamola f), esso funziona come segue:

  1. Un seme (valore iniziale) s viene scelto.
  2. Una funzione di hash f(s) viene applicata ripetutamente (ad esempio 1000 volte) (Catena di Hash) al seme generando un nuovo valore. Questo valore, che chiameremo f1000(s) è memorizzato nel sistema di destinazione.
  3. Il primo accesso dell'utente utilizza una password p derivata applicando f 999 volte al seme, ovvero f999(s). Il sistema di destinazione può autenticare che questa è la password corretta, perché f(p) è f1000(s), che è il valore memorizzato. Il valore memorizzato viene quindi sostituito da p e l'utente può accedere.
  4. Il prossimo login, deve essere accompagnato da p=f998(s). Di nuovo, questo può essere convalidato perché applicando f(p) si ottiene f999(s) che è il valore memorizzato dopo il login precedente. Di nuovo, il nuovo valore di p sostituisce quello precedente e l'utente è autenticato.
  5. La procedura può essere ripetuta altre 997 volte, dopo di che è necessario scegliere un nuovo seme con cui inizializzare il dispositivo.

Le funzioni di hash sono progettate per essere estremamente difficili da invertire, quindi un utente malintenzionato dovrebbe conoscere il seed iniziale per calcolare le password possibili, mentre in senso inverso, il sistema può confermare che la password in ogni occasione è valida controllando che, una volta applicata la funzione di hash, il valore ottenuto sia quello precedentemente utilizzato per l'accesso.

Per ottenere la password successiva nella serie dalle password precedenti, è necessario trovare un modo per calcolare la funzione inversa f-1. Poiché f è stato scelto per essere unidirezionale, questo è estremamente difficile da fare. Se f è una funzione crittografica di hash, che è il caso generale, è (per quanto è noto) un compito computazionalmente irrealizzabile. Un intruso che riesce ad ottenere una OTP può avere accesso per un periodo di tempo o per una sessione, ma diventa inutile una volta scaduto quel periodo. Il sistema di one-time password S/KEY e il relativo OTP token derivato sono basati sullo schema di Lamport.

Challenge[modifica | modifica wikitesto]

Nei sistemi di OTP basati su una challenge il server invia all'utente la challenge, l'utente la inserisce nel suo dispositivo OTP, ed esso provvede a crittografarla usando la propria chiave privata; nel frattempo anche il server provvede a crittografare la challenge con la chiave privata associata all'utente, l'utente invia la challenge crittografata al server e se il valore calcolato dall'utente è uguale al valore calcolato dal server, allora l'autenticazione è autorizzata.

Metodi di distribuzione dell'OTP[modifica | modifica wikitesto]

Cellulari[modifica | modifica wikitesto]

Una tecnologia comune utilizzata per la consegna delle OTP è la messaggistica di testo. Poiché la messaggistica di testo è un canale di comunicazione onnipresente, essendo direttamente disponibile in quasi tutti i telefoni cellulari e, attraverso la conversione da testo a voce, a qualsiasi telefono cellulare o fisso, la messaggistica di testo ha un grande potenziale per raggiungere tutti i consumatori con un costo totale basso. Tuttavia, il costo della messaggistica di testo per ogni OTP potrebbe non essere accettabile per alcuni utenti. L'OTP sulla messaggistica di testo può essere crittografato utilizzando uno standard A5/x, che diversi gruppi di hacking riportano possano essere decifrati con successo in pochi minuti o secondi.[2][3][4][5] Inoltre, i difetti di sicurezza nel protocollo di routing SS7 possono e sono stati utilizzati per reindirizzare i messaggi di testo con le OTP agli aggressori; nel 2017 diversi clienti di O2 in Germania sono stati violati in questo modo per ottenere l'accesso ai loro conti di mobile banking. A luglio 2016, il NIST statunitense ha pubblicato una bozza di una pubblicazione speciale con linee guida sulle pratiche di autenticazione, che scoraggia l'uso di SMS come metodo di implementazione dell'autenticazione a due fattori fuori banda, a causa della capacità di intercettare SMS su scala.[6][7]

Sugli smartphone, le OTP possono anche essere consegnate direttamente tramite app, incluse app di autenticazione dedicate come Authy, Duo e Google Authenticator o all'interno di un'app del fornitore di servizio, come nel caso di Steam. Questi sistemi non condividono le stesse vulnerabilità di sicurezza degli SMS e non richiedono necessariamente una connessione a una rete mobile da utilizzare, poiché sono basati su Internet. [8][9][10]

Token Proprietari[modifica | modifica wikitesto]

RSA SecurID token (sicurezza).
Carta di credito con OTP di tipo challenge integrato.

EMV sta iniziando a utilizzare un algoritmo challenge-response (chiamato "Chip Authentication Program") per le carte di credito in Europa. D'altra parte, nel controllo degli accessi per le reti di computer, SecurID di RSA Security e HID Global sono esempi di token a sincronizzazione temporale. I problemi principali dei token fisici sono che questi possono essere persi, danneggiati o rubati; inoltre, vi è un inconveniente legato alla vita delle batterie, specialmente per i token senza una funzione di ricarica o una batteria sostituibile. Una variante del token proprietario è stata proposta da RSA nel 2006 ed è stata descritta come "autenticazione onnipresente", in cui RSA collaborerebbe con i produttori per aggiungere i chip SecurID fisici a dispositivi come i telefoni cellulari.

Yubico offre un piccolo token USB con un chip incorporato che crea un OTP quando viene premuto un tasto e simula una tastiera per facilitare l'inserimento di una password lunga.[11] Poiché si tratta di un dispositivo USB, evita l'inconveniente della sostituzione della batteria.

Metodi Web-based[modifica | modifica wikitesto]

I provider di autenticazione come servizio offrono vari metodi basati sul Web per la consegna di OTP senza la necessità di token fisici. Google fornisce un servizio di generazione OTP chiamato Google Authenticator disponibile come applicazione mobile per Android, iOS e BlackBerry OS.

Copia cartacea[modifica | modifica wikitesto]

Carta di credito con OTP ricoperte da strato da grattare.

Nell'online banking di alcuni paesi, la banca invia all'utente un elenco numerato di OTP stampati su carta. Altre banche inviano carte plastificate con uno strato che l'utente deve grattare per rivelare un OTP numerato. Per ogni transazione online, l'utente è tenuto a inserire un OTP specifico da quella lista. Alcuni sistemi richiedono sequenzialmente le OTP numerate, altre scelgono in modo pseudo-casuale un OTP da inserire. In Germania e in molti altri paesi come Austria e Brasile [12], queste OTP sono in genere chiamate TAN ("Transaction Authentication Number"). Alcune banche addirittura inviano tali TAN al telefono cellulare dell'utente tramite SMS, in quel caso vengono chiamate mTAN ("mobile TAN").

Confronto tra tecnologie[modifica | modifica wikitesto]

Confronto tra le implementazioni di OTP[modifica | modifica wikitesto]

Le soluzioni OTP più economiche sono quelle che forniscono OTP su carta e quelle che generano OTP su un dispositivo esistente, senza i costi associati alla (ri) emissione di token di sicurezza elettronici proprietari e alla messaggistica SMS.

Per i sistemi che si basano su token elettronici, i generatori OTP basati su algoritmi devono far fronte alla situazione in cui un token si de-sincronizza con il proprio server se il sistema richiede che l'OTP venga immesso entro una scadenza. Ciò comporta un ulteriore costo di sviluppo. D'altro canto, i sistemi a sincronizzazione temporale evitano questo a spese di dover mantenere un orologio nei token elettronici (e un valore di offset per tenere conto della differenza di frequenza tra l'orologio del dispositivo e quello del server). Che l'OTP sia sincronizzato nel tempo è sostanzialmente irrilevante per la vulnerabilità, ma evita la necessità di reinserire le password nel caso in cui il server e l'OTP si siano de-sincronizzati al punto che il server chiede una password precedente o successiva a quella che dovrebbe chiedere.

L'utilizzo di un dispositivo mobile esistente evita la necessità di ottenere e trasportare un generatore OTP aggiuntivo. La batteria può essere ricaricata; a partire dal 2011 la maggior parte dei dispositivi di piccole dimensioni non ha batterie ricaricabili o sostituibili. Tuttavia, la maggior parte dei token proprietari ha caratteristiche a prova di manomissione.

OTP rispetto ad altri metodi di protezione dei dati[modifica | modifica wikitesto]

Le OTP sono vulnerabili agli attacchi di social engineering in cui i phisher rubano le OTP ingannando i clienti nel fornire una o più OTP che hanno usato in passato. Alla fine del 2005, i clienti di una banca svedese furono indotti a rivelare la loro successiva OTP.[13] Nel 2006 questo tipo di attacco è stato utilizzato contro i clienti di una banca statunitense.[14] Anche gli OTP a sincronizzazione temporale sono vulnerabili al phishing, con due metodi: la password può essere utilizzata più rapidamente dall'attaccante come utente legittimo, se l'hacker può ottenere in modo sufficientemente rapido l'OTP. L'altro tipo di attacco - che può essere sconfitto dai sistemi OTP che implementano la catena di hash come discusso sopra - è che il phisher utilizzi le informazioni acquisite (passati codici OTP che non sono più validi) con questo metodo di social engineering per prevedere quali OTP saranno utilizzate in futuro. Ad esempio, un generatore di password OTP che è pseudo-casuale piuttosto che casuale potrebbe essere compromesso, poiché i numeri pseudo-casuali, a differenza di quelli realmente casuali, sono spesso prevedibili una volta che si hanno i codici OTP passati. Un sistema OTP può utilizzare solo OTP veramente casuali se l'OTP è generato dall'autenticatore e trasmesso (presumibilmente fuori banda) all'utente; in caso contrario, l'OTP deve essere generato in modo indipendente da ciascuna parte, rendendo necessario un algoritmo ripetibile e quindi semplicemente pseudo-casuale.

Sebbene gli OTP siano in qualche modo più sicuri di una password statica memorizzata, gli utenti dei sistemi OTP sono ancora vulnerabili agli attacchi man-in-the-middle. Le OTP non dovrebbero pertanto essere divulgate a terze parti e l'utilizzo di un OTP come fattore di autenticazione aggiuntivo è più sicuro rispetto all'utilizzo di OTP come unico fattore di autenticazione. Un modo per implementare l'autenticazione a più livelli consiste nell'utilizzare un OTP in combinazione con una password che viene memorizzata dall'utente (e mai trasmessa all'utente, come spesso accade negli OTP).

Standardizzazione[modifica | modifica wikitesto]

Molte tecnologie OTP sono brevettate. Ciò rende più difficile la standardizzazione in questo settore, poiché ogni azienda cerca di spingere la propria tecnologia. Esistono tuttavia degli standard, ad esempio RFC 1760 (S/KEY), RFC 2289 (OTP), RFC 4226 (HOTP) e RFC 6238 (TOTP).

Note[modifica | modifica wikitesto]

  1. ^ (EN) Juergen Haas, one-time password (S/Key)...., about.com. URL consultato il 21 maggio 2012.
  2. ^ Elad Barkan, Eli Biham e Nathan Keller, Instant Ciphertext-Only Cryptanalysis of GSM Encrypted Communication, 2003, pp. 600–16.
  3. ^ Elad Barkan, Eli Biham e Nathan Keller, Instant Ciphertext-Only Cryptanalysis of GSM Encrypted Communication by Barkan and Biham of Technion (Full Version) (PDF), su cs.technion.ac.il.
  4. ^ Tim Gueneysu, Timo Kasper, Martin Novotný, Christof Paar e Andy Rupp, Cryptanalysis with COPACOBANA (PDF), in Transactions on Computers Nov. 2008, vol. 57, 2008, pp. 1498–1513.
  5. ^ Karsten Nohl e Chris Paget, GSM: SRSLY?, 26th Chaos Communication Congress (26C3):, 27 dicembre 2009. URL consultato il 30 dicembre 2009.
  6. ^ (EN) John Fontana, NIST blog clarifies SMS deprecation in wake of media tailspin, in ZDNet. URL consultato il 14 luglio 2017.
  7. ^ David Meyer, Time Is Running Out For SMS-Based Login Security Codes, su Fortune. URL consultato il 14 luglio 2017.
  8. ^ Natt Garun, How to set up two-factor authentication on all your online accounts, su The Verge, 17 giugno 2017. URL consultato il 14 luglio 2017.
  9. ^ Russell Brandom, Two-factor authentication is a mess, su The Verge, 10 luglio 2017. URL consultato il 14 luglio 2017.
  10. ^ Michael McWhertor, Valve adds two-factor login authentication to Steam mobile app, Polygon, 15 aprile 2015. URL consultato l'8 settembre 2015.
  11. ^ Yubico AB, in Bloomberg Businessweek. URL consultato il 13 luglio 2011.
  12. ^ BRB – Banco de Brasília – BRB Banknet. Portal.brb.com.br.
  13. ^ The Register article. The Register article (2005-10-12).
  14. ^ Washington Post Security Blog. Blog.washingtonpost.com.

Voci correlate[modifica | modifica wikitesto]

Sicurezza informatica Portale Sicurezza informatica: accedi alle voci di Wikipedia che trattano di Sicurezza informatica