Hoe het volgen van een digitale voetafdruk onder de motorkap werkt
Van TLS-handshakes tot canvas-rendering — hoe we de digitale voetafdruk van een apparaat reconstrueren met meer dan 130 passieve signalen zonder cookies of opslag.
Elk apparaat dat verbinding maakt met het internet laat een spoor van technische artefacten achter — een digitale voetafdruk. Bij tracio.ai reconstrueren we deze voetafdruk uit meer dan 130 passieve signalen die tijdens één enkele pagina-lading worden verzameld, zonder gebruik te maken van cookies, localStorage of enige vorm van persistente opslag aan de clientzijde. Dit artikel legt precies uit hoe dat proces werkt.
De laag voor signaalverzameling
Wanneer onze JavaScript-agent in de browser van een bezoeker laadt, begint hij tegelijkertijd signalen te verzamelen in meerdere categorieën. Canvas-rendering, WebGL-parameterquery's, AudioContext-verwerking, lettertype-enumeratie en het uitlezen van navigator-eigenschappen draaien allemaal parallel. Het volledige verzamelproces is op moderne hardware in minder dan 50 milliseconden voltooid.
Het cruciale inzicht is dat elk signaal een ander aspect van de hardware- en softwarestack van het apparaat vastlegt. Canvas-rendering weerspiegelt de GPU, de driver en de lettertyperenderingsengine. WebGL-parameters onthullen het model en de mogelijkheden van de grafische kaart. AudioContext legt verschillen bloot in hoe de audio-DSP floating-pointbewerkingen verwerkt. Navigator-eigenschappen rapporteren CPU-cores, geheugen, platform en taalinstellingen.
Ons team heeft dit afgelopen maand gemeten over 2 miljard events: de mediane verzameltijd was 38 ms en het 99e percentiel was 52 ms. We hebben eerst de naïeve aanpak geprobeerd — signalen sequentieel verzamelen. Dat was 40x langzamer. Parallelle verzameling met een timeout-grens was een van de eerste architectuurbeslissingen die we goed hadden.
TLS-fingerprinting: de eerste laag
Nog voordat onze JavaScript wordt uitgevoerd, heeft de browser al aanzienlijke informatie prijsgegeven via de TLS-handshake. Het Client Hello-bericht bevat de cipher suites die de browser ondersteunt, de TLS-extensies die hij gebruikt, de elliptische curves die hij verkiest en de handtekeningalgoritmen die hij accepteert. Deze informatie wordt bepaald door de TLS-bibliotheek van de browser en varieert aanzienlijk tussen browserfamilies, versies en besturingssystemen.
We leggen deze TLS-fingerprint vast met JA4-hashing — een moderne vervanger van JA3 die betere granulariteit en cross-versiestabiliteit biedt. De JA4-hash alleen kan Chrome onderscheiden van Firefox en van Safari, en verkleint de identificatie vaak tot een specifieke browserversierange. In combinatie met onze signalen aan de clientzijde levert dit een kruisvalidatielaag op die extreem moeilijk te vervalsen is.
Canvas- en GPU-fingerprinting
Canvas-fingerprinting maakt gebruik van het feit dat verschillende GPU's dezelfde tekeninstructies met subtiele verschillen op pixelniveau renderen. Met de Canvas API kunnen we een zorgvuldig ontworpen scène tekenen — specifieke tekststrings in meerdere lettertypen, geometrische vormen met bepaalde coördinaten en gradiënten met precieze kleurstops — en vervolgens een hash berekenen van de resulterende pixeldata.
De renderingsverschillen komen voort uit variaties in anti-aliasingalgoritmen, subpixelrendering, kleurvermenging en font hinting tussen GPU-modellen en driverversies. Zelfs twee apparaten met hetzelfde GPU-model kunnen verschillende canvas-uitvoer produceren als ze verschillende driverversies of besturingssystemen draaien. Dit maakt de canvas-hash tot een van onze meest onderscheidende signalen.
WebGL-hardwareprofilering
De WebGL API onthult gedetailleerde informatie over het grafische subsysteem die veel verder gaat dan de renderer- en vendorstrings. We bevragen maximale texturegroottes, shaderprecisieformaten, ondersteunde extensies, viewportafmetingen en tientallen andere parameters die variëren tussen GPU-modellen en driverconfiguraties.
De combinatie van deze parameters vormt een gedetailleerd hardwareprofiel. Een apparaat met een NVIDIA RTX 4070 zal bijvoorbeeld andere maximale texturegroottes, andere shaderprecisie en andere extensie-ondersteuning rapporteren dan een apparaat met een AMD RX 7800 XT. Dit hardwareprofiel is inherent stabiel — het verandert niet met browserupdates, alleen met hardware- of driverwijzigingen.
Audioverwerkingsfingerprinting
De Web Audio API biedt nog een hardware-afhankelijke signaalbron. We maken een oscillatornode aan, verbinden die met een dynamics compressor en meten de uitvoerbuffer. Verschillen in floating-pointprecisie, DSP-implementatie en resamplingalgoritmen tussen audiohardware en besturingssystemen produceren meetbare variaties in de uitvoer.
Audiofingerprints hebben een matige uniciteit, maar een uitzonderlijke stabiliteit. De audioverwerkingspijplijn verandert zelden, tenzij de gebruiker van audiohardware wisselt of het besturingssysteem opnieuw installeert. Dit maakt audiosignalen tot waardevolle ankers in ons meerlaagse identificatiesysteem.
Signaalfusie en identiteitsresolutie
Ruwe signalen worden versleuteld en verzonden naar onze server, waar de apparaatidentificatie-engine ze verwerkt via een driedelig hashingsysteem. Hardwaresignalen (canvas, WebGL, audio) vormen Tier 1 — de stabiele kernidentiteit. Browsersignalen (feature detection, CSS-eigenschappen, mediamogelijkheden) vormen Tier 2, verwerkt via cross-sessionmatching om verwachte drift door browserupdates op te vangen. Vluchtige signalen (user agent, tijdzone, taal) vormen Tier 3 en dragen bij aan de betrouwbaarheidsscore zonder de identiteitsbeslissingen te sturen.
Het fusiealgoritme weegt elk signaal op basis van uniciteit en stabiliteit. Een match op een zeldzame canvas-hash weegt veel zwaarder dan een match op een veelvoorkomende schermresolutie. Deze gewogen aanpak zorgt ervoor dat de identificatie accuraat blijft, zelfs wanneer een deel van de signalen verandert.
Geen opslag, geen cookies
Een cruciaal ontwerpprincipe van ons systeem is dat identificatie niet afhankelijk is van enige vorm van opslag aan de clientzijde. We plaatsen geen cookies, schrijven niet naar localStorage en gebruiken geen IndexedDB voor trackingdoeleinden. De bezoekers-ID wordt volledig afgeleid uit de inherente kenmerken van het apparaat — de hardware, de softwarestack, de netwerkconfiguratie. Dit betekent dat identificatie het wissen van cookies, de incognitomodus en zelfs het opnieuw installeren van de browser overleeft.
Privacy door architectuur
Omdat we alleen technische browserattributen verzamelen — geen browsegeschiedenis, geen formuliergegevens, geen persoonlijke inhoud — is de impact op de privacy minimaal. De W3C Fingerprinting Guidance schetst best practices voor verantwoord gebruik van browsersignalen, en onze architectuur sluit aan bij deze principes. Bij een cloud-gehoste implementatie vindt alle verwerking plaats op uw eigen infrastructuur. Geen enkel bezoekersgegeven bereikt ooit onze servers. Deze architectuur maakt naleving van AVG, CCPA en andere privacyregelgeving eenvoudig.