45 votos

¿Dada una clave privada, es posible obtener su clave pública?

De lo poco que yo entiendo por la lectura de diversos materiales clave pública y clave privada pareja son la base de assymetric de cifrado y también algo acerca de la elección de 2 números primos (que es aproximadamente su clave privada) y la multiplicación de ellos (que es aproximadamente su clave pública), me parece que es posible generar una clave pública si conoce la clave privada. Es correcto o me estoy equivocando en algo?

[EDITAR]

Lo que me hizo más confuso era que no es posible para serializar la clave RSA para XML con sólo la clave privada (usando .NETA clase RSACryptoServiceProvider). No estoy seguro si esta limitación es intencional o no!

39voto

vaab Puntos 1639

En la mayoría de criptografía asimétrica implementación del sistema, el sólo hecho de que está asegurado es que usted no puede encontrar la clave privada a partir 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 los casos.

Por ejemplo, en sudáfrica, 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 usted está hablando de la teoría, o si usted está hablando de la aplicación práctica:

  • El teórico de la clave privada es el par (d, n) que comparte la simetría perfecta (matemática) en relación con (e, n). Si se comparan estos, uno no puede ser calculada a partir de la otra.
  • La práctica de la clave privada (como en openssl aplicación, por ejemplo), se refiere a un archivo que contiene (d, n) pero también una serie de importantes valores intermedios de la velocidad de la codificación propósito. En adición a eso, la teoría de "desconocido" parte de la clave pública e se fija a un valor común por la convención (que es 0x10001 en openssl). Para deducir la clave pública (e, n) de la clave privada es trivial por más de un motivo.

32voto

sleske Puntos 29978

De que depende el sistema criptográfico.

En RSA, tenemos (citando a la Wikipedia):

La clave pública se compone del módulo n y el público (o cifrado) exponente e. El clave privada consiste en el módulo n y el privado (o descifrado) exponente d que debe mantenerse en secreto.

Ahora bien, si tenemos n y d (la clave privada), sólo nos falta el correo de la clave pública. Pero el correo es a menudo bastante pequeño (menos de tres dígitos), o incluso fijo (un valor común es 65537). En estos casos la obtención de la clave pública es trivial.

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

8voto

erickson Puntos 127945

Depende del algoritmo, y qué quiere decir con "clave privada".

RSA con claves privadas a menudo se almacenan en su "Teorema del Resto Chino". Por ejemplo, el RSAPrivateKey estructura definida en PKCS #1 y re-utilizado por muchas otras cripto normas de tomar esta forma. Este formulario incluye los dos números secretos a menudo denotado p y q, a partir de la cual el totient se calcula. Con totient privado y de la exponente, el público exponente es calcular rápidamente.

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

3voto

Adam Hawes Puntos 4153

En CUALQUIER sistema criptográfico de clave pública la clave pública relacionadas matemáticamente de la clave privada. Es muy simple.

La clave pública se deriva de la clave privada en el tiempo 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 posible ir a otro lado. Dada una clave pública no es fácil derivar la clave privada. Es por eso que podemos compartir de manera segura las claves públicas con otras personas. Si usted tiene suficiente tiempo/ciclos de CPU que usted podría fuerza bruta pero es probablemente más fácil esperar por un matemático ataque a la clave.

2voto

Colonel Panic Puntos 18390

Para el caso específico de OpenSSH y ssh-keygen, sí, usted puede:

ssh-keygen-y

Esta opción va a leer un privado OpenSSH formato de archivo y de impresión de una clave pública a stdout.


Por lo general, depende del algoritmo y lo que la etiqueta de la clave privada. Sin embargo, de manera sensible la aplicación incluirá la información completa (las claves pública y privada) en el archivo secreto.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X