Una de las formas en que las claves RSA se obtienen de forma consistente es cuando se generan sin suficiente entropía. Dan Kaminsky se refiere a un estudio que encontró que 1 de cada 200 claves RSA se generaron mal y estas fueron las que fueron encontrados , sin mencionar los millones de otros que no se encontraron.
Por lo tanto, se necesita un buen RNG correctamente sembrado durante la generación de par de claves RSA para GPG, SSL, SSH, etc. donde sea que ocurra la generación de claves RSA.
Phuctor es una herramienta en línea que busca pares de claves RSA de PGP y los factoriza. Sorprendentemente, incluso factorizaron una clave RSA de 4096 bits en el conjunto fuerte que se generó mal con el primer factor que es el número 231 (3 * 77). (Según Polinomio, solo factorizaron una subclave corrupta, que no debería tener un impacto en el mundo real).
Cuando estoy generando pares de llaves públicas / privadas RSA para SSL, SSH, GPG, etc., ¿hay alguna herramienta fuera de línea que pueda usar para determinar qué tan difíciles y grandes son los números primos? ¿Puedo estimar la dificultad computacional al factorizar este dado el par de claves RSA para poder determinar si se generaron correctamente?
Obviamente, utilizo una computadora de escritorio segura para la generación de pares de teclas (y opcionalmente /dev/random
), ya que el RNG de Linux se divide en "actividad del mouse y el teclado, operaciones de E / S del disco e interrupciones específicas" ( source, PDF ) que las máquinas virtuales a menudo no tienen. Si bien esto debería ser suficiente, me gustaría entender los métodos subyacentes y me gustaría probar mis pares de claves para garantizar la seguridad.