Le CPU fingerprinting est une technique de pistage qui lit navigator.hardwareConcurrency — une propriété JavaScript unique qui révèle combien de cœurs de processeur logiques votre appareil expose au navigateur. Combiné avec d'autres signaux matériels, votre nombre de cœurs CPU aide les traceurs à construire un identifiant de périphérique persistant qui survit à la suppression des cookies, à la navigation privée et aux changements de VPN. Vérifiez ce que votre navigateur expose sur whatsmy.fyi.
En résumé
navigator.hardwareConcurrency est une API Web standard qui retourne le nombre de cœurs CPU logiques que votre navigateur est autorisé à utiliser. Les scripts de fingerprinting collectent cette valeur — avec la sortie canvas, les données renderer WebGL, la résolution d'écran et le fuseau horaire — pour construire une empreinte d'appareil stable sans cookies. Les défenses les plus efficaces sont Brave Browser (qui randomise la valeur) et Firefox avec privacy.resistFingerprinting activé (qui la plafonne à 2).
Qu'est-ce que le CPU fingerprinting ?
Le CPU fingerprinting est l'utilisation de données liées au processeur, exposées par les API du navigateur, pour contribuer à un identifiant de périphérique unique. Le signal principal est navigator.hardwareConcurrency, une propriété en lecture seule définie dans le HTML Living Standard qui retourne le nombre de processeurs logiques disponibles pour le navigateur. Elle a été conçue pour aider les développeurs web à déterminer combien de Web Workers parallèles lancer pour des tâches intensives en calcul. Les scripts de fingerprinting la détournent comme descripteur matériel.
Le CPU fingerprinting est l'une des couches de la technique plus large du browser fingerprinting, qui assemble des dizaines de signaux de navigateur et matériels en un seul identifiant. Contrairement aux cookies, le CPU fingerprinting ne stocke rien sur votre appareil — il reconstruit votre identifiant à partir des caractéristiques observables de votre matériel à chaque visite d'un site.
Comment fonctionne le CPU fingerprinting ?
L'attaque de base est une lecture d'une seule propriété JavaScript — une ligne de code qui s'exécute en moins d'une milliseconde. Des attaques plus sophistiquées vont plus loin, utilisant des canaux temporels pour estimer votre microarchitecture CPU réelle même quand le navigateur usurpe la valeur.
Étape 1 — Lecture de hardwareConcurrency
La forme la plus simple de CPU fingerprinting lit directement le nombre de cœurs logiques depuis l'objet Navigator. Cette valeur est disponible sans invite de permission, sans interaction utilisateur, et est identique en navigation normale et en navigation privée.
// Lit les cœurs CPU logiques exposés par le navigateur
const logicalCores = navigator.hardwareConcurrency;
// → 8 sur un MacBook Pro M3 Pro
// → 4 sur un téléphone Android milieu de gamme
// → 2 sur Firefox avec resistFingerprinting activé
// → une valeur aléatoire entre 2 et 8 sur Brave BrowserÉtape 2 — Combinaison avec d'autres signaux matériels
Un nombre de cœurs brut (ex. 8) n'est pas unique en lui-même — des millions d'appareils partagent le même compte. Les scripts de fingerprinting le combinent avec des signaux complémentaires : fabricant et renderer GPU de WebGL, hash pixel canvas, résolution d'écran et densité de pixels, fuseau horaire, langue et caractéristiques de la pile audio.
Étape 3 — Identification CPU basée sur le timing (avancé)
Des recherches académiques du CISPA Helmholtz Center for Information Security ont démontré que JavaScript peut empreindre la microarchitecture CPU — pas seulement le nombre de cœurs — via des canaux temporels. En exécutant des calculs parallèles spécialement conçus et en mesurant la latence d'exécution, des scripts peuvent estimer si votre processeur est un Intel Core, AMD Ryzen, Apple M-series ou Qualcomm Snapdragon. Cette technique contourne l'usurpation naïve de hardwareConcurrency car elle observe le comportement matériel réel.
// Collecteur minimal d'empreinte CPU
function getCpuFingerprint() {
return {
logicalCores: navigator.hardwareConcurrency, // ex. 8
deviceMemory: navigator.deviceMemory ?? 'unknown', // ex. 8 (Go, arrondi)
platform: navigator.platform, // ex. "MacIntel"
maxTouchPoints: navigator.maxTouchPoints, // 0 = bureau, >0 = tactile
};
}Quelle est la contribution de hardwareConcurrency à l'unicité de l'empreinte ?
| Résultat | Valeur | Source |
|---|---|---|
| Support mondial du navigateur pour hardwareConcurrency | 95,51 % | Can I Use |
| Précision d'identification du fabricant CPU via timing JS | 97,5 % | CISPA Research, 2022 |
| Identification modèle/microarchitecture CPU via timing JS | >60 % | CISPA Research, 2022 |
| Nombre de cœurs rapporté par Firefox resistFingerprinting | Toujours 2 | Firefox Source |
| Plage randomisée Brave pour hardwareConcurrency | 2 – min(réel, 8) | Fingerprint.com |
| Participants dans l'étude CISPA sur le fingerprinting CPU | 834 (297 modèles CPU) | CISPA Research, 2022 |
RGPD et CPU fingerprinting
Selon le RGPD, lire les caractéristiques matérielles pour construire un identifiant de périphérique persistant constitue un traitement de données personnelles lorsque cet identifiant peut être lié à un individu. La CNIL a statué que le browser fingerprinting à des fins publicitaires requiert un consentement éclairé. Selon le CCPA et le CPRA en Californie, les empreintes d'appareils constituent des informations personnelles soumises aux droits d'opt-out. Des exemptions d'intérêt légitime peuvent s'appliquer aux cas d'usage étroits de détection de fraude.
Comment se protéger du CPU fingerprinting
- Tor Browser (protection maximale) : Tor Browser normalise
navigator.hardwareConcurrencychez tous les utilisateurs, retournant une valeur uniforme qui rend impossible l'identification individuelle par le nombre de cœurs CPU. - Brave Browser (recommandé pour l'usage quotidien) : Brave randomise
hardwareConcurrencypar site et par session, retournant une valeur entre 2 etMath.min(réelCœurs, 8). Cela rend le pistage inter-sites via le nombre de cœurs CPU peu fiable sans casser les sites qui utilisent légitimement l'API. - Firefox avec
privacy.resistFingerprinting: Ce paramètre dansabout:configfait rapporter à FirefoxhardwareConcurrencycomme 2 sur tous les appareils, indépendamment du nombre de cœurs réel. Cela réduit également des dizaines d'autres surfaces de fingerprinting simultanément. - Mullvad Browser : Basé sur les protections fingerprinting de Tor Browser mais conçu pour une utilisation sans le réseau Tor, Mullvad supprime ou normalise les API matérielles incluant
hardwareConcurrency. - Les limites des VPN : Un VPN change votre adresse IP visible mais n'a aucun effet sur ce que l'environnement JavaScript de votre navigateur rapporte.
navigator.hardwareConcurrencyest lu directement depuis le navigateur, entièrement non affecté par le routage du trafic via un serveur VPN. Vérifiez sur whatsmy.fyi.
Foire aux questions
Que retourne concrètement navigator.hardwareConcurrency ?
Le nombre de cœurs de processeur logiques disponibles pour le navigateur — pas les cœurs physiques. Un CPU avec 4 cœurs physiques et hyperthreading actif rapporte 8 cœurs logiques. La propriété est en lecture seule et disponible sans aucune permission utilisateur.
Le mode privé cache-t-il mon nombre de cœurs CPU ?
Non. La navigation privée empêche votre navigateur d'écrire l'historique et les cookies sur disque — mais elle ne change pas les valeurs matérielles que votre navigateur expose. navigator.hardwareConcurrency retourne la même valeur en fenêtre de navigation privée qu'en fenêtre normale.
Usurper hardwareConcurrency peut-il me protéger complètement ?
Non. Bien qu'usurper la valeur de l'API soit une contrainte supplémentaire pour la collecte passive d'empreintes, cela ne protège pas contre l'identification CPU basée sur le timing. Des recherches académiques ont démontré que JavaScript peut estimer votre fabricant CPU avec 97,5 % de précision en mesurant la latence de calculs parallèles soigneusement conçus — indépendamment de ce que le navigateur rapporte pour hardwareConcurrency.
Comment hardwareConcurrency diffère-t-il de deviceMemory ?
navigator.hardwareConcurrency rapporte les cœurs CPU logiques ; il fait partie du HTML Living Standard et est supporté dans tous les grands navigateurs. navigator.deviceMemory rapporte la RAM approximative de l'appareil en gigaoctets, arrondie à la puissance de deux la plus proche (0,25, 0,5, 1, 2, 4, 8) — et n'est supporté que dans Chrome et Edge.
Articles connexes
- Qu'est-ce que le browser fingerprinting ? — le guide complet de tous les signaux de fingerprinting combinés
- Qu'est-ce que le canvas fingerprinting ? — comment les rendus canvas invisibles produisent un identifiant unique
- Qu'est-ce que le WebGL fingerprinting ? — comment l'API graphique 3D expose votre GPU et la version du pilote
- Qu'est-ce que le device memory fingerprinting ? — l'API sœur exposant votre RAM



