HomeBlogCodice OTP: cos’è, come funziona e perché è sicuro
API Insights

Codice OTP: cos’è, come funziona e perché è sicuro

One-Time Password (OTP): cosa sono, come vengono generate e perché sono cruciali per la sicurezza online

OTP

Il codice OTP è una password usa e getta generata in modo casuale che viene usata in associazione a un’altra password nell’autenticazione a due fattori per aumentare la sicurezza dei servizi online. 

L’OTP può apparire su un display che si aggiorna a cadenza regolare oppure può essere condivisa con l’utente tramite SMS, email o app dedicate. In ogni caso, il codice OTP può essere usato per un’unica operazione, dopodiché diventa inutilizzabile.

Cos’è il codice OTP?

L’OTP (one-time password) è una password monouso che può essere usata per accedere a piattaforme informatiche, verificare la propria identità e autorizzare diverse operazioni online, dalla registrazione di un nuovo account alla disposizione di un bonifico tramite home banking.

Noto anche come OTAC (one-time authorization code), il codice OTP è una combinazione casuale di numeri che permette di superare le limitazioni delle password “statiche”, tradizionalmente esposte ad attacchi informatici di vario tipo. 

Il codice OTP viene spesso utilizzato in associazione a un’altra password, come componente fondamentale della cosiddetta Two-Factors Authentication (2FA, autenticazione a due fattori). L’esempio più classico è l’accesso a un servizio online in cui, dopo aver inserito username e password, viene richiesto di inserire un OTP ricevuto via SMS, email o tramite applicazione sul proprio smartphone. 

L’OTP, che può essere usata una sola volta e ha spesso una validità limitata nel tempo, garantisce che l’operazione venga eseguita dalla persona che detiene un certo dispositivo (il token fisico o lo smartphone su cui si riceve l’OTP) oppure che sia a conoscenza di alcune informazioni, come un codice PIN.

Come funziona il codice OTP?

Per essere sicuro, il codice OTP deve essere impossibile da indovinare o dedurre, motivo per cui si tratta sempre di una sequenza casuale, generalmente numerica, che viene comunicata tramite canali sicuri come SMS e token.

Ma come viene generato un codice monouso? In termini molto semplici, possiamo dire che il codice OTP è il “riassunto” di una più o lunga serie di calcoli che partono essenzialmente da due dati di input: il primo è sempre una chiave segreta condivisa tra server e utente (le credenziali di accesso, un codice PIN, etc.), mentre il secondo può variare. 

Gli algoritmi di generazione dell’OTP possono essere basati sulla password precedente, sulla sincronizzazione tra il server di autenticazione e il dispositivo dell’utente, e quindi sull’orario, o semplicemente su un numero random. 

In ogni caso, le password usa e getta sono il risultato di algoritmi complessi e non invertibili, ovvero che non permettono di risalire all’input originale a partire dall’output. Quando usiamo un codice OTP per confermare un’operazione o per accedere a un servizio che richiede un’autenticazione a due fattori, quindi, aggiungiamo un ulteriore livello di sicurezza dato da due elementi fondamentali: la casualità del risultato e la complessità dei calcoli necessari a ottenerlo.

TOTP e HOTP: cosa sono e differenze

Come dicevamo, l’OTP viene generato a partire da due dati di input: una chiave segreta condivisa e un secondo dato che può variare. Quest’ultimo può essere basato sulla sincronizzazione temporale di due dispositivi, su un contatore che tiene traccia del numero di iterazioni oppure su una cifra casuale che può essere a sua volta generata nei modi più disparati.

Riassumendo, gli approcci più diffusi per la generazione di codici OTP sono:

  • TOTP (Time-based One-Time Password): questo tipo di algoritmo richiede la sincronizzazione tra il server di autenticazione e il dispositivo dell’utente, poiché genera costantemente OTP validi per un brevissimo periodo di tempo, tipicamente 30 o 60 secondi. Può essere usato in presenza di token fisici (hardware security token) o di applicazioni proprietarie (soft token);
  • Challenge-response: negli OTP di questo tipo, il server genera un dato casuale (la “challenge”) e lo invia all’utente, che usando la chiave segreta condivisa e uno specifico algoritmo, anch’esso condiviso, genera una risposta univoca a quella specifica richiesta. Se l’utente risponde correttamente (es.: riceve l’SMS o l’email), allora è autenticato. Il meccanismo di sfida-risposta, invisibile agli occhi dell’utente finale, è tra i più diffusi in quanto estremamente flessibile e adattabile a diversi token OTP;
  • HOTP (Hash-based Message Authentication Code One-Time Password): in questo caso le password sono basate su una stringa casuale che viene mappata in una stringa di una data lunghezza tramite una funzione di hash crittografica non invertibile. Questo tipo di algoritmo sfrutta una chiave segreta condivisa e un contatore che tiene traccia degli eventi. Si tratta infatti di algoritmi event-driven, in cui la password viene generata in seguito a un’operazione dell’utente. Ciò significa che l’OTP resta valido fino alla generazione di un nuovo codice. Tramite questo metodo è possibile assegnare un nuovo codice dopo ogni utilizzo oppure su richiesta dell’utente, che può aggiornare manualmente le sue password usa e getta.

OTP via SMS, email o token fisico: che cambia?

Il codice OTP così generato può essere condiviso con l’utente finale tramite diversi canali. Le TOTP, per esempio, che dipendono dalla sincronizzazione dei dispositivi, possono essere condivise su appositi dispositivi hardware, come OTP display o smart card oppure utilizzando dei cosiddetti soft token, generalmente delle applicazioni sincronizzabili come Google Authenticator e altri gestori password.

Nelle HOTP, invece, è sufficiente che il dispositivo dell’utente sia sincronizzato con il contatore del server, che aumenta ogni volta che viene generato un codice. Gli OTP generati tramite hash possono essere inviati via SMS, anche se si prediligono token fisici e applicazioni specifiche per smartphone.

Nei codici OTP generati a partire da un dato randomico, infine, l’elemento di sincronizzazione è dato dalla challenge specifica (che cambia ad ogni tentativo di accesso): la sicurezza poggia sul segreto condiviso tra server e utente, per cui le password possono essere inviate via SMS, via email o in altro modo, senza grandi limitazioni. 

OTP: perché è cruciale per la sicurezza online

Nonostante restino esposte, seppur minimamente, ad alcuni attacchi informatici, le password usa e getta sono sempre più diffuse. Le OTP, infatti, riducono significativamente il rischio legato alle password compromesse e agli attacchi informatici, rendendo le operazioni online più sicure.

Il fatto che possano essere condivise in tempo reale tramite canali estremamente accessibili come SMS, email e applicazioni da scaricare sullo smartphone, rende le password monouso anche molto semplici da implementare nei propri sistemi. 

Le password usa e getta sono inoltre uno strumento essenziale in materia di compliance: le normative sulla protezione dei dati come il GDPR, infatti, richiedono meccanismi di autenticazione robusti per la protezione dei dati sensibili. Le password OTP, quindi, possono essere utilizzate per garantire la conformità alla normativa in operazioni delicate come la firma digitale di un documento.

OTP: cos'è e come funziona
Condividi su