¿Por qué una clave pública SSH se encuentra en el servidor y no con el cliente?

12

No entiendo la teoría detrás de mantener las claves públicas en el servidor. En la analogía de la caja de seguridad de las claves públicas / privadas, para desbloquear la caja de Alice, Alice mantiene la clave privada mientras la clave pública se distribuye a Bob. Parece que el servidor desempeña el papel de lockbox, entonces, ¿por qué tiene la clave pública?

Connor Glosser
fuente

Respuestas:

20

Tenga en cuenta que el servidor TIENE una clave privada y pública que está completamente separada del par de claves que genera como usuario. La clave privada para el servidor generalmente se almacena con la configuración del servidor y la clave pública es transmitida por el servidor cuando intentas conectarte. Su cliente compara la clave pública del servidor con su archivo conocido_hosts. Si se usa correctamente, esto evita los ataques MITM.

Tienes la clave privada para tu cuenta personal. El servidor necesita su clave pública para que pueda verificar que su clave privada para la cuenta que está intentando utilizar está autorizada.

Entonces, usando tu ejemplo. Tanto Bob como Alice tienen claves privadas y claves públicas. Las claves públicas que se han compartido de antemano o como parte de la conexión se utilizan para verificar que los datos cifrados por las claves privadas son legítimos. Si el cliente no tiene la clave pública, o tiene una clave pública diferente, recibirá una advertencia aterradora. Si el servidor no tiene la clave pública del cliente, no podrá ingresar.

Zoredache
fuente
1
¡Ajá! Eso tiene mucho más sentido. Sabía que había un método para protegerse contra los ataques MITM, pero no sabía que había otro par de llaves :) ¡Gracias por la ayuda!
Connor Glosser
5

Usted, como usuario, es quien proporciona la información que es cuando inicia sesión. Por lo tanto, en aras de la autorización, necesita la clave privada porque el servidor le preguntará a cualquiera que pretenda ser usted (intenta iniciar sesión con su nombre) para probarlo.

La forma en que funciona es que el servidor le envía un poco de texto, le pide que lo cifre y lo descifre con su clave pública. Solo la persona con su clave privada puede hacer esto.

El Cairo
fuente
1

Tiene la clave pública por conveniencia. De lo contrario, debe crear una PKI, algo similar a SSL CA.

La idea sería verificar la huella digital de la clave pública cuando el cliente ssh le pida que acepte la clave del servidor remoto.

Mircea Vutcovici
fuente
1

Diría que una mejor analogía es que la clave pública del servidor es la caja de seguridad abierta con un pestillo que puede cerrar (pero no abrir), solo el servidor puede abrirla. La verdadera pregunta es si confía en la clave pública (¿es eso realmente Alice's Box?), De donde sea que la obtenga es pública por definición, y de eso se trata la PKI.

Helvick
fuente
1

Una clave pública es un número muy grande, derivado matemáticamente de su clave privada.

Se deriva de tal manera que los dos números están vinculados,

pero para que la clave privada no pueda ser descubierta por alguien que solo conozca la clave pública. La clave pública es lo que envía a otras partes, a quienes desea autenticarse o a quienes desea enviar mensajes cifrados. La clave pública no es sensible y no necesita protección. Se puede difundir públicamente. [email protected]

dilli babu
fuente
1
No creo que haya nada nuevo en esta respuesta en comparación con las otras respuestas ya proporcionadas hace cinco años.
kasperd