¿No es peligroso usar claves SSH para iniciar sesión en un servidor desconocido / comprometido?


9

Supongamos que proporciono a alguien mi clave SSH pública, id_rsa.pub y él / ella la instala en un servidor que está comprometido, y se me pide que inicie sesión.

¿El proceso de inicio de sesión implica enviar mi clave privada al servidor comprometido?

En caso afirmativo, el atacante ahora tiene acceso a mi clave SSH privada, y eso da miedo.

Si no, ¿por qué veo esta línea en la salida ssh -vvv:

debug1: Server accepts key: pkalg ssh-rsa blen 277

Esto implica que la clave privada se envió al servidor y la aceptó.

¿Estoy malinterpretando el problema?

Respuestas:


11

Estás malinterpretando el proceso.

La clave no se envía, sino que se construye un "desafío" cifrando algo con la clave pública que solo se puede descifrar con la clave privada correspondiente.

Si se le solicita su contraseña o si reenvía X a un servidor comprometido, existe un riesgo potencial de seguridad.


Gracias. ssh también emite este mensaje debug1: Offering RSA public key: <$HOME>/.ssh/id_rsaque hace pensar que la clave privada se está compartiendo a pesar de que id_rsa.pub ya se ha compartido.
Gurjeet Singh

La clave pública es, bien pública. Se lo puedes dar a cualquiera. Eso les da la capacidad de encriptar mensajes. La clave privada es lo que le permite descifrar los mensajes. Mientras guarde su clave privada para usted, estará bien.
Pete

7

NO , su clave privada NUNCA es "enviada" o transmitida a ningún lado.

La criptografía de clave pública no es como la autenticación tradicional de nombre de usuario / contraseña.

  • Su clave pública es solo eso: pública. Es perfectamente seguro compartirlo. Enviar su clave pública a alguien puede revelar su identidad (las personas pueden saber que es de usted porque es un número único), pero nunca puede permitir que otra persona se haga pasar por usted o se autentique como usted. También puede publicar su clave pública en SuperUser o en su página web a través de HTTP normal; es perfectamente seguro e inútil si alguien no tiene su clave privada.

  • Su clave privada es solo eso: privada. Solo reside en sistemas de su propiedad y de confianza (con suerte), y siempre debe estar encriptado con una contraseña de desbloqueo para máxima seguridad, en caso de que alguien obtenga acceso físico al sistema en el que está almacenado. La clave privada nunca se transmite por ningún programa de seguridad implementado adecuadamente que se comporte de acuerdo con las reglas de la criptografía de clave pública. Es decir, a menos que tenga un programa en su sistema local que esté comprometido y sea capaz de leer su clave privada (y la clave privada no esté encriptada por una contraseña), su clave privada siempre está segura.

Los mensajes se firman con la clave privada, en su computadora , antes de ser enviados al servidor remoto. Entonces, en lugar de enviar la clave privada al servidor remoto, está enviando un mensaje cifrado con la clave privada. Pero estas dos cosas no son lo mismo: no puede derivar la clave privada del mensaje firmado; eso es parte del objetivo de la criptografía de clave pública.

En resumen, incluso si un atacante hostil obtiene su clave pública y obtiene mensajes firmados por su clave privada, aún no podrá obtener su clave privada real y, por lo tanto, no puede suplantar sus credenciales o usar su clave privada para autenticarse "como tú".


Entiendo el proceso de criptografía de clave pública, pero estaba confundido por el mensaje de depuración emitido por ssh. La respuesta de @ pjc50 parece proporcionar la seguridad que estaba buscando.
Gurjeet Singh
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.