Wat is browserfingerprinting?

Elke browser verstuurt kleine signalen, je schermgrootte, je lettertypen, je grafische kaart, je audiohardware, en websites combineren die tot een unieke ID voor je apparaat. Zelfs met geblokkeerde cookies kan die ID worden gebruikt om je over sites heen te volgen.

In het kort

Met fingerprinting maken sites een unieke apparaat-ID zonder cookies. Combineer 30 signalen, scherm, lettertypen, GPU, audio, taal, tijdzone, plug-ins, en meestal heb je iets wat uniek genoeg is om één gebruiker over het hele web te herkennen. Het is lastiger te blokkeren dan cookies, omdat de signalen echte dingen zijn die websites nodig hebben (je schermgrootte om goed te tonen, bijvoorbeeld), en ze helemaal weghalen maakt het web stuk.

Op deze pagina

  1. Welke signalen worden gebruikt?
  2. Waarom het ook werkt als je cookies blokkeert
  3. Hoe browsers terugvechten
  4. Wat je er echt tegen kunt doen

Welke signalen worden gebruikt?

De klassiekers, op volgorde van hoe onderscheidend ze zijn:

  • Canvas-fingerprinting: een site laat de browser een kleine afbeelding tekenen en leest daarna de pixels uit. Kleine verschillen in grafische drivers, GPU-model en besturingssysteem geven net een andere afbeelding, verschillend genoeg om bijna uniek per apparaat te zijn.
  • WebGL-fingerprinting: vergelijkbaar met canvas, maar met 3D-grafische API's. Verraadt vrij direct je GPU-model en driverversie.
  • Audio-fingerprinting: de audioverwerking van de browser heeft kleine numerieke verschillen per systeem. Een site kan via de API een geluid afspelen (zonder dat je het hoort) en de golfvorm uitlezen.
  • Lettertypen opsommen: welke lettertypen je hebt geïnstalleerd, is een verrassend onderscheidend signaal. Een gemiddelde computer heeft 50–200 lettertypen; precies dezelfde lijst komt zelden twee keer voor.
  • Schermgrootte en pixeldichtheid
  • User-Agent-string en Client Hints (je browser, versie, besturingssysteem)
  • Tijdzone, taal, aantal processorkernen, beschikbaar geheugen, de Battery API in sommige browsers

Elk afzonderlijk signaal is zwak. Gecombineerd bereiken ze een uniciteit in de orde van 1 op de miljoenen.

Waarom het ook werkt als je cookies blokkeert

Cookies van derden verdwijnen binnenkort uit elke grote browser. Fingerprinting is het alternatief waar de advertentie-industrie al naar is overgestapt. De signalen zijn geen 'trackinggegevens' die je kunt weigeren, het zijn gegevens die de browser moet sturen om de pagina goed te tonen. Je schermgrootte doet ertoe omdat pagina's er hun opmaak op afstemmen. Je lettertypen doen ertoe omdat de pagina het beste lettertype kiest. Dat de combinatie uniek is, is een bijeffect van het feit dat die gegevens überhaupt gestuurd moeten worden.

Hoe browsers terugvechten

Twee strategieën, allebei onvolmaakt:

  1. Uniformiteit (de aanpak van Tor): laat elke Tor-gebruiker er hetzelfde uitzien. Dezelfde fingerprint, dezelfde schermgrootte, dezelfde lettertypen. Het nadeel: het web gaat op veel kleine manieren stuk, pagina's worden op de 'verkeerde' grootte getoond, lettertypen worden vervangen, webapps herkennen je apparaat verkeerd.
  2. Willekeur (de aanpak van Brave en Dazr): voeg per domein een beetje ruis toe aan de signalen. Twee bezoeken aan dezelfde site zien consistente resultaten (dus inloggen werkt); twee verschillende sites zien verschillende fingerprints. Dat is de afweging die de meeste privacybrowsers voor dagelijks gebruik maken.

De bescherming van Dazr staat standaard aan voor canvas-, WebGL-, audio- en lettertypemetingen, met uitzonderingen per site voor de zeldzame site die er stuk van gaat.

Wat je er echt tegen kunt doen

Om je fingerprint te verkleinen zijn de opties beperkt:

  • Gebruik een browser met standaard bescherming tegen fingerprinting (Dazr, Tor Browser, Brave met strenge Shields)
  • Schakel de Battery API, plug-ins en onnodige browserfuncties uit in de geavanceerde instellingen
  • Installeer geen lettertypen die je niet nodig hebt
  • Besef dat zelfs met JavaScript uit passieve fingerprinting (HTTP-headers, IP-adres, schermgrootte via CSS) blijft werken

Gerelateerd