O que exatamente o ssh envia ao realizar a negociação da chave?

8

Ao especificar explicitamente o arquivo de identidade para ssh:

ssh -i ./id_rsa ...

Eu tenho essas linhas no rastreamento de depuração ssh:

debug1: Offering public key: ./id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply

Isso significa que id_rsa gerado por ssh também contém o expoente público de RSA? O formato id_rsa parece ser bastante explícito ao conter chave privada com o bloco "BEGIN PRIVATE KEY", portanto, "oferecer chave pública" deve significar algo diferente de "enviar a chave pública para o servidor".

EDITAR:

Para esclarecer, quero saber exatamente o que está acontecendo por trás da linha "oferta de chave pública". Se o cliente tiver várias chaves, todas elas serão oferecidas ao servidor uma a uma.

    
por Alex B 18.05.2010 / 06:04

3 respostas

10

para se conectar a um servidor SSH e autenticar com seu par de chaves pública / privada, primeiro é necessário compartilhar sua chave pública com o servidor.

isso é feito copiando a chave pública da sua chave privada para o servidor e adicionando-a a ~/ssh/authorized_keys copiando / colando, copiando id_rsa.pub para ~/.ssh/authorized_keys no servidor ou com cat id_rsa.pub >> ~/.ssh/authorized_keys , anexando para a lista.

quando você se conecta, o servidor usa sua chave pública para assinar um desafio e seu cliente usa sua chave privada id_rsa para descriptografar o desafio, criptografar novamente com o servidor público host key e enviá-lo de volta. / p>

o host verifica se você descriptografou o desafio corretamente, descriptografando sua resposta com sua chave privada, e o cliente / host estabelecerá uma conexão criptografada, com base nos dados compartilhados, e não nas chaves pública / privada.

em NO POINT na troca é sua chave privada, ou a chave privada do host trocada ou revelada a outra. sua chave pública é armazenada no servidor, mas é por isso que é uma chave pública.

    
por 18.05.2010 / 08:19
1

Public / Private Key Cryptography baseia-se em um sistema muito simples:

Você tem uma chave pública que é capaz de fazer criptografia unidirecional e uma chave privada que é capaz de criptografar de . A chave pública pode ser entregue a todos no mundo, e ninguém poderá descriptografar seus dados criptografados, embora eles possam criptografar dados que você pode descriptografar com sua chave privada.

Assim, a resposta para sua pergunta é "Sua chave pública".

    
por 18.05.2010 / 06:13
1

Eu não acho que deveria estar enviando a chave pública ou privada neste momento. Uma criptografia deve ser executada pelo cliente usando a chave privada em texto simples que já é conhecido pelo servidor. O host pode descriptografar essa mensagem usando a chave pública, sabendo que o único que poderia ter criptografado corretamente é um cliente que mantém a chave privada correspondente, autenticando o cliente.

Acredito que diga Offering public key: ./id_rsa porque ele usa a chave privada (armazenada em ./id_rsa ) para executar uma criptografia em texto simples que é conhecida pelo servidor e, em seguida, o servidor usará a chave pública para descriptografar esse texto cifrado e confirmar que coincide com o texto simples. O arquivo de chave pública ./id_rsa.pub nunca deve ser necessário pelo cliente após a geração de chave inicial. Isso é usado apenas pelo servidor para descriptografia.

    
por 18.05.2010 / 06:25

Tags