¿Cómo (si es que lo hace) un generador de números aleatorios predecible se vuelve más seguro después de que SHA-1 emita su salida?

Este artícul Establece qu

A pesar del hecho de que el Mersenne Twister es un generador de números pseudoaleatorios extremadamente bueno, no es criptográficamente seguro por sí mismo por una razón muy simple. Es posible determinar todos los estados futuros del generador a partir del estado que tiene el generador en cualquier momento dado, y 624 salidas de 32 bits o 19,937 salidas de un bit son suficientes para proporcionar ese estado. Se ha recomendado el uso de una función hash criptográficamente segura, como SHA-1, en la salida del Mersenne Twister como una forma de obtener un flujo de claves útil en criptografía.

Pero no hay referencias de por qué digerir el resultado lo haría más seguro. Y honestamente, no veo por qué este debería ser el caso. El Mersenne Twister tiene un período de 2 ^ 19937-1, pero creo que mi razonamiento también se aplicaría a cualquier PRNG periódico, p. Generadores congruentes lineales también. Debido a las propiedades de una función unidireccional segura h, uno podría pensar en h como una función inyectiva (de lo contrario podríamos producir colisiones), por lo tanto, simplemente mapear los valores de su dominio en su rango de una manera individual. @

Con este pensamiento en mente, argumentaría que los valores hash producirán exactamente el mismo comportamiento periódico que el Mersenne Twister original. Esto significa que si observa todos los valores de un período y los valores comienzan a repetirse, podrá predecir perfectamente todos los valores futuros.

Supongo que esto está relacionado con el mismo principio que se aplica en el cifrado basado en contraseña PKCS # 5): debido a que el dominio de las contraseñas no proporciona suficiente entropía, simplemente el cifrado de contraseñas no agrega ninguna entropía adicional; es por eso que necesita saltear las contraseñas antes de hacerlo. Creo que aquí se aplica exactamente el mismo principio.

Un ejemplo simple que finalmente me convenció: suponga que tiene un PRNG muy malo que siempre producirá un "número aleatorio" de 1. Luego, incluso si SHA-1 sería una función unidireccional perfecta, aplicando SHA-1 a la salida siempre dará el mismo valor, haciendo que la salida no sea menos predecible que antes.

Aún así, me gustaría creer que hay algo de verdad en ese artículo, así que seguramente debo haber pasado por alto algo. ¿Me puedes ayudar? En gran parte, he omitido el valor semilla de mis argumentos, ¿tal vez aquí es donde ocurre la magia?

Respuestas a la pregunta(2)

Su respuesta a la pregunta