Impacto del algoritmo hash en un PRNG

Pregunta:

Los generadores de números pseudoaleatorios a menudo usan funciones hash para la generación. Algunas aplicaciones permiten a los usuarios elegir esta función hash, por ejemplo OpenVPN.

Del manual de OpenVPN:

–prng alg [nsl] (avanzado) Para PRNG (generador de números pseudoaleatorios), use el algoritmo de resumen alg (predeterminado = sha1) y establezca nsl (predeterminado = 16) en el tamaño en bytes de la longitud del secreto nonce (entre 16 y 64).

 Set alg=none to disable the PRNG and use the OpenSSL RAND_bytes function instead for all of OpenVPN's pseudo-random number needs.

¿Qué impacto tiene la función hash en la aleatoriedad del número pseudoaleatorio resultante?

Por ejemplo, SHA1 sufre de colisiones hash probadas . ¿Eso afecta el número pseudoaleatorio?

¿SHA2 se consideraría más seguro o el impacto de la función hash no es tan crucial en la aleatoriedad?

Respuesta:

¿Qué impacto tiene la función hash en la aleatoriedad del número pseudoaleatorio resultante?

Ninguna. Una buena función hash criptográfica como las que menciona producirá una salida que se distribuye uniformemente al azar. Dada una gran cantidad de resultados, no podrá identificar qué función hash se utilizó. Sin embargo, el flujo real de números cambiará por completo si cambia el hash, pero todos serán igual de aleatorios. Aún debería ser imposible distinguir la salida de un buen PRNG de la verdadera aleatoriedad, sin importar cuánto esfuerzo use.

Por ejemplo, SHA1 sufre de colisiones hash probadas. ¿Eso afecta el número pseudoaleatorio?

Ese es un ejemplo muy elaborado en una situación muy particular. Todavía no estamos en la etapa en la que podamos invertir inmediatamente una salida SHA-1 para determinar la entrada. Y, de hecho, las colisiones en una salida de PRNG no son nada que temer. Es de esperar que esto ocurra de forma natural (pero con poca frecuencia) a medida que produce la salida. Los números aleatorios se repiten a veces. Lo importante es que, de nuevo, dada una secuencia larga de salida, por el momento no podemos descubrir la secuencia de entrada y, por lo tanto, el estado interno del generador.

¿SHA2 se consideraría más seguro o el impacto de la función hash no es tan crucial en la aleatoriedad?

En esta etapa, no hace ninguna diferencia. / dev / random y SecureRandom de Java todavía usan funciones de mezcla SHA-1 y se consideran ininterrumpidas. Si se enfoca específicamente en la aleatoriedad , eso no es un producto directo de la seguridad criptográfica y la capacidad de inversión. Es una función del efecto de avalancha. Cualquier función hash que exhiba el efecto de avalancha generará una salida aleatoria perfecta. Por ejemplo, un algoritmo simple basado en una red de permutación de sustitución o una multiplicación de matrices producirá una salida perfectamente aleatoria. Simplemente podrá invertirlo y, por lo tanto, esos no serían adecuados como PRNG criptográficos.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım