¿Cuáles son las posibilidades de generar la misma clave ssh?

26

Podría generar claves ssh en el cliente como (sin contraseña):

ssh-keygen -b 8192 -t rsa -f /home/THEUSER/.ssh/id_rsa -P '' -v

y copie el id_rsa.pub generado en el servidor:

ssh-copy-id -i /home/THEUSER/.ssh/id_rsa.pub '-p PORTNUMBER SSHUSER@SERVER-IP-ADDRESS'

¿Cuál es la probabilidad de que alguien genere exactamente la misma clave con ssh-keygen? ¡para que puedan iniciar sesión sin contraseña también!

Creo que tiene una probabilidad muy baja, pero quiero saber: ¿cuánto es?

    
pregunta LanceBaynes 06.04.2011 - 20:34
fuente

4 respuestas

39

La probabilidad es mucho menor que cualquiera de estos eventos:

  • La computadora se enciende espontáneamente durante el proceso de generación de claves.
  • Gran Bretaña es eliminada por un asteroide en caída en el mismo segundo.
  • Un gorila pícaro que se escapó de un zoológico entra en tu sala de estar y te mata.
  • Ganas millones de dólares en la lotería tres veces seguidas.

Entonces, la conclusión básica es que no debes preocuparte por obtener el doble de la misma clave SSH: realmente no sucederá en tu vida.

Desde un punto de vista más teórico, hay aproximadamente 28164 posibles claves RSA de 8192 bits (eso es realmente mucho). Sin embargo, ssh-keygen usará un generador de números pseudoaleatorios que funciona sobre una semilla interna mucho más reducida, que depende del sistema operativo pero que normalmente tendrá un tamaño de al menos 160 bits. Esto reduce el número de claves posibles a un número mucho más bajo (pero aún enorme), 2160 . Incluso con una tremenda potencia informática (no estoy hablando de un estudiante aburrido con unas pocas docenas de PC; más bien, piense en "Google"), la probabilidad de encontrar la misma clave después de unos años de esfuerzo es menor que 2 < sup> -100 . Comparativamente, se puede estimar que los eventos que enumeré anteriormente ocurren con probabilidades aproximadamente iguales a 2-45 , 2 -50 , 2-60 y 2-71 , respectivamente: estos son billones De veces más probable.

Por supuesto, con un PRNG defectuoso, todo vale.

    
respondido por el Thomas Pornin 06.04.2011 - 23:07
fuente
6

Primero, lea el Birthday Attack , que explicará la coincidencia y las probabilidades de que se generen dos claves. exactamente lo mismo. Las probabilidades de esto son mayores que las probabilidades de que usted elija una clave y vea si alguien alguna vez la generó. (Cuántas personas en la sala nacieron el 7 de julio en comparación con cuántas personas en la sala tienen el mismo cumpleaños).

Ahora, las probabilidades de que alguien genere TU clave son 1/2 ^ tamaño_clave. En el caso de la criptografía de clave pública, 1/2 ^ (bits_of_entropy). No se espera que una clave RSA de 4096 bits tenga 4096 bits de entropía. No estoy seguro de cuál es la conversión yo mismo. Se espera que una clave simétrica de 128 bits tenga 128 bits de entropía. (Todo esto es ignorar los ataques que pueden interrumpir rondas individuales, etc.)

Ahora, eso tampoco tiene en cuenta la mala implementación como un error muy feo de OpenSSL .

Pero, básicamente, nadie generará tu clave individual por accidente, y probablemente tampoco por ataque.

    
respondido por el Jeff Ferland 06.04.2011 - 23:02
fuente
6

ssh-keygen usa la función libcrypto BN_rand() de OpenSSL para generar un punto de partida para la generación de subprime clave, que a su vez utiliza RAND_bytes() como fuente de aleatoriedad. Sucede en la función gen_candidates() de moduli.c de la distribución fuente de OpenSSH.

En la mayoría de las plataformas, será una aleatoriedad de buena calidad (lo que RAND_bytes() depende de la plataforma de bits; para obtener más información, consulte rand_lib.c en la distribución OpenSSL).

Para todos los propósitos prácticos, a menos que use un libcrypto cuyo PRNG haya sido saboteado por un mantenedor demasiado entusiasta e incompetente, las colisiones no ocurrirán.

    
respondido por el Bruno Rohée 07.04.2011 - 23:00
fuente
2

Tomado de research! rsc :

  

La semana pasada, Debian anunció que en septiembre de 2006 rompieron accidentalmente el generador de números pseudoaleatorios de OpenSSL al intentar silenciar una advertencia de Valgrind. Un efecto que esto tuvo fue que el programa ssh-keygen instalado en sistemas Debian recientes (y sistemas derivados de Debian como Ubuntu) solo podría generar 32,767 claves SSH diferentes posibles de un tipo y tamaño dado, por lo que hay mucha gente caminando con las mismas llaves

     

Muchas personas han señalado con sus dedos, pero no es realmente interesante quién cometió el error: todos cometen errores. Lo que es interesante es la situación que alentó a cometer el error y que hizo posible no notarlo durante casi dos años.

Como dijo Jeff Ferland en una publicación anterior: "Ahora, eso tampoco tiene en cuenta la mala implementación como un error de OpenSSL muy feo" (que de hecho parece ser el mismo error que se mencionó anteriormente).

“En teoría, no hay diferencia entre la teoría y la práctica. En la práctica, hay ", Yogi Berra

    
respondido por el Dirk M Aus F 28.07.2014 - 18:51
fuente

Lea otras preguntas en las etiquetas