Aperçu des fonctions de confidentialité des navigateurs

Notes de lecture du billet An overview of browser privacy features d'Eric Rescorla.

En rapport aussi, le site Open-source tests of web browser privacy.

Isolation des cookies de première partie

Le protocole HTTP est stateless. Une des solutions inventées pour conserver un état pendant une session est le cookie : un fichier créé côté serveur, envoyé et stocké dans le navigateur, puis renvoyé au serveur à chaque requête.

Les cookies permettent deux types de suivis (web tracking) :

  • suivi sur le même site (same-site tracking)
    • j'ai fait une recherche sur "foo"
  • suivi inter-sites (cross-site tracking)
    • j'ai visité Nike et Adidas

Historiquement :

  • les cookies sont référencés par le domaine qui les a créé
  • domaine auquel ils sont toujours renvoyés

Deux catégories :

  • first-party cookies : cookies de première partie (ou propriétaires) créés par le site indiqué dans la barre d'adresse
  • third-party cookies : cookies tiers créés par d'autres sites

Désormais, il y a une double clé pour les cookies (double keying) en guise de mécanismes anti-traçage inter-sites.

On parle d'isolation des cookies de première partie (first-party isolation, FPI) :

double clé = (domaine de la barre d'adresse, domaine qui met en place le cookie)

Les cookies deviennent des :

  • first-party cookies : si la deuxième clé est dérivée de la première (google.com, mail.google.com)
  • third-party cookies : sinon (huffingtonpost.com, doubleclick.net)

Implémentation :

  • Firefox : Total Cookie Protection (TCP)
  • Safari : partie de l'Intelligent Tracking Protection

Avec l'isolation de première partie, un tracker T présent sur deux sites A et B recevra un cookie différent sur chaque site, rendant le suivi inter-sites impossible.

Avant l'isolation de première partie

Après l'isolation de première partie

Modes de navigation privés

Historiquement, ces modes ont été conçus, non pas pour empêcher le suivi, mais pour prévenir des attaques locales.

L'idée est que les personnes avec qui vous partagez un ordinateur ne puissent pas savoir quels sites vous visitez :

  • cas d'utilisation officiel : achat de cadeaux pour quelqu'un
  • cas d'utilisation officieux : pornographie

Ces modes fonctionnent en ne stockant pas l'état de la navigation au-delà de la durée de vie de la session de navigation.

Comme les cookies et le contenu en cache sont supprimés, la navigation privée offre une protection partielle contre le suivi :

  • l'impossibilité de lier des sessions privées et publiques
  • l'impossibilité de lier des sessions privées entre elles

Au-delà du mode de navigation privée

Deux mécanismes beaucoup plus difficiles à bloquer :

  1. suivi basé sur l'adresse IP
    • pas grand-chose que les navigateurs puissent faire directement sans relayer le trafic par un autre nœud
  2. empreinte numérique ou fingerprinting
    • identifier un internaute depuis l'empreinte numérique de son navigateur qui dépend de la combinaison du logiciel client et du matériel sur lequel il fonctionne
      • fuseau horaire
      • version de son navigateur
      • résolution d'écran
      • plug-ins installés
      • etc..

Empêcher le suivi basé sur l'IP

Il faut acheminer le trafic par un service qui dissimule son adresse IP.

Actuellement, trois possibilités :

  • VPN
    • connexion au service VPN
    • il transmet nos paquets au serveur
    • le VPN voit à la fois notre adresse et le site visité
    • il est en capacité de nous suivre
    • il faut lui faire confiance pour qu'il ne le fasse pas
  • iCloud Private Relay (Paper)
    • résout ce problème en utilisant deux proxys
    • ils sont gérés par des fournisseurs différents
    • aucun d'eux ne connaît à la fois notre identité et le site visité
    • il faudrait qu'ils s'associent pour connaître notre historique de navigation
  • Tor
    • trois sauts (hop) choisis parmi un ensemble de serveurs gérés par la communauté
    • notre comportement est privé tant que l'un des serveurs est honnête

Le problème fondamental de toutes ces possibilités est :

  • qu'elles nécessitent un ou plusieurs serveurs pour relayer le trafic
  • et que quelqu'un doit payer pour ces serveurs et la bande passante associée

Empêcher le fingerprinting

La lutte contre la prise d'empreintes numériques est un problème difficile, qui nécessite un compromis entre la protection maximale de la vie privée et le cassage de fonctionnalités.

Certains navigateurs disposent de mécanismes explicites avec des degrés d'efficacité variables :

  • blocage des connexions aux origines qui effectuent le fingerprinting (Firefox)
  • ajout de bruit aux valeurs de retour des API pour rendre l'empreinte numérique plus difficile (Brave)
  • suppression des API qui peuvent être utilisées pour le fingerprinting et tentative de faire en sorte que les autres API renvoient des résultats cohérents sur tous les appareils (TorBrowser)

Cependant, le type d'informations pouvant être obtenues à partir des empreintes numériques n'est pas tout à fait clair.

Avant Simulacres en Python avec Mock Après Toujours utiliser des intervalles [fermés, ouverts)

Tag Kemar Joint