familiewapen Mick Beermickbeer.com

manuscript · Meten en wegen

beginselMeten en wegenverwant

Een aanwijzing is nog geen bewijs

Deze notitie bundelt een aantal losse bevindingen die bij elkaar horen. Een aanwijzing is nog geen bewijs.

Wat de meting vaststelt en wat het recht kwalificeert

Stel dat een app of een website een volgtechniek afvuurt nadat een bezoeker toestemming heeft geweigerd. Ik kan dat in het netwerkverkeer zien gebeuren. Een verzoek vertrekt naar een tracker, met een identifier erin, op een moment dat er geen grondslag voor lijkt. Dat is een sterke technische aanwijzing dat de wet wordt overtreden. Het is een harde meting van gedrag. Het is nog niet het oordeel dat er een overtreding is.

Dat oordeel hoort bij het recht, en het recht kijkt naar meer dan het gedrag alleen. De Telecommunicatiewet 11.7a en de AVG kennen uitzonderingen. Een cookie of een uitleesactie die strikt noodzakelijk is voor een door de gebruiker gevraagde dienst mag zonder toestemming. Er zijn gronden die losstaan van toestemming, zoals een wettelijke plicht of een gerechtvaardigd belang, met alle voorwaarden die daarbij horen. Om van overtreding te spreken moet je het doel van het verzoek wegen, de timing tegen de toestemmingsvraag leggen, en de uitzonderingen langslopen. Die weging is juridisch werk.

Ik houd die twee dingen daarom uit elkaar. De meting stelt vast wat er over de lijn gaat. De kwalificatie of dat mag, is een aparte stap met een ander soort bewijslast. Als ik in een rapport schrijf dat een tracker vuurt na weigeren, staat er een gemeten feit. Als ik schrijf dat dit de wet overtreedt, doe ik een juridische bewering, en die moet dan ook juridisch onderbouwd zijn. Het verschil lijkt klein tot iemand het rapport voor een klacht of een verweer gebruikt. Dan draagt elke zin gewicht, en dan telt of ik heb gemeten of geconcludeerd.

De weigering als testopstelling

De schoonste aanwijzing komt uit een expliciete weigering. Ik laad de pagina, ik open de toestemmingsdialoog, en ik weiger alles wat te weigeren valt. Daarna kijk ik wat er nog vertrekt. Wat na een volledige weigering nog een identifier naar een advertentiepartij stuurt, staat op gespannen voet met wat de bezoeker net heeft gevraagd. Dat is het moment waarop de aanwijzing hard wordt.

Ik lees dat verkeer terug uit HAR-bestanden, een volledige opname van de verzoeken en antwoorden die de browser deed. Zie Netwerkverkeer lezen via HAR-files. In de opname zie ik de bestemming, de meegestuurde identifier en het tijdstip. Ik meet zo dicht mogelijk bij hoe een echte bezoeker de site ervaart, want een kale scanner ziet een andere pagina dan een mens met een muis en een geweigerde banner. Zie Meet zoals een bezoeker, niet zoals een scanner.

Toch is ook deze opstelling geen automatische veroordeling. Weigeren werkt echt, en de weigering na een dialoog is de sterkste knop die een bezoeker heeft. Maar ik reken er niet blind op dat elke bit die daarna nog beweegt onrechtmatig is. Zie Cookies weigeren scheelt echt, maar reken er niet blind op. Een deel van het verkeer kan strikt functioneel zijn. Een verzoek kan een restant zijn van iets dat al liep voor de keuze werd verwerkt. De aanwijzing is sterk, en de sterkte ervan is precies de reden om zorgvuldig te blijven met het woord dat ik eraan hang.

Een nulbevinding vermeldt waar is gekeken

Het spiegelbeeld van een sterke aanwijzing is de lege uitkomst. Ik meet, en ik zie het gedrag niet. De verleiding is dan om te schrijven dat de app schoon is. Dat is de fout die ik het scherpst bewaak. Dat een gedrag in mijn meting niet is waargenomen, betekent niet dat het niet gebeurt.

Het kan buiten het meetbare deel liggen. Een app die certificate pinning gebruikt, laat zich niet zonder meer meelezen, en dan zie ik de inhoud van zijn verkeer niet. Een tracker die pas vuurt na een handeling die ik in de sessie niet deed, blijft stil in mijn opname. Niet alles vuurt bij het opstarten, dus een korte meting van de eerste seconden mist wat later komt. Zie Niet alles vuurt bij opstart, sommige trackers wachten op jou. Het kan ook onder de drempel liggen waarop een uitspraak verantwoord is. Eén los verzoek dat ik niet kan thuisbrengen, is te weinig om iets op te bouwen.

Daarom vermeldt een nulbevinding waar ik heb gekeken. Ik schrijf welke oppervlakken ik heb gemeten, hoe lang, met welke handelingen, en wat buiten bereik bleef. Een mislukte meting, waarbij de opstelling het verkeer niet kon zien, levert geen schone app op. Zie Een mislukte meting is geen schone app. Het levert een gat op, en dat gat hoort benoemd. De formulering die ik nastreef is nuchter. Niet waargenomen binnen de gemeten sessie, met deze opstelling, op deze oppervlakken. Zo zegt de nulbevinding wat ze werkelijk is, een afwezigheid van waarneming, met de grenzen erbij.

Er zit een discipline onder die verder gaat dan de bewoording. Een nulbevinding hoort te zeggen waar is gekeken, en niet wat ik vooraf verwachtte. Als ik verwacht een tracker te vinden en hem niet zie, is de eerlijke vraag of hij er niet is of dat mijn opstelling hem mist. Wie zijn verwachting laat meewegen in de conclusie, meet zichzelf. Zie Beargumenteer eerst het tegendeel van je eigen bevinding.

Code-vondst en live-verkeer zijn twee bewijsniveaus

Een derde onderscheid komt terug in bijna elk onderzoek. Ik kan een bevinding uit de code halen of uit het verkeer, en dat zijn twee verschillende dingen. Beide zijn bewijs. Ze bewijzen iets anders.

Haal ik een SDK, een endpoint of een sleutel uit gedecompileerde code, dan staat die vondst hard vast in die code. De klasse zit erin, de string zit erin, de aanroep is aanwezig. Dat is een gemeten feit over wat de app bevat. Het zegt nog niet dat de code op het toestel van een gebruiker daadwerkelijk draait, op die verbinding, in de omstandigheden die tellen. Een aanwezige tracker kan achter een uitgezette vlag zitten. Een endpoint kan in de app staan zonder dat het pad er ooit heen loopt. Een naam in de code is een aanwijzing dat een partij betrokken kan zijn, en meer dan dat is het op zichzelf niet. Zie Een naam in de code is nog geen tracker.

Zie ik daarentegen het verzoek echt vertrekken in de HAR-opname, met de data erin, dan heb ik het gedrag live gemeten. Dan is het van de statische aanwezigheid opgeklommen naar waargenomen uitvoering. Dat is het hoogste niveau dat ik voor dit soort gedrag kan halen. Het verschil tussen de twee hoort in het rapport te staan, expliciet, per bevinding. De ene zin zegt dat iets in de app zit. De andere zegt dat de app het doet. Wie die twee door elkaar haalt, schrijft een sterkere conclusie op dan de meting draagt.

Het onderscheid loopt parallel aan dat tussen de verklaring op papier en de uitvoering in code. Een privacyverklaring beschrijft wat een organisatie zegt te doen. De code beschrijft wat er is gebouwd. Het verkeer beschrijft wat er gebeurt. Drie lagen, drie bewijsniveaus, en ze kunnen alle drie uiteenlopen. Zie Papier versus code: de verklaring en de uitvoering.

Gemeten, afgeleid, vermoed

Deze drie onderscheidingen komen samen in één gewoonte. Ik label elke bevinding op haar bewijsniveau. Zie Label elke bevinding op bewijsniveau. In mijn werk hanteer ik drie treden.

  • Gemeten. Ik heb het zelf waargenomen in de opname. Het verzoek vertrok, de identifier zat erin, op dit tijdstip, in deze sessie. Voorbeeld: een tracker die na een volledige weigering alsnog een resetbare identifier meestuurt, zichtbaar in de HAR. Dit is het sterkste dat ik kan aanbieden, en ook hier geldt dat het het gedrag vaststelt en niet vanzelf de juridische kwalificatie.
  • Afgeleid. Ik heb het niet direct gezien, maar het volgt logisch uit wat ik wel zag. Voorbeeld: ik vind een cookie-sync tussen twee partijen in het verkeer, en ik leid daaruit af dat ze elkaars identifiers kunnen koppelen. De koppeling zelf gebeurt aan hun kant, buiten mijn zicht, dus de mogelijkheid is afgeleid uit de sync die ik wel mat.
  • Vermoed. Ik heb een aanwijzing, en meer nog niet. Voorbeeld: een endpoint in de gedecompileerde code van een partij die om bekend staat te volgen, zonder dat ik het verzoek live zag vertrekken. Het is een reden om verder te kijken, en het is nog geen bevinding om op te leunen.

Dit is de weg die ik in bijna elk dossier afleg, van vermoeden via afleiding naar gemeten feit. Zie Mijn werkwijze: van vermoeden naar bevinding. De labels maken die weg zichtbaar voor wie het rapport leest. Ze laten zien waar ik sta, en ze laten de lezer zelf wegen. Een dossier waarin alles even stellig klinkt, verbergt juist die weging.

Het label beschermt ook tegen een val die vaak terugkomt. Een overtuigde getuige is nog geen betrouwbare meting. Iemand die zeker weet dat een app hem afluistert, levert een sterk verhaal en geen data. Zie Een overtuigde getuige is geen betrouwbare meting. De stelligheid van de bron zegt niets over het bewijsniveau van de claim. Alleen de meting doet dat.

Waarom dit onderscheid het werk draagt

Er is een grens aan dit onderscheid. Als een aanwijzing sterk genoeg is, waarom dan al die voorzichtigheid? Een tracker die na weigeren vuurt, is toch gewoon fout? In de praktijk voelt het zo, en vaak zal het ook zo blijken. Toch is de voorzichtigheid geen rem op het werk. Ze is de reden dat het werk standhoudt.

Mijn rapporten zijn bedoeld om te dragen. Ze gaan richting een klacht, een verweer, een journalist of een toezichthouder. Op het moment dat iemand aan een bevinding trekt, is de vraag altijd dezelfde. Heb je dit gemeten of geconcludeerd, en waar heb je gekeken. Een dossier dat die vraag vooraf beantwoordt, houdt stand. Een dossier dat een gemeten feit en een juridisch oordeel in één zin gooit, valt uit elkaar bij de eerste tegenspraak, ook als de onderliggende meting klopte. De inbreuk zelf is vaak te berekenen, terwijl de weging van doel en grondslag dat niet is, en dat verschil hoort er open in te staan. Zie ANPR-kentekencamera’s: de inbreuk is te meten, het nut niet.

Er is nog een reden. Sommige bevindingen zijn technisch waar en toch misleidend als je het bewijsniveau weglaat. Een endpoint in de code melden als bewijs dat een app iets doet, is technisch juist en praktisch onwaar zodra de vlag uit staat. Zie Technisch juiste uitspraken kunnen een verkeerde indruk wekken. Het bewijsniveau erbij zetten haalt die val weg. Het maakt de bevinding precies zo sterk als ze is.

Voor mijn eigen werk komt het neer op drie regels die ik bij elke bevinding langsloop. De meting stelt gedrag vast, en de kwalificatie of dat mag is een aparte, juridische stap. Een lege uitkomst zegt waar ik heb gekeken en hoe ver mijn zicht reikte. En een vondst in de code staat een niveau lager dan hetzelfde gedrag live gemeten op de verbinding. Wie die drie scheidingen vasthoudt, schrijft rapporten die je kunt narekenen. Dat is het enige soort dat ik wil leveren. Zie ook het bredere onderscheid tussen wat een bevinding, een beginsel en een gedachte is Wat een bevinding, een beginsel en een gedachte is.

Zie ook Label elke bevinding op bewijsniveau, Niet alles vuurt bij opstart, sommige trackers wachten op jou en Cookies weigeren scheelt echt, maar reken er niet blind op.

citeer alsBeer, M. (2026, 24 juli). Een aanwijzing is nog geen bewijs. mickbeer.com. https://mickbeer.com/#een-aanwijzing-is-nog-geen-bewijs

lees dit stuk in het manuscript, met alles waar het aan hangt