Pregunta

A partir de lo poco que entiendo por la lectura de diversos materiales, el par de claves pública y privada son la base de cifrado asimétrico y también algo acerca de la elección de 2 números primos (que es más o menos su clave privada) y multiplicándolos (que es más o menos su clave pública ), me parece que es posible generar una clave pública si conoce la clave privada. ¿Es correcto o estoy confundiendo algo?

[EDIT]

Lo que me hizo más confuso es que no es posible serializar la clave RSA de XML con solamente clave privada (usando RSACryptoServiceProvider clase .NET). No está seguro de si esta limitación es intencional o no!

¿Fue útil?

Solución

Eso depende del sistema de cifrado.

RSA , hemos (citando a Wikipedia):

  

La clave pública consiste en el módulo n y el público (o cifrado) exponente e. los   clave privada consiste en el módulo n y el (o descifrado) exponente privado d cual   debe ser mantenido en secreto.

Ahora bien, si tenemos n yd (la clave privada), sólo estamos perdidos E para la clave pública. Pero el correo es a menudo bastante pequeño (menos de tres dígitos), o incluso fija (un valor común es 65537). En estos casos cada vez la clave pública es trivial.

Curva Elíptica Diffie-Hellman , la clave privada es d, y la clave pública dG (con G también pública), por lo que es trivial también.

Otros consejos

En la implementación del sistema de cifrado más asimétrica, el único hecho que se asegura es que no se puede encontrar la clave privada de la clave pública. A la inversa, la búsqueda de la clave pública de la clave privada es trivial en la mayoría de casos.

Por ejemplo, en RSA, puede crear la clave pública de la clave privada con:

openssl rsa -in private.pem -pubout -out public.pem

¿Qué es engañosa es la terminología: "clave privada" se refiere a 2 conceptos diferentes si va a hablar de la teoría, o ya sea que se está hablando de la aplicación práctica:

  • El teórica clave privada es la pareja (d, n) que comparte perfecta relación simétrica (matemática) con (e, n) . Si se comparan estos, uno no se puede calcular a partir de la otra.
  • La práctico clave privada (como en la aplicación openssl por ejemplo), se refiere a un archivo que contiene (d, n) sino también varios valores intermedios importantes para propósito velocidad de decodificación . Además de eso, la parte teórica "desconocido" de la clave pública e con frecuencia se fija a valores comunes por convención (que se 0x10001 por defecto en OpenSSL y aunque se puede cambiar, se recomienda encarecidamente a pegarse a solamente muy valores específicos ). Por lo tanto deducir la clave pública (e, n) de la clave privada es trivial por más de una razón.

Depende del algoritmo, y lo que se quiere decir con "clave privada".

claves RSA privadas a menudo se almacenan en su forma "china resto teorema". Por ejemplo, la estructura RSAPrivateKey definido en PKCS # 1 y re-utilizado por muchos otros estándares criptográficos tomar esta forma. Este formulario incluye los dos números secretos a menudo denotado p y q, a partir del cual se calcula la totient. Con totient y el exponente privado, el exponente público se calcula rápidamente.

En cualquier caso, la mayoría de los pares de claves RSA utilizan 65537 como el exponente público, y el módulo siempre se realiza como parte de la clave privada.

En cualquier sistema de cifrado de clave pública de la clave pública es matemáticamente relacionado con la clave privada. Es muy simple.

La clave pública se deriva de la clave privada del momento de generación, y con la clave privada en cualquier momento en el futuro, es posible volver a obtener la clave pública fácilmente.

No es factible ir a otro lado. Dada una clave pública que no es fácil deducir la clave privada. Es por eso que podemos compartir de forma segura las claves públicas con otras personas. Si usted tiene suficientes ciclos de tiempo / CPU que podría fuerza bruta, pero es probable que sea más fácil que esperar a que un ataque matemática en la tecla.

En el caso específico de OpenSSH y ssh-keygen , sí se puede

  

ssh-keygen -y

     

Esta opción va a leer un archivo de formato OpenSSH privada e imprimir una clave pública a la salida estándar.


En general, depende del algoritmo y lo que la etiqueta de la clave privada. Sin embargo, cualquier aplicación sensata incluirá la información completa (claves públicas y privadas) en el archivo secreto.

Hay una idea errónea de lo que es la clave privada. La clave privada es sólo el (d, n) par y, dada sólo eso, no es factible para generar la clave pública de ella a menos que se puede asumir que el exponente público es 65537, que es el caso en casi todas las claves RSA.

Si, por cualquier razón, el exponente público es un número mayor que no se puede crear la clave pública de la privada.

Dicho esto, el valor almacenado como "clave privada" a los archivos PEM no es sólo la clave privada, pero también contiene los factores primos (entre otras cosas) y, por lo tanto, es fácil para generar la clave pública de la misma.

Si con acceso a la clave privada de la clave pública se puede generar

clave pública es el módulo N (y exponente e público, por lo general 65 537), la clave privada se da por los dos primos p, q (y el exponente privado d, a veces también partes CRT D_P, d_q de aceleración) esencialmente tiene N = pq y e d = 1 mod ((p-1) (q-1)), también se puede calcular D_P y d_q usando CRT clave privada determinada, el cálculo del módulo de clave pública es la multiplicación de "aburrido" y exponente público es en la especificación o calculan utilizando el algoritmo de Euclides extendido si estándar de correo no era lo suficientemente bueno. determinada clave pública, el cálculo de la clave privada requiere ya sea la búsqueda de d (problema RSA) o p, q (factoring, ver tamiz campo de número a la mejor algo para hacer esto). Estos problemas se muestran para ser equivalente en condiciones razonables [Breaking RSA Genéricamente es equivalente a Factoring, D. Aggarwal y U. Maurer, 2008]

Es teóricamente posible, pero para las llaves grandes computacionalmente imposible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top