Passa al contenuto principale

Che cos'è l'OTP?

L’OTP (One Time Password), o password usa e getta, è un sistema di crittografia applicato alla sicurezza delle password; ha un tempo di validità limitato per un singolo utilizzo (sessione di accesso e/o transazione).

La sua applicazione permette di ovviare ai problemi di sicurezza della password tradizionale (statica); richiede in back-end (a livello di hardware e software) una tecnologia supplementare come, per esempio, i supporti forniti dalle banche per l’accesso alle proprie aree personali oppure all’installazione di un applicativo sul telefono personale.

L’OTP, quindi, è una password per l’autenticazione temporale, dinamica e sostanzialmente unica che permette l’autenticazione in due fattori.

L’algoritmo dell’OTP

Data la sua unicità ogni OTP ha alla base un algoritmo unico che prende dati univoci, come ad esempio:

  1. Sincronizzazione temporale;
  2. Matematici;
  3. Codice challenge.

Sincronizzazione temporale

Questo processo avviene tra i server che procedono all’autenticazione e i client; viene fornita una chiave di accesso a scadenza temporale molto breve sull’ora corrente,

Per la sua generazione, si utilizza un token, oppure un software su un dispositivo mobile, che prende il dato temporale da un orologio interno sincronizzato con l’orologio del server che procede all’autenticazione.

Matematici

La sua generazione si basa sulla OTP precedentemente generata; il processo matematico segue i seguenti passaggi:

  • scegliere un seme: s;
  • creare una funzione di Hash sul seme scelto ripetuta 1000: ƒ1000(s);
  • come risultato abbiamo 1000 password differenti una per ogni ripetuta di Hash per un massimo di 1000 ripetute p=ƒ1000(s).

La funzione di Hash si basa sulle concatenazioni ripetute (catene di Hash); in questo caso la ripetizione avviene per 1000 volte e memorizzata su server di autenticazione.

Questo processo permette all’utente di accedere 1000 volte con 1000 password differenti, la generazione della successiva a p=ƒ1000(s) sarà p=ƒ999(s) -> p=ƒ998(s) -> p=ƒ997(s) -> p=ƒ996(s) -> p=ƒ995(s) -> p=ƒ994(s) -> p=ƒ993(s) e così via dicendo fino a p=ƒ(s).

Il sistema può confermare che la password sia valida controllando che il valore ottenuto derivi dal valore utilizzato nel precedente accesso.

La generazione del codice OTP avviene con un processo difficili da invertire perché si dovrebbe conoscere il seme s per calcolare le possibili password.

L’OTP diventa inutile allo scadere del tempo. Il sistema di OTP gestito da una S/KEY (sistema per l’autenticazione su sistemi operativi Unix-like) e il relativo OTP, sviluppato tramite un token, sono basati sullo schema di Lamport (algoritmo del fornaio, i clienti strappano un numero prima di mettersi in fila ad aspettare il proprio turno. I clienti del fornaio rappresentano i task in attesa del proprio turno per eseguire la sezione critica).

Codice challenge

In questo caso il server invia all’utente il codice challenge.

L’utente inserisce il codice nel suo dispositivo che provvede alla crittografia tramite una propria chiave privata; una volta crittografata provvede a rinviare la challenge al server che nel frattempo crittografa quella inviata precedentemente con la chiave privata associata all’utente che ha in memoria.

L’autenticazione è autorizzata quando il valore calcolato dall’utente è uguale al valore calcolato dal server.