Pular para o conteúdo
ecdsa.com

Handshake TLS

A troca inicial de uma conexão TLS, na qual cliente e servidor combinam os parâmetros, executam uma troca de chaves, fazem a autenticação (em geral, do servidor, pelo certificado dele) e derivam as chaves de tráfego.
Também escrito comoTLS handshakeClientHello and ServerHelloHelloRetryRequest

O TLS 1.3 (RFC 9846 §2) precisa de uma ida e volta: o cliente envia o ClientHello com as versões, as cipher suites, os grupos, os key shares e os algoritmos de assinatura que aceita; o servidor responde com o ServerHello (o key share dele) e depois, já criptografados, EncryptedExtensions, Certificate, CertificateVerify (uma assinatura sobre o hash da transcrição) e Finished; o cliente responde com o próprio Finished e já pode enviar dados. Se o cliente apostou no grupo errado, um HelloRetryRequest custa uma ida e volta a mais.

O TLS 1.2 precisa de duas idas e voltas, envia os certificados em texto claro e, com transporte de chaves RSA, não assina nada efêmero. A retomada de sessão com chave pré-compartilhada dispensa a autenticação por certificado, e o 0-RTT permite que o cliente envie dados antecipados (early data) ao custo da proteção contra repetição.

Depuração: openssl s_client -connect host:443 -servername host -tls1_3 -msg exibe cada mensagem; a maioria das falhas vem de nomes que não correspondem, certificados intermediários ausentes, nenhuma cifra ou grupo em comum ou equipamentos intermediários (middleboxes) que interferem em mensagens ClientHello grandes (o que volta a ser relevante com key shares pós-quânticos de mais de 1 KB).

Padrões e referências

Todos os termos