Als je op het web surft, laat je zonder dat je het beseft allerlei informatie over je achter. Zelfs als je geen cookies toestaat, kan een website immers heel wat over je te weten komen: met welke webbrowser surf je, in welke tijdzone bevind je je, welk besturingssysteem gebruik je, enzovoort. De combinatie van al die brokjes informatie levert vaak een unieke digitale vingerafdruk op.

denkwerkKoen Vervloesem

 

Elke keer dat je een website bezoekt, krijgt de webserver een heleboel gegevens te zien waarbij je niet stilstaat. Je webbrowser stuurt immers een http-aanvraag naar de server, waarin allerlei headers staan met informatie. Dat dient om de webserver te helpen om je aanvraag zo goed mogelijk af te handelen. Wil je weten welke headers je webbrowser naar een webserver stuurt? Bekijk dan die informatie eens op de website WhatIsMyBrowser.com (https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending).

denkwerk intro

Privégegevens
Zo weten veel mensen niet dat de Referer-header de url van de webpagina bevat waarvandaan je op de huidige pagina komt. Als je bijvoorbeeld via Google op de website komt, bevat de Referer-header https://www.google.com/. Nu is Google niet zo’n controversiële website. Maar als je ergens op een forum dat iets zegt over je politieke, seksuele of andere voorkeuren die je liever privé houdt, klikt op een link, moet je goed beseffen dat de website waarnaar je gaat weet waarvandaan je komt. De Referer-header bevat dan zelfs de specifieke pagina op het forum waarop je op de link klikte.

Andere headers lijken onschuldiger te zijn. Met User-Agent ‘Mozilla/5.0 (X11; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0’ weet de website dat je Firefox 108 op een Linux-machine draait en met Accept-Language ‘nl,en-US;q=0.7,en;q=0.3’ dat je moedertaal hoogstwaarschijnlijk Nederlands is. Er zijn ook headers die vrij technische informatie naar de webserver sturen, zoals welke compressie je webbrowser ondersteunt en welke afbeeldingsformaten ze aanvaardt. Maar als je al deze informatie combineert, zou het wel eens kunnen zijn dat die zo uniek is dat de website je aan de hand hiervan kan identificeren. Of is dat te ver gezocht?

what headers 2

Je webbrowser stuurt naar elke webserver
een http-aanvraag met allerlei informatie

Unieke vingerafdruk 
Dat je te identificeren bent aan de hand van informatie die je webbrowser doorstuurt, is helemaal niet vergezocht. Het is het domein van browser fingerprinting, en al heel lang een actief onderzoeksdomein. De Electronic Frontier Foundation houdt zo al lang – ter demonstratie van de risico’s – de website Cover Your Tracks (https://coveryourtracks.eff.org/) bij, die vroeger Panopticlick heette. Hierop kun je testen wat de website over je browser (en zo indirect over jou) te weten kan komen.

Het onderzoeksdomein staat natuurlijk niet stil, en een groep computerwetenschappers van het Franse nationale onderzoeksinstituut Inria heeft daarom de website AMIUnique (https://amiunique.org) opgezet met de nieuwste tests voor browser fingerprinting. Hiermee kun je zelf uitzoeken hoe uniek je vingerafdruk op het web is. Verder staan er ook heel wat tips op de website om minder informatie prijs te geven tijdens je surftochten. Bekijk zowel Cover Your Tracks als AMIUnique zeker eens. Ze tonen ongeveer hetzelfde, maar met een wat andere aanpak.

i am unique 2

Linux-gebruiker, Nederlandssprekend, mijn tijdzone en een specifieke
Firefox-versie bepalen in belangrijke mate mijn digitale vingerafdruk

Tests met JavaScript 
De headers die je webbrowser naar de webserver stuurt, geven wat basisinformatie. Maar er is nog veel meer informatie over je te vergaren door JavaScript-code en andere client-side code die in je webbrowser draait. De tijdzone waarin je je bevindt, de plug-ins die je in je webbrowser hebt geïnstalleerd, de resolutie en kleurdiepte van je scherm, de beschikbare lettertypes, of je een bekende adblocker hebt draaien. Een website kan het allemaal opvragen.

En het is net die combinatie van al die kleine stukjes informatie die in veel gevallen tot een unieke vingerafdruk leidt. Wie heeft er immers exact dezelfde combinatie van browserversie, taal, tijdzone, plug-ins, lettertypes, schermresolutie en nog veel meer? Veel van deze eigenschappen blijven bovendien voor langere tijd hetzelfde. Als je dan de volgende keer dezelfde website bezoekt, kan die aan exact dezelfde combinatie van eigenschappen herkennen dat jij het bent. En dat zonder cookies te moeten gebruiken.

Kleine verschillen 
Andere technieken die de laatste jaren zijn opgekomen, zijn canvas fingerprinting en WebGL fingerprinting. Het zijn beide gelijkaardige technieken die onzichtbaar een complexe tekening maken op de webpagina die je bezoekt. Het resultaat hangt af van je besturingssysteem, grafische kaart, drivers, firmwareversie en geïnstalleerde lettertypes. Hiervan wordt dan een 128-bits hashwaarde berekend, die als het ware een digitale vingerafdruk is die je configuratie beschrijft.

Bij canvas fingerprinting wordt de Canvas API (https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) van moderne webbrowsers gebruikt, waarmee je met behulp van JavaScript graphics kunt tekenen op het html canvas-element. De techniek buit de subtiele verschillen in rendering uit van dezelfde tekst en vormen op verschillende software- en hardwareconfiguraties. Na het renderen worden de exacte pixels op het canvas bekeken, die op verschillende systemen net iets anders komen te staan. JavaScript-code kan dat in een fractie van een seconde uitproberen zonder dat de bezoeker er iets van merkt.

WebGL fingerprinting gebeurt op een gelijkaardige manier. WebGL (https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API) is een JavaScript-API voor interactieve 2D- en 3D-graphics in de webbrowser. Een website kan onzichtbaar wat vormen via WebGL tekenen, dan bekijken welke pixels er exact op welke locatie worden gerenderd, en daarvan een hashwaarde berekenen. Die hangt af van je configuratie. Bovendien kan een website via WebGL ook de fabrikant van je grafische kaart opvragen, en soms zelfs de volledige naam van je driver. Op zich zijn dat weer allemaal geen gevoelige persoonsgegevens, maar de combinatie met andere gegevens kan je wel eens uniek identificeren.

canvas fingerprinting 2

Canvas fingerprinting is mogelijk omdat verschillende software- en
hardwareconfiguraties het html canvas-element lichtjes
verschillend renderen (bron: KU Leuven, Princeton University)

Op grote schaal gebruikt 
Worden deze technieken voor browser fingerprinting door websites gebruikt? Het lijkt er wel op. Al in 2014 publiceerden onderzoekers van de KU Leuven en Princeton University hun studie ‘The Web never forgets: Persistent tracking mechanisms in the wild’ (https://securehomes.esat.kuleuven.be/~gacar/persistent/), waarin ze aantoonden dat vijf procent van de 100.000 populairste websites canvas fingerprinting toepassen. Het gebruik is nadien alleen nog maar toegenomen. In een studie uit 2020 (https://web.cs.ucdavis.edu/~zubair/files/fpinspector-sp2021.pdf) bleek dat meer dan tien procent van de 100.000 populairste en zelfs meer dan een kwart van de 10.000 populairste websites bezoekers identificeert met browser fingerprinting. Dit groeiende gebruik mag niet verbazen, aangezien third-party cookies de laatste jaren meer en meer in het verdomhoekje zijn geraakt, en websites (vooral adverteerders) andere manieren proberen te vinden om personen te volgen op het web.

Hoe je beschermen? 
Het is moeilijk om je volledig te beschermen tegen browser fingerprinting. Heel wat van de verzamelde informatie is immers nodig voor de website. Als je bijvoorbeeld JavaScript uitschakelt, werken veel websites gewoon niet meer. En je kunt wel één type informatie verbergen, maar dan blijven er nog zovele andere over. Zo verbergt een vpn alleen je ip-adres en locatie, en een privévenster van je webbrowser verandert helemaal niets aan je vingerafdruk, want het is dezelfde webbrowser. Ook een adblocker beschermt je niet tegen browser fingerprinting.

Je kunt wel een andere webbrowser gebruiken die zich op privacy focust. Zo heeft Brave heel wat bescherming tegen browser fingerprinting (https://github.com/brave/brave-browser/wiki/Fingerprinting-Protections) ingebouwd. De webbrowser blokkeert bepaalde JavaScript API’s, en bij andere voegt het willekeurige data toe. Dit laatste doet het voor elke website die je bezoekt en voor elke sessie. Zo ziet je vingerafdruk er elke keer verschillend uit. Een website zoals AMIUnique of Cover Your Tracks zal dan wel zeggen dat je een unieke vingerafdruk hebt, maar elke keer dat je de website in een nieuwe browsersessie bezoekt, is die vingerafdruk verschillend, zodat je niet te tracken bent.

Tor Browser, de bekende webbrowser om anoniem te surfen, heeft een andere aanpak (https://torproject.org/projects/torbrowser/design/#fingerprinting-linkability): de ontwikkelaars willen je laten opgaan in de anonieme massa door iedereen dezelfde browser fingerprint te geven. Maar dat maakt het wel gemakkelijker om te identificeren of je Tor gebruikt. Dat wil je ook niet altijd, want het kan wel eens net de aandacht trekken.

persona vingerafdruk 2

Dankzij browser fingerprinting kunnen bedrijven eenvoudiger
frauduleuze aanmeldpogingen herkennen (bron: Persona)

Identificatie voor goede doeleinden?  
Tot nu toe hebben we het vooral over de nadelen gehad van browser fingerprinting, als een inbreuk op je privacy. Maar zoals bij elke technologie ligt het er maar aan hoe je ze gebruikt. Zo zijn dezelfde technieken heel handig om fraude te voorkomen. Je unieke fingerprint kan immers gebruikt worden door een website om te bepalen of jij het echt wel bent die inlogt. Het bedrijf Persona (https://withpersona.com) biedt zo’n dienst aan voor bedrijven die fraude willen uitsluiten, zoals banken, cryptobeurzen en onderwijsinstellingen.

Stel dat je op de website van je bank aanmeldt om een overschrijving uit te voeren. Je bank heeft JavaScript-code op zijn website draaien die een browser fingerprint berekent, onder andere met behulp van canvas fingerprinting en WebGL fingerprinting. De volgende keer dat je op de website aanmeldt, wordt diezelfde fingerprint berekend en vergeleken met de vorige. Verschillen je digitale vingerafdrukken, dan moet je een extra stap doorlopen om te bewijzen dat je wel bent wie je beweert te zijn.

Misschien meld je nu immers gewoon aan vanaf een andere computer of in een andere tijdzone omdat je op reis bent. Maar even goed kan iemand je digipass of telefoon gestolen hebben en je wachtwoord te weten gekomen zijn en in jouw plaats proberen aan te melden. Browser fingerprinting geeft de bank dus de mogelijkheid om afwijkende situaties te herkennen en dan een extra controle te doen. Bovendien kan een cybercrimineel die in meerdere accounts probeert in te breken, zo herkend worden nadat hij bij een eerste inbraakpoging als frauduleuze gebruiker is aangemerkt.