Lors d'une négociation TLS/SSL, les clients et les serveurs échangent des certificats SSL, les exigences des suites de chiffrement, ainsi que des données générées de manière aléatoire, afin de créer des clés de session.
Cet article s'articule autour des points suivants :
Contenu associé
Qu'est-ce qu'un certificat SSL ?
SSL sans clé
Le SSL, qu’est-ce que c’est ?
Qu'est-ce que le contenu mixte ?
Qu'est-ce que le HTTPS ?
Abonnez-vous à theNET, le récapitulatif mensuel de Cloudflare des idées les plus populaires concernant Internet !
Copier le lien de l'article
Le TLS est un protocole de chiffrement conçu pour sécuriser les communications Internet. La négociation TLS (également nommée handshake) désigne le processus qui amorce une session de communication utilisant le chiffrement TLS. Au cours de cette négociation, les deux parties communicantes s'échangent l'une l'autre des messages d'authentification et de vérification, établissent les algorithmes de chiffrement qu'elles utiliseront et se mettent d'accord sur les clés de session. Cette négociation constitue un élément fondamental du fonctionnement du protocole HTTPS.
Le SSL, ou Secure Sockets Layer, était le protocole de chiffrement initialement développé pour HTTP. Il a été remplacé depuis un certain temps par le TLS, ou Transport Layer Security. Les négociations SSL sont désormais appelées négociations TLS, bien que le nom SSL reste toujours largement utilisé.
Une négociation TLS a lieu chaque fois qu'un utilisateur accède à un site web via HTTPS et que le navigateur commence à interroger le serveur d'origine du site web. Cette négociation intervient également chaque fois que d'autres communications utilisent le protocole HTTPS, y compris les appels d'API et les requêtes DNS sur HTTPS.
Les négociations TLS se produisent après l'ouverture d'une connexion TCP par l'intermédiaire d'une négociation TCP.
Au cours d'une négociation TLS, le client et le serveur effectuent ensemble les opérations suivantes :
La négociation TLS se compose d'une série de datagrammes (ou messages) échangés par un client et un serveur. Elle implique plusieurs étapes, car le client et le serveur échangent les informations nécessaires pour terminer la négociation et rendre la conversation possible.
Les étapes exactes d'une poignée de main TLS varient en fonction du type d'algorithme d'échange de clés utilisé et des suites de chiffrement prises en charge par les deux parties. L'algorithme d'échange de clés RSA, bien que considéré aujourd'hui comme non sécurisé, était utilisé dans les versions de TLS antérieures à la version 1.3. Cela se passe à peu près comme suit :
Toutes les négociations TLS s'appuient sur la cryptographie asymétrique (la clé publique et la clé privée), mais toutes n'utilisent pas la clé privée dans le processus de génération des clés de session. Une négociation à clés éphémères Diffie-Hellman, par exemple, se déroule comme suit :
*Paramètre DH : les lettres DH signifient Diffie-Hellman. L'algorithme Diffie-Hellman s'appuie sur des calculs exponentiels pour arriver au même secret pré-maître. Le serveur et le client fournissent chacun un paramètre pour le calcul. Une fois combinés, ces deux paramètres entraînent une procédure de calcul différente de chaque côté, pour un résultat toutefois égal.
Pour en savoir plus sur la différence entre la négociation à clés éphémères Diffie-Hellman et les autres types de négociation, ainsi que sur la manière dont ces procédures assurent la confidentialité, consultez la page Qu'est-ce que le SSL sans clé ?
TLS 1.3 ne prend pas en charge RSA, ni d'autres suites de chiffrement et paramètres qui sont vulnérables aux attaques. Il raccourcit également la poignée de main TLS, ce qui rend la poignée de main TLS 1.3 à la fois plus rapide et plus sûre.
Les étapes de base d'une poignée de main TLS 1.3 sont les suivantes :
TLS 1.3 prend également en charge une version encore plus rapide de la négociation TLS qui ne nécessite aucune communication aller-retour entre le client et le serveur. Si le client et le serveur se sont déjà connectés l'un à l'autre (par exemple, si l'utilisateur a déjà consulté le site web), ils peuvent chacun déduire un autre secret partagé de la première session, appelé « secret principal de reprise ». Au cours de cette première session, le serveur envoie également au client ce qu'on appelle un ticket de session. Le client peut utiliser ce secret partagé pour envoyer des données chiffrées au serveur dans son premier message de la session suivante, avec ce ticket de session. Et TLS reprend entre le client et le serveur.
Une suite de chiffrement est un ensemble d'algorithmes utilisés pour établir une connexion de communication sécurisée. Il existe un certain nombre de suites de chiffrement largement utilisées, et une partie essentielle de la poignée de main TLS consiste à convenir de la suite de chiffrement qui sera utilisée pour cette poignée de main.
Pour en savoir plus sur le protocole TLS/SSL, consultez la page Comment fonctionne le SSL ?