DNS signifie “Domain Name System” et c’est un service utilisé par votre navigateur (et d’autres applications) pour trouver les adresses IP d’un service. C’est une énorme “liste de contacts” (un annuaire téléphonique pour les plus âgés) qui fonctionne ainsi : vous lui demandez un nom et il vous renvoie le numéro à appeler. Sauf qu’il renvoie une IP à la place.
Chaque fois que votre navigateur veut accéder à un service donné comme Google via www.google.com, votre navigateur (Chrome ou Firefox) interroge un service DNS pour trouver les adresses IP des serveurs web de Google.
Voici une vidéo qui explique le DNS de façon visuelle si vous êtes déjà perdu : https://www.youtube.com/watch?v=vrxwXXytEuI Invidious
Habituellement, le service DNS est fourni par votre FAI et configuré automatiquement par le réseau auquel vous vous connectez. Ce service DNS pourrait aussi être soumis à des réglementations de conservation des données ou tenir simplement des journaux pour d’autres raisons (collecte de données à des fins publicitaires, par exemple). Par conséquent, ce FAI sera capable de dire tout ce que vous avez fait en ligne rien qu’en consultant ces journaux, qui peuvent à leur tour être remis à un adversaire. Commodément, c’est aussi le moyen le plus simple pour beaucoup d’adversaires d’appliquer une censure ou un contrôle parental en utilisant le blocage DNS. Les serveurs DNS fournis vous donneront une adresse différente (de la vraie) pour certains sites web (comme rediriger thepiratebay.org vers un site gouvernemental). Ce type de blocage est largement appliqué dans le monde entier pour certains sites.
Utiliser un service DNS privé ou votre propre service DNS atténuerait ces problèmes, mais l’autre problème, c’est que la plupart de ces requêtes DNS sont toujours envoyées par défaut en clair (non chiffrées) sur le réseau. Même si vous naviguez sur PornHub dans une fenêtre de navigation privée, en HTTPS et avec un service DNS privé, il y a énormément de chances que votre navigateur envoie une requête DNS en clair, non chiffrée, à des serveurs DNS en demandant en gros “Alors, c’est quoi l’adresse IP de www.pornhub.com ?”.
Comme elle n’est pas chiffrée, votre FAI et/ou tout autre adversaire pourrait quand même intercepter votre requête (au moyen d’une attaque de l’homme du milieu, Man-in-the-middle) et saura, et enregistrera peut-être, ce que votre IP cherchait. Ce même FAI peut aussi falsifier les réponses DNS même si vous utilisez un DNS privé. Ce qui rend inutile l’usage d’un service DNS privé.
En prime, beaucoup d’appareils et d’applications utiliseront des serveurs DNS codés en dur, contournant tout paramètre système que vous pourriez régler. C’est par exemple le cas de la plupart (70 %) des Smart TV et d’une grande partie (46 %) des consoles de jeux. Pour ces appareils, il vous faudra les forcer à cesser d’utiliser leur service DNS codé en dur, ce qui pourrait les empêcher de fonctionner correctement.
Une solution consiste à utiliser un DNS chiffré via DoH (DNS over HTTPS) ou DoT (DNS over TLS) avec un serveur DNS privé (il peut être auto-hébergé localement avec une solution comme pi-hole, hébergé à distance avec une solution comme nextdns.io, ou en utilisant les solutions fournies par votre fournisseur de VPN ou le réseau Tor). Cela devrait empêcher votre FAI ou un intermédiaire d’espionner vos requêtes … sauf que ce n’est peut-être pas le cas.
Petite précision intermédiaire : ce guide ne cautionne ni ne recommande nécessairement les services de Cloudflare, même s’ils sont mentionnés plusieurs fois dans cette section pour la compréhension technique.
Malheureusement, le protocole TLS utilisé dans la plupart des connexions HTTPS de la plupart des navigateurs (Chrome/Brave parmi eux) laissera à nouveau fuiter le nom de domaine à travers les handshakes SNI (cela peut se vérifier ici, chez Cloudflare : https://www.cloudflare.com/ssl/encrypted-sni/ Archive.org ). Au moment où ce guide est écrit, seuls les navigateurs basés sur Firefox prennent en charge ECH (Encrypted Client Hello auparavant connu sous le nom d’eSNI**) sur certains sites web, ce qui chiffrera tout de bout en bout (en plus d’utiliser un DNS privé sécurisé over TLS/HTTPS) et vous permettra de cacher vos requêtes DNS à un tiers****.** Et cette option n’est pas non plus activée par défaut, il vous faudra donc l’activer vous-même.
En plus de la prise en charge limitée des navigateurs, seuls les services web et les CDN situés derrière le CDN de Cloudflare prennent en charge ECH/eSNI à ce stade. Cela signifie qu’ECH et eSNI ne sont pas pris en charge (au moment où ce guide est écrit) par la plupart des plateformes grand public, comme :
- Amazon (y compris AWS, Twitch …)
- Microsoft (y compris Azure, OneDrive, Outlook, Office 365 …)
- Google (y compris Gmail, Google Cloud …)
- Apple (y compris iCloud, iMessage …)
- YouTube
- GitHub
Certains pays comme la Russie et la Chine pourraient (non vérifié malgré les articles) bloquer les handshakes ECH/eSNI au niveau du réseau pour permettre l’espionnage et empêcher de contourner la censure. Ce qui veut dire que vous ne pourrez pas établir de connexion HTTPS avec un service si vous ne les laissez pas voir de quel service il s’agissait.
Les problèmes ne s’arrêtent pas là. Une partie de la validation TLS d’HTTPS s’appelle OCSP, et ce protocole utilisé par les navigateurs basés sur Firefox laissera fuiter des métadonnées sous la forme du numéro de série du certificat du site web que vous visitez. Un adversaire peut alors trouver facilement quel site web vous visitez en faisant correspondre le numéro du certificat. Ce problème peut être atténué en utilisant l’OCSP stapling. Malheureusement, il est activé mais pas imposé par défaut dans Firefox/Tor Browser. Mais le site web que vous visitez doit aussi le prendre en charge, et tous ne le font pas. Les navigateurs basés sur Chromium, eux, utilisent un système différent appelé CRLSets, qui est sans doute meilleur.
Voici une liste du comportement de différents navigateurs avec OCSP : https://www.ssl.com/blogs/how-do-browsers-handle-revoked-ssl-tls-certificates/ Archive.org
Voici une illustration du problème que vous pourriez rencontrer sur les navigateurs basés sur Firefox :

Enfin, même si vous utilisez un serveur DNS chiffré personnalisé (DoH ou DoT) avec la prise en charge d’ECH/eSNI et l’OCSP stapling, cela pourrait tout de même ne pas suffire, car des études d’analyse de trafic ont montré qu’il reste possible d’identifier par fingerprinting et de bloquer de façon fiable les requêtes indésirables. Seul DNS over Tor a pu démontrer une confidentialité DNS efficace dans des études récentes, mais même cela peut encore être mis en échec par d’autres moyens (voir Votre trafic Tor/VPN anonymisé).
On pourrait aussi décider d’utiliser un Tor Hidden DNS Service ou ODoH (Oblivious DNS over HTTPS) pour augmenter encore la confidentialité et l’anonymat mais, malheureusement, à ma connaissance, ces méthodes ne sont proposées que par Cloudflare à l’heure où j’écris (https://blog.cloudflare.com/welcome-hidden-resolver/ Archive.org, https://blog.cloudflare.com/oblivious-dns/ Archive.org). Ce sont des options techniques viables et raisonnablement sûres, mais il y a aussi un choix moral quant à l’utilisation ou non de Cloudflare (malgré le risque soulevé par certains chercheurs).
Pour finir, il existe aussi cette nouvelle possibilité appelée DoHoT, qui signifie DNS over HTTPS over Tor, qui pourrait elle aussi augmenter encore votre confidentialité et votre anonymat et que vous pourriez envisager si vous êtes plus à l’aise avec Linux. Voir https://github.com/alecmuffett/dohot Archive.org. Ce guide ne vous aidera pas avec celle-ci à ce stade, mais cela pourrait arriver bientôt.
Voici une illustration montrant l’état actuel de la confidentialité du DNS et d’HTTPS selon mes connaissances actuelles.

Quant à votre usage quotidien normal (non sensible), rappelez-vous que seuls les navigateurs basés sur Firefox prennent en charge ECH (anciennement eSNI) jusqu’à présent, et que ce n’est utile qu’avec les sites web hébergés derrière le CDN de Cloudflare à ce stade. Si vous préférez une version basée sur Chrome (ce qui est compréhensible pour certains en raison de fonctionnalités mieux intégrées comme la traduction à la volée), alors je recommanderais plutôt l’utilisation de Brave, qui prend en charge toutes les extensions Chrome et offre une bien meilleure confidentialité que Chrome.
Mais l’histoire ne s’arrête pas là, n’est-ce pas ? Car après tout cela, même si vous chiffrez votre DNS et utilisez toutes les mesures d’atténuation possibles, de simples requêtes IP vers n’importe quel serveur permettront probablement à un adversaire de détecter malgré tout quel site vous visitez. Et c’est simplement parce que la majorité des sites web ont des IP uniques qui leur sont associées, comme expliqué ici : https://blog.apnic.net/2019/08/23/what-can-you-learn-from-an-ip-address/ Archive.org. Cela signifie qu’un adversaire peut créer un jeu de données de sites web connus, par exemple avec leurs IP, puis comparer ce jeu de données à l’IP que vous demandez. Dans la plupart des cas, cela aboutira à une supposition correcte du site web que vous visitez. Cela signifie que malgré l’OCSP stapling, malgré ECH/eSNI, malgré l’usage d’un DNS chiffré … un adversaire peut quand même deviner le site web que vous visitez.
Par conséquent, pour atténuer tous ces problèmes (autant que possible et du mieux que nous pouvons), ce guide recommandera plus loin deux solutions : utiliser Tor et une solution multicouche virtualisée (voir Virtualisation) de VPN over Tor (DNS over VPN over Tor ou DNS over TOR). D’autres options seront aussi expliquées (Tor over VPN, VPN seul, sans Tor/VPN) mais sont moins recommandées.
Source : The Hitchhiker’s Guide to Online Anonymity, écrit par AnonyPla © CC BY-NC 4.0