É razoável ter várias chaves SSH?

44

Até agora, criei uma chave SSH separada para cada servidor no qual preciso fazer login (para cada finalidade, para ser mais preciso). Eu fiz isso por uma sensação de segurança, assim como senhas diferentes para sites diferentes.

Ter várias chaves SSH realmente melhora a segurança? Todos eles são usados ​​na mesma máquina, estão localizados no mesmo ~ / .ssh, a maioria tem até a mesma senha.

Então ... devo desistir de todo o sistema e usar apenas uma chave SSH para tudo?

[UPDATE 2015-08-05] O Github publica sua chave pública, e seu cliente SSH pode enviar todas as suas chaves públicas para todos os servidores, dependendo da configuração ; portanto, se você estiver preocupado com um servidor SSH de terceiros que conheça sua identidade ao se conectar , você deve usar várias chaves SSH, embora, na minha opinião, seja paranóico.

Leonid Shevtsov
fonte
Essa pergunta pode se encaixar melhor na segurança da informação .
gerrit 6/02

Respostas:

25

As chaves SSH usam criptografia de chave pública. Isso significa que o que você está instalando em todos esses servidores é apenas sua chave pública , que você deseja que o mundo inteiro saiba. O único segredo real é a sua chave privada que você mantém bloqueada em sua própria máquina. Então sim, eu diria que você está desperdiçando seu tempo.

Spiff
fonte
20
Eu acho que existem razões válidas para ter chaves separadas, e isso não seria uma perda de tempo. No caso de uma chave comprometida, o risco com isso é reduzido. A senha deve ser diferente para cada chave, eu concordo.
jfmessier
É razoável ter pares de chaves diferentes em máquinas diferentes? Como diferentes instâncias dos sistemas operacionais VirtualBox?
Santosh Kumar
11
Essa resposta ignora o conceito de defesa em profundidade, porque confia em "sua chave privada que você mantém bloqueada em sua própria máquina". Considere, por exemplo, o que acontece se o seu laptop for roubado enquanto (uma) sua (s) chave (s) privada (s) estiver sendo usada pelo ssh-agent. Se você tiver várias chaves, as que ainda estiverem criptografadas estarão seguras. Eu não chamaria isso de perda de tempo.
Jon Bentley
34

Em última análise, isso é com você. Você precisa avaliar seu modelo de ameaça. Qual a probabilidade de uma das suas chaves estar comprometida? Se uma chave for comprometida, qual a probabilidade de que as outras chaves sejam comprometidas? Quais são as consequências de suas chaves serem comprometidas? Qual é o custo (incluindo o tempo) do gerenciamento de várias chaves?

Considerar fatores como esses deve ajudá-lo a decidir se você realmente precisa de chaves separadas. Nas minhas máquinas pessoais na minha rede local, geralmente não me importo com sobrecarga extra na tentativa de gerenciar várias chaves. No entanto, fora da minha rede, usaria chaves diferentes, cada uma com uma senha única. Mas essa é apenas a minha opinião pessoal.

pesado
fonte
7
+1 para "avaliar o modelo de ameaça". Este é apenas o ponto.
Sleske 17/05/10
21

Não, não é perda de tempo usar mais de uma chave.

Mais diversidade == menos risco.

Essa afirmação de Spiff está incorreta.

A questão é que a chave pública concede acesso ao detentor da chave privada e a mais ninguém.

O risco de se preocupar aqui é a autenticação. Um site não autorizado encaminha solicitações de autenticação para sua tarefa do agente. Se você usar apenas uma chave, mesmo quando apenas uma chave estiver carregada em seu agente, todos os sites estarão abertos para o invasor.

Isso não tem nada a ver com as frases secretas , você pode ter várias chaves com a mesma frase secreta que não faria diferença aqui. Porque não é a senha que está comprometida.

O invasor encaminha os desafios ao seu agente e pode se conectar a todos os sites para os quais você possui as chaves carregadas . Com chaves diferentes, uma chave carregada -> um site em risco .

Eu digo bem para você, você escolheu a privacidade de outras pessoas em detrimento da sua preguiça.

PS a moral da história é desconfiar do encaminhamento de agentes

pbernatchez
fonte
Suponha que eu gere três chaves SSH, uma para cada um dos três servidores nos quais efetuo logon regularmente. Um dia, depois que eu já fiz login nas três (o que significa que o ssh-agent armazenou as senhas em cache para todas as três chaves), então pelo seu argumento, se meu ssh-agent for comprometido, todos os três logins serão comprometidos. Nesse caso, ter várias chaves SSH não me protegeu. Eu entendi você corretamente?
Sampablokuper
9

Eu acho que há um bom caso de uso para várias chaves públicas, e é se você tiver chaves privadas armazenadas em computadores em diferentes áreas de confiança. Por isso, geralmente mantenho uma chave que é minha chave "comercial" e outra que é minha chave "residencial", simplesmente porque a chave privada do meu material "residencial" não é armazenada no meu computador comercial e vice-versa.

krosenvold
fonte
Ótima resposta, se você tiver máquinas diferentes com chaves diferentes, perfeito. Se uma (ou várias) máquinas tiverem as mesmas chaves, bem, você não estará se protegendo de nada extra ou apenas de uma única chave. Se alguém estiver comprometido, todo o resto dessa máquina também estará.
xref 02/02
3

Eu acho que razoável pode ser considerado sob dois ângulos diferentes: segurança e conveniência .

Quando criamos um par de chaves SSH, é solicitado que você forneça uma senha para adicionar mais uma camada para proteger a chave privada, da seguinte maneira:

$ ssh-keygen -t rsa -b 4096 -C 'With_OR_Without_Passwd'
Generating public/private rsa key pair.
Enter file in which to save the key (/Your/HomeDir/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

Embora exista um aviso explícito solicitando a senha, mas algumas (ou muitas) pessoas ainda se concentram mais nas informações entre colchetes: (vazias sem senha) e seguindo essa sugestão.

Combinando ou não o uso de vários pares de chaves SSH e se deve ou não entrar passwd adicional , temos pelo menos quatro maneiras de ir. E vamos assumir que todos os pares de chaves e o configarquivo estão armazenados ~/.ssh/.

Agora não vamos considerar a segurança primeiro.

A tabela a seguir fornece uma classificação simples sobre segurança (número maior significa mais seguro):

Security     Ways to go
   1         One   SSH key-pair  (NO passwd)
   1         Multi SSH key-pairs (NO passwd)
   2         One   SSH key-pair  (WITH passwd)
   2         Multi SSH key-pairs (WITH passwd) (SAME passwd)
   3         Multi SSH key-pairs (WITH passwd) (DIFF passwds)

Sem a senha , se o sistema for invadido por alguém, o disjuntor poderá obter todas as nossas chaves privadas e configurações, além da autenticação de servidores remotos. Portanto, nessa situação, um par de chaves e vários pares de chaves são os mesmos. A maneira mais segura é usar senhas diferentes para diferentes pares de chaves ssh.

Então não vamos pensar em conveniência .

Porém, mais pares de chaves e mais senhas também tornam nossa vida menos conveniente. A tabela a seguir fornece uma classificação simples sobre segurança (número maior significa mais seguro):

Convenient  Security  Ways to go
   5           1      One   SSH key-pair  (NO passwd)
   4           2      One   SSH key-pair  (WITH passwd)
   3           1      Multi SSH key-pairs (NO passwd)
   2           2      Multi SSH key-pairs (WITH passwd) (SAME passwd)
   1           3      Multi SSH key-pairs (WITH passwd) (DIFF passwds)

Portanto, em uma situação geral, se tivermos que trocar com segurança e conveniência ao mesmo tempo, podemos multiplicar as duas pontuações, e talvez um par de chaves SSH (WITH passwd) seja o melhor a ser escolhido.

YaOzI
fonte