¿Es necesario volver a sembrar OpenSSL CSPRNG si usa RAND_bytes?

1

Leí que cryprographic secure PRNG (CSPRNG) necesita una semilla aleatoria para proporcionar una salida aleatoria. Al observar OpenSSL que parece estar archivado por RAND_poll() y los datos aleatorios se recuperan con RAND_bytes(buf, length) .

Pero no estoy seguro de si acierto todo lo que se indica en la documentación aquí . Sé que RAND_bytes llamará a sí mismo RAND_poll() si no fue llamado antes al menos una vez.

También leí (en otro lugar) que una semilla no debe reutilizarse para un CSPRNG. Ahora mi pregunta es: ¿ RAND_bytes reutiliza alguna semilla? ¿Tengo que reiniciar manualmente OpenSSL para distintas llamadas RAND_bytes usando RAND_bytes(buf, length) una y otra vez si no quiero reutilizar la semilla?

¿O RAND_bytes administra esto por sí mismo?

    
pregunta little_planet 08.03.2016 - 14:34
fuente

1 respuesta

0
  

¿ RAND_bytes reutiliza alguna semilla?

Kindof.
Reutilizar una semilla es malo, ya que le dará de nuevo exactamente los mismos números aleatorios. OpenSSL no hace esto. Sin embargo, se le permite usar el valor de inicialización obtenido por el primer RAND_poll siempre que lo desee (lo que no es recomendable), ya que el PRNG generará un flujo constante de bytes (impredecibles) basado en este único valor inicial solo se deben servir las partes "posteriores" en la ruta si no se reinicia.

Debería volver a sembrar el PRNG tan a menudo como sea posible si tiene datos ricos en entropía, pero también funcionará (con bastante seguridad) si no hace esto.

Respuesta final: RAND_bytes (kindof) administra esto por sí mismo.

    
respondido por el SEJPM 08.03.2016 - 15:27
fuente

Lea otras preguntas en las etiquetas