A Troca de Chave de Sessão (ou Key Exchange - KEX) é o momento técnico onde o segredo da criptografia é gerado. No SSH, isso é feito de forma que um atacante observando a rede não consiga descobrir a chave, mesmo capturando todos os pacotes.

1. O Algoritmo Diffie-Hellman (DH)

O método padrão para a troca de chaves é o Diffie-Hellman (ou sua versão moderna ECDH - Elliptic Curve Diffie-Hellman).

O processo simplificado funciona assim:
1. Chave de Host (Host Key): O servidor envia sua chave pública para o cliente. O cliente verifica se confia nela (conferindo o arquivo known_hosts).
2. Valores Temporários: Cada lado gera um par de chaves temporárias (efêmeras) e trocam os valores públicos entre si.
3. Cálculo do Segredo: Através de propriedades matemáticas complexas, tanto o cliente quanto o servidor calculam o mesmo valor final, sem que esse valor tenha sido enviado pela rede.

2. A Chave de Sessão (Session Key)

A partir do segredo gerado pelo Diffie-Hellman, o SSH deriva Chaves de Sessão Simétricas (usando algoritmos como SHA-256). Estas chaves são usadas para:
- Criptografar o tráfego (ex: usando AES).
- Gerar os MACs (Message Authentication Codes) para garantir a integridade.

A partir deste momento, todo o tráfego da rede está criptografado. O que quer que o cliente envie agora (como sua senha) será invisível para qualquer um no meio do caminho.


3. Perfect Forward Secrecy (PFS)

Como as chaves efêmeras usadas no Diffie-Hellman são descartadas assim que a sessão termina, o SSH garante a Sigilo Direto Perfeito.
- Se um atacante capturar e guardar o tráfego criptografado hoje e, daqui a um ano, conseguir roubar a Chave de Host do servidor, ele ainda assim não conseguirá descriptografar os dados salvos.
- Isso ocorre porque a chave de host foi usada apenas para Autenticação (provar que o servidor é ele mesmo), mas não para a Criptografia dos dados.