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?
fuente
debug1: Offering RSA public key: <$HOME>/.ssh/id_rsa
que hace pensar que la clave privada se está compartiendo a pesar de que id_rsa.pub ya se ha compartido.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ú".
fuente
ssh
. La respuesta de @ pjc50 parece proporcionar la seguridad que estaba buscando.