Passa al contenuto principale

OTP (One-time password)

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

La sua applicazione permette di ovviare ai problemi di sicurezza che la password tradizionale (statica) si portava dietro; per esistere è richiesta in back-end (a livello di hardware e software) una tecnologia supplementare, vedi ad esempio i supporti che una volta venivano 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.

1. 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.

2. Mmatematici

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 di questa 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).

3. 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 propria chiave privata; una volta crittografata provvede a rinviare la challenge crittografa al server che nel frattempo provvede a crittografare quella inviata precedentemente con la chiave privata associata all’utente che ha in memoria.

Se il valore calcolato dall’utente è uguale al valore calcolato dal server, allora l’autenticazione è autorizzata.