Algoritmo password monouso basato sul tempo
TOTP ( Time-based One-Time Password Algorithm , RFC 6238 [1] ) è un algoritmo OATH per la generazione di password monouso per l' autenticazione sicura , che è un miglioramento di HOTP (HMAC-Based One-Time Password Algorithm) . È un algoritmo di autenticazione unidirezionale: il server verifica l'identità del client . La principale differenza tra TOTP e HOTP è la generazione di password basata sul tempo, ovvero il tempo è un parametro [2] . In questo caso di solito non viene utilizzata un'indicazione esatta dell'ora, ma l'intervallo corrente con limiti prestabiliti (solitamente 30 secondi).
Storia
Dal 2004, OATH ( The Initiative for openAuthentication ) lavora al progetto One Time Password (OTP). Il primo risultato è stato HOTP (l'algoritmo OTP basato su Hash Message Authentication Code (HMAC)) pubblicato nel dicembre 2005. È stato presentato come progetto all'IETF (The Internet Engineering Task Force) [2] [3] .
Ulteriore lavoro di OATH è stato sul miglioramento di HOTP e TOTP è stato introdotto nel 2008 [4] . Questo algoritmo non utilizza un contatore per sincronizzare il client e il server, ma genera una password basata sull'ora che è valida per un certo intervallo. L'algoritmo funziona in questo modo: il client prende il valore corrente del timer e della chiave segreta, ne esegue l'hashing utilizzando una funzione hash e li invia al server, a sua volta il server esegue gli stessi calcoli, dopodiché deve solo confrontare questi valori [5] . Può essere implementato non solo sulla funzione hash SHA-1 , a differenza di HOTP, quindi la funzione hash è anche un parametro di input [2] .
Successivamente è stato introdotto un nuovo algoritmo che estende ulteriormente il TOTP. È stato introdotto nel settembre 2010 e denominato OATH Challenge-Response Algorithms (OCRA) . La principale differenza rispetto agli algoritmi precedenti è che anche il server partecipa all'autenticazione. Quindi il cliente può anche essere sicuro della sua autenticità [2] .
Come funziona
Infatti, TOTP è una variante dell'algoritmo HOTP, in cui un valore dipendente dal tempo viene sostituito come valore del contatore [1] . Denota:
- è un valore di tempo discreto utilizzato come parametro. (Misurato in unità , 8 byte)
- — intervallo di tempo durante il quale la password è valida. (Predefinito 30 sec.)
- è il tempo iniziale necessario per sincronizzare le parti. (Il valore predefinito è il tempo dall'inizio dell'era UNIX )
- - segreto condiviso.
- - ora attuale.
dove
- HMAC-SHA-1(K,T) - genera 20 byte in base alla chiave segreta e all'ora utilizzando la funzione hash SHA-1 .
- Tronca - una funzione per selezionare 4 byte in un certo modo:
denotare String — il risultato di HMAC-SHA-1(K,T); OffsetBits - 4 bit bassi di stringa ; Offset = StringToNumber(OffsetBits) e il risultato di Troncate sarà una stringa di quattro caratteri - String[Offset] ... String[Offset + 3] [6]
Vale anche la pena notare che, a differenza di HOTP, che si basa solo su SHA-1 , TOTP può anche utilizzare HMAC-SHA-256 , HMAC-SHA-512 e altre funzioni hash HMAC:
ecc. [1]
Affidabilità dell'algoritmo
Il concetto di password monouso, insieme ai moderni metodi crittografici, può essere utilizzato per implementare sistemi di autenticazione remota sicuri [5] . TOTP è abbastanza resistente agli attacchi crittografici, ma ci sono possibilità di hacking, ad esempio, una tale variante dell'attacco man-in-the-middle è possibile :
Ascoltando il traffico del client, un utente malintenzionato può intercettare l'accesso inviato e la password monouso (o un hash da essa). Quindi gli basta bloccare il computer della "vittima" e inviare i dati di autenticazione per proprio conto. Se riesce a farlo in un periodo di tempo , sarà in grado di ottenere l'accesso. Ecco perché dovresti renderlo piccolo. Ma se il tempo di scadenza della password è troppo breve, in caso di una leggera desincronizzazione, il client non sarà in grado di ottenere l'accesso [5] .
Esiste anche una vulnerabilità associata alla sincronizzazione dei timer del server e del client, poiché esiste il rischio di desincronizzazione delle informazioni sull'ora sul server e nel software e/o hardware dell'utente. Poiché TOTP utilizza il tempo come parametro, se i valori non corrispondono, tutti i tentativi di autenticazione dell'utente falliranno. In questo caso sarà impossibile anche la falsa ammissione di qualcun altro. Va notato che la probabilità di una tale situazione è estremamente piccola [5] .
Vedi anche
Note
Fonti
- Nathan Willis. OATH: ieri, oggi e domani (inglese) // LWN.net : giornale elettronico. — 2010.
- Joanne Killeen, Madison Alexander. OATH invia TOTP: specifica della password monouso basata sul tempo a IETF . Archiviato dall'originale il 23 gennaio 2013.
- M'Raihi D. , Bellare M. , Hoornaert F. , Naccache D. , Ranen O. HOTP: An HMAC-Based One-Time Password Algorithm (inglese) - IETF , 2005. - 37 p. doi : 10.17487/RFC4226
- Davletkhanov M. Il concetto di password monouso nella costruzione di un sistema di autenticazione // Byte - USA : 2006. - vol. 7-8 (95), luglio-agosto. — ISSN 0360-5280 ; 1082-7838
- Vaidya B. , Park J. H. , Rodrigues J. J. P. C. Schema di autenticazione utente basato su HOTP nelle reti domestiche // Advances in Information Security and Assurance :, ISA 2009, Seoul, Korea, June 25-27, 2009 Proceedings - Berlin , Heidelberg , New York, NY , Londra [ecc.] : Springer Berlin Heidelberg , 2009. - P. 672-681. - ( Appunti in Informatica ; Vol. 5576) - ISBN 978-3-642-02616-4 , 978-3-642-02617-1 - ISSN 0302-9743 ; 1611-3349 - doi:10.1007/978-3-642-02617-1_68
- M'Raihi D. , Machani S. , Pei M. , Rydell J. TOTP: Algoritmo password monouso basato sul tempo (inglese) - IETF , 2011. - 16 p. doi : 10.17487/RFC6238
Collegamenti
- OTP Oath HOTP TOTP PSKS DSKPP (link non disponibile) . Archiviato dall'originale il 24 gennaio 2013.