Aller au contenu
ecdsa.com

Handshake TLS

L’échange initial d’une connexion TLS, au cours duquel le client et le serveur s’accordent sur les paramètres, effectuent un échange de clés, procèdent à l’authentification (en général celle du serveur, par son certificat) et dérivent les clés de trafic.
Autres graphiesTLS handshakeClientHello and ServerHelloHelloRetryRequest

TLS 1.3 (RFC 9846 §2) ne demande qu’un aller-retour : le client envoie ClientHello avec les versions, suites de chiffrement, groupes et algorithmes de signature qu’il prend en charge, ainsi que ses key shares ; le serveur répond par ServerHello (sa key share), puis, déjà chiffrés, EncryptedExtensions, Certificate, CertificateVerify (une signature sur le condensat de la transcription) et Finished ; le client répond par son propre Finished et peut envoyer des données. Si le client a mal deviné le groupe, un HelloRetryRequest coûte un aller-retour supplémentaire.

TLS 1.2 demande deux allers-retours, envoie les certificats en clair et, avec le transport de clé RSA, ne signe aucune valeur éphémère. La reprise avec une clé pré-partagée se passe de l’authentification par certificat, et le 0-RTT permet au client d’envoyer des données anticipées (early data) au prix de la protection contre le rejeu.

Débogage : openssl s_client -connect host:443 -servername host -tls1_3 -msg affiche chaque message ; la plupart des échecs viennent de noms qui ne correspondent pas, de certificats intermédiaires manquants, de l’absence d’algorithme de chiffrement ou de groupe commun, ou d’équipements intermédiaires (middleboxes) qui perturbent les messages ClientHello volumineux (un problème de nouveau d’actualité avec les key shares post-quantiques de plus de 1 Ko).

Normes et références

Tous les termes