¿Por qué se usa la clave pública en el lado del servidor para una conexión ssh?

1

No me queda claro por qué la autenticación de la clave SSH necesita que la clave pública se guarde en el servidor. Usualmente los pasos involucrados son:

  • Generar un par de claves en el cliente
  • La clave pública se guarda en el servidor y el cliente utiliza la clave privada para realizar la autenticación

Nunca he visto una solución como:

  • Generar un par de claves en el servidor
  • Clave pública guardada en el cliente

Creo que la última solución es posible pero nunca se usa debido a la imposibilidad de garantizar el acceso a un número restringido de usuarios: la clave pública puede ser utilizada por cualquier persona durante la fase de autenticación. ¿Es este el caso u otras motivaciones están presentes?

    
pregunta Alvin 08.07.2018 - 11:44
fuente

2 respuestas

6

Hay varias claves y esquemas de cifrado utilizados en SSH:

  1. Claves del servidor, para autenticar el servidor para el usuario. El servidor tiene la clave privada y reparte la clave pública a todos los que pregunten.
  2. Claves del cliente, para autenticar el cliente en el servidor. El cliente tiene la clave privada, el servidor el público.

El propósito del # 1 es autenticar el servidor para el usuario. El usuario puede usar la clave pública para verificar que el servidor tenga conocimiento de la clave privada. Esto asegura que no haya un hombre en el ataque central , ya que no podría producir el mismas llaves.

El propósito del # 2 es autenticar al usuario en el servidor. El servidor puede usar la clave pública para verificar que el usuario tenga conocimiento de la clave privada.

La autenticación puede ser realizada por el servidor utilizando la clave pública del cliente para cifrar un número aleatorio . Si el cliente tiene la clave privada correspondiente, puede descifrar el número aleatorio y decirle al servidor el valor. Esto prueba que el cliente tiene la clave privada correspondiente y, por lo tanto, autentica al usuario, sin revelar ninguna información aparte de que tiene la clave privada.

El cliente puede hacer lo mismo con la clave del servidor; cifre un número aleatorio, transmítalo al servidor y pida al servidor que lo descifre.

Para el cifrado de datos en tránsito, ninguno se usa. Un cifrado simétrico, con claves efímeras se utiliza para el cifrado de los datos que pasan por el cable. La clave para esto se resuelve utilizando un protocolo de intercambio de claves .

Esto es obviamente una visión general muy breve, y se simplifica. Puede encontrar más información en este texto breve y no técnico. sobre la autenticación ssh.

    
respondido por el vidarlo 08.07.2018 - 12:32
fuente
-2

Creo que estos videos explican muy bien:

Criptografía de clave pública - Informática

Si no puedes / no quieres ver el video, aquí hay un breve resumen:

Un par de claves consta de dos claves que pueden cifrar algo, pero el producto cifrado solo puede ser descifrado por su par.

El servidor tiene claves públicas y privadas y el cliente tiene claves públicas y privadas que el cliente obtuvo del servidor.

La clave pública del servidor se transmite a todos.

La clave pública del cliente se almacena en el servidor como un host conocido, pero también se puede transmitir a cualquier persona. Es importante que el servidor sepa definitivamente a quién pertenece esa clave pública.

Cuando el cliente desea contactar con el servidor, primero encripta la transmisión con su clave privada y luego con la clave pública del servidor.

El servidor puede verificar con la clave pública del cliente que efectivamente el cliente solicitó acceso porque solo el cliente tiene su clave privada, y nadie sabe cuál es el contenido del intercambio de datos porque el único que puede descifrar el resto de eso está el servidor.

Entonces, para responder a su inquietud, no, esa clave pública no se guarda en el cliente, sino que se transmite a todos siempre.

    
respondido por el Bjamse 08.07.2018 - 19:53
fuente

Lea otras preguntas en las etiquetas