Por que uma chave pública SSH fica no servidor e não no cliente?

12

Não entendo bem a teoria por trás da manutenção de chaves públicas no servidor. Na analogia do cofre das chaves públicas / privadas, para desbloquear a caixa de Alice, Alice mantém a chave privada enquanto a chave pública é distribuída a Bob. Parece que o servidor desempenha o papel de cofre, então por que ele mantém a chave pública?

Connor Glosser
fonte

Respostas:

20

Lembre-se de que o servidor TEM uma chave pública e privada que é completamente separada do par de chaves que você gera como usuário. A chave privada do servidor geralmente é armazenada com a configuração do servidor e a chave pública é transmitida pelo servidor quando você tenta se conectar. Seu cliente compara a chave pública do servidor com seu arquivo known_hosts. Se usado corretamente, isso evita ataques MITM.

Você tem a chave privada da sua conta pessoal. O servidor precisa da sua chave pública para poder verificar se a sua chave privada da conta que você está tentando usar está autorizada.

Então, usando o seu exemplo. Bob e Alice têm chaves privadas e públicas. As chaves públicas que foram compartilhadas antes ou como parte da conexão são usadas para verificar se os dados criptografados pelas chaves privadas são legítimos. Se o cliente não tiver a chave pública ou uma chave pública diferente, você receberá um aviso assustador. Se o servidor não tiver a chave pública do cliente, você não poderá entrar.

Zoredache
fonte
1
Aha! Isso faz muito mais sentido. Eu sabia que havia um método de proteção contra ataques MITM, mas não sabia que havia outro par de chaves :) Obrigado pela ajuda!
Connor Glosser
5

Você, como usuário, é o único a fornecer as informações que você é quando faz login. Portanto, para obter uma autorização, você precisa da chave privada porque o servidor perguntará a quem pretender ser você (tenta fazer login com seu nome) para provar isso.

A maneira como funciona é que o servidor envia um pouco de texto, pede para criptografá-lo e descriptografá-lo com sua chave pública. Somente a pessoa com sua chave privada pode fazer isso.

Cairo
fonte
1

Ele contém a chave pública por conveniência. Caso contrário, você precisará criar uma PKI - algo semelhante à SSL SSL.

A idéia seria verificar a impressão digital da chave pública quando o cliente ssh solicitar que você aceite a chave do servidor remoto.

Mircea Vutcovici
fonte
1

Eu diria que uma analogia melhor é que a chave pública do servidor é o cofre aberto com uma trava que você pode fechar (mas não abrir), apenas o servidor pode abri-lo. A verdadeira questão é se você confia na chave pública (é realmente a Alice's Box?), Onde quer que você a obtenha é pública por definição, e é disso que se trata a PKI.

Helvick
fonte
1

Uma chave pública é um número muito grande, matematicamente derivado da sua chave privada.

É derivado de tal maneira que os dois números estão vinculados,

mas para que a chave privada não possa ser descoberta por quem conhece apenas a chave pública. A chave pública é o que você envia para outras partes, para quem deseja se autenticar ou para quem deseja enviar mensagens criptografadas. A chave pública não é sensível e não precisa ser protegida. Pode ser divulgado publicamente. [email protected]

dilli babu
fonte
1
Não acho que exista algo novo nesta resposta em comparação com as outras respostas já fornecidas há cinco anos.
kasperd