Elke stap die je online zet, laat sporen na, omdat je webbrowser een unieke vingerafdruk heeft. Om dit online fingerprinting tegen te gaan, kun je meerdere webbrowsers gebruiken. Maar ook dan ben je nog te traceren...
Je webbrowser heeft allerlei instellingen en eigenschappen die op te vragen zijn door een website die je bezoekt. Omdat er heel veel combinaties van die eigenschappen bestaan en veel mensen een andere combinatie hebben, is het goed mogelijk dat jouw combinatie uniek is en dat je op die manier te identificeren bent. Zo'n combinatie van eigenschappen noemen we een online fingerprint, je digitale vingerafdruk als het ware.
Fingerprinting is een logische opvolger van het inzetten van trackingcookies om gebruikers over meerdere websites te volgen, en hoewel fingerprinting nog steeds gebeurt door cookies te plaatsen heeft dat vaak niet de voorkeur van de tracker. Bij het gebruik van cookies heeft de gebruiker namelijk altijd de mogelijkheid die weg te gooien, of ze vooraf te weigeren als een website daarom vraagt. Fingerprinting is voor veel trackers daarom aantrekkelijker. Het gaat dan om informatie die al verstuurd wordt bij het openen van een website, waarbij meteen veel informatie over het systeem van de gebruiker naar de server wordt teruggestuurd.
Bij browser-fingerprinting wordt meestal meteen gedacht aan advertentietracking, agressieve cookies die je overal volgen en met bedrijven of winkels die precies willen weten waar bezoekers zich bevinden. Fingerprinting is voor sommige toepassingen echter erg nuttig. Banken gebruiken het bijvoorbeeld om te controleren of een gebruiker plotseling vanaf een andere locatie inlogt of dat hij dat met een onbekend apparaat doet, en kan zo een extra beveiligingscheck sturen.
Vaak is agressieve fingerprinting ook een geval van onwetendheid en slechte beveiliging, waarbij privacy niet erg belangrijk lijkt. Er wordt dan niet nagedacht over het toevoegen van salts of het hashen van informatie en er wordt niet bij stilgestaan dat gebruikers persoonlijk te identificeren zijn.
En cookies dan?
Cookies zijn een weliswaar oud, maar nog steeds actueel voorbeeld van fingerprinting. Bij ieder bezoek aan een website wordt er op allerlei manieren informatie over je browser en je surfgedrag opgezocht, door soms wel tientallen partijen. Veel van die cookies komen bijvoorbeeld van reclamenetwerken. DoubleClick, Googles advertentienetwerk, zette bijvoorbeeld de standaard voor het volgen van gebruikers over het hele web door te kijken wat zij op iedere pagina doen. Eén bezoek aan een pagina waar een advertentie via DoubleClick staat, zorgt ervoor dat er meteen een cookie op je computer wordt geplaatst waarmee ook op andere pagina’s is te zien wat je doet.
Het verhaal van hoe cookies werken mag inmiddels wel duidelijk zijn. Dat werd het namelijk ook voor gebruikers, die na een tijdje steeds beter begonnen te beseffen dat zij gevolgd werden op internet en daar maatregelen tegen namen. Aanvankelijk waren die simpel: eens in de zoveel tijd de cookies uit je browsergeschiedenis wissen was al genoeg om vervelende adverteerders tegen te gaan. Cookiemakers bedachten daarom steeds agressievere methodes om te zorgen dat gebruikers niet zomaar konden ontsnappen aan de volgcookies.
Een unieke digitale vingerafdruk wordt gebouwd op basis van tientallen verschillende eigenschappen van het systeem van een gebruiker. Zo kijkt het naar de tijdzone waarop de computer is ingesteld, de schermresolutie en kleurdiepte, welke browser-extensies je hebt geïnstalleerd, welk platform je gebruikt, en welke lettertypen je hebt geïnstalleerd op je computer. Die informatie wordt al bij ieder bezoek aan een website via http-headers ingeladen en verstuurd naar de server van de tracker.
In sommige gevallen wordt die informatie opgevraagd door de website zelf, bijvoorbeeld door middel van een script op een pagina dat een unieke ID toekent aan een bezoeker. Dat is handig als die in de toekomst weer terugkomt. In andere gevallen gaat het echter ook om advertertentienetwerken of sociale media, die met fingerprinting-methodes proberen om te zien wat een gebruiker op het web doet.
Trackers vinden steeds geavanceerdere methodes om een gebruiker te kunnen volgen. Daarbij wordt allang niet meer alleen gekeken naar de instellingen in de browser, maar ook naar de computer zelf. Zo kan een tracker bijvoorbeeld kijken naar welke fonts geïnstalleerd zijn op het systeem. Hoewel het mogelijk is via Flash een lijst daarvan op te vragen, is die methode niet erg populair omdat veel gebruikers Flash tegenwoordig uitschakelen en steeds minder websites Flash gebruiken. Steeds meer trackers renderen tegenwoordig een groot aantal fonts en controleren in unicode met Javascript welke daarvan geïnstalleerd zijn.
Twee soorten fingerprinting
Er zijn 2 soorten fingerprinting. Bij passieve fingerprinting gebruikt de website de eigenschappen die je browser automatisch doorgeeft als je de website bezoekt. Bijvoorbeeld de schermresolutie, versie van de browser en het besturingssysteem. Het nadeel (voor de website) is dat het aantal kenmerken beperkt is, en minder unieke profielen oplevert. Daarnaast is er actieve fingerprinting, waarbij de website uit de browser unieke kenmerken probeert los te peuteren. Een bekende variant is font fingerprinting: het opvragen van de lijst met alle lettertypes.
Canvas fingerprinting
Een subtielere variant is canvas fingerprinting. De website draait een scriptje dat je browser de opdracht geeft om een onzichtbare tekening maken. Omdat iedere browser die tekening op een net iets andere manier maakt, ben je hieraan vaak te herkennen.
Audiocontext fingerprinting
Nog exotischer is audiocontext fingerprinting, een techniek waarbij de pc een onhoorbaar geluid produceert, dat voor elke combinatie van apparaat en browser uniek is. Volgens Amerikaans onderzoek komt deze vorm in de praktijk echter (nog) nauwelijks voor.
Bescherm jezelf
Hoe bescherm je je tegen online fingerprinting? Dat is eigenlijk heel moeilijk. Bovendien zijn de echt effectieve manieren niet erg gebruiksvriendelijk. De beste manier om je te beschermen is met de Tor-browser te surfen. Deze op Firefox gebaseerde webbrowser, die van het anonimiserende netwerk Tor gebruikmaakt, neemt allerlei maatregelen tegen fingerprinting. Met Tor surfen is wel traag.
Ook zonder de Tor-browser kun je al heel wat bereiken, door eenvoudigweg JavaScript uit te schakelen. Daardoor kunnen websites allerlei eigenschappen van je webbrowser niet meer detecteren. Maar veel moderne websites werken niet meer zonder JavaScript. Een browserextensie zoals NoScript laat je toe om selectief JavaScript in en uit te schakelen voor specifieke websites.
Je kunt ook gewoon proberen om het aantal bits informatie dat je webbrowser lekt te verminderen door met een veel voorkomende webbrowser te surfen. Maar zelfs als je de laatste versie van Chrome op Windows 10 gebruikt, lek je nog allerlei informatie met de geïnstalleerde plug-ins en lettertypes. Maar je zult in ieder geval meer in de massa opgaan dan wanneer je een exotische combinatie zoals w3m op DragonFly BSD gebruikt...
Installeer add-ons
Het installeren van een add-on klinkt contra-intuïtief als je bekijkt hoe de techniek werkt, omdat je nog een element toevoegt aan de mix die jouw browser onderscheidt van andere. Extensies als CanvasBlocker voor Firefox en CanvasFingerprintBlock voor Chrome zijn browser-hulppogramma's die moeten voorkomen dan het canvas-element wordt gebruikt om bezoekers te identificeren.
Deze extensies werken vrij simpel: default worden canvas-elementen geblokkeerd, waardoor ze niet kunnen worden uitgelezen om identificerende informatie te kunnen onderscheiden. Je kunt in CanvasBlocker behoorlijk fijnmazig bepalen wat wel en niet mag of specifieke domeinen whitelisten ofwel blacklisten.
Een andere optie is een extensie als Ghostery, die een heleboel methodes om fingerprinting tegengaat. Add-ons als Privacybadger en Ghostery houden een lijst aan met (advertentie)servers die worden gebruikt om fingerprint-informatie te verzamelen en blacklisten zulke servers. Adblockers voorkomen daarmee ook veel fingerprintacties en in iets als uBlock kun je allerlei modules toevoegen om specifiek volggedrag te voorkomen. Op browserleaks.com kun je testen of jouw browser (nog) canvasgegevens doorbrieft.
Blokkeer JavaScript
De te renderen afbeelding wordt via JavaScript geserveerd en het blokkeren van JS is daarmee een effectieve manier om canvas-fingerprinting te voorkomen. Effectief, maar niet bepaald efficiënt. Je blokkeert er allerlei scriptingtechnieken mee - en is daarom bij securitybewust surfgedrag meestal uitgeschakeld - maar er valt nog steeds genoeg browserinformatie te achterhalen.
Bovendien zorgt het gebrek aan JavaScript ervoor dat de browser door het gebrek aan de scripts voor veel webdiensten niet goed werkt. Je kunt een extensie als NoScript (Firefox) of ScriptSafe (Chrome) gebruiken om scripts standaard te blokkeren, maar uitzonderingen (permanent) toe te staan aan de webdienst die anders niet functioneert.
Hardwarespecifieke informatie
Omdat online fingerprinting volledig tegengaan zo moeilijk is, werd in het verleden aangeraden om meerdere webbrowsers te gebruiken als je niet wilde dat verschillende aspecten van je leven aan elkaar gelinkt kunnen worden. Lange tijd leek dat inderdaad een goede oplossing, maar vorig jaar ontdekten onderzoekers technieken om gebruikers niet alleen aan de hand van hun webbrowser te traceren, maar ook via verschillende webbrowsers op dezelfde machine. Ze doen dat door de webbrowser taken op te dragen die afhangen van functionaliteit in de hardware en het besturingssysteem. De resultaten zijn te vinden op de website Unique Machine.
De schermresolutie is zo'n machinespecifieke eigenschap die onafhankelijk van de webbrowser is. De onderzoekers zijn er ook in geslaagd audio te verwerken in de webbrowser en die te analyseren, zodat er specifieke eigenschappen van de audiohardware in je pc naar boven komen. Ook het aantal logische processorkernen is hardwarespecifiek. Moderne webbrowsers laten toe dat aantal op te vragen met navigator.hardwareConcurrency, maar zelfs op oudere webbrowsers kom je met een side-channel attack het aantal eenvoudig te weten. Voer een aantal Web Workers-taken (een Web Worker is een manier om JavaScript-code op de achtergrond uit te voeren) uit en monitor hoe lang het duurt om ze uit te voeren. Verhoog het aantal Web Workers telkens met 1 en doe de test opnieuw. Zodra de benodigde tijd sterk verhoogt, heb je de limieten van je hardware ontdekt.
De onderzoekers hebben ook een boel nieuwe technieken ontwikkeld die via WebGL in de webbrowser eigenschappen van je gpu kunnen detecteren. Daarvoor starten ze een aantal vastgelegde renderingtaken, die op elke computer een net iets (voor mensen doorgaans onmerkbaar) ander resultaat geven door verschillen in de hardware (gpu). Sommige resultaten verschillen op twee verschillende computers zelfs maar één pixel! Op deze manier test de codetexturen, anti-aliasing, lijnen en krommen, meerdere objecten, belichting en doorzichtigheid.
Willekeurige ruis
Een andere interessante aanpak is PriVaricator . Die is origineel ontwikkeld tegen browser fingerprinting, maar beschermt ook tegen heel wat cross-browser fingerprinting-technieken. Het idee erachter is even eenvoudig als briljant: verander alle eigenschappen die voor een fingerprint bruikbaar zijn een tikkeltje door er random noise aan toe te voegen.
Op het eerste gezicht ben je er dan nog minder goed aan toe, want door de willekeurige ruis heeft iedereen die deze techniek gebruikt een unieke vingerafdruk. Tot je beseft dat het niet het uniek-zijn is dat een probleem is, maar het gelijk blijven van die vingerafdruk over verschillende browsersessies, waardoor die allemaal aan dezelfde persoon/computer te linken zijn.
Door nu bij elke browsersessie telkens andere willekeurige ruis aan de eigenschappen toe te voegen, lijkt het voor de website alsof je bij elke sessie een andere persoon/computer bent. Op die manier is het niet meer mogelijk om een uitgebreid surfprofiel van je aan te leggen.
Cookie-wet
De cookie-wet beperkt zich formeel niet tot cookies. De wet spreekt van “een ieder die gegevens wenst uit te lezen uit of op te slaan in randapparatuur”. Onder gegevens vallen cookies, maar ook Flash cookies, plugins, toolbars, offline content en zelfs gewoon de HTML, CSS en Javascript waar iedere website uit bestaat. Voor al die gegevens is dus toestemming nodig.
De uitzondering voor strikt noodzakelijk zijn geldt bij HTML, CSS en dergelijke al snel. Zonder stylesheet ziet de website er niet uit, dus die is noodzakelijk. Maar wie de wet héél formeel leest, zal vast elementen van een website kunnen aanwijzen die eigenlijk niet noodzakelijk zijn en dus eigenlijk toestemming vereisen.
Browser fingerprinting valt óók onder de cookiewet. Daarbij wordt weliswaar niets opgeslagen op de computer van de eindgebruiker maar wel uitgelezen en ook dat triggert al de toestemmingseis (tenzij noodzakelijk). Uitlezen van informatie over de browser (welke fonts, welk besturingssysteem, welke schermresolutie enzovoorts) is óók uitlezen van gegevens immers. En de minister heeft expliciet gezegd:
"Het lezen van de combinatie van instellingen en kenmerken van het apparaat met als uitsluitend doel de met dat apparaat opgevraagde dienst te leveren (bijvoorbeeld om de bezochte website goed te kunnen weergeven) valt onder de uitzondering in het derde lid. Het lezen van deze informatie om het surfgedrag van de gebruiker van het apparaat te volgen valt niet onder de uitzondering. Hiervoor is dan ook geïnformeerde toestemming van de gebruiker vereist".
Het maakt dus wél uit met welk doel de gegevens worden uitgelezen. Wie de browserversie uitleest om een Chrome-specifieke site (of een voor tablets geschikte versie) terug te kunnen sturen, hoeft daar geen toestemming voor te vragen. En wie het besturingssysteem en taalinstellingen achterhaalt om zo de meest passende downloadlink te kunnen tonen (de Nederlandstalige 64-bits Windowsversie of de Linux ARM versie) hoeft ook geen toestemming te vragen. Maar browser fingerprinting voor herkenning, al is het maar in geaggregeerde vorm, vereist dus net zo goed toestemming.
Online fingerprinting is niet altijd slecht
Online fingerprinting is niet altijd een slechte techniek. Het is ook nuttig als element in een tweefactor-authenticatiesysteem. Zo kan de website van je bank via online fingerprinting ontdekken dat je via een andere computer dan normaal wilt inloggen in je account. Op dat moment beslist de website dan mogelijk om met een extra factor te controleren of jij het bent, bijvoorbeeld door je op te bellen en je een beveiligingsvraag te stellen die je eerder hebt ingesteld ("Wat is de naam van je eerste huisdier?").
Firefox blokkeert cryptominers en fingerprinters in testversie
Mozilla is in een testversie van Firefox begonnen met het blokkeren van cryptominers en fingerprinters, zo heeft de browserontwikkelaar bekendgemaakt. Dit moet de privacy van gebruikers verder beschermen. Vorig jaar liet Mozilla weten dat het trackers, fingerprinters en cryptominers standaard gaat blokkeren.
Via fingerprinting is het mogelijk om gebruikers aan de hand van de kenmerken van hun apparaat te identificeren. Het gaat dan om zaken als schermresolutie, gebruikte hardware en andere zaken. Advertentienetwerken kunnen met deze informatie een uniek profiel van iemand maken en hem vervolgens over het web volgen, ongeacht het gebruik van cookies of het ip-adres van de gebruiker.
Andere websites maken daarnaast gebruik van cryptominers die de computers van gebruikers naar cryptovaluta laten delven. Dit kan een grote belasting vormen voor het batterijverbruik van smartphones en laptops. Volgens Mozilla zorgt dit ervoor dat het web een vijandige plek wordt en zal Firefox daarom dit soort zaken standaard gaan blokkeren.
© 2020 Veilig Digitaal