Como usar uma chave pública para fazer o login no SSH é melhor do que usar uma senha?

2

Não estou perguntando sobre senha versus autenticação de chave.

Eu já vi algumas vezes (e até mesmo o Amazon AWS) que, mesmo que o SSH tenha uma grande vulnerabilidade, a autenticação de chaves tornaria tal exploração menos vulnerável. Mas, e se houver uma exploração de como as chaves são verificadas? isso não está apenas fazendo uma suposição baseada nos mecanismos de autenticação?

Por que isso é o pensamento? Será porque todos sabemos que as senhas são uma forma inadequada de autenticação, de modo que a suposição acaba de ser "usar uma chave privada"?

    
por user1529891 21.04.2014 / 03:18

2 respostas

8

Eu acho que você está se referindo ao que é chamado de modelo de desafio-resposta . Com essa abordagem, os pares de chaves nunca são expostos de maneira que possam ser detectados pelo fio, como é o caso do envio de uma senha pela linha. E por isso é considerado muito mais seguro por causa deste fato.

Uma das respostas para esta segurança SE Q & A intitulado: Está usando uma chave pública para fazer login no SSH melhor do que salvar uma senha? explica as vantagens de usar um par de chaves pública / privada.

trecho

In the public key case, we have a very different situation. In this case, the server has the public key of the user stored. What happens next is that the server creates a random value (nonce), encrypts it with the public key and sends it to the user. If the user is who is supposed to be, he can decrypt the challenge and send it back to the server, who then confirms the identity of the user. It is the classic challenge-response model.

Assim, dada a maneira pela qual os pares de chaves são usados, enviando uma NONCE, eles nunca são realmente expostos a serem conhecidos por um homem no meio, e apenas o lado público da chave é revelado.

Se você estiver realmente desconfiado, pode abandonar o uso desse par de chaves e simplesmente gerar um novo conjunto.

O que é uma NONCE?

trecho

In security engineering, a nonce is an arbitrary number used only once in a cryptographic communication. It is similar in spirit to a nonce word, hence the name. It is often a random or pseudo-random number issued in an authentication protocol to ensure that old communications cannot be reused in replay attacks. For instance, nonces are used in HTTP digest access authentication to calculate an MD5 digest of the password. The nonces are different each time the 401 authentication challenge response code is presented, thus making replay attacks virtually impossible.

Referências

por 21.04.2014 / 03:44
2

Sim, pode haver uma vulnerabilidade no mecanismo de autenticação de chave pública do SSH. Mas também pode haver uma vulnerabilidade no mecanismo de autenticação de senha ou desafio-resposta. Então, basicamente, apenas nesse fator, os dois métodos de autenticação são considerados iguais.

Benefícios da autenticação de chave pública

A chave privada nunca é enviada pelo fio. O servidor tem a chave pública e criptografa alguns dados aleatórios com essa chave pública. Esses dados só podem ser descriptografados com a chave privada. Os dados criptografados são enviados para o cliente, que os descriptografa e os envia de volta ao servidor.

Também é impossível para a força bruta descriptografar esses dados. O cliente só tem uma tentativa de descriptografá-lo. Se isso der errado, terá que recomeçar com dados recém-criptografados. Depois, há também um limite de tempo, em que, se o cliente tiver apenas alguns segundos para responder.

Desvantagens da autenticação de chave pública

As chaves privadas SSH podem ser protegidas com uma senha e, por segurança, é recomendável fazê-lo. Mas isso não é obrigatório.
Portanto, se o sistema do cliente não tiver a senha da chave privada protegida e alguém obtiver acesso físico ao sistema ou uma cópia dessa chave, ele terá acesso ao sistema remoto.

Desvantagens do encaminhamento de chaves do agente

É possível, e comum, para o sistema cliente usar um 'agente chave' para armazenar a chave privada SSH. Quando o cliente ssh precisa fazer algo com essa chave privada, ele envia a solicitação ao agente de chave.
Também é possível, e comum, encaminhar o acesso a esse agente-chave pela conexão SSH, para que você possa usar a chave SSH local no sistema remoto (se você quiser fazer o ssh para outra caixa, por exemplo).

A desvantagem disso é que, se o sistema remoto estiver comprometido ou alguém tiver acesso root, ele poderá usar sua chave ssh enquanto você estiver conectado a esse sistema.

Com o encaminhamento de chaves, o daemon SSH coloca um soquete nomeado no sistema remoto que é usado para se comunicar com o agente de chave SSH. Esse soquete é protegido por permissões básicas do sistema de arquivos, de modo que apenas o usuário possa acessá-lo. No entanto, como o root pode fazer o que quiser e as permissões do sistema de arquivos não têm significado, o usuário root pode acessar esse soquete e usar sua chave privada.

Note que isto não significa que eles recebam sua chave privada, apenas para que possam usá-la. O agente de chave SSH nunca envia a chave em si, apenas responde à solicitação de 'descriptografar este dado' necessária para autenticação de chave pública.

    
por 21.04.2014 / 04:58