used the publickey privatekey example and algorithms cryptography public-key

cryptography - the - public key linux



En Public Key Criptography, ¿cómo el servidor descifra el mensaje del cliente? (1)

Si un servidor tiene solo una clave pública, no puede descifrar un mensaje de un cliente.

Una vez más, con las palabras de vocabulario importantes en negrita: si un servidor tiene solo una clave pública, no puede descifrar un mensaje de un cliente.

Lo que el servidor probablemente está haciendo es verificar un mensaje firmado por el cliente.

En el caso de la autenticación de clave pública SSH ( RFC 4252, sección 7 ) es una firma sobre el ID de sesión recién negociado y algunos datos de contexto (que requieren que el cliente tenga la clave privada). El servidor puede ejecutar el algoritmo de verificación de firma (que solo requiere la clave pública). Si una clave preregistrada se retira, el cliente queda así autenticado.

En el caso de las claves RSA, las operaciones de firma y descifrado se ven matemáticamente similares, lo que puede hacer que algunos utilicen los términos de forma general, pero debemos ser precisos.

  • Cifrar (clave pública): Transforma el contenido de tal forma que lo ocluya todo el mundo, excepto el destinatario (el titular de la clave privada).
    • Algoritmos comunes: RSA
    • En el cifrado, la salida cifrada REEMPLAZA el contenido original en la transmisión.
    • El cifrado de clave pública se usa frecuentemente para encriptar una clave simétrica recién generada que en realidad cifra los datos. Para RSA, la salida encriptada está limitada por el tamaño de la clave, los algoritmos simétricos tienen máximos mucho más grandes.
  • Desencriptar (clave privada): Transformar el contenido de la operación Cifrar nuevamente en su forma original.
    • Como cualquiera puede tener su clave pública, cualquiera puede encriptar datos por usted.
    • No hay nada inherente en el par de cifrado / descifrado para establecer la confianza ... el mensaje podría ser una píldora de veneno, y usted no sabe quién lo escribió.
  • Signo (clave privada): aplica una transformación sobre una entrada (que generalmente es un resumen / hash del contenido verdadero) para producir un valor que nadie más puede.
    • Algoritmos comunes: RSA, ECDSA, DSA
    • La firma se presenta CON el contenido, no lo reemplaza.
  • Verificar (clave pública): aplica una transformación sobre la entrada y la firma que da como resultado un true o false .
    • Si el compendio se calcula de forma independiente por el receptor de contenido, la firma demuestra que el contenido no fue alterado.
    • Cuando la firma se considera correcta, prueba que fue generada por el titular de la clave, que puede utilizarse en una decisión de confianza. (La clave podría haberse visto comprometida, en cuyo caso "titular de clave" y "titular de clave original" podrían ser diferentes)
    • Para RSA, esto es "descomprimir el resumen usando un algoritmo similar a descifrar, luego comparar los resúmenes", por lo que una implementación de RSA podría indicar cuál es el hash correcto.
    • Para DSA y ECDSA, el resumen se utiliza como un BigInteger en una fórmula que produce la segunda mitad de la firma desde la primera mitad, por lo que DSA no puede decirle cuál es el valor de resumen correcto.

En la criptografía de clave pública, todo lo que sé es que la clave pública en el servidor es encriptar el mensaje y el cliente que tiene la clave privada puede descifrar ese mensaje, lo cual está bien.

La parte que no entiendo es que como el servidor solo tiene la clave pública para encriptar el mensaje, cómo descifraría la respuesta del cliente. Creo que el público no puede usarse para descifrar la respuesta del cliente.

También la forma en que el cliente encripta un mensaje al servidor ya que la clave privada solo se usa para descifrar el mensaje y no para encriptarlo.

Perdón por mi ignorancia He buscado en Internet y, de alguna manera, las respuestas a ellas me eluden.

Cualquier ayuda sería muy apreciada.

Gracias, Mohamed