lezer vroeg me:
Ik woon naast een drukke sluiproute in mijn dorp en wil graag statistieken maken van het autoverkeer dat langs rijdt. Ik wil daartoe met een webcam uit mijn slaapkamerraam auto’s fotograferen en de kentekens herkennen. De beelden gooi ik meteen weg, de kentekens sla ik op zodat ik statistieken kan maken over regelmatige passanten versus eenmalig verkeer et cetera. Ik publiceer de kentekens nergens maar ga de statistieken wel rapporteren aan de gemeente. Mag dat?
Kentekens van auto’s worden in Nederland in principe gezien als persoonsgegevens. Ze zijn immers (via het RDW-register of soms andere bronnen) te herleiden tot een natuurlijk persoon, de eigenaar van de auto. Natuurlijk zullen sommige kentekens op bedrijfsnamen staan – dat zijn dan geen persoonsgegevens – maar de overgrote meerderheid van de auto’s is privé-eigendom. Je moet kentekens dus behandelen als persoonsgegevens tenzij je zeker weet dat er geen privéauto’s tussen zullen zitten.
De toezichthouder houdt een slag om de arm door te zeggen dat het om de context gaat: het zijn “geen persoonsgegevens indien redelijkerwijs ook niet te verwachten valt dat die gegevens langs een omweg (eventueel door derden) zullen worden herleid”. Maar volgens mij is die context er al heel snel, zeker als het gaat om auto’s in een bepaalde dorpswijk die daar vaker langskomen. Anderen uit die wijk zullen die snel kunnen herkennen.
Persoonsgegevens dus. Dat betekent dat het gebruik er van te rechtvaardigen moet zijn onder de Wbp. Dat komt hier neer op een belangenafweging: hoe groot is het belang van de vraagsteller bij zijn statistieken, en hoe ernstig is de privacyschending van de passanten? En, aanvullend, kan de vraagsteller iets doen om de privacyschending te beperken?
Een veelgebruikte truc is bijvoorbeeld de kentekens direct na herkenning te hashen. Weliswaar zijn het dan nog steeds persoonsgegevens, maar de privacyimpact is veel kleiner (met een goede hashfunctie). Het idee is immers dat een derde die de hashes heeft, ze niet kan terugrekenen naar de originele kentekens. In de praktijk zijn daar trucs voor, maar hashen lijkt nog steeds acceptabel bij de privacytoezichthouder (zoals bij deze zaak).
Verder heeft de vraagsteller al een paar goede stappen genomen. Hij gaat de kentekens niet publiceren maar alleen geaggregeerde informatie (15% van de auto’s rijdt dagelijks heen en terug door mijn wijk, 80% van de auto’s doet dat minstens één keer per week). Dat zijn geen persoonsgegevens. Hij moet alleen de kentekens niet opslaan, zodat de kans op een datalek verkleind wordt.
Het enige dat nog misgaat, is dat er geen informatie wordt verstrekt aan de auto-eigenaren dat hun persoonsgegevens op deze manier worden verwerkt. Ik heb alleen geen idee hoe dat zou moeten gebeuren. Een groot bord langs de weg lijkt me lastig te realiseren (nog even afgezien van vergunningen die daarvoor nodig zouden zijn), maar hoe anders?
Arnoud
Waarom zou een groot bord lastig zijn? De vraagsteller woont kennelijk dicht genoeg bij de weg om er last can te hebben. Een bord ophangen kan dan toch ook? Of een spandoek samen met de overburen: ‘uw kenteken wordt hier vastgelegd’. Zal de overlast ook wel snel afnemen…….
Omdat de gemeente komt klagen over gebrek aan vergunning en daarnaast meteen de hand op houdt voor precariobelasting.
Je mag het eigenlijk niet zeggen, maar wat je in praktijk moet doen is de nummerplaten meteen hashen en de originelen weggooien en verder gewoon je mond en van de dommen houden. De kans dat je betrapt wordt is immers zeer klein en als het toch gebeurt en je houdt je van de domme “ik dacht dat het met een hash geen probleem was”, dan krijg je eerst een bindende aanwijzing ipv een boete en kost het je niets. Voor deze persoon geen oplossing meer, hij heeft zijn vraag al openbaar gemaakt :X
Wat wellicht ook werkt is alleen de eerste 4 (of zelfs 5) tekens van het kenteken vastleggen. Dan krijg je wellicht collisions (12-AB-CD telt dan als tweede passage van 12-AB-CF), maar dat is waarchijnlijk een klein percentage. Voordeel is dat de eerste 5 tekens niet genoeg zijn om het op een persoon te herleiden.
Dat is dus een soort van hashing. Hashen zonder collisions is geen hashing.
Perfect Hash Functions is hashen zonder collisions.
Het blijven persoonsgegevens. De RDW kan die persoon nog steedsvinden, want er zijn maar maximaal 26 kandidaten. En je hebt vast gevallen waarin de andere 25 mogelijkheden niet in gebruik zijn. En iemand die in je database kijkt en toevallig het desbetreffende kenteken kent kan het ook herleiden. Geen goede hashfunctie dus.
Ik zou denken van niet. In het gunstigste geval zou de RDW het kunnen herleiden naar 1 enkele persoon, maar die situatie zal niet gauw voorkomen denk ik. En met het formaat van de kentekens kunnen ook de cijfers achteraan staan. In dat geval heb je dus 10 of 100 mogelijke kandidaten (afhankelijk van hoeveel tekens je van het kenteken weglaat) zonder uitzonderingen. Ik kan mijn niet voorstellen dat een hash die herleidbaar is naar meer dan 1 persoon een persoonsgegeven kan zijn. Of vergis ik mij?
Zo veel mogelijke kentekens zijn er niet. Ook worden lang niet alle combinaties gebruikt. Het lijkt me dat een hash van een kenteken simpel te brute forcen is en dus weinig toevoegt.
Dit lijkt zo op het eerste gezicht. Maar een hash-functie toepassen is een betere beveiliging, dan geen hash-functie toepassen.
Als de wegspion een sterke hashfunctie gebruikt + salt, dan moet je toegang hebben tot deze hash-functie + salt, alvorens je brute force attempts kunt koppelen aan kentekens. Simpelweg bruteforcen is er niet bij.
Ook analyse (welk gehashed kenteken komt het vaakst voor?) vergt flink wat inzet. Maar stel dat je een kenteken vind dat het vaakst langs komt rijden. Je hebt nu kenteken -> hash -> gehashed kenteken. Moet je alsnog de juiste salt vinden, en afhankelijk van de gebruikte hash functie, kan dit onpraktisch lang duren.
Ondanks brute-force mogelijkheid, heb ik liever dat een database gelekt wordt met gehashte wachtwoorden, dan met ongehashte wachtwoorden.
Gewoon 10 meter van het huis aan beide kanten een streep op de weg trekken met daarin in 8pt font “Als u over deze streep rijd gaat u akkoord met de verwerking van uw kenteken ten behoeve van sluipverkeer meting” evt aangevuld met http://www.bonkersworld.net/agreement/ 😉
Hashen voegt in dit geval niet zo heel veel toe, omdat de “entropie” in de input-data (de nummerborden) niet zo groot is. Stel dat er ongeveer 100 miljoen nummerborden in Nederland zijn uitgegeven, dan hoef je “maar” ongeveer 100 miljoen hashes uit te rekenen om alle nummerborden te reconstrueren (uitgezonderd buitenlandse nummerborden). Met een GPU en een beetje geduld lijkt me dat een eitje. Daar komt nog bij dat de meeste nummerborden waarschijnlijk van mensen uit de buurt zijn: als je die nummerborden weet, dan hoef je, voor het merendeel van de nummerborden, veel minder dan 100 miljoen mogelijkheden na te gaan.
Het lijkt me privacy-vriendelijker om expres “hash collisions” te creëren: je kunt dit doen door na het hashen maar een paar bits van de hash op te slaan; daarvoor moet je de “meest random” bits van de hash uitkiezen. Als je bijv. maar 16 bits van je hash opslaat, dan worden alle nummerborden verdeeld over 65536 “bakjes”; voor 100 miljoen nummerborden zitten er dan dus gemiddeld zo’n 1500 nummerborden in een bakje. Als je die 16 bits registreert, dan weet je wel dat de auto 1 van die 1500 auto’s is, maar niet welke.
Nadeel is dan dat er ook meerdere verschillende auto’s langs kunnen komen die in het zelfde “bakje” terecht komen; dit verstoort je meting. Wikipedia geeft een tabel op de pagina over de Birthday Attack, waaruit blijkt dat je bij 16 bits een ongeveer 50% kans hebt dat dit gebeurt als er ongeveer 300 verschillende auto’s langs komen. Dat is niet zo veel voor een drukke straat.
Het blijft dus een vervelend compromis tussen privacy en het uitvoeren van een goede meting. Volgens mij blijft het dus zo dat het registreren van nummerborden een redelijk grote privacyschending is, of je nou hasht of niet.
Maar als je hashed met een secret key dan heb je dat probleem toch opgelost? Ook al lekt de database dan uit dan kan je er nog niets mee. Pas als óók de key lekt dan kan je het bruteforcen maar voor dit soort persoonsgegevens lijkt me dat voldoende.
Eventueel kan je elke dag/week/maand een nieuwe key gebruiken en de oude weggooien. Op die manier kan je alleen maar relaties leggen in die periode maar niet over langere periodes.
Precies wat NP zegt: Een salt + goede hash functie (zoals bcrypt) maakt brute-forcen onpraktisch.
Er zijn voor lekken meerdere vormen mogelijk. Stel de gegevensverwerker vergeet een USB-stickje in de trein met een excel-sheet met in de eerste kolom een hash, en in de tweede kolom een telling. Een aanvaller weet dan uberhaupt niet dat het om kentekens gaat, en moet dus redelijkerwijs alle woorden proberen.
Zelfs unsalted MD5 zal een (krakkemikkig) slotje op de gegevens zijn. Om collisions zoveel mogelijk te voorkomen, en toch biljoenen objecten te kunnen tellen, zijn speciale data structuren gemaakt (er zijn immers ontelbare hashing functies, waarvan er eentje weinig collisions heeft met andere kentekens). Voor aggregatie maakt het vaak niet uit dat niet alle auto’s in een uniek bakje belanden. Vergelijk met probabilistisch tellen: random scan 1 in 10 auto’s, en doe je tellingen x 10.
Heb hier nog even over zitten nadenken. Wat zou de reden zijn dat je überhaupt kentekens wil hebben? Is er wel een legitiem doel? Wat maakt het voor de overlast uit of dit dezelfde persoon is die ’s ochtends heen, en ’s avond weer rijdt? Wat als je kan bepalen of degene die langsrijdt daar legitiem rijdt (want in de buurt woont) of een ‘sluiprijder’ is. Daar is maar een heel beperkt aantal kentekens voor nodig. Een mogelijke oplossing zou dan zijn om – uiteraard met toestemming van betrokkenen – eerst vast te leggen wat de kentekens zijn van degenen die in de buurt wonen. Vervolgens ga je kentekens scannen en sla je alleen op of een passerende auto wel of niet een bekende is. Je kan dan zonder persoonsgegevens (anders dan van een kleine groep die daartoe toestemming heeft gegeven) te verwerken, vaststellen op welke momenten er hoeveel onbekende auto’s door de straat rijden. Wie dat zijn maakt niet veel uit maar je brengt de overlast wel in kaart.
Dat is een goede natuurlijk. Is er wel een legitiem doel?
Dat je liever wilt dat er minder auto’s door je straat rijden kan ik me voorstellen. Dat wil iedereen.
Maar het inrichten van de straten en het sturen van de verkeersstromen is natuurlijk een taak van de gemeente, waarbij de gemeente wordt geacht de belangen van iedereen af te wegen.
Als je vindt dat ze dat niet goed doen, kun je dat aankaarten. De gemeente kan dan een verkeersteller plaatsen. Desnoods kun je zelf gaan tellen.
Maar wat maakt het inderdaad uit of het herhaaldelijk dezelfde auto’s zijn, of verschillende, of dat ze van buurtbewoners zijn of van anderen?
Ik reageer altijd een beetje allergisch op de term ‘sluipverkeer’. Alsof die mensen iets doen wat niet mag, of iets wat niet behoorlijk is.
Sluipverkeer bestaat alleen in de hoofden van mensen die overlast ervaren, en (onterecht) denken dat verkeer is op te splitsen in ‘legitiem’ verkeer en ‘niet legitiem’ verkeer.
Verkeer is gewoon verkeer: mensen die zich om voor hen voldoende belangrijke redenen van A naar B verplaatsen, via een vrij toegankelijke openbare straat die is aangelegd voor algemeen gebruik.
Het is niet aan de bewoners van de straat om dit verkeer volgens hun eigen willekeurige standaard in te delen in ‘goed’ en ‘slecht’, ‘gewenst’ en ‘ongewenst’, ‘sluip’ en ‘niet-sluip’.
Dus een legitiem doel? No way in dit geval.
Een groot deel van de aanpak van sluipverkeer is m.i. erg dubieus: er worden straten afgesloten of beperkt bruikbaar gemaakt met als gevolg …. ?
Inderdaad, het verkeer verplaatst zich naar andere straten. Die bewoners vragen weer om maatregelen en er komen steeds meer nieuwe knelpunten, overlast, frustraties etc. …
Vaak gaat de doorstroming een groot deel van de tijd dan nog net goed, maar zodra er een tegenvallertje is (onderhoud, drukte, ongeluk, …) loopt het verkeer onnodig vast, wat dus geld- en tijdsverspilling en onnodige belasting van milieu oplevert!
Bovendien kosten alle benodigde onderzoeken, discussies en maatregelen ook nog eens veel tijd en geld ….
Dit is wel zo, maar geldt dat ook voor de auto’s die iedere dag langs straat X rijden? Het overgrote deel van de autos is prive-eigendom, maar onder de auto’s die aan filevermijdend gedrag meedoen, zal een bovenproportioneel gedeelte leaseautos zitten. Leaseauto’s zijn immers verantwoordelijk voor veel meer kilometers per auto dan de gemiddelde auto, en leaseauto’s worden min of meer per definitie altijd door werkenden bereden, en dat zijn de mensen die over alternatieve wegen in de spits rijden.
Arnoud, in dit stuk geef je aan dat particulieren zijn uitgezonderd: http://blog.iusmentis.com/2013/01/07/wanneer-val-ik-onder-de-privacywet/
Hebben we het hier niet over een particulier die voor privédoeleinden (namelijk onderbouwing van zijn klacht richting de gemeente), wil onderzoeken hoe vaak bepaalde auto’s langskomen?
Die blog is achterhaald sinds het Rynes-arrest (C-212/13) van het Hof van Justitie eind 2014. Men bepaalde toen dat het filmen van de openbare weg door een particulier niet telt als “huishoudelijk/particulier gebruik” omdat het aan de levenssfeer van anderen raakte. Volgens mij gaat dat exact ook hier op.
Ik begrijp één opmerking niet: Dat je mensen op de hoogte moet stellen van het verwerken van hun persoonsgegevens. Als je de beelden direct wist. En je hasht de kentekens met een salt zodat ze niet terug te hashen zijn. Dan heb je het toch niet meer over persoonsgegevens?
Het anonimiseren van gegevens valt onder verwerking.