Retour au blog

Empreinte Canvas et protection : la cohérence vaut mieux que l’aléatoire

L’empreinte Canvas transforme les différences de rendu d’une même instruction graphique selon le matériel et le logiciel en identifiant, et elle est rarement utilisée seule. Une bonne approche ne consiste pas à tout changer à chaque visite, mais à garder les caractéristiques de l’environnement cohérentes entre elles.

Le principe de l’empreinte Canvas n’est pas compliqué, mais une bonne partie des contre-mesures couramment proposées vont dans le mauvais sens.

Les mêmes instructions donnent des résultats différents selon la machine

Canvas est un composant de dessin fourni par HTML5. Une page web peut y tracer des formes et du texte à l’aide de scripts. Les mêmes instructions de dessin peuvent produire de légères différences de rendu sur des appareils différents, en raison de facteurs de bas niveau comme le système d’exploitation, la version du navigateur, la bibliothèque de polices et le pilote graphique. Ces écarts sont presque invisibles à l’œil nu, mais une fois le contenu du canevas exporté sous forme de données, ils deviennent des valeurs comparables.

Le processus est à peu près le suivant : la page dessine d’abord des formes et du texte, puis utilise toDataURL() pour exporter le résultat sous forme de chaîne Base64. Cette chaîne peut alors servir d’identifiant. Les appareils produisent des résultats différents et, dans de nombreux cas, la valeur est donc unique. Effacer les cookies n’y change rien, pas plus que vider le cache.

Il est rarement utilisé seul

Une valeur Canvas isolée a une utilité limitée et peut dériver après une mise à jour du navigateur ou du pilote graphique. En pratique, Canvas est généralement associé à plusieurs autres caractéristiques afin de les recouper :

  • Données graphiques comme WebGL, liste de polices et modèle de carte graphique
  • Données d’environnement comme UA, fuseau horaire, langue et résolution d’écran
  • Données de session comme cookies, stockage local et sortie réseau

L’objectif de ce regroupement est de vérifier la cohérence. Chaque élément pris séparément peut sembler normal, mais les contradictions deviennent visibles lorsqu’ils sont combinés : le fuseau horaire est réglé sur les États-Unis, la liste des langues ne contient que du chinois, et la valeur Canvas correspond à un circuit graphique intégré alors que l’UA déclare un appareil haut de gamme récent. La plateforme n’a pas besoin de prouver qui vous êtes. Il lui suffit d’identifier un ensemble de caractéristiques qui ne ressemble pas à une vraie machine.

Le désactiver vous rend plus visible

Le premier réflexe de beaucoup de personnes est de désactiver Canvas, mais cela peut produire l’effet inverse.

Presque tous les navigateurs d’utilisateurs ordinaires prennent en charge Canvas. Un environnement qui ne le prend clairement pas en charge devient statistiquement minoritaire et signale pratiquement qu’un traitement particulier est appliqué. Il existe aussi un problème plus concret : de nombreux sites utilisent Canvas pour le recadrage d’images, les graphiques ou le rendu de CAPTCHA. Le désactiver peut donc casser certaines fonctions et ajouter une anomalie supplémentaire.

Une autre méthode consiste à utiliser de nouvelles valeurs aléatoires à chaque visite. Elle pose le même type de problème : l’empreinte d’un appareil réel est stable. Un environnement qui change à chaque passage ne se comporte pas comme un appareil ordinaire et peut donc être plus facile à isoler et à marquer. L’aléatoirisation elle-même peut devenir un signal identifiable.

La bonne direction est la cohérence interne

Il est plus proche du comportement réel de viser un ensemble de caractéristiques cohérent et globalement banal que de chercher à tout changer à chaque visite.

Concrètement, les signaux doivent se confirmer mutuellement : le fuseau horaire, la langue et la localisation géographique de l’IP de sortie doivent être compatibles. L’appareil annoncé par l’UA et les capacités graphiques indiquées par Canvas et WebGL doivent se situer dans une gamme comparable. L’environnement utilisé par un même compte doit rester stable dans le temps, sans changement évident lors de visites répétées. Il vaut mieux éviter les extensions qui se contentent de désactiver une fonction, car elles créent souvent des caractéristiques plus visibles. Réduire, lorsque c’est possible, le nombre de scripts tiers limite aussi la surface de collecte.

Si plusieurs environnements doivent être distingués les uns des autres, c’est à l’isolation des environnements de résoudre ce problème. Des outils comme PurpleMark attribuent généralement un environnement fixe à chaque compte lorsqu’ils isolent plusieurs comptes, plutôt que de faire varier les paramètres au hasard, car ce qui importe réellement aux plateformes est la stabilité et la cohérence de l’ensemble des caractéristiques.

En résumé

Canvas peut servir au suivi parce qu’il transforme de petites différences matérielles et logicielles en une chaîne stable et comparable. Une réponse efficace ne consiste ni à le désactiver ni à le faire varier de manière erratique, mais à faire en sorte qu’il raconte la même histoire que les autres caractéristiques du même environnement. Paraître ordinaire est plus sûr que paraître atypique.