PowerScan
FR

L'empreinte audio sans microphone

Empreintes de navigateur · 5 min de lecture · par PowerScan

Photo : Unsplash

« Empreinte audio » fait penser à quelque chose d'enregistré par un microphone. Ce n'est pas le cas. C'est un nombre dérivé de la façon dont votre machine traite un son synthétique qui n'est jamais joué, jamais capturé et ne quitte jamais l'onglet.

Comment elle est produite

Le script crée un OfflineAudioContext, qui restitue l'audio dans un tampon en mémoire plutôt que vers des haut-parleurs. Il y connecte un oscillateur, généralement une onde triangulaire à fréquence fixe, via un compresseur dynamique vers la destination, et lance le rendu. Quand le tampon est prêt, il lit une tranche des échantillons, souvent quelques centaines de valeurs, et les hache. Le résultat est une courte chaîne telle que d4f50eb9.

L'opération entière prend quelques dizaines de millisecondes et ne nécessite aucune autorisation, car rien n'est capturé. L'OfflineAudioContext est fermé quand le script a terminé.

Pourquoi elle diffère d'une machine à l'autre

Le compresseur et l'oscillateur sont implémentés en arithmétique à virgule flottante dans le moteur audio du navigateur, et la sortie exacte dépend de la version du moteur, de la bibliothèque mathématique du système d'exploitation, du comportement en virgule flottante du processeur et, dans certaines configurations, de la fréquence d'échantillonnage du matériel audio. Les différences sont minuscules, quelques bits dans les dernières décimales, mais le hachage amplifie de minuscules différences en chaînes entièrement différentes. Comme le hash de canvas, elle est stable sur une machine et varie d'une machine à l'autre.

Sa diversité est plus faible que celle du canvas : de nombreuses machines avec la même version de navigateur et le même système d'exploitation produisent le même hash audio. Elle sert surtout de signal de confirmation et de moyen de détecter les navigateurs qui rendent leur sortie aléatoire.

Ce que font les navigateurs

Brave ajoute du bruit aux lectures audio de la même manière que pour le canvas. Firefox avec resist-fingerprinting désactive des parties de l'API Web Audio ou renvoie des valeurs constantes. Chromium ne modifie pas la sortie. Un navigateur qui rend le hash aléatoire produit une valeur différente à chaque rechargement, ce qu'un diagnostic rend visible simplement en vous laissant recharger et comparer.

La vie privée, précisément

Aucun son n'est enregistré. Aucun microphone n'est ouvert. Le tampon existe en mémoire le temps du calcul puis est jeté. La seule chose qui pourrait quitter l'onglet est le hash, et seulement si la page choisit de l'envoyer. Un diagnostic qui calcule le hash localement et vous le montre lit exactement ce qu'un traqueur lirait, puis n'en fait rien.

Lire la valeur

Deux points méritent vérification. D'abord, que le hash existe bien : « Indisponible » signifie que l'API est bloquée, ce que certains sites traitent comme un signal en soi. Ensuite, qu'il est stable : rechargez et la valeur ne doit pas changer. Un hash qui change d'un chargement à l'autre vous indique que le navigateur injecte du bruit, ce qui protège contre le pistage intersites mais signale aussi le navigateur comme l'un de ceux qui le font.

Tous les articles · Lancer l'analyse