¿Puedo usar una clave privada como clave pública y viceversa?

31

Tengo un código para cifrar datos usando una clave pública y descifrarlos usando una clave privada. Esto es útil cuando un cliente desea enviar datos a un servidor y saber que solo el servidor puede descifrarlos.

Pero digamos que quiero que el servidor cifre los datos con la clave private y los descifre con la clave public , como una forma de distribuir los datos que se puede verificar que tengan provienen del servidor correcto En lugar de modificar el código para permitir esto, ¿puedo simplemente publicar la clave privada y mantener en secreto la clave pública? ¿Esto afecta la seguridad del sistema?

    
pregunta Graeme Perrow 21.12.2011 - 16:09
fuente

4 respuestas

43
  

Pero digamos que quiero que el servidor cifre los datos utilizando la clave privada y los descifre utilizando la clave pública, como una forma de distribuir los datos que se pueden verificar que provienen del servidor correcto.

Puede hacer esto: esto es, a un nivel muy simplista, cómo funciona la firma RSA (tenga en cuenta que es un poco más).

  

En lugar de modificar el código para permitir esto, ¿puedo simplemente publicar la clave privada y mantener la clave pública en secreto? ¿Esto afecta la seguridad del sistema?

Usted no necesita publicar la clave privada, RSA es una permutación trampilla que significa:

  • Si cifras con una clave pública, puedes descifrar con la clave privada.
  • Si cifras con una clave privada, puedes descifrar con una clave pública.

Por lo tanto, RSA admite la firma y el cifrado basándose en que el usuario final tiene solo la clave pública.

En su caso, si el cliente desea verificar que los datos provienen del servidor, usted aplica el segundo caso de RSA y descifra los datos de la firma usando la clave pública que ya tiene.

Además, debido a que es una permutación, no debería necesitar modificar su código en absoluto. Ambas teclas deben funcionar utilizando la misma función. Espero que cualquier biblioteca criptográfica decente tenga API para verificar firmas de acuerdo con los diferentes estándares que existen, uno de estos probablemente sea una buena apuesta.

Los laboratorios RSA proporcionan una buena explicación de esto .

Si desea extender esto entre servidores o verificar la comunicación con el cliente, genere claves para cada entidad e intercambie las públicas. El proceso se puede utilizar en ambos extremos.

Hablando teóricamente, e y d son intercambiables (por eso RSA funciona) (uno debe ser designado como secreto y mantenerse en secreto) pero p y q deben siempre mantenerse en secreto ya que le permiten derivar d desde e y viceversa. Sin embargo, debe ser extremadamente cuidadoso al entender la clave privada. ¿Su software almacena p / q en la clave privada? Si es así, no puedes publicarlo como está. Además, cuando digo intercambiable, una vez que publiques uno de ese par (eod junto con tu módulo n) debes proteger al otro con tu vida . Hablando prácticamente como Graeme vinculado en el los comentarios e a menudo se eligen como un valor pequeño / fijo. Mi comentario sobre que e / d es intercambiable claramente no se aplica cuando e se determina fácilmente. Hacer este tipo de cosas por lo tanto tiene el potencial de confusión y mala implementación. Utilice una biblioteca de terceros / no comience a publicar claves privadas.

    
respondido por el user2213 21.12.2011 - 18:00
fuente
7

Sí, puede cifrar utilizando una clave privada y descifrar utilizando una clave pública, NO entregar su clave privada (las claves privadas pueden generar claves públicas, y todo su sistema de cifrado ahora es inútil), supongo que desea hacer algo como esto:

El servidor cifra los datos, los envía a los clientes.

Los clientes tienen una clave pública y pueden descifrar datos del servidor.

En esta circunstancia, tendría sentido, si el servidor realiza el cifrado y el descifrado, no tengo idea de por qué querría una implementación de criptografía asimétrica.

La regla siempre se aplica aunque: la clave privada permanece privada y no abandona el servidor.

    
respondido por el StrangeWill 21.12.2011 - 17:33
fuente
1
  

Pero digamos que quiero que el servidor cifre los datos utilizando la clave privada y los descifre utilizando la clave pública:

El servidor puede cifrar datos usando su clave privada y el receptor puede descifrar usando las claves públicas del servidor, esto es posible. Sin embargo, este escenario se utiliza para firmar digitalmente un documento y, como usted dice, es "una forma de distribución de datos que se puede verificar que proviene del servidor correcto", ya que solo se puede usar la clave correspondiente (clave pública del servidor) Para descifrar los datos. La clave pública del servidor se verifica mediante el certificado digital correspondiente generado y firmado digitalmente por el servidor.

  

¿Puedo simplemente publicar la clave privada y mantener secreta la clave pública?

Nunca debes publicar la clave privada, como sugiere su nombre.

  

¿Esto afecta la seguridad del sistema?

Sí, también este sistema no es viable, por ejemplo, si está utilizando Diffie-Hellman (uno de los protocolos de intercambio de claves más utilizados), el servidor y todos los clientes tienen que compartir valores públicos, que se utilizan para calcular claves de sesión. Por lo tanto, si usted como usuario publica su clave privada, es muy fácil calcular la clave pública, lo cual no es posible o muy difícil al revés.

    
respondido por el Ishtiaq Hussain 27.05.2018 - 12:03
fuente
0

No sé si podría cifrar con la clave privada y descifrar con la clave pública, pero si pudiera, entonces no sería muy seguro, ya que la clave de descifrado es pública: su clave privada debe mantenerse privado.

Si simplemente desea verificar que el remitente del mensaje, en su lugar, firme los datos con la clave privada del remitente, y el destinatario verifica la firma con la clave pública del remitente.

Si desea cifrar los datos y verificar el remitente, debe cifrar y firmar, ninguno de los cuales requiere la exposición de la clave privada.

    
respondido por el hmallett 21.12.2011 - 16:39
fuente

Lea otras preguntas en las etiquetas