Handshake do SSH e Autenticação por Chave do Host
Acompanhe o handshake do SSH-2: troca de versões, negociação de algoritmos, troca de chaves e autenticação do serviço.
Handshake do SSH e Autenticação por Chave do Host é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.
Conexão TCP na porta 22
O SSH começa com uma conexão TCP à porta 22. Depois que ela é estabelecida, o cliente e o servidor trocam cadeias de versão, como SSH-2.0-OpenSSH_9.3, que identificam a versão do protocolo e a implementação. Essa troca de versões permite que ambos confirmem a compatibilidade antes de prosseguir.
Fase de negociação de algoritmos
Após a troca de versões, ambas as partes enviam pacotes SSH_MSG_KEXINIT que listam os algoritmos compatíveis. Essas listas abrangem métodos de troca de chaves, tipos de chaves de servidor, cifras simétricas, algoritmos MAC e compactação. A interseção das duas listas determina os algoritmos escolhidos para a sessão.
Troca de chaves Diffie-Hellman e ECDH
A chave da sessão é estabelecida usando um algoritmo de troca de chaves, como Diffie-Hellman ou ECDH. O cliente e o servidor geram, cada um, pares de chaves efêmeras, trocam valores públicos e calculam independentemente o mesmo segredo compartilhado. Esse segredo compartilhado serve de base para a derivação da chave da sessão sem jamais ser transmitido diretamente.
Autenticação da chave do servidor
O servidor comprova sua identidade assinando o hash da troca de chaves com sua chave privada de servidor. A chave de servidor pode ser RSA, ECDSA ou estar no formato moderno Ed25519. O cliente usa a chave pública correspondente para verificar essa assinatura, confirmando que está se comunicando com o servidor legítimo, e não com um impostor.
Confiança no primeiro uso (TOFU)
Na primeira conexão com um servidor novo, o cliente ainda não conhece a chave pública do servidor. O SSH exibe a impressão digital da chave e solicita que o usuário a aceite. Esse modelo de Confiança no Primeiro Uso armazena a chave em known_hosts e detecta alterações em conexões futuras, alertando sobre possíveis ataques do tipo intermediário.
Verificação da impressão digital da chave do servidor
A maneira mais segura de verificar a chave de um servidor novo é usar um canal fora de banda. Um administrador pode ler a impressão digital do servidor pessoalmente ou por meio de um canal seguro verificado e compará-la com o que o cliente SSH exibe. Isso impede que uma chave fraudulenta seja aceita silenciosamente na primeira conexão.
Estrutura do arquivo known_hosts
O arquivo known_hosts armazena linhas no formato: hostname algorithm base64-key comment. Cada entrada representa uma identidade de servidor confiável. Quando você se conecta a um servidor que já está em known_hosts, o SSH verifica se a chave apresentada corresponde à chave armazenada e recusa a conexão se houver uma divergência.
Derivação da chave da sessão
Após a troca de chaves, ambas as partes derivam independentemente as chaves da sessão usando o segredo compartilhado, o hash da troca e o identificador da sessão. São derivadas chaves separadas para cada direção da comunicação e para as operações de criptografia e MAC. Isso significa que as chaves usadas no tráfego do cliente para o servidor são diferentes das chaves usadas no tráfego do servidor para o cliente.
Fase de comunicação criptografada
Depois que as chaves da sessão são estabelecidas, toda a comunicação SSH subsequente é criptografada e autenticada. A cifra negociada, como AES-256-GCM ou ChaCha20-Poly1305, protege a confidencialidade, enquanto o MAC garante a integridade. Até mesmo o nome de usuário e as credenciais de autenticação são enviados dentro desse túnel criptografado.
Comparação dos tipos de chave de servidor SSH
As chaves de servidor RSA de 2048 ou 4096 bits têm amplo suporte, mas são mais lentas. As chaves ECDSA baseadas em curvas NIST são mais rápidas, mas algumas pessoas desconfiam dos parâmetros das curvas NIST. As chaves Ed25519 baseadas em Curve25519 são a recomendação moderna: pequenas, rápidas, altamente seguras e sem dependência dos parâmetros das curvas NIST. A maioria dos servidores SSH modernos oferece Ed25519 por padrão.
Resumo do estabelecimento da sessão
O handshake do SSH consiste em: conexão TCP, troca de versões, negociação de algoritmos, troca de chaves que estabelece as chaves da sessão, verificação da chave do servidor e autenticação do usuário. Todas as etapas após a troca de versões ocorrem dentro de um canal criptografado e protegido contra alterações, estabelecido pela fase de troca de chaves.
Verificação da chave do servidor
Como um cliente verifica a chave do servidor SSH em conexões posteriores à primeira?
Recapitulação do handshake do SSH
Nesta lição: o TCP estabelece a conexão na porta 22, as cadeias de versão são trocadas, a negociação de algoritmos seleciona as cifras e os métodos de troca de chaves, ECDH ou DH estabelece um segredo compartilhado, as chaves da sessão são derivadas separadamente para cada direção, o servidor se autentica com a assinatura da sua chave de servidor e o cliente verifica a chave em known_hosts usando TOFU na primeira conexão.
Perguntas Frequentes
A aula “Handshake do SSH e Autenticação por Chave do Host” é grátis?
Sim — o texto completo de “Handshake do SSH e Autenticação por Chave do Host” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.
O que vou aprender em “Handshake do SSH e Autenticação por Chave do Host”?
Acompanhe o handshake do SSH-2: troca de versões, negociação de algoritmos, troca de chaves e autenticação do serviço. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cryptology Academy?
Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Handshake do SSH e Autenticação por Chave do Host”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cryptology Academy?
Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Handshake do SSH e Autenticação por Chave do Host
- Autenticação por Chave Pública e Encaminhamento de Agente
- Tunelamento SSH e Técnicas de Encaminhamento de Portas
- Fortalecimento do SSH e Boas Práticas de Auditoria