Que se passe-t-il lors d'un handshake TLS ? | Prise de contact SSL

Dans un handshake TLS/SSL, les clients et les serveurs échangent des certificats SSL, les exigences des suites de chiffrement et des données générées de manière aléatoire pour créer des clés de session.

Share facebook icon linkedin icon twitter icon email icon

Négociation TLS

Objectifs d’apprentissage

Après avoir lu cet article, vous pourrez :

  • Découvrez ce qu'est un handshake TLS
  • Comprendre ce qu'un handshake TLS accomplit
  • Expliquer les étapes d'un handshake TLS
  • Explorer différents types de poignées de main TLS

Qu'est-ce qu'un handshake TLS ?

the TLS Handshake

TLS est un protocole de chiffrement conçu pour sécuriser les communications Internet. Un handshake TLS est le processus qui entame une session de communication utilisant le chiffrement TLS. Au cours d'un handshake TLS, les deux parties communicantes échangent des messages d'authentification et de vérifications mutuelles, établissent les algorithmes de chiffrement qu'elles utiliseront et se mettent d'accord sur les clés de session. Les handshakes TLS constituent une partie fondamentale du mode de fonctionnement du protocole HTTPS.

Négociations TLS vs SSL

SSL, ou Secure Sockets Layer, était le protocole de chiffrement original développé pour HTTP. SSL a été remplacé depuis un certain temps par TLS, ou Transport Layer Security. Les négociations SSL sont désormais appelées négociations TLS, bien que le nom SSL soit toujours largement utilisé.

Quand un handshake TLS intervient-il ?

Un handshake TLS a lieu chaque fois qu'un utilisateur accède à un site web via HTTPS et que le navigateur commence d'abord par interroger le serveur d'origine du site web. Un handshake TLS intervient également chaque fois que d'autres communications utilisent HTTPS, y compris les appels API et les requêtes DNS sur HTTPS.

Les handshakes TLS se produisent après l'ouverture d'une connexion TCP via un handshake TCP.

Que se passe-t-il lors d'un handshake TLS ?

Au cours d'un handshake TLS, le client et le serveur effectuent ensemble les opérations suivantes :

  • Préciser quelle version de TLS (TLS 1.0, 1.2, 1.3, etc.) ils utiliseront
  • Décider quelles suites de chiffrement (voir ci-dessous) ils utiliseront
  • Authentifier l'identité du serveur via la clé publique du serveur et la signature numérique de l'autorité de certification SSL
  • Générer des clés de session afin d'utiliser le chiffrement symétrique une fois la prise de contact terminée

Quelles sont les étapes d'un handshake TLS ?

Le handshake TLS est une série de datagrammes, ou messages, échangés par un client et un serveur. Un handshake TLS 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'un handshake 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 est le plus souvent utilisé. Il se déroule de la manière suivante :

  1. Message « Client Hello »: le client initie le handshake en envoyant un message « Hello » au serveur. Le message inclut la version TLS prise en charge par le client, les suites de chiffrement prises en charge et une chaîne d'octets aléatoires connue sous le nom de « client random » ou nombre aléatoire du client.
  2. Message « Server Hello » : en réponse au message Client Hello, le serveur envoie un message contenant le certificat SSL du serveur, la suite de chiffrement choisie par le serveur et le « Server random », une autre chaîne aléatoire d'octets qui est générée par le serveur.
  3. Authentification : le client vérifie le certificat SSL du serveur auprès de l'autorité de certification qui l'a émis. Cela confirme que le serveur est bien celui qu'il prétend être et que le client interagit avec le propriétaire réel du domaine.
  4. Secret pré-maître : le client envoie une autre chaîne d'octets aléatoire, le « secret pré-maître (encrypted pre-master key). Le secret pré-maître est chiffré avec la clé publique et ne peut être déchiffré qu'avec la clé privée par le serveur (le client obtient la clé publique du certificat SSL du serveur).
  5. Clé privée utilisée :le serveur déchiffre le secret pré-maître.
  6. Clés de session créées : le client et le serveur génèrent des clés de session à partir du client-random, du server-random et du secret pré-maître. Ils devront arriver aux mêmes résultats.
  7. Le client est prêt : le client envoie un message « Client Finished » qui est chiffré avec une clé de session.
  8. le serveur est prêt : le serveur envoie un message « Server Finished » chiffré avec une clé de session.
  9. Chiffrement symétrique sécurisé atteint : Le handshake est terminé et la communication se poursuit à l'aide des clés de session.

Toutes les négociations TLS utilisent le chiffrement 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. Par exemple, un handshake éphémère Diffie-Hellman se déroule comme suit :

  1. Client Hello : le client envoie un message Client Hello avec la version du protocole, le client aléatoire et une liste de suites de chiffrement.
  2. Server Hello : le serveur répond avec son certificat SSL, sa suite de chiffrement sélectionnée et le nombre aléatoire du serveur Contrairement au handshake RSA décrite ci-dessus, dans ce message, le serveur inclut également les éléments suivants (étape 3) :
  3. Signature numérique du serveur : le serveur utilise sa clé privée pour chiffrer le client-random, le server-random et son paramètre DH*. Ces données chiffrées fonctionnent comme la signature numérique du serveur, établissant que le serveur possède la clé privée qui correspond à la clé publique du certificat SSL.
  4. Signature numérique confirmée : le client déchiffre la signature numérique du serveur avec la clé publique, vérifiant que le serveur contrôle la clé privée et qu'il est bien celui qu'il dit être. Paramètre DH client : le client envoie son paramètre DH au serveur.
  5. Le client et le serveur calculent le secret pré-maître : au lieu que le client génère le secret pré-maître et l'envoie au serveur, comme dans un handshake RSA, le client et le serveur utilisent les paramètres DH qu'ils ont échangés pour calculer séparément un secret pré-maître correspondant.
  6. Clés de session créées : maintenant, le client et le serveur calculent les clés de session à partir du secret pré-maître, du nombre aléatoire du client et du nombre aléatoire du serveur, comme dans un handshake RSA.
  7. Le client est prêt :
  8. Identique à un handshake RSA.
  9. Le serveur est prêt
  10. Chiffrement symétrique sécurisé effectué

*Paramètre DH : DH signifie Diffie-Hellman. L'algorithme Diffie-Hellman utilise 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 qui, une fois combinés, entraînent un calcul différent de chaque côté, mais avec des résultats égaux.

Pour en savoir plus sur la différence entre les handshakes éphémères Diffie-Hellman et d'autres types de handshakes, et sur la manière dont ils assurent la confidentialité, voir Qu'est-ce que le Keyless SSL ?

Qu'est-ce qu'une suite de chiffrement ?

Une suite de chiffrement est un ensemble d'algorithmes de chiffrement à utiliser pour établir une connexion de communication sécurisée (un algorithme de chiffrement est un ensemble d'opérations mathématiques effectuées sur des données pour donner un aspect aléatoire aux données). Il existe un certain nombre de suites de chiffrement largement utilisées, et une partie essentielle de la négociation TLS est de se mettre d'accord sur la suite de chiffrement qui sera utilisée pour ce handshake.

Pour en savoir plus sur le TLS/SSL, voir Comment fonctionne le SSL ? Pour tester si un site web utilise correctement le TSL, consultez le Cloudflare Diagnostic Center .