La especificación TOTP apunta, para el análisis de seguridad, a HOTP . HOTP usa un contador, compartido por ambas partes, y "resincronizado" cada vez que se produce una autenticación exitosa; TOTP reemplaza ese contador con el conocimiento de la hora actual, que también es un valor compartido. Como tal, casi todo el análisis de seguridad de HOTP se aplica a TOTP.
El análisis de seguridad de HOTP utiliza las herramientas formales y las anotaciones de la criptografía, pero se reduce a siguiente suposición:
Let T denotes the time to perform one computation of H. Then if A is
any adversary with running time at most t and making at most p oracle
queries,
Adv(A) <= (t/T)/2^k + p^2/2^n
In practice, this assumption means that H is very secure as PRF.
La palabra importante aquí es PRF : significa que la función "H" (HMAC/SHA-1 ) se comporta, en la vista del atacante (que no conoce la clave) como una función elegida "al azar" entre Todas las funciones posibles. Le damos al atacante acceso a un "oráculo", que es una máquina que conoce la clave, y calcula HMAC / SHA-1 sobre las entradas elegidas por el atacante; el atacante puede enviar p tales consultas. La expresión anterior significa que incluso en estas condiciones, la probabilidad de que el atacante prediga con éxito, después de todas sus consultas, la salida de una entrada adicional (que no envió al oráculo), es todavía muy baja (la "ventaja" es qué probabilidad extra de éxito tiene el atacante por pura suerte).
En este momento, parece que HMAC / SHA-1 se comporta como un PRF. Nadie ha encontrado ninguna indicación de lo contrario. Esto se mantiene incluso ante las debilidades estructurales conocidas que parecen permitir (teóricamente) algunas colisiones SHA-1 informáticas.
A partir de este supuesto, la prueba de seguridad de HOTP (como se expone en RFC 4226) establece el siguiente resultado:
Suppose m = 10^Digit < 2^31, and let (q,r) = IntDiv(2^31,m). Let B
be any adversary attacking HOTP using v verification oracle queries,
a <= 2^c - s authenticator oracle queries, and running time t. Let T
denote the time to perform one computation of H. If Assumption 1 is
true, then
Adv(B) <= sv * (q + 1)/2^31 + (t/T)/2^k + ((sv + a)^2)/2^n
In practice, the (t/T)2^-k + ((sv + a)^2)2^-n term is much smaller
than the sv(q + 1)/2^n term, so that the above says that for all
practical purposes the success rate of an adversary attacking HOTP is
sv(q + 1)/2^n, just as for HOTP-IDEAL, meaning the HOTP algorithm is
in practice essentially as good as its idealized counterpart.
Este último párrafo es lo que está buscando: bajo el supuesto de que HMAC / SHA-1 es un PRF, se ha demostrado que el acceso a muchas contraseñas de un solo uso anteriores no le da ninguna ventaja al atacante para adivinar la siguiente, al menos no más que lo que obtendría de una versión "ideal" de HOTP en la que las contraseñas de un solo uso se obtienen mediante magia pura e impredecible.
Resumen: No hay que preocuparse. La resistencia de HOTP (y TOTP) a la situación en la que se registraron muchas contraseñas de un solo uso anteriores es parte del modelo de seguridad de HOTP, y se ha protegido específicamente contra tal ocurrencia. El escudo aquí se basa en una suposición de seguridad en HMAC / SHA-1, que, si bien no está probado, es tan bueno como pueden obtener estas cosas (especialmente porque es muy posible que el hecho de que una familia de funciones sea un PRF) matemáticamente imposible de probar; consulte esto para más información sobre ese tema).