L'indication de nom de serveur chiffrée appelée ESNI (Encrypted server name indication) ou SNI chiffré permet de préserver la confidentialité de la navigation des utilisateurs. Pour ce faire, il chiffre une partie non chiffrée du handshake TLS qui pourrait révéler quel site web un utilisateur est en train de consulter.
Cet article s'articule autour des points suivants :
Contenu associé
Le SSL, qu’est-ce que c’est ?
Qu'est-ce qu'un certificat SSL ?
négociation SSL
Types de certificats SSL
SSL sans clé
Abonnez-vous à theNET, le récapitulatif mensuel de Cloudflare des idées les plus populaires concernant Internet !
Copier le lien de l'article
L'ESNI (Encrypted server name indication) est une fonctionnalité indispensable pour préserver la confidentialité des données de navigation des utilisateurs. Il garantit que des espions ne peuvent pas se servir du handshake TLS pour déterminer quels sont les sites web que les utilisateurs consultent. L'ESNI, comme son nom l'indique, y parvient en chiffrant la partie Server Name Indication (SNI) dans le handshake TLS.
Le SNI indique à un serveur web quel certificat TLS doit apparaître au début d'une connexion entre le client et le serveur. Le SNI est une extension du protocole TLS et permet à un serveur d'héberger plusieurs certificats TLS sur la même adresse IP.
Le SNI pourrait être comparé au numéro d'appartement d'une adresse postale : un immeuble comprend plusieurs appartements, et chaque appartement doit donc être identifié par un numéro différent. De même, si le serveur est indiqué par l'adresse IP, les appareils clients doivent intégrer le SNI dans leur premier message adressé au serveur pour indiquer quel site web (quel appartement) ils essaient d'atteindre.
Le Transport Layer Security (Sécurité de la couche transport) ou TLSen abrégé, est un protocole de chiffrement qui assure la confidentialité et la sécurité des communications sur Internet. Le TLS sert essentiellement à chiffrer la communication entre les applications et les serveurs web, par exemple lorsque les navigateurs chargent un site web. Tous les sites web qui utilisent le TLS doivent avoir un certificat TLS. Le TLS est parfois appelé SSL, bien que SSL soit une désignation obsolète pour le protocole.
Toutes les connexions TLS commencent par ce qu'on appelle un « handshake » (poignée de main). Tout comme lorsque deux personnes se rencontrent et échangent une poignée de main dans la vie réelle, le handshake TLS est une série de communications de présentation entre un appareil client (comme le smartphone d'un utilisateur) et une application ou un site web. Lors d'un handshake TLS, les deux appareils qui communiquent s'accordent notamment sur les clés de chiffrement à utiliser. Malgré le nombre d'étapes nécessaires, la durée d'un handshake TLS n'est que de quelques millisecondes.
Le SNI est un petit élément, mais néanmoins crucial, de la première étape du handshake TLS. Le premier message d'un handshake TLS est appelé « client hello ». Avec ce message, le client demande à voir le certificat TLS du serveur web. Le serveur doit joindre le certificat à sa réponse.
Le problème est que de nombreux serveurs web hébergent plus d'un site web, et que chacun d'entre eux peut avoir son propre certificat TLS. Si le serveur indique le mauvais au client, celui-ci ne pourra pas se connecter en toute sécurité au site web souhaité, ce qui se traduira par le message d'erreur « Your connection is not private » (Votre connexion n'est pas privée).
Le SNI résout ce problème en indiquant quel site web le client essaie d'atteindre. Paradoxalement, aucun chiffrement ne peut avoir lieu tant que le handshake TLS n'est pas finalisé en utilisant le SNI. Le SNI traditionnel n'est donc pas chiffré, car le message client hello est envoyé au début du handshake TLS. N'importe quel pirate qui surveille la connexion entre le client et le serveur pourrait savoir à quel site web le client est connecté en lisant la partie SNI du handshake, même s'il n'est pas en mesure de déchiffrer les communications ultérieures. (Les pirates peuvent utiliser ces informations de plusieurs manières, par exemple en créant un site web de hameçonnage pour tromper l'utilisateur).
L'ESNI préserve la confidentialité du SNI en chiffrant la partie SNI du message client hello (et seulement cette partie). Le chiffrement ne fonctionne que si les deux interlocuteurs d'une communication - dans ce cas, le client et le serveur - disposent de la clé de chiffrement et de déchiffrement des informations, tout comme deux personnes ne peuvent utiliser le même casier que si elles en ont toutes deux la clé. Étant donné que le message client hello est envoyé avant que le client et le serveur n'aient négocié les clés de chiffrement TLS, la clé de chiffrement ESNI doit être communiquée d'une autre manière.
La solution à ce problème est le chiffrement par clé publique. Le serveur web ajoute une clé publique à son enregistrement DNS, si bien que lorsque le client cherche où se trouve le bon serveur, il trouve également la clé publique du serveur. C'est un peu comme si l'on laissait la clé d'une maison dans un casier extérieur pour qu'un visiteur puisse y entrer en toute sécurité. Le client peut alors utiliser la clé publique pour chiffrer son enregistrement SNI de manière à ce que seul ce serveur spécifique puisse le déchiffrer. (Cette explication est quelque peu simpliste. Vous trouverez une explication technique plus détaillée dans cet article de blog.)
Supposons qu'Alice veuille se rendre sur le site web de Bob, www.bobcestlemeilleur.example.com. Comme tout propriétaire de site web responsable, Bob utilise TLS pour son site web afin que tout le trafic entrant et sortant de son site soit chiffré. Bob a également adopté l'ESNI pour protéger davantage les visiteurs du site comme Alice.
Lorsqu'Alice écrit https://www.bobcestlemeilleur.example.com dans le navigateur de son ordinateur, celui-ci procède comme suit pour charger le site web :
*Cette dernière affirmation n'est vraie que si la partie DNS du processus a utilisé DNSSEC et soit DNS over HTTPS soit DNS over TLS. Voir plus bas.
L'ESNI est une avancée majeure en matière de confidentialité et de sécurité sur le web, mais d'autres nouveaux protocoles et fonctionnalités sont tout aussi importants. Internet n'a pas été conçu dans le souci de la sécurité et de la confidentialité, ce qui explique que le processus de consultation d'un site web comporte plusieurs étapes qui ne sont pas confidentielles. Cependant, divers nouveaux protocoles permettent de chiffrer et de sécuriser chaque étape afin de se prémunir contre les personnes malveillantes.
Le Domain Name System, ou DNS, permet de faire correspondre des adresses de sites web lisibles par l'utilisateur telles que www.bobcestlemeilleur.example.com avec des adresses IP alphanumériques. Cela revient à chercher l'adresse d'une personne dans un grand carnet d'adresses que tout le monde utilise. Cependant, le DNS classique n'est pas chiffré, ce qui signifie que n'importe qui peut voir l'adresse recherchée par quelqu'un, et que n'importe qui peut se faire passer pour le carnet d'adresses. Même lorsque l'ESNI est en place, un pirate peut voir les enregistrements DNS que les utilisateurs demandent et savoir quels sites web ils consultent.
Trois protocoles additionnels permettent de combler ces lacunes : DNS over TLS, DNS over HTTPS et DNSSEC.
DNS over TLS et DNS over HTTPS fonctionnent tous deux de la même manière : ils chiffrent les requêtes DNS avec le TLS. Les principales différences entre eux sont la couche et le port réseau qu'ils utilisent. Le DNSSEC vérifie que les enregistrements DNS sont réels et proviennent d'un serveur DNS légitime, et non d'un pirate se faisant passer pour un serveur DNS (comme dans une attaque par empoisonnement du cache DNS).
Encrypted Client Hello (ECH) est une autre extension du protocole TLS qui protège la partie SNI du Client Hello par le biais du chiffrement. Cependant, contrairement à ESNI, ECH crypte l'intégralité du Client Hello. Pour en savoir plus sur l'ECH, consultez l'article du blog..
Le réseau de Cloudflare prend en charge l'ESNI depuis septembre 2018. Non seulement Cloudflare a été le premier grand réseau à prendre en charge l'ESNI, mais il a également contribué à son développement. L'ESNI n'a pas encore été publié en tant que RFC officiel, ou norme Internet, mais un projet de RFC est en préparation.
Vérifiez la sécurité, la confidentialité et l'utilisation de l'ESNI dans votre navigateur grâce à cet outil gratuit de test ESNI. En savoir plus sur la raison de la création du SNI ou sur le fonctionnement d'un handshake TLS.