One-time password

Una one-time password, in sigla OTP, (in italiano "password (valida) una sola volta") è una password che è valida solo per una singola sessione di accesso o una transazione. Per questo l'OTP è anche detta password usa e getta o password monouso.

Una one-time password, in sigla OTP, (in italiano "password (valida) una sola volta") è una password che è valida solo per una singola sessione di accesso o una transazione. Per questo l'OTP è anche detta password usa e getta o password monouso.

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, essa 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 in quanto sarebbe inutile per lo stesso motivo. Essa richiede quindi una tecnologia supplementare per poter essere utilizzata (un dispositivo fisico con la calcolatrice OTP incorporata o un numero di cellulare specifico o un'app installata su dispositivo certificato).

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 in modo da realizzare una autenticazione a due fattori. Sebbene il nome si riferisca ad una password l'OTP può essere un codice solo numerico (situazione prevalente) e non alfanumerico (cioè la password in senso stretto).

Generazione e memorizzazione delle OTP

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.

Sincronizzazione temporale

Un OTP basato sulla sincronizzazione temporale è generalmente collegato a un componente hardware chiamato token, 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

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

Viene scelto un seme (valore iniziale) s.

Una funzione di hash f(s) viene applicata ripetutamente (ad esempio 1000 volte) (catena di hash) al seme generando un nuovo valore. Questo valore, indicato nell'esempio come f1000(s) è memorizzato nel sistema di destinazione.

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.

Il login successivo 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.

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 seme 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 è stata scelta 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.

Servizi correlati

Altre voci

Token (sicurezza)T

Token (sicurezza)

Un token per la sicurezza (dall'inglese "gettone", o "pedina") chiamato anche token hardware, token per l'autenticazione, token crittografico, o semplicemente token, è un oggetto fisico o un componente logico necessario per le autenticazioni forti, dette a due fattori.

Leggi la voce →
S

Sandbox (sicurezza informatica)

Nella sicurezza informatica, una sandbox è un meccanismo per eseguire applicazioni in uno spazio limitato. Solitamente fornisce un ristretto e controllato set di risorse al programma che deve essere testato, come un'area ristretta di memoria o un insieme di chiamate di sistema limitate; di…

Leggi la voce →
Virus (informatica)V

Virus (informatica)

Un virus, in informatica, è un software appartenente alla categoria dei malware che, una volta eseguito, infetta dei file in modo da fare copie di se stesso, generalmente senza farsi rilevare dall'utente. Il termine viene usato per un programma che si integra in qualche codice eseguibile…

Leggi la voce →
C

Crittografia quantistica

La crittografia quantistica consiste in un approccio alla crittografia che utilizza peculiari proprietà della meccanica quantistica nella fase dello scambio della chiave per evitare che questa possa essere intercettata da un attaccante senza che le due parti in gioco se ne accorgano. Si utilizza…

Leggi la voce →
Garante per la protezione dei dati personaliG

Garante per la protezione dei dati personali

Il Garante per la Protezione dei Dati Personali (GPDP), noto anche come Garante della privacy, è un'autorità amministrativa indipendente italiana istituita dalla legge 31 dicembre 1996, n. 675, per assicurare la tutela dei diritti e delle libertà fondamentali e il rispetto della dignità nel…

Leggi la voce →
P

Pretexting

Il pretexting è un tipo di attacco di ingegneria sociale che sfrutta una situazione creata ad arte dall'aggressore per attirare la vittima in una situazione vulnerabile, così da indurla con l'inganno a fornire informazioni private, in particolare informazioni che la vittima in genere non…

Leggi la voce →