Con RSA, ¿se puede garantizar que dos entidades no tendrán la misma clave privada?

1

Con el algoritmo de cifrado RSA, ¿hay alguna garantía de que dos entidades diferentes no recibirán las mismas claves privadas?

    
pregunta Rakesh R Nair 07.10.2014 - 18:14
fuente

2 respuestas

9

Probabilidad.

Cuando se genera un par de claves RSA de 1024 bits, uno de los primeros trabajos es elegir un par de números primos p y q de modo que el producto de esos números (es decir, p multiplicado por q ) tiene un tamaño de 1024 bits. La forma más sencilla de hacer esto es elegir que ambos valores tengan un tamaño aproximado de 512 bits cada uno, como 2 512 × 2 512 = 2 1024 . Tenga en cuenta que estoy seleccionando 1024 bits, ya que ahora se considera que tiene el tamaño de clave más bajo aceptable, en el que tendrá la mayor probabilidad de colisión principal.

Ahora, si asumimos que solo se usan valores de 512 bits para p y q , ahora podemos estimar cuántos primos hay están en ese rango. traté esto en una respuesta a otra pregunta sobre RSA, pero Volveré a iterar aquí. La función de conteo de primos nos permite estimar el número de primos en un rango determinado. No está realmente definido, ya que es solo una estimación, y hay varias formas de calcularlo. La forma más simple y aproximada es simplemente π (x) = x / ln (x) , donde π es el PCF y ln() es un registro natural. Como expliqué en la respuesta vinculada, es probable que haya alrededor de 1.885 × 10 151 números primos en el rango 2 512 < n < 2 513 .

Esto significa que, suponiendo una implementación ideal, la posibilidad de elegir valores p o q iguales en dos pares de claves RSA generados independientemente es aproximadamente uno en ...

  

18,850,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000

Eso es un poco menos probable que ganar el premio mayor en la lotería nacional del Reino Unido 21 sorteos seguidos ( 13,983,815 21 = 1.143 × 10 150 ).

Todo esto suponiendo que la implementación es ideal. Sin embargo, este no es siempre el caso. Por ejemplo, solía haber un error en OpenSSL que causó que los datos de la pila sin inicializar se usaran como el grupo aleatorio para generar primos RSA, lo que significaba que el número real de salidas posibles del RNG era bastante pequeño. Los pares de claves resultantes ahora están en la lista negra de la mayoría de las implementaciones para evitar la explotación. Otro ejemplo es que en muchos dispositivos integrados (por ejemplo, dispositivos de firewall, enrutadores, etc.) ciertos valores criptográficos, como las claves de sesión SSH, se generan al principio del proceso de arranque del sistema, cuando no hay mucha entropía disponible. Esto conduce a una situación en la que el número de claves generadas posibles es significativamente más baja de lo que podría esperar, lo que podría provocar ataques de predicción.

El tl; dr es que el espacio de claves es tan grande que la selección aleatoria de dos primos iguales (p o q) cuando se calculan independientemente dos pares de claves RSA es increíblemente improbable.

    
respondido por el Polynomial 07.10.2014 - 18:41
fuente
1

Básicamente, estadísticas. Las posibilidades de generar dos claves privadas idénticas en un entorno con buena aleatoriedad son efectivamente nulas.

    
respondido por el mricon 07.10.2014 - 18:28
fuente

Lea otras preguntas en las etiquetas