La misma pregunta que es una rand de / dev / urandom secure para una clave de inicio de sesión , pero con la función rand
de glibc en lugar de /dev/urandom
. ¿Y cuál sería un generador de semillas suficientemente seguro?
La misma pregunta que es una rand de / dev / urandom secure para una clave de inicio de sesión , pero con la función rand
de glibc en lugar de /dev/urandom
. ¿Y cuál sería un generador de semillas suficientemente seguro?
No. El PRNG en las bibliotecas típicas de C está diseñado para la velocidad, no para la seguridad. Por lo general, es apropiado para juegos y simulaciones numéricas (en implementaciones de buena calidad; existen implementaciones, en su mayoría antiguas, donde no es apropiado para nada), pero no para la criptografía. Un PRNG criptográfico debe ser impredecible, es decir, un atacante que genere una serie de números no debe ser capaz de hacer un bien Adivina el siguiente número. El PRNG típico de la biblioteca de C busca la velocidad y buenas propiedades estadísticas, pero no la impredecibilidad.
A partir de Glibc 2.7, rand
y sus amigos usan un PRNG congruente lineal o registro de desplazamiento de retroalimentación lineal dependiendo de la longitud de semilla disponible.
Para generar material clave o cualquier otro número aleatorio involucrado en la criptografía (incluidas cosas no secretas como nonces que aún así deben ser impredecibles), obtenga todos los bits de un RNG de calidad criptográfica. El /dev/urandom
de Linux (o cualquier otro unix que tenga /dev/urandom
) está bien para eso. Debe utilizarlo para cada byte de cada clave; usarlo como semilla de la biblioteca C PRNG no es bueno (habría una fuerte correlación entre las teclas). Una biblioteca como OpenSSL es otra opción; Probablemente use /dev/urandom
bajo el capó como semilla, pero puede ser un poco más rápido si está generando grandes volúmenes de datos aleatorios.
¡No! rand()
es totalmente inseguro. El uso de rand()
para este propósito ha causado vulnerabilidades principales en los sistemas principales .
Solo usa /dev/urandom
.
Lea otras preguntas en las etiquetas authentication linux random