É seguro fornecer minha chave pública SSH para o trabalho?

60

Atualmente, trabalho remotamente para várias organizações que precisam que eu acesse seus servidores regularmente para manutenção e atualizações. É seguro adicionar minha chave SSH pública do RSA ao .ssh/authorized_keysarquivo para permitir o login muito mais rápido / sem ter que procurar senhas? Opero sob a presunção de que seria impossível gerar a chave privada a partir da chave pública, mas estou certa em minha suposição?

Dando um passo adiante, haveria algum risco de segurança ao publicar o conteúdo da minha chave pública RSA na Internet? Sei que, se minha chave privada for obtida, estou com muitos problemas, mas, além disso, existem possíveis ameaças reais à segurança?

Naftuli Kay
fonte

Respostas:

77

Sim, é impossível recuperar a chave privada da chave pública. Se fosse possível, o RSA seria fundamentalmente quebrado, e isso seria uma notícia importante (quebrar o RSA não apenas quebraria muita segurança na comunicação na Internet, mas também permitiria todos os tipos de fraudes bancárias, entre outros).

Efetuar login com uma chave pública em vez de uma senha tende a aumentar a segurança. Se sua senha não for forte o suficiente, poderá ser forçada por um invasor com largura de banda suficiente. Se o invasor não tiver uma cópia do seu arquivo de chave privada, a chave RSA não poderá ser forçada com força bruta (uma chave de 1024 bits é equivalente a algo como uma senha de 160 caracteres feita de letras e dígitos que diferenciam maiúsculas de minúsculas) . Alguém que vigia por cima do seu ombro pode ser capaz de ver sua senha e sua senha de chave, mas com uma chave também precisará obter a chave.

As chaves privadas nem sempre são mais seguras que as senhas. Se o invasor obtiver uma cópia de seus arquivos de chave privada (por exemplo, roubando seu laptop ou sua mídia de backup), ele poderá tentar forçar a frase secreta com força bruta, e poderá fazê-lo em alta velocidade, pois você não tem como limitar o taxa (ao contrário de suposições de senha que precisam ser feitas online). Se sua senha for boa o suficiente e você perceber o roubo imediatamente, ainda terá tempo para revogar a chave.

Uma chave pública introduz um elemento de exposição à privacidade: se alguém souber que você usou a mesma chave pública para efetuar login em A e B, eles conhecerão a mesma pessoa que efetuou login em A e B. Apenas possuir a chave pública faz com que você um suspeito de que você também tem a chave privada, para perder alguma anonimidade. Mas isso geralmente é pequeno, especialmente se você está apenas armazenando a chave ~/.sshonde apenas os administradores do sistema (que também sabem em qual endereço IP você se conectou) podem vê-lo.

Tirando essas considerações de segurança, uma chave privada tem muitas vantagens práticas. Você não precisa digitar sua senha com tanta frequência e, em particular, pode executar scripts automatizados que não solicitam depois que você digita sua chave no ssh-agent ou algo semelhante. Você não precisa digitar sua senha com tanta frequência, para ter uma entropia mais alta (mais longa, mais difícil de digitar). Você não precisa digitar sua senha com tanta frequência; portanto, há menos risco de que ela seja bisbilhotada por um observador ou câmera humana.

Gilles 'SO- parar de ser mau'
fonte
@NaftuliTzviKay Na verdade, há algo que deve ser considerado aqui que é negligenciado. Para usar sua chave pública, o sistema do qual você está se conectando precisa ter acesso à sua chave privada. Isso é bom. Se essa chave privada estiver armazenada nesse sistema, ela estará vulnerável e o sistema remoto ficará vulnerável. Duas coisas ajudam nisso: pastas pessoais criptografadas e uma senha na sua chave. Portanto, para alcançar o aumento total da segurança proporcionado pela PKI, você perderá alguma eficiência. Você ou sua organização precisa fazer uma análise de risco para determinar onde traçar a linha.
Xalorous 30/09/16
16

A resposta de Gilles é geralmente boa, exceto

... especialmente se você está apenas armazenando a chave em ~ / .ssh, onde apenas os administradores do sistema (que também sabem em qual endereço IP você se conectou) podem vê-lo.

Suas chaves ssh ~/.sshtambém podem ser lidas por qualquer software executado em sua própria conta. Qual é provavelmente a maior parte do software que você executa. Portanto, você deve confiar nesse software e naqueles que o escreveram.

Stephen Blott
fonte
2
Você deve sempre usar as chaves SSH criptografados por esta razão
ItalyPaleAle