Como as chaves de sessão, chaves públicas / privadas são geradas no servidor e no cliente ssh e usadas?

1

Do processo de handshake do SSH, explicado link

Key Exchange

  1. The client has a public & private key pair. The server has a public & private key pair.
  2. The client and server exchange their public keys.
  3. The client now has its own key pair plus the public key of the server.
  4. The server now has its own key pair plus the public key of the client.
  5. This exchange of keys is done over an insecure network.
  6. The client takes its private key and the server’s public key and passes it through a mathematical equation to produce the shared secret (session key).
  7. The server takes its private key and the client’s public key and passes it through a mathematical equation to produce the shared secret (session key). Both these shared secrets are identical! This is an asymmetrical key.
  8. This encrypted tunnel is used for the remainder of the session, including the next phase: User Authentication.
  1. A troca de chaves públicas entre o servidor e o cliente é feita uma vez para o seguinte, todas as sessões, até que sejam alteradas?

  2. são as chaves de sessões geradas no cliente e no servidor uma vez por sessão?

    Cada vez que eles são gerados, eles usam chaves privadas e chaves públicas como entradas. Isso significa que as chaves de sessão para sessões diferentes são as mesmas, desde que as chaves privada e pública permaneçam as mesmas?

  3. por que a citação diz que as chaves de sessão geradas no servidor e no cliente na mesma sessão são "idênticas"?

  4. o marcador 8 parece dizer que a autenticação do usuário acontece depois que as chaves da sessão são geradas?

    Se sim, a autenticação do usuário usa as chaves de sessão geradas no cliente e no servidor, ou apenas usa as chaves públicas e privadas no cliente e no servidor?

A propósito, há alguma referência sobre como o processo funciona e usa as chaves públicas e privadas e as chaves de sessão no servidor e no cliente?

Obrigado.

    
por Tim 15.06.2016 / 23:28

1 resposta

4

  1. Is the exchange of public keys between the server and client done once for the following all sessions, until they are changed?

Sim. As chaves para a troca de chaves para cada troca de chaves.

  1. are the sessions keys generated on the client and on the server once per session?

Sim. A menos que você transfira muitos dados, sua sessão dura o suficiente ou você força o Rekeying (ou configura a recriação para ocorrer com mais frequência do que o necessário). RekeyLimit na configuração do servidor e do cliente.

Each time they are generated, they take private keys and public keys as inputs. Does it mean that the session keys for different sessions are the same, as long as the private and public keys stay the same?

Como acima. Estas são chaves são geradas apenas para a troca de chaves. Eles não são chaves de autenticação nem chaves de host, como discutido anteriormente em perguntas anteriores.

  1. why does the quote say that the session keys generated on the server and on the client in the same session are "identical"?

Este é o ponto da troca de chaves. Eu realmente gosto desta imagem abaixo explicando (de wikipedia ). Eles são gerados independentemente, com base no conhecimento de uma chave privada, mas os dados que trafegam pela rede (chaves públicas) não são suficientes para construir esse segredo compartilhado.

  1. the bullet 8 seems to say that user authentication happens after the session keys are generated?

If yes, does user authentication use the session keys generated on the client and on the server, or just use the public and private keys on the client and on the server?

Não. As chaves de sessão são usadas para criptografia do canal pela rede. O ponto é que, antes da troca de chaves, os dados viajam pela rede sem segurança e qualquer um pode interceptar / modificar / inserir quaisquer dados. Após a troca de chaves, os dados são criptografados usando cifra e "autenticados" usando MAC.

Há muita informação sobre o protocolo SSH. O projeto OpenSSH tem uma página dedicada com todos os padrões (RFCs) implementados para o protocolo SSH. Provavelmente o mais importante é RFC4253 . Também o código fonte do openssh pode explicar muito.

Espero ter deixado um pouco mais claro. Se algo estiver faltando, me avise.

    
por 15.06.2016 / 23:48

Tags