Não é perigoso usar chaves SSH para efetuar login em um servidor desconhecido / comprometido?


9

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?

Respostas:


11

Você está entendendo mal o processo.

A chave não é enviada, mas um "desafio" é construído criptografando algo com a chave pública que só pode ser descriptografada com a chave privada correspondente.

Se você solicitar sua senha ou encaminhar o X para um servidor comprometido, há um risco potencial à segurança.


Obrigado. O ssh também emite esta mensagem, o debug1: Offering RSA public key: <$HOME>/.ssh/id_rsaque faz pensar que a chave privada está sendo compartilhada, mesmo que o id_rsa.pub já tenha sido compartilhado.
Gurjeet Singh

A chave pública é, bem pública. Você pode dar a qualquer um. Isso lhes dá a capacidade de criptografar mensagens. A chave privada é o que permite descriptografar as mensagens. Contanto que você mantenha sua chave privada, tudo bem.
Pete

7

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ê".


Entendo o processo de criptografia de chave pública, mas fiquei confuso com a mensagem de depuração emitida por ssh. A resposta de @ pjc50 parece fornecer a garantia que eu estava procurando.
Gurjeet Singh
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.