OpenSSL 0.9.6a Debilidad del algoritmo PRNG: ¿Cómo explotar?

4

Vi un aviso de seguridad de OpenSSL para Openssl 0.9.6a

  

Markku-Juhani O. Saarinen, quien nos mostró cómo un atacante podría reconstruir el estado interno del PRNG a partir de la salida de una pareja, nos mostró una falla criptográfica en el generador de números pseudoaleatorios (PRNG) incorporado de OpenSSL. de cien solicitudes de PRNG de 1 byte. Este problema se remonta a SSLeay, en el que se basa OpenSSL, y también se encontró en otros kits de herramientas basados en SSLeay. Si bien se han realizado varias mejoras en el PRNG original durante el desarrollo de OpenSSL, hasta ahora se ha pasado por alto este error de diseño.

     

El PRNG (implementado en el archivo de código fuente crypto / md_rand.c) utiliza una función hash, de forma predeterminada SHA-1, para actualizar su estado secreto interno y generar resultados. El estado secreto consta de dos componentes: una variable de cadena 'md', dimensionada de acuerdo con la salida de la función hash (160 bits para SHA-1), y un 'estado' de búfer grande. 'md' siempre se reemplaza por una salida de función hash durante la operación de PRNG. Se accede a "estado" de forma circular y se utiliza para almacenar entropía adicional.

     

Al generar bytes de salida, las versiones de OpenSSL hasta 0.9.6a configuran 'md' al hash de la mitad de su valor anterior y algunos otros datos, incluidos los bytes desde 'estado'. El error de diseño fue que la mitad de la entrada 'md' a la función hash era la misma mitad que también se usó como salida PRNG, lo que significa que, en general, no puede considerarse secreta. Además, el número de bytes utilizados desde el "estado" dependía del número de bytes solicitados como salida de PRNG y podría ser tan pequeño como uno, lo que permite un fácil análisis de fuerza bruta de todos los casos posibles. La combinación de estos efectos hizo posible reconstruir el estado de PRNG interno completo desde la salida de una solicitud de PRNG con el tamaño adecuado para obtener conocimiento sobre 'md' seguido de suficientes solicitudes de PRNG de 1 byte consecutivas para atravesar todo el 'estado' .

Vea también: ID de alerta de SecurityTracker: 1001961

    
pregunta freak_warrior 06.10.2015 - 10:07
fuente

1 respuesta

1

A partir del aviso de seguridad que publicó, me parece que el error de diseño se puede resumir como

El PRNG es una función hash. La entrada al PRNG (función hash), la mitad es de la salida PRNG anterior, lo que se conoce, simplemente puede leerla en la salida anterior. Así que esencialmente la fuerza de la función hash SHA-1 se reduce a la mitad: 80 bits en lugar de 160 bits.

Entonces, si la biblioteca de OpenSSL se utiliza en la generación de claves, puede realizar un ataque de fuerza bruta en la clave de 80 bits restante. Definitivamente es una gran vulnerabilidad y se puede romper con el estándar de potencia de procesamiento actual. Pero sigue siendo una tarea enorme.

    
respondido por el John 31.03.2016 - 10:26
fuente

Lea otras preguntas en las etiquetas