L'empreinte de navigateur : ce que les sites lisent vraiment

Un tour d'horizon champ par champ des valeurs qu'un site collecte, du canvas et de WebGL à l'audio, aux polices, à l'écran et au fuseau horaire, et pourquoi une identité cohérente vaut mieux qu'une identité aléatoire.
L'empreinte de navigateur consiste à identifier un navigateur par les valeurs qu'il déclare plutôt que par quoi que ce soit qu'il stocke. Aucun cookie n'est nécessaire. Le navigateur répond simplement aux questions que toute page web a le droit de poser, et l'ensemble de ses réponses est assez distinctif pour être reconnu à nouveau.
Les valeurs collectées
La plupart des scripts d'empreinte lisent les mêmes quelques surfaces.
Les plus évidentes
- Le user agent porte le nom du navigateur, sa version et la plateforme, et il part avec chaque requête.
- L'écran indique largeur, hauteur, profondeur de couleur, ratio de pixels et zone de travail disponible.
- La langue et le fuseau horaire couvrent la locale déclarée par le navigateur et le décalage qu'il calcule.
- Les indices matériels donnent le nombre de processeurs déclaré et, sur certains navigateurs, une valeur approximative de mémoire.
Celles du rendu
Ce sont les valeurs auxquelles on pense quand on parle d'empreinte, car elles sont indirectes. Une page demande au navigateur de dessiner quelque chose, puis relit exactement ce qui a été dessiné.
- Le travail sur canvas dessine du texte et des formes sur un canvas hors écran et en calcule un hachage. Le résultat varie selon la pile graphique, les polices et le crénelage.
- WebGL expose les chaînes de fabricant et de moteur de rendu de la carte graphique, ainsi qu'un hachage d'une scène rendue.
- L'audio fait passer un oscillateur dans le graphe de traitement audio et hache la sortie. Le comportement des nombres flottants diffère légèrement d'une pile à l'autre.
- La détection de polices mesure du texte dans des polices candidates et en déduit lesquelles sont installées d'après les mesures qui diffèrent.
Celles du réseau
- L'adresse d'où provient la requête, et ce qu'une base de géolocalisation en dit.
- WebRTC, qui peut révéler des adresses que la connexion n'exposerait pas autrement.
- L'ordre et le contenu des champs de poignée de main TLS et HTTP, qui varient selon le client.
Pourquoi tout rendre aléatoire est le mauvais réflexe
La défense intuitive consiste à tout changer à chaque visite. Elle se retourne contre vous, pour deux raisons.
La première est la contradiction. Des champs aléatoires ne se connaissent pas entre eux. Un user agent qui annonce Windows à côté d'une chaîne de moteur WebGL qui n'existe que sur du matériel Apple est un signal plus fort que chaque valeur prise seule. Les vraies machines sont cohérentes en elles-mêmes ; seules les machines synthétiques se contredisent.
La seconde est l'instabilité. Un compte qui déclare un appareil différent à chaque visite décrit quelque chose que nulle personne réelle ne possède. La constance dans le temps, c'est ce à quoi ressemble un utilisateur ordinaire.
Ce que couvre l'identité d'un profil
| Surface | Prise en charge |
|---|---|
| User agent et plateforme | Générés ensemble, pour que la plateforme annoncée corresponde aux valeurs qui l'entourent |
| Écran et ratio de pixels | Fixés par profil, tirés de tailles que de vrais écrans déclarent effectivement |
| Fuseau horaire et locale | Définis par profil et accordés à la route réseau utilisée |
| Canvas, WebGL et audio | Traitement stable propre à chaque profil, identique à chaque ouverture |
| Polices | Un jeu par profil cohérent avec la plateforme que le profil annonce |
| WebRTC | Contraint pour ne pas contredire la route réseau du profil |
Vérifier votre travail
Ouvrez un profil et visitez une page de test d'empreinte. Plusieurs publient gratuitement les valeurs qu'elles lisent. Les deux points à vérifier ne sont pas ceux auxquels on pense :
- Les valeurs concordent-elles entre elles ? Plateforme, polices, chaînes graphiques et fuseau horaire doivent décrire une seule machine plausible.
- Sont-elles identiques à la dernière fois ? Fermez le profil, rouvrez-le, relancez le test. Un profil dont les valeurs bougent d'une ouverture à l'autre n'est pas stable, et la stabilité est la propriété qui compte.
Un score de rareté sur une page de test est le chiffre le moins utile. Il vous mesure par rapport aux visiteurs de cette page, qui sont en écrasante majorité des gens qui testent des navigateurs anti-détection.


