Digamos que forneça a alguém a minha chave SSH pública, o id_rsa.pub, e ele a instale em um servidor comprometido e solicite o login.
O processo de login envolve enviar minha chave privada para o servidor comprometido?
Se sim, o invasor agora tem acesso à minha chave SSH privada, e isso é assustador.
Se não, então por que vejo esta linha na saída ssh -vvv:
debug1: Server accepts key: pkalg ssh-rsa blen 277
Isso implica que a chave privada foi enviada ao servidor e a aceitou.
Estou entendendo mal o problema?
fonte
debug1: Offering RSA public key: <$HOME>/.ssh/id_rsa
que faz pensar que a chave privada está sendo compartilhada, mesmo que o id_rsa.pub já tenha sido compartilhado.NÃO , sua chave privada NUNCA é "enviada" ou transmitida para qualquer lugar.
A criptografia de chave pública não é como a autenticação tradicional de nome de usuário / senha.
Sua chave pública é exatamente isso - pública. É perfeitamente seguro compartilhá-lo. Enviar sua chave pública para alguém pode revelar sua identidade (as pessoas podem saber que é sua porque é um número único), mas nunca pode permitir que outra pessoa se faça passar por você ou se autentique como você. Você também pode postar sua chave pública no SuperUser ou na sua página da Web em HTTP normal; é perfeitamente seguro e inútil se alguém não tiver sua chave privada.
Sua chave privada é exatamente isso - privada. Ele reside apenas nos sistemas que você possui e confia (espero) e sempre deve ser criptografado com uma senha de desbloqueio para segurança máxima, caso alguém obtenha acesso físico ao sistema em que está armazenado. A chave privada nunca é transmitida por nenhum programa de segurança implementado corretamente que esteja se comportando de acordo com as regras da criptografia de chave pública. Ou seja, a menos que você tenha um programa em seu sistema local comprometido e capaz de ler sua chave privada (e a chave privada não é criptografada por uma senha), sua chave privada estará sempre segura.
As mensagens são assinadas com a chave privada, no seu computador , antes de serem enviadas ao servidor remoto. Portanto, em vez de enviar a chave privada para o servidor remoto, você está enviando uma mensagem que foi criptografada com a chave privada. Mas essas duas coisas não são as mesmas: você não pode derivar a chave privada da mensagem assinada; isso faz parte do ponto da criptografia de chave pública.
Em resumo, mesmo que um invasor hostil obtenha sua chave pública e receba mensagens assinadas por sua chave privada, ele ainda não poderá obter sua chave privada real e, portanto, não poderá se passar por sua credencial ou usar sua chave privada para autenticar "como você".
fonte
ssh
. A resposta de @ pjc50 parece fornecer a garantia que eu estava procurando.