Démystifier la poignée de main TLS : Qu'est-ce que c'est et comment ça marche ?
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
- Confidentiality: TLS wraps traffic in an encrypted tunnel. This makes it impossible for an eavesdropper to read or modify the traffic on its way to its destination.
- Authentication: TLS proves the identity of the server to the client. This is helpful in protecting against phishing sites.
- Integrity: TLS includes protections that help with identifying if data has been modified or corrupted in transit.
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 :
- Asymmetric Encryption: Asymmetric or “public key” cryptography uses two related keys: a public and a private key. Anything encrypted with a public key can be decrypted with the corresponding private key. Similarly, a digital signature generated with a private key can be validated with the associated public key.
- Symmetric Encryption: Symmetric encryption uses the same key for both encryption and decryption. This is useful because it is more efficient than encryption with asymmetric cryptography. The TLS handshake is designed to set up a shared symmetric encryption key.
- Cipher Suites: A cipher suite is a combination of cryptographic algorithms used in the TLS protocol. This includes an asymmetric encryption algorithm for the handshake, a symmetric encryption algorithm for encrypting the data sent over the connection, a digital signature algorithm, and a hash function used for verifying that data has not been corrupted in transit.
- Digital Certificate: A digital certificate proves the ownership of a public key. Servers present a digital certificate during the TLS handshake so that the client knows that they’re communicating with the right person.
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 :

- Client Hello: The client kicks off the TLS handshake by sending configuration information to the server. This includes data like the TLS version(s) supported by the client, which cipher suites it can use, and some random data called the “client random”.
- Server Hello: The server responds with a message including its choices of TLS version and cipher suite, its digital certificate, and the “server random”.
- Premaster Secret: The digital certificate provided by the server contains its public key, which can be used for encrypting messages sent to the server. After verifying the validity of the certificate, the client generates another random value called the premaster secret. Using the server’s public key, the client encrypts this value and sends it to the server.
- Session Keys: The server uses its private key to decrypt the premaster secret. At this point, both the client and the server have the client random, server random, and the premaster secret. From these, they calculate a shared session key. Since the premaster secret is a secret value – it was only sent in an encrypted form over the network – the session key is secret as well.
- Client Finished: To complete the TLS handshake, the client sends a message to the server that is encrypted with the session key. The server decrypts this message and verifies its correctness. If it matches, the server knows that the client correctly calculated the session key.
- Server Finished: The server also sends a message encrypted with the shared session key. Decrypting and verifying this message proves to the client that the server correctly calculated the session key.
À 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.
S'abonner à La Source
Stay secure with Keyfactor's monthly newsletter, packed with expert insights and practical steps for quantum-readiness.
Lire la suite
Il est urgent de mettre en place un plan de contrôle de l'identité des machines
En savoir plus
Attaques d'hameçonnage HTTPS : Comment les pirates utilisent les certificats SSL pour feindre la confiance
En savoir plus