¿Son vulnerables OATH TOTP y / o Google Authenticator si un atacante tiene (N) códigos anteriores?

7

No soy un gran iniciador de ipsec, así que esto está un poco por encima de mi cabeza ... pero siempre estoy dispuesto a aprender más.

¿Hay ataques conocidos contra OATH TOTP (algoritmo de Autenticador de Google / Authy) si un atacante tiene un número (no especificado) de contraseñas de un solo uso previas, como las genera la aplicación?

O, para decirlo de otra manera: ¿hay alguna razón para preocuparse por el hecho de que haya un registro de PTO individuales que he usado en el pasado? (Por ejemplo, ¿puedo ingresarlas en la línea de comandos cuando invoco una herramienta ... o debo ingresarlas como contraseñas, de manera silenciosa e interactiva, para evitar que se registren?)

    
pregunta ELLIOTTCABLE 19.09.2013 - 20:55
fuente

2 respuestas

13

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

    
respondido por el Tom Leek 19.09.2013 - 23:12
fuente
1

Los tokens se calculan utilizando bibliotecas HMAC, básicamente:

HOTP(K,C) = Truncate(HMAC-SHA-1(K,C))

Donde K es el secreto almacenado en su teléfono y en el servidor de validación, y C es el contador (marca de hora, en caso de TOTP).

HMAC-SHA-1 es una función unidireccional, lo que significa que debería ser imposible de obtener K, C, independientemente de los valores observados anteriormente. Se sabe que SHA-1 tiene algunas debilidades, pero todavía es razonablemente confiable para hacer que tales ataques sean poco prácticos.

    
respondido por el mricon 19.09.2013 - 21:13
fuente

Lea otras preguntas en las etiquetas