¿Por qué es una mala idea usar [x] para generar par de llaves al azar?

3

Cualquier persona que haya generado grandes pares de llaves públicas / privadas de GPG ha recibido este molesto mensaje: "No hay suficientes bytes aleatorios disponibles. ¡Haz otro trabajo para darle al SO la oportunidad de recolectar más entropía!"

Buscando respuestas, a menudo encontrará respuestas como las siguientes:

  

Utilice rngd -r /dev/urandom [ 1 ] [ 2 ]
  Instale y use rng-tools [ 3 ]
  Cree un enlace simbólico para que se use /dev/urandom en lugar de /dev/random [ 4 ]

Después de lo cual encuentras un comentario (generalmente con una clara falta de explicación, solo un arrebato violento):

  

¡Oh, Dios mío , es una idea horrible!

¿Por qué estos métodos alternativos para generar par de llaves al azar son una mala idea? ¿Qué hace que esperar a que /dev/random termine mucho más seguro?

    
pregunta IQAndreas 13.10.2014 - 18:19
fuente

1 respuesta

8

rng-tools actúa como un puente entre el generador de números aleatorios de hardware de su computadora (si tiene uno) y /dev/random Si confía en el RNG de hardware de su computadora, no hay nada de malo en usarlo. Por otra parte, si no tiene un RNG de hardware, rng-tools puede usarse para hacer que el kernel piense que hay más aleatoriedad en su grupo de entropía de lo que realmente existe.

El problema con la sugerencia en su primer enlace ( rngd -r /dev/urandom ) es que está devolviendo la salida del conjunto de entropía del kernel a la misma, y fingiendo que esto representa datos nuevos. Del mismo modo, la sugerencia de "enlace simbólico /dev/random a /dev/urandom " en el tercer enlace obliga a gpg a utilizar una fuente de aleatoriedad no necesariamente de alto grado cuando se espera una fuente de aleatoriedad de alto grado.

El problema con el uso de aleatoriedad de bajo grado al generar pares de llaves RSA es que si su par de llaves comparte un factor con el par de llaves de otra persona, hay un ataque trivial que puede deducir su clave privada de su clave pública (use algoritmo de Euclid para calcular el GCD de las dos claves públicas, que es uno de los factores primos, entonces use la división simple para calcular la otra prima). Esto es particularmente un problema con los sistemas embebidos que generan un par de llaves en el primer arranque, cuando no tienen mucha o ninguna entropía disponible.

    
respondido por el Mark 14.10.2014 - 00:13
fuente

Lea otras preguntas en las etiquetas