O que exatamente acontece quando você usa o SSH sem gerar um par de chaves?

4

Isso parece simples demais e eu sinto que posso ter perdido algo claramente óbvio, mas o que está realmente acontecendo quando você usa o SSH sem gerar um par de chaves?

Uma variante desta pergunta foi feita aqui e como a resposta, eu sempre entendi que sem o par de chaves, o SSH retorna à autenticação de senha.

No entanto, o artigo da Wikipedia descreve apenas duas formas de usá-lo. Ambos parecem envolver pares de chaves, um gerado manualmente e um automaticamente.

There are several ways to use SSH; one is to use automatically generated public-private key pairs to simply encrypt a network connection, and then use password authentication to log on.

Another is to use a manually generated public-private key pair to perform the authentication, allowing users or programs to log in without having to specify a password

Quando eu crio uma conexão SSH para um servidor inseguro sem um par de chaves, sou solicitado a fornecer meu nome de usuário e senha, então tenho acesso ao shell.

A senha é um detalhe de implementação e, portanto, não está no wiki? Um par de chaves foi gerado automaticamente, como sugerido (em caso afirmativo, como a chave pública chegou ao servidor)? Ou está acontecendo apenas com senha?

Se estiver usando apenas a combinação de senha e nome de usuário, os dados serão criptografados? Se sim, como está sendo criptografado?

    
por Dan Prince 14.03.2015 / 19:42

1 resposta

7

O artigo da Wikipedia está confundindo diferentes camadas SSHv2. (Ele pode ter sido um pouco correto para o SSHv1 há uma década, mas é definitivamente simplificado ao nível do absurdo.)

Os pares de chaves SSHv2, tanto seus como servidores, são usados somente para autenticação , e a configuração da criptografia é sempre feita usando pares de chaves DH temporariamente gerados para cada conexão. O par de chaves SSH do servidor apenas assina dados de configuração de criptografia (para provar a identidade do servidor), enquanto o par de chaves SSH do cliente não é usado para esse processo.

No SSHv2, quando você se conecta ao servidor (depois de ambas as extremidades trocarem listas de algoritmos suportados), o primeiro passo é troca de chaves , que de alguma forma gera uma chave simétrica usada para criptografar toda a conexão. (O servidor também é autenticado como um efeito colateral desse processo.)

Na maioria das vezes D – H ou ECDH será usado para isso, o que significa:

  1. O cliente gera um par de chaves DH (usado somente para esta conexão) e envia sua chave pública DH.

  2. O servidor também gera um novo par de chaves DH. Ele também carrega seu par de chaves SSH "host key" do disco.

    Em seguida, ele assina a chave pública DH com a chave privada SSH e envia as chaves públicas (assim como a assinatura) para o cliente.

  3. O cliente verifica a assinatura e verifica se a chave pública SSH do servidor está em known_hosts.

    Em seguida, ele usa as duas chaves DH (público + servidor público do cliente) para gerar a chave de criptografia compartilhada e descarta o par de chaves DH.

  4. O servidor também usa as duas chaves DH (private do cliente + do servidor) para gerar a mesma chave de criptografia compartilhada e também joga fora seu par de chaves DH.

  5. Ambos os lados ativam a criptografia.

(Existem alguns outros métodos de troca de chaves, mas eles raramente são usados.)

O próximo passo é autenticação do cliente . Observe que, neste momento, a conexão já está criptografada, mesmo que a chave SSH do cliente ainda não tenha sido usada!

  1. O cliente envia uma "solicitação de serviço" para autenticação do cliente.

  2. O servidor oferece alguns mecanismos - "senha", "chave pública", possivelmente outros.

  3. Se você tiver um par de chaves SSH, o cliente seleciona "chave pública", envia suas chaves públicas SSH e usa sua chave privada SSH para assinar alguns dados aleatórios fornecidos pelo servidor para comprovar a propriedade das chaves.

    Se você não tiver um par de chaves SSH, o cliente selecionará "senha" e enviará sua senha diretamente - no entanto, ainda dentro do túnel criptografado.

por 14.03.2015 / 20:15