TLS (transport layer security) est le protocole de communication sécurisé utilisé par une grande partie de l’internet. Qu’il s’agisse de la connexion chiffrée utilisée par votre navigateur pour se connecter à des sites web ou des connexions sécurisées utilisées par vos applications bancaires, TLS est la norme du secteur et la raison pour laquelle vous pouvez transférer en toute confiance des informations sensibles en ligne.
Ce guide explique ce qu’est une poignée de main TLS, comment elle fonctionne et quelle est son importance pour la sécurité du réseau et pour garantir que vos communications sont privées et qu’elles ne sont pas interceptées ou falsifiées.
Qu’est-ce qu’une poignée de main TLS ?
Le chiffrement TLS est le protocole cryptographique standard utilisé pour sécuriser les communications réseau, y compris les données que vous envoyez sur l’internet.
Avant qu’une communication chiffrée puisse avoir lieu, la confiance doit être établie entre les deux parties qui communiquent (par exemple, le serveur web qui héberge un site web et votre navigateur web qui y accède).
C’est ce que fait la poignée de main TLS : elle établit un canal sécurisé entre le client et le serveur en communiquant les versions TLS et les suites de chiffrement prises en charge par les deux, en authentifiant l’identité du serveur à l’aide de sa clé publique et de son certificat SSL, et enfin en générant des clés de session qui seront utilisées pour crypter la connexion de manière unique.
TLS vs. SSL
TLS est le successeur de SSL (Secure Sockets Layer), qu’il remplace en tant que protocole de chiffrement à la base de HTTPS (le protocole HTTP sécurisé qui transmet les pages web à votre navigateur et les données à vos applications). TLS est également utilisé par d’autres logiciels qui nécessitent des communications réseau sécurisées, comme les solutions VPN.
Éléments cryptographiques concernés
Le chiffrement TLS repose sur plusieurs éléments/concepts cryptographiques :
- La suite de chiffrement: La suite de chiffrement est l’algorithme utilisé pour sécuriser une connexion chiffrée TLS. Chaque suite contient un algorithme d’échange de clés, un algorithme de chiffrement en bloc et un algorithme MAC (code d’authentification des messages).
- Chiffrement symétrique: Une seule clé cryptographique est utilisée pour sécuriser la connexion par le serveur et le client. Les deux parties doivent connaître la clé, et aucun tiers ne doit la connaître ou pouvoir la deviner, sinon la sécurité de la connexion est compromise.
- Chiffrement asymétrique: Également connue sous le nom de chiffrement à clé publique, cette méthode de chiffrement permet au serveur et au client d’utiliser des clés privées et publiques distinctes pour crypter les données et sécuriser la connexion. La clé privée est nécessaire pour décrypter les données chiffrées par la clé publique.
- Authentification: Pour se connecter en toute sécurité à un serveur (et non à un usurpateur), celui-ci doit être en mesure de prouver son identité de manière incontestable en s’authentifiant.
Versions TLS et compatibilité
TLS 1.0 a été publié en 1999, TLS 1.1 en 2006, TLS 1.2 en 2008 et la dernière version TLS 1.3 a été publiée en 2018. Chaque version comportait des améliorations significatives en matière de sécurité, notamment des suites de chiffrement supplémentaires et une protection contre de nouvelles attaques.
La plupart des serveurs prennent en charge à la fois TLS 1.3 et TLS 1.2 pour assurer la rétrocompatibilité avec les clients plus anciens.
Processus étape par étape d’une poignée de main TLS
TLS 1.3 rationalise et renforce considérablement la sécurité du processus de poignée de main par rapport aux versions précédentes. Voici en détail le processus de sécurisation d’une connexion TLS 1.3 :
- Bonjour au client: Le client envoie un message « hello » au serveur pour initier la poignée de main et la connexion TLS. Il s’agit des versions de TLS, des suites de chiffrement, de la méthode de partage des clés et des extensions qu’il prend en charge. Il comprend également le « hasard du client », qui est une donnée aléatoire qui sera utilisée pour générer le secret principal. Dans de nombreux cas, les paramètres secrets de prémaîtrise peuvent également être générés lorsque le client peut deviner la méthode de partage des clés que le serveur utilisera (ce qui est souvent le cas en raison du nombre réduit de suites de chiffrement prises en charge par TLS 1.3), ce qui réduit le nombre d’allers-retours nécessaires pour le client et le serveur.
- Le secret du maître: Le serveur sélectionne une version TLS, une suite de chiffrement et un partage de clés compatibles avec le client et génère son « aléa serveur ». Une fois que le client et le serveur disposent de l’aléa du client, du secret prémaître et de l’aléa du serveur, ils peuvent générer indépendamment le même secret maître.
- Contact du serveur et communication asymétrique: Le serveur répond à l’appel du client en envoyant la version TLS sélectionnée, la suite de chiffrement et le certificat SSL/TLS du serveur contenant sa clé publique et son autorité de certification (AC). Le client peut vérifier l’identité du serveur auprès de l’autorité de certification.
- Génération de clés de session: Le client et le serveur génèrent des clés de session correspondantes à partir du secret principal.
- Messages « terminés » et communication symétrique: Le client et le serveur échangent des messages « terminés » contenant la clé de session symétrique et un hachage du processus de poignée de main qui a eu lieu afin de s’assurer qu’il n’a pas été perturbé. La poignée de main TLS se termine lorsque les messages « terminés » ont été déchiffrés et validés par les deux parties.
Une fois la poignée de main TLS terminée, la connexion peut être utilisée pour transmettre des données en toute sécurité à l’aide des clés de session symétriques.
Résolution des problèmes liés au handshake TLS
La cause la plus fréquente des problèmes liés à la poignée de main TLS est un réglage incorrect de l’heure sur le serveur ou le client (un problème facile à résoudre). Des autorités de certification obsolètes sur le client sont également une cause potentielle si votre système d’exploitation n’a pas été mis à jour depuis un certain temps.
Du côté du serveur, les connexions TLS échoueront s’il n’existe pas de versions TLS ou de suites de chiffrement mutuellement supportées, si le certificat SSL/TLS a été révoqué par l’autorité de certification, s’il a expiré ou si le nom d’hôte du serveur ne correspond pas à celui qui figure sur le certificat.
Si vous avez des problèmes de connectivité réseau ou si vous vous connectez à un serveur lent, les échanges TLS peuvent échouer s’ils prennent du temps à cause de la latence.
Les protocoles de communication sécurisés ne sont pas totalement sûrs
TLS est à la base de la sécurité du réseau pour pratiquement tout ce qui se passe en ligne à l’heure actuelle. Cependant, ce n’est pas parce qu’il peut transmettre des données en toute sécurité (après l’importante poignée de main TLS) que ce qu’il transmet en toute sécurité n’est pas nuisible.
Ce n’est pas parce que vous disposez d’une connexion sécurisée à un site web qu’il ne peut pas héberger de virus. Vous devriez donc vous en tenir au téléchargement de logiciels à partir de sites web réputés (ou, mieux encore, de magasins d’applications officiels) et, si vous dirigez une entreprise, protéger et sécuriser votre infrastructure grâce à une gestion des terminaux performante.