PowerScan
FR

L'empreinte canvas expliquée : pourquoi deux navigateurs identiques dessinent des pixels différents

Empreintes de navigateur · 6 min de lecture · par PowerScan

Photo : Unsplash

L'empreinte canvas est la technique dont le plus de gens ont entendu parler et que le moins de gens savent expliquer. L'idée est simple : demander au navigateur de dessiner quelque chose, relire les pixels, puis les hacher. Le plus intéressant est de comprendre pourquoi les pixels diffèrent d'une machine à l'autre.

Le dessin

Un script d'empreinte crée un <canvas> hors écran, obtient un contexte 2D et dessine une courte séquence : un rectangle plein, du texte dans une police nommée, peut-être un dégradé, une courbe, un emoji. Puis il appelle toDataURL() ou getImageData() pour lire le résultat, et fait passer les octets dans une fonction de hachage. La sortie est une courte chaîne telle que 71ae464e. Cette chaîne est le « hachage canvas ».

Rien dans le dessin n'est secret, et rien n'est envoyé au GPU que la page ne pourrait déjà décrire. L'information se trouve dans le rendu, pas dans les instructions.

Pourquoi les pixels diffèrent

Le texte est la principale source de variation. Le rendu d'un glyphe fait intervenir le fichier de police réellement choisi (les polices de repli diffèrent selon le système d'exploitation), la stratégie de hinting et de crénelage (niveaux de gris ou sous-pixel, et dans quel ordre de sous-pixels), le rastériseur (FreeType, DirectWrite, CoreText, ou celui du navigateur), et le fait que le GPU ou le CPU ait fait la composition. Chacun produit des pixels de bord légèrement différents. Un seul pixel gris clair au bord d'un « e » suffit à changer complètement le hachage.

Les dégradés et les courbes en ajoutent : des pilotes graphiques et des chemins de crénelage différents arrondissent différemment les valeurs intermédiaires. Résultat : deux machines avec la même version de navigateur mais des GPU, des pilotes ou des systèmes d'exploitation différents produiront généralement des hachages différents, alors que la même machine produit le même hachage à chaque fois. Stable et varié, exactement ce que veut un traceur.

Ce qu'un hachage apprend à un site

En soi, rien sur qui vous êtes. Il indique au site que ce navigateur rend ce dessin de cette façon, ce qui est vrai d'un certain groupe de machines. C'est la taille de ce groupe qui compte. Un portable courant à graphique intégré et polices par défaut partage son hachage avec beaucoup d'autres. Une configuration inhabituelle peut être presque unique. Combiné à une taille d'écran, une liste de langues et une chaîne de moteur de rendu, même un hachage courant devient une partie d'une combinaison rare.

Ce que font les navigateurs

Firefox, avec resist-fingerprinting activé, renvoie un canvas vide ou aléatoire et peut demander l'autorisation d'accéder au canvas. Brave ajoute de petites perturbations aléatoires aux lectures de canvas, si bien que le hachage change d'un site et d'une session à l'autre. Safari limite les polices visibles et contraint certaines relectures. Chromium lui-même ne rend pas le canvas aléatoire ; les navigateurs construits dessus qui cherchent à contrôler les empreintes le font avec leurs propres correctifs, et la qualité de ces correctifs varie.

Le bruit n'est pas gratuit. Un hachage canvas qui change à chaque visite est lui-même un signal, car les vrais navigateurs ne font pas cela. La meilleure stratégie pour un profil de navigateur isolé est un hachage plausible et constant, qui ressemble à une machine ordinaire plutôt qu'à une machine différente toutes les heures.

Ce que montre un diagnostic

PowerScan dessine sa propre petite image et vous montre le hachage. Il ne l'envoie jamais ; la valeur n'existe que dans votre onglet. Rechargez et le hachage doit être identique. S'il ne l'est pas, quelque chose dans le navigateur injecte du bruit, ce qu'il vaut mieux savoir avant de vous fier à ce profil.

Tous les articles · Lancer l'analyse