Rejoignez Keyfactor à la RSA Conference™ 2024 | du 6 au 9 mai | En savoir plus

Démystifier la poignée de main TLS : Qu'est-ce que c'est et comment ça marche ?

Certificats SSL/TLS

Le Transport Layer Security (TLS) est conçu pour ajouter de la sécurité aux communications réseau. C'est la différence entre HTTP et HTTPS lorsque l'on navigue sur l'internet.

L'utilisation de TLS entraîne un surcroît de travail pour le client et le serveur, mais elle présente des avantages, notamment

  • Confidentialité : TLS Enveloppe le trafic dans un tunnel crypté. Il est ainsi impossible pour une personne qui écoute de lire ou de modifier le trafic sur le chemin de la destination.
  • L'authentification : TLS prouve l'identité du serveur au client. Cela permet de se protéger contre les sites d'hameçonnage.
  • Intégrité : TLS comprend les protections qui aident à identifier si les données ont été modifiées ou corrompues en cours de route.

Toutes ces caractéristiques sont précieuses lorsque l'on navigue sur le web. C'est pourquoi TLS est si populaire et que la plupart des visites sur un site web commencent par une poignée de main TLS .

Qu'est-ce que la poignée de main TLS ?

Comme une poignée de main dans la vie réelle, la poignée de main TLS est une introduction. Elle établit que deux ordinateurs veulent se parler de manière sécurisée.

Une poignée de main TLS définit également certaines des règles de cette conversation. Le client et le serveur conviennent qu'ils veulent bénéficier des avantages de TLS, mais ils doivent se mettre d'accord sur les détails. La poignée de main TLS leur permet de passer d'un premier "Bonjour" au point où ils peuvent commencer à parler en privé.

Avant d'entrer dans les détails de la poignée de main TLS , il est important de comprendre certains termes clés. TLS est un protocole axé sur la sécurité, ce qui signifie qu'il utilise beaucoup de cryptographie. Voici quelques termes importants à connaître lorsque l'on parle de TLS :

  • Chiffrement asymétrique : La cryptographie asymétrique ou "à clé publique" utilise deux clés apparentées : une clé publique et une clé privée. Tout ce qui est chiffré avec une clé publique peut être déchiffré avec la clé privée correspondante. De même, une signature numérique générée avec une clé privée peut être validée avec la clé publique associée.
  • Chiffrement symétrique : Le cryptage symétrique utilise la même clé pour le cryptage et le décryptage. Il est utile parce qu'il est plus efficace que le cryptage asymétrique. La poignée de main TLS est conçue pour établir une clé de cryptage symétrique partagée.
  • Suites de chiffrement : Une suite de chiffrement est une combinaison d'algorithmes cryptographiques utilisés dans le protocole TLS . Elle comprend un algorithme de cryptage asymétrique pour la poignée de main, un algorithme de cryptage symétrique pour le cryptage des données envoyées par la connexion, un algorithme de signature numérique et une fonction de hachage utilisée pour vérifier que les données n'ont pas été corrompues en cours de route.
  • Certificat numérique : Un certificat numérique prouve la propriété d'une clé publique. Les serveurs présentent un certificat numérique lors de la poignée de main TLS afin que le client sache qu'il communique avec la bonne personne.

L'intérieur de la poignée de main TLS

L'objectif de la poignée de main TLS est de permettre au client et au serveur de se mettre d'accord sur une clé de cryptage symétrique partagée de manière sécurisée. Pour ce faire, ils utilisent le chiffrement asymétrique, qui permet d'envoyer des messages chiffrés en utilisant uniquement une clé publique.

Les détails de la poignée de main TLS dépendent de l'algorithme de cryptage asymétrique utilisé. Un client et un serveur utilisant l'algorithme RSA suivent les étapes suivantes :

illustration de TLS SSL  poignée de main
  1. Allo du client : Le client lance la poignée de main TLS en envoyant des informations de configuration au serveur. Ces informations comprennent des données telles que la ou les versions de TLS prises en charge par le client, les suites de chiffrement qu'il peut utiliser et des données aléatoires appelées "aléa du client".
  2. Bonjour au serveur : Le serveur répond par un message comprenant ses choix de version TLS et de suite de chiffrement, son certificat numérique et le "hasard du serveur".
  3. Secret Premaster : Le certificat numérique fourni par le serveur contient sa clé publique, qui peut être utilisée pour chiffrer les messages envoyés au serveur. Après avoir vérifié la validité du certificat, le client génère une autre valeur aléatoire appelée secret de prémaître. À l'aide de la clé publique du serveur, le client chiffre cette valeur et l'envoie au serveur.
  4. Clés de session : Le serveur utilise sa clé privée pour déchiffrer le secret d'origine. À ce stade, le client et le serveur disposent tous deux de la clé aléatoire du client, de la clé aléatoire du serveur et du secret d'origine. À partir de ces éléments, ils calculent une clé de session partagée. Étant donné que le secret d'origine est une valeur secrète - il n'a été envoyé que sous forme cryptée sur le réseau - la clé de session est également secrète.
  5. Client terminé : Pour terminer la poignée de main TLS , le client envoie au serveur un message crypté avec la clé de session. Le serveur décrypte ce message et en vérifie l'exactitude. S'il correspond, le serveur sait que le client a correctement calculé la clé de session.
  6. Serveur terminé : Le serveur envoie également un message crypté avec la clé de session partagée. Le décryptage et la vérification de ce message prouvent au client que le serveur a correctement calculé la clé de session.

 

À ce stade, le client et le serveur disposent d'une clé de chiffrement partagée, connue d'eux seuls. Pour le reste de la session TLS , tous les messages seront cryptés à l'aide de cette clé de session.

Une structure alternative

Comme indiqué ci-dessus, l'utilisation de différents algorithmes de chiffrement asymétrique peut entraîner de légères modifications dans les étapes. Par exemple, si le client et le serveur choisissent d'utiliser Diffie-Hellman au lieu de RSA, le contenu des messages envoyés aux étapes 2 et 3 est légèrement modifié :

  • À l'étape 2, le serveur envoie un paquet signé numériquement contenant l'aléa du client, l'aléa du serveur et son paramètre Diffie-Hellman.
  • Après avoir validé la signature numérique, le client répond par un message contenant son paramètre Diffie-Hellman au lieu d'un secret de prémaître.

 

En utilisant ces paramètres Diffie-Hellman et les aléas du client et du serveur, il est possible pour le client et le serveur de calculer une clé privée secrète et partagée. En fin de compte, Diffie-Hellman et RSA produisent le même résultat de manière légèrement différente.

Au-delà de la poignée de main de base

Le processus décrit ici est la poignée de main de base de TLS , qui est utilisée dans la plupart des sessions de TLS . Toutefois, il est possible d'ajouter des étapes supplémentaires qui offrent certains avantages.

Par exemple, la poignée de main de base TLS utilise un certificat numérique pour authentifier le serveur auprès du client, mais n'authentifie pas le client auprès du serveur. Une version modifiée de la poignée de main TLS peut également envoyer le certificat numérique du client au serveur, ce qui permet d'obtenir une authentification mutuelle.