oe gevoeliger de context, hoe langer de identifier meegaat
Je zou verwachten dat gevoeliger context tot voorzichtiger bewaren leidt. In de praktijk is het omgekeerd: hoe gevoeliger de omgeving, hoe langer de persistente identifier blijft leven. Precies de omgekeerde beweging van dataminimalisatie.
De omgekeerde beweging¶
Je zou verwachten dat een gevoeliger omgeving tot voorzichtiger bewaren leidt. Hoe persoonlijker wat je doet, hoe korter een systeem je zou moeten onthouden. In de praktijk zie ik het omgekeerde. Hoe gevoeliger de context, hoe langer de persistente identifier blijft leven.
Dat is een verrassend patroon, want het staat haaks op de intuïtie én op de norm. Op de plek waar de terughoudendheid het grootst zou moeten zijn, is het geheugen het langst. Ik heb dat niet beredeneerd, ik heb het gemeten.
De cijfers¶
Dezelfde tracking-identifier leeft 399 dagen op de publieke site. Zodra je de beveiligde, ingelogde omgeving betreedt, wordt diezelfde identifier gezet met een houdbaarheid van twee jaar. De plek met de meest gevoelige handelingen krijgt dus de langste geheugenspan.
Dit is een gemeten bevinding. De houdbaarheidsdatum staat in het verkeer dat de server terugstuurt, en ik lees hem daar rechtstreeks af. Het is geen schatting en geen afleiding uit beleid. Het is de waarde die de server zelf aan de browser meegeeft.
Wat een houdbaarheidsdatum technisch is¶
Een cookie krijgt zijn levensduur mee in de Set-Cookie-header, via het attribuut Max-Age of Expires. Die waarde bepaalt hoe lang de browser het nummer bewaart en bij elk volgend bezoek terugstuurt. Zolang de cookie leeft, is het dezelfde sleutel naar hetzelfde dossier.
In een HAR is dat direct zichtbaar:
# Publieke site
Set-Cookie: _id=A-4821; Max-Age=34473600; Path=/ # 399 dagen
# Achter de login
Set-Cookie: _id=A-4821; Max-Age=63072000; Path=/ # twee jaarDe naam van de cookie is gelijk, de identifier is gelijk, alleen het aantal seconden verschilt. De keuze voor die twee jaar is een instelling die iemand heeft gezet. Een cookie krijgt niet vanzelf een langere levensduur omdat de omgeving gevoeliger is. Iemand heeft dat getal ingevuld.
Waarom dit tegen dataminimalisatie ingaat¶
De AVG legt twee beginselen vast die hier botsen met wat ik meet. Artikel 5 lid 1 onder c is minimalisatie: verwerk niet meer dan nodig. Artikel 5 lid 1 onder e is opslagbeperking: bewaar niet langer dan nodig voor het doel. Beide beginselen worden strenger naarmate de gegevens gevoeliger zijn. Een gevoelige context vraagt om korter bewaren, niet langer.
Wat ik meet is de tegenovergestelde reflex. De gevoeligere plek krijgt de langere levensduur. De norm zegt "strenger als het gevoeliger wordt", de instelling doet "ruimer als het gevoeliger wordt". Precies waar het het meest zou moeten kloppen, wijst het de verkeerde kant op. Dat de tracking achter een overheidslogin überhaupt doorloopt, werk ik uit in Achter de overheidslogin is helemaal geen toestemmingsvraag.
Waarom een persistente identifier het probleem is¶
Het woord persistent doet hier het werk. Een sessiecookie verdwijnt als je de browser sluit en is bedoeld om je binnen één bezoek aangelogd te houden. Een persistente identifier blijft staan, bezoek na bezoek, en juist daardoor kan hij een geschiedenis opbouwen. Elke keer dat je terugkomt, stuurt de browser hetzelfde nummer mee, en elke handeling die daaraan hangt, komt bij de vorige.
De levensduur van zo'n identifier bepaalt dus rechtstreeks hoe diep het geheugen reikt. Bij 399 dagen kan een systeem je gedrag over meer dan een jaar aan elkaar rijgen. Bij twee jaar reikt dat geheugen nog een jaar verder terug. Het getal is geen technisch detail. Het is de tijdspanne waarover je herkenbaar blijft als dezelfde persoon. En omdat het dezelfde identifier is als op de publieke site, is het bovendien de tijdspanne waarover de handelingen in de beveiligde omgeving gekoppeld kunnen worden aan het gedrag daarbuiten. Zie Een resetbare identifier is alsnog een sleutel: zolang de sleutel leeft, functioneert hij als sleutel, ongeacht of je hem in theorie zou kunnen resetten.
Waarom het toch weegt¶
Een klein feit kan een scherp signaal zijn. De waarde van deze bevinding zit niet in de omvang van de schade, maar in wat het getal verraadt over de instelling erachter. Twee bewaartermijnen voor dezelfde identifier, en de langste hangt aan de gevoeligste omgeving. Dat is een keuze die tegen het uitgangspunt van dataminimalisatie ingaat, gemaakt op precies de plek waar het uitgangspunt het strengst zou moeten gelden.
Een klein feit is bovendien makkelijker te verdedigen dan een groot verwijt. Ik hoef niemand van opzet te betichten. Ik hoef geen schade aan te tonen. Ik leg twee getallen naast elkaar en wijs op het beginsel dat ze in verlegenheid brengt. Die bescheidenheid is een kracht. Wie een grote claim maakt, moet veel bewijzen en geeft de tegenpartij veel om op te schieten. Wie een klein, gemeten feit toont en het bij de betekenis daarvan laat, staat op grond die niet wegzakt.
Het weegt ook omdat het herhaalbaar en controleerbaar is. Iedereen kan de twee Set-Cookie-headers naast elkaar leggen en de seconden narekenen. Er is geen interpretatie nodig om het patroon te zien. Dat maakt het een klein feit dat standhoudt.
En het weegt omdat het iets zegt over de rest. Wanneer de bewaartermijn op de gevoeligste plek ruimer staat afgesteld dan op de publieke site, is dat een aanwijzing dat de gevoeligheid van de omgeving geen rol heeft gespeeld bij de instelling. De vraag die de norm stelt, of we hier wel zo lang moeten bewaren, is kennelijk niet gesteld. Dat is een reden om ook naar de andere instellingen in die omgeving te kijken, want een reflex die op dit punt de verkeerde kant op wijst, doet dat vaak op meer punten. Het cijfer is klein, het is ook een ingang.
Wat het voor mijn werk betekent¶
Ik gebruik dit als voorbeeld van hoe de norm en de instelling elkaars tegengestelde kunnen zijn zonder dat iemand het merkt. Niemand kiest bewust "laten we bij gevoelige gegevens langer bewaren". Het gebeurt omdat de ingelogde omgeving nu eenmaal op ruimere bewaartermijnen staat afgesteld en de tracking daar simpelweg in meelift.
In mijn rapporten houd ik zulke bevindingen klein en precies. Ik noem het gemeten getal, ik noem het beginsel waar het tegenin gaat, en ik trek geen grotere conclusie dan de twee cijfers dragen. Zie Dezelfde meetlat voor de overheid en de app in je broekzak voor waarom ik daarbij overheid en commerciële app langs dezelfde lat leg.
Het bepaalt ook wat ik standaard meet. Bij elke omgeving noteer ik niet alleen welke identifiers er staan, maar ook hoe lang ze leven en of dezelfde identifier terugkeert op een andere plek. De vergelijking tussen de publieke en de ingelogde variant is daarbij de scherpste toets, want daar staat dezelfde partij tegenover zichzelf. Het verschil in bewaartermijn tussen die twee is een getal dat niemand kan wegpraten met een verhaal over gebruiksgemak, omdat het over precies dezelfde identifier gaat. Dat maakt het een bevinding die klein blijft en toch precies raakt waar de norm en de praktijk uiteenlopen.
Zie ook Achter de overheidslogin is helemaal geen toestemmingsvraag, Een resetbare identifier is alsnog een sleutel en Dezelfde meetlat voor de overheid en de app in je broekzak.
- AVG, artikel 9gegevens over gezondheid, geloof en seksuele gerichtheid kennen een zwaarder regime