Saltar al contenido
ecdsa.com

Handshake TLS

El intercambio inicial de una conexión TLS, en el que el cliente y el servidor acuerdan los parámetros, realizan un intercambio de claves, se autentican (normalmente solo el servidor, mediante su certificado) y derivan las claves de tráfico.
También se escribeTLS handshakeClientHello and ServerHelloHelloRetryRequest

TLS 1.3 (RFC 9846 §2) necesita un solo viaje de ida y vuelta: el cliente envía ClientHello con las versiones, los conjuntos de cifrado, los grupos, los key shares y los algoritmos de firma que admite; el servidor responde con ServerHello (su key share) y después, ya cifrados, EncryptedExtensions, Certificate, CertificateVerify (una firma sobre el hash de la transcripción) y Finished; el cliente contesta con su propio Finished y ya puede enviar datos. Si el cliente no acertó con el grupo, un HelloRetryRequest cuesta un viaje de ida y vuelta adicional.

TLS 1.2 necesita dos viajes de ida y vuelta, envía los certificados sin cifrar y, con transporte de claves RSA, no firma nada efímero. La reanudación con una clave precompartida omite la autenticación por certificado, y 0-RTT permite al cliente enviar datos tempranos a costa de la protección frente a la repetición.

Depuración: openssl s_client -connect host:443 -servername host -tls1_3 -msg imprime cada mensaje; la mayoría de los fallos se deben a nombres que no coinciden, certificados intermedios ausentes, la falta de un cifrado o grupo en común, o equipos intermedios (middleboxes) que interfieren con mensajes ClientHello grandes (algo de nuevo relevante con los key shares poscuánticos de más de 1 KB).

Estándares y referencias

Todos los términos