Il est de plus en plus courant que les données échangées entre votre navigateur et le serveur d’un site Web soient chiffrées avec HTTPS, ce qui rend (théoriquement) impossibles les attaques de type MITM. DuckDuckGo n’échappe pas à cette « norme » tacite et a publié une fonctionnalité appelée Smarter Encryption, conçue pour mettre automatiquement sur HTTPS les demandes adressées aux sites en HTTP si le site en question prend en charge le protocole HTTPS et s’il se trouve dans la liste des sites pouvant être mis à niveau de DuckDuckGo.
« Je pense que les gens ont tendance à penser que le problème est moins grave, car de nombreux sites vous redirigent automatiquement vers une version chiffres, même si plusieurs ne le sont toujours pas », a déclaré Gabriel Weinberg, fondateur et PDG de DuckDuckGo. « Nous voulions offrir aux personnes une solution de confidentialité plus complète, peu importe où Internet vous mènerait ».
Au cœur de DuckDuckGo Smarter Encryption se trouve une longue liste de sites Web contenant des versions chiffrées (HTTPS) de leurs sites Web, que DuckDuckGo utilise pour garantir que vous n’interagissez qu’avec ces versions chiffrées. Le moteur de recherche génère automatiquement cette liste en explorant continuellement le Web.
D’ailleurs, il estime qu’il existe deux scénarios principaux où cela vous permet d’avoir une amélioration de votre vie privée :
tout d’abord, de nombreux sites Web proposent à la fois une version chiffrée (HTTPS) et une version non chiffrée (HTTP) de leur site Web, mais malheureusement, ils ne vous acheminent pas automatiquement leur version chiffrée. DuckDuckGo Smarter Encryption prend en charge ce scénario ;
ensuite, même si un site Web propose HTTPS et vous y dirige automatiquement lorsque vous accédez à l’une de ses adresses Web, cette première tentative est toujours non chiffrée, ce qui fait fuiter votre comportement de navigation. Cela est particulièrement pernicieux sur les réseaux sociaux, où de nombreux liens d’actualités sont affichés sous forme de liens non chiffrés, ce qui expose les détails de ce que vous lisez dans cette première requête HTTP. DuckDuckGo Smarter Encryption gère également ce scénario (pour les sites Web figurant sur sa liste) en ajoutant un «s» aux adresses http:// Web non chiffrées, ce qui les transforme en adresses https:// et donc chiffrées.
Voici comment cela fonctionne :
Vous cliquez ou naviguez vers un domaine non sécurisé (http) tel que http://help.duckduckgo.com
Le domaine help.duckduckgo.com sera d’abord consulté dans votre liste locale (celui de l’appareil contenant les sites les plus consultés) pour voir s’il peut être mis à niveau immédiatement.
Sinon, il sera converti en hachage SHA-1: c3673b7f703ecd4890c81fb520b6697687276622
Les quatre premiers caractères de ce hachage (c367) sont envoyés au service anonyme smarter_encryption.js de DuckDuckGo qui assure que ses journaux ne contiennent jamais d’adresses IP ou d’autres informations personnelles. Par conséquent, à l’instar des requêtes anonymes sur DuckDuckGo Search, l’éditeur n’est (en théorie) pas en mesure savoir des choses sur les personnes qui font ces demandes. Seuls vous et votre appareil le savez. Néanmoins, DuckDuckGo a ajouté une autre couche de protection de la confidentialité à ce service anonyme en demandant à votre appareil d’envoyer uniquement les quatre premiers caractères du domaine haché, de sorte que le service ne peut en aucun cas indiquer le domaine exact que vous visitez.
Le service anonyme renvoie tous les domaines hachés de la liste complète Smarter Encryption correspondant aux quatre premiers caractères du hachage envoyé (par exemple, https://duckduckgo.com/smarter_encryption.js?pv1=c367). Il est possible que rien ne soit renvoyé (si rien ne correspond).
Votre appareil regarde à travers les domaines hachés renvoyés pour voir si le hachage du domaine que vous visitez correspond exactement à l’un des domaines hachés retournés. Si oui, il est mis à jour!
La société à l’origine du moteur de recherche a créé une liste de plus de 10 millions de sites qu’elle continue de mettre à jour. En raison de cette taille importante, la liste ne peut pas être entièrement stockée dans les applications ou les extensions installées sur vos appareils. Au lieu de cela, l’éditeur stocke localement les sites les plus traités sur vos appareils et conserve le reste de la liste sur ses serveurs.
Cette fonctionnalité n’est pas réservée aux utilisateurs de DuckDuckGo puisque le code utilisé pour Smarter Encryption est désormais open source et est disponible sur GitHub sous licence Apache 2.0.
DuckDuckGo n’est pas la première organisation à s’attaquer au problème de la mise à niveau HTTP. L’extension de navigateur HTTPS Everywhere d’Electronic Frontier Foundation et la liste de préchargement HSTS de Chromium offrent des fonctionnalités similaires. Ce dernier est activé par défaut sur Chrome, Firefox, Safari, Opera, Edge et Internet Explorer. Ces offres fonctionnent toutes essentiellement de la même manière, à partir d’une liste de sites proposant des versions HTTPS pour mettre à niveau les connexions avant qu’elles ne soient établies. Mais l’outil de DuckDuckGo présente une différence majeure : plutôt que de renseigner manuellement une liste de sites pouvant être mis à niveau, Smarter Encryption la complète automatiquement à l’aide des mêmes algorithmes d’analyse du Web intégrés au service de recherche privée de DuckDuckGo. Personne n’a besoin d’ajouter ou de supprimer des entrées de la liste par ses propres moyens. Chaque fois que le robot détecte qu’un site prend en charge le protocole HTTPS, il l’enregistre en tant que valeur par défaut pour tous les visiteurs utilisant Smarter Encryption, quelle que soit l’URL qu’ils tapent ou sur laquelle ils cliquent.
Cet élément automatique rend la liste étonnamment complète (Smarter Encryption fonctionne déjà sur plus de 10 millions de sites, contre 125 000 pour HTTPS Everywhere et seulement 85 000 pour Chromium HSTS Preload). Il est donc plus probable que vous utilisiez la version chiffrée d’un site donné dès le départ.
Weinberg a expliqué que la stratégie de DuckDuckGo de remplissage automatique n’a pas été aussi facile à élaborer que prévu, à cause du patchwork d’implémentations de chiffrement sur le Web. Par exemple, certains sites ne sont configurés que pour chiffrer certaines de leurs pages. Cela signifie que si Smarter Encryption tente de mettre à niveau votre connexion à ce domaine, certaines fonctionnalités et pages risquent de ne pas fonctionner correctement. Plusieurs solutions de contournement ont été nécessaires, notamment la mise au point de tests visuels pour déterminer automatiquement si une page était différente après l’ajout de la mise à niveau du chiffrement, pour que tout fonctionne sans interruption de la navigation. DuckDuckGo a lancé une version bêta de l’outil en 2018 pour tester les éventuels problèmes. Et maintenant, elle est enfin disponible pour tous.
Pinterest a sauté le pas et utilise Smarter Encryption pour ses liens externes. La plateforme indique qu’après l’intégration de la fonctionnalité de DuckDuckGo, « environ 80 % du trafic sortant passe maintenant par HTTPS, ce qui représente une augmentation de plus de 30 % ». « DuckDuckGo nous convenait parfaitement, car ils gèrent une liste complète de sites pouvant être mis à niveau, générés en comparant les versions HTTP et HTTPS d’un site et en ajoutant un site à la liste de mise à niveau HTTPS si les deux versions sont identiques », a expliqué Pinterest, ajoutant que « Nous pouvons ensuite régulièrement extraire et ingérer leur liste ».