
Leí acerca de generar 2 claves (privada y pública) en el host del cliente y copiar la clave pública en el host del servidor.
Según tengo entendido (corríjame si me equivoco): el servidor cifra los datos con la clave pública y los envía al cliente, el cliente los descifra con la clave privada.
Pero si necesito cifrar datos en el cliente para enviarlos al servidor, ¿cómo sucede?
¿La clave pública cifra los datos del cliente? Pero, ¿cómo puede el servidor descifrarlo si sólo tiene la clave pública?
¿Cómo funciona el cifrado SSH?
Respuesta1
Lo primero que hace después de establecer la conexión TCP es que ambos sistemas acuerdan unclave de sesión, utilizando protocolos comoIntercambio de claves DH,ECDHo GSSAPI. Esta clave es simétrica y temporal: ambas partes usan la misma clave para cifrar y descifrar datos utilizando algoritmos comoAESoRC4.
El par de claves del cliente nunca se utiliza para cifrar datos, sólo paraautenticación– La "clave pública" es uno de varios métodos disponibles, donde el cliente presenta su propia clave pública junto con una prueba de propiedad de la clave privada. De manera similar, el par de claves del servidor solo se utiliza para autenticar el servidor durante los intercambios de claves DH o ECDH; no se cifran datos al usarlo.
El protocolo SSH2 está documentado envarios RFC, incluido:
Respuesta2
Lo primero que creo que hay que entender es que, si bien muchos protocolos de cifrado como SSH y SSL utilizan PKI para fines de autenticación, casi ninguno de estos sistemas utilizará PKI para transmitir la carga útil.
PKI consume demasiado CPU para usarse para transmitir los datos de carga útil reales. Lo que sucede es que la PKI se utiliza para negociar una clave generada aleatoriamente, que se utilizará con un protocolo de cifrado simétrico. El protocolo que se utilizará también se negocia y debe ser el protocolo más sólido sobre el que los dos sistemas puedan ponerse de acuerdo. Entonces, una vez que se realiza el apretón de manos y la negociación inicial, prácticamente todo es criptografía simétrica estándar.
Respuesta3
A continuación se muestran algunos ejemplos prácticos: supongamos que la clave A se mantuvo en secreto y, por lo tanto, es la clave privada, y la clave B se publicó en un lugar de acceso público y, por lo tanto, es la clave pública.
Entonces, si desea enviar un mensaje a todos y quiere que verifiquen que vino de usted y que no se modificó mientras se entregaba, enviaría su mensaje e incluiría un hash del mensaje cifrado con la clave A. Entonces, cualquiera que tiene la clave B puede descifrar el hash, compararlo con el mensaje que recibieron y verificar que el mensaje proviene de usted (debido al hecho de que solo una persona con la clave A podría haber generado la carga útil cifrada que descifró exitosamente el hash, y porque usted eres la única persona con la Clave A (solo podría venir de ti).Esto se llama firmar..
Ahora digamos que alguien quiere enviarte un mensaje secreto pero no quiere revelar quién es. Pueden cifrar su mensaje con una clave simétrica (como Zoredache mencionó que simétrica es mucho más barata), luego tomar esa clave, cifrarla con la clave B y enviársela. Debido a que solo la Clave A puede descifrar algo que fue cifrado con la Clave B, ninguna otra persona puede ver el contenido del mensaje que se le envió. Así es como funciona el cifrado normal y cómo SSH intercambia datos.
Respuesta4
usted escribe
"¿La clave pública cifra los datos del cliente? ¿Pero cómo puede el servidor descifrarlos si sólo tiene la clave pública?"
No sé mucho al respecto, pero creo que puedo responder a esa pregunta con bastante claridad.
Si A quiere enviar un mensaje a B, A usa la clave pública de B. Así es como B puede descifrarlo.
Si A usó su propia clave pública para cifrar el mensaje, entonces B no podría descifrarlo.
eso se explica aqui
http://www.comodo.com/resources/small-business/digital-certificates2.php