Welke signalen overleven browserupdates? Een stabiliteitsanalyse
We analyseerden de stabiliteit van signalen over 50 updates van Chrome, Firefox en Safari. Dit zijn de meest en minst stabiele fingerprinting-signalen.
Browserupdates zijn de natuurlijke vijand van device fingerprinting. Elke 4-6 weken brengen Chrome, Firefox en Safari nieuwe versies uit die signaalwaarden kunnen wijzigen — user-agent-strings veranderen, renderinggedrag aanpassen, API's toevoegen of verwijderen. Zoals opgemerkt in de W3C Fingerprinting Guidance, werken browsers er actief aan om het herkenbare oppervlak te beperken. Voor fingerprinting-systemen die alle signalen gelijk behandelen, is elke update een mogelijke identiteitsbreuk voor miljoenen bezoekers.
We voerden een uitgebreide stabiliteitsanalyse uit over 50 browserupdates om de fundamentele vraag te beantwoorden: op welke signalen kun je vertrouwen en welke laten je in de steek?
Methodologie
We instrumenteerden 200 fysieke apparaten verdeeld over 5 besturingssystemen (Windows 10, Windows 11, macOS Ventura, macOS Sonoma, Ubuntu 22.04) en 3 browsers (Chrome, Firefox, Safari). Elk apparaat voerde 14 maanden lang dagelijks geautomatiseerde signaalverzameling uit, met dekking van 50 grote browserversie-updates: 24 Chrome-releases, 16 Firefox-releases en 10 Safari-releases.
Voor elk signaal volgden we: hoe vaak de waarde veranderde, of de wijziging correleerde met een browserupdate of externe factor (driverupdate, OS-patch), en de omvang van de wijziging (volledige waardevervanging vs. kleine variatie).
De stabiliteitsniveaus
Niveau 1: Rotsvast (99,5%+ stabiliteit)
Deze signalen veranderden alleen wanneer fysieke hardware veranderde of drivers werden bijgewerkt — nooit door browserupdates alleen.
Hardware Concurrency (navigator.hardwareConcurrency): 99,97% stabiel. Veranderde slechts op 1 apparaat dat een BIOS-update kreeg die hyperthreading beïnvloedde. Device Memory (navigator.deviceMemory): 99,98% stabiel. Eén apparaat werd tijdens het onderzoek geüpgraded van 8GB naar 16GB. Schermresolutie en kleurdiepte: 99,92% stabiel. Wijzigingen correleerden met monitorwissels en docking-station-gebeurtenissen. WebGL Max Texture Size: 99,99% stabiel. Nul browsergerelateerde wijzigingen. Veranderde één keer op een apparaat dat een NVIDIA-driverupdate kreeg. Audio-samplerate: 100% stabiel. Nul wijzigingen over alle 200 apparaten en 50 updates. Dit is het meest stabiele signaal dat we volgen.
Niveau 2: Grotendeels stabiel (95-99,5%)
Deze signalen veranderen af en toe bij browserupdates, maar blijven bij de meeste releases stabiel.
Canvas 2D-fingerprint: 97,8% stabiel. Wijzigingen deden zich voor in Chrome 118 (update van de fontrendering-engine), Chrome 122 (wijziging in sub-pixel anti-aliasing) en Firefox 121 (update in text shaping). Elke wijziging trof alle apparaten op die browser tegelijk — een detecteerbaar patroon dat we afhandelen met browserversie-bewuste matching. WebGL Renderer String: 98,1% stabiel. Chrome herformatteert af en toe de ANGLE-wrapper-string. De onderliggende GPU-informatie blijft ongewijzigd, maar de stringrepresentatie verschuift. We parsen het GPU-model uit de string in plaats van de string direct te hashen. Fontlijst: 96,4% stabiel. OS-updates voegen af en toe systeemfonts toe of verwijderen ze. Browserupdates beïnvloeden de fontopsomming zelden, maar Chrome 120 veranderde de volgorde waarin fonts worden gerapporteerd, wat hash-gebaseerde font-fingerprinting brak. We gebruiken set-gebaseerde vergelijking (set-gelijkenis) in plaats van geordend hashen.
Niveau 3: Matige stabiliteit (80-95%)
Deze signalen veranderen met een merkbare frequentie, maar bieden tussen wijzigingen door nog steeds nuttige identificatiewaarde.
Geïnstalleerde plug-ins: 89,2% stabiel. Chrome's voortdurende inkrimping van de plug-in-array (navigator.plugins) verwijderde de zichtbaarheid van plug-ins in sommige contexten volledig. Firefox behield de plug-in-opsomming. Safari beperkte deze tot een standaardset. CSS-featuredetectie: 91,7% stabiel. Bij elke browserrelease worden nieuwe CSS-features toegevoegd, wat de set features verandert die door onze CSS-probing wordt gedetecteerd. We wegen nieuwe features lager dan gevestigde om de impact te verkleinen. Touch-ondersteuning: 93,1% stabiel. Desktopbrowsers wijzigen af en toe hun gerapporteerde touch-ondersteuning wanneer Chrome zijn device-emulatiedetectie aanpast.
Niveau 4: Volatiel (<80%)
Deze signalen veranderen vaak en mogen nooit primaire identificatie-ankers zijn.
User-Agent-string: 42,3% stabiel. Chrome's User-Agent-reductie-initiatief veranderde het stringformaat meerdere keren. Firefox werkt het versienummer bij elke release bij. Safari past de WebKit-versiestring regelmatig aan. Dit was ooit de ruggengraat van eenvoudige fingerprinting-systemen — die systemen zijn nu kapot. Connectietype (navigator.connection): 68,4% stabiel. Verandert bij netwerkomschakeling (WiFi naar mobiel, verschillende WiFi-netwerken). Battery API: 71,2% stabiel. Varieert met laadstatus en API-beschikbaarheid. Chrome beperkte de toegang tot de Battery API in sommige contexten. Beschikbaar schermgebied: 76,8% stabiel. Verandert met taakbalkzichtbaarheid, vensterbeheer en aanpassingen in beeldschermschaling.
Vergelijking tussen browsers
Chrome is de meest volatiele browser voor fingerprinting-stabiliteit. Google werkt er actief aan om herkenbaarheid te verminderen, wat betekent dat Chrome-updates meer signalen breken dan Firefox- of Safari-updates. Over onze onderzoeksperiode:
Chrome veroorzaakte signaalwijzigingen in 3,2% van de verzamelsessies. Firefox veroorzaakte signaalwijzigingen in 1,8% van de verzamelsessies. Safari veroorzaakte signaalwijzigingen in 1,1% van de verzamelsessies.
De lagere volatiliteit van Safari komt deels doordat Apple minder releases per jaar uitbrengt en deels doordat Safari's fingerprinting-tegenmaatregelen (Intelligent Tracking Prevention) op netwerkniveau werken in plaats van API-retourwaarden te veranderen.
Praktische aanbevelingen
Op basis van deze analyse doen we vijf aanbevelingen voor fingerprinting-systemen in productie:
Gebruik de user agent nooit als identificatie-anker. Het is het minst stabiele onderscheidende signaal. Gebruik het alleen voor browserdetectie en Niveau 3-betrouwbaarheidsscoring.
Scheid hardwaresignalen van softwaresignalen. Hardwaresignalen (GPU, scherm, audio) zijn 40x stabieler dan softwaresignalen (user agent, plug-ins, CSS-features). Weeg ze dienovereenkomstig.
Gebruik set-gebaseerde vergelijking voor opsombare signalen. Fontlijsten, plug-in-lijsten en featuredetectieresultaten moeten worden vergeleken met set-gelijkenis of vergelijkbare set-afstandsmetrieken, niet met geordend hashen. Volgordewijzigingen zijn gebruikelijk; inhoudswijzigingen zijn zeldzaam.
Implementeer browserversie-bewuste matching. Wanneer Chrome 118 de canvasrendering voor alle Chrome-gebruikers tegelijk verandert, moet je systeem dit herkennen als een browserupdate, niet als een massale identiteitsbreuk. Volg browserversies en pas versiespecifieke matchingtoleranties toe.
Monitor signaalstabiliteit continu. Onze stabiliteitspercentages zijn gebaseerd op historische data. Toekomstige browserupdates kunnen het stabiliteitsprofiel van elk signaal veranderen. We voeren continue monitoring uit en passen de gewichten van signalen automatisch aan wanneer de stabiliteit verandert.
Impact op tracio.ai
Onze V3 multi-tier identificatiearchitectuur weerspiegelt deze stabiliteitsanalyse rechtstreeks. Niveau 1-signalen (hardware) dragen 60% gewicht. Niveau 2-signalen (rendering, fonts) dragen 30% gewicht. Niveau 3-signalen (browsermetadata, connectie) dragen 10% gewicht. Deze weging zorgt ervoor dat de meest stabiele signalen de identificatie aansturen, terwijl volatiele signalen bijdragen aan de betrouwbaarheidsscoring zonder identiteitsbreuken te veroorzaken.
Het resultaat: 99,5% identificatiestabiliteit over 50 browserupdates, tegenover 69% voor systemen die platte hash-gebaseerde fingerprinting gebruiken. Het verschil is geen algoritmische slimheid — het is empirische signaalanalyse toegepast op architectuurbeslissingen.