De gemeente Rotterdam wil op een privacy vriendelijkere manier kentekenparkeren aanbieden door de kentekens slechts drie maanden opslaan. Dit in plaats van zeven jaar, opgelegd door een convenant met de Belastingdienst. Om onder dat convenant uit te komen vraagt de gemeente toestemming aan het kabinet voor deze kortere bewaartermijn. Dit is een nobel streven, maar ik vrees dat de gemeente lang kan wachten. En ze hoeft helemaal niets aan het kabinet te vragen. Door kentekenparkeren net iets anders in te richten, is de privacy prima geregeld en heeft de Belastingdienst het nakijken.

Het idee bij kentekenparkeren is dat in een database bijgehouden wordt welk kenteken is aangemeld voor parkeren, en of daar voor betaald is. De informatie in die database komt uit verschillende bronnen. Bijvoorbeeld door bij een parkeerautomaat je kenteken in te voeren en te betalen. In sommige parkeergarages wordt bij het binnenrijden je kenteken gescand, en bij het uitrijden gecontroleerd of voor dat kenteken betaald is. Er zijn ook apps voor. Parkeercontroleurs scannen het kenteken van geparkeerde voertuigen en controleren of het kenteken geregistreerd staat in de database, en of deze voldoende betaald heeft om hier nog geparkeerd te staan. Het zijn de gegevens in deze database die de Belastingdienst graag wil hebben, om te controleren of leaserijders niet oneigenlijk privé gebruik maken van hun leaseauto.

Maar het kan ook anders.

In plaats van direct het kenteken op te slaan in de database, kun je ook een zogenaamde hash van de kenteken informatie opslaan. Die hash wordt berekend door een zogenaamde hash functie, die lastig te inverteren is. Gegeven een kenteken als invoer, rekent een hashfunctie de bijbehorende hash uit. Deze is uniek voor ieder kenteken. Maar gegeven de hash is het veel werk om het oorspronkelijke kenteken dat er bij hoort terug te vinden. Je moet eigenlijk alle mogelijke kentekens proberen om de match te vinden.

Dat maakt zo’n database dus onbruikbaar voor de Belastingdienst. Maar voor het bijhouden van wie er betaald heeft om te parkeren en om dat te controleren, m.a.w. alle ‘gewone’ functies van een parkeer controle systeem, maakt het gebruik van zo’n hash helemaal niets uit. Bij het parkeren voert de automobilist gewoon zijn kenteken in. Die wordt meteen gehasht (het kenteken zelf wordt vergeten) en opgeslagen in de database. Voor controle voert de parkeer controleur een kenteken in van een auto die geparkeerd staat. Ook die wordt meteen gehasht, en een match wordt gezocht in de database.

Kenners zullen terecht opmerken dat het aantal mogelijke kentekens niet heel groot is, en dat de Belastingdienst dus eenvoudig één keer een (behoorlijk grote) tabel kan maken waarin voor ieder kenteken de bijbehorende hash staat. Met die tabel kunnen ze alsnog de hash gebruiken om het kenteken terug te vinden. Maar dit kan een stuk lastiger gemaakt worden door per gemeente, per bedrijf, of per dag een willekeurige salt toe te voegen voordat de hash voor een kenteken wordt uitgerekend. Die salt is dan, net als de hash functie, gewoon publiek. Maar de belastingdienst moet dan voor iedere salt een nieuwe tabel uitrekenen. Dat is een stuk meer werk.

Al met al een mooi voorbeeld van het feit dat datgene wat je niet hebt, je ook niet kunt afgeven als daar om gevraagd wordt. Een goed beschermingsmiddel tegen een steeds nieuwsgieriger overheid. In dit voorbeeld betreft het kentekens. Maar hetzelfde idee kun je gebruiken om géén contact gegevens, géén telefoonnummers, géén emails etc. op te slaan.

Update 13-11-2014: Ik werd er terecht door een lezer op gewezen dat de situatie iets gecompliceerder ligt dan ik hier schets. Zo was ik vergeten expliciet te zeggen dat het van belang om voor de hash functie een Key Derivation Function te gebruiken. Dat is een functie die (door een bepaalde hash functie een groot aantal keren te herhalen) veel tijd kost om uit te rekenen. Op die manier is het online uitproberen van alle mogelijke kentekens (2^{24}) voor een bepaalde hash waarde niet langer realistisch.

Maar zelfs dan is het zo dat de database met hashes die de parkeer systemen bijhouden nuttige informatie bevat voor de Belastingdienst. Ze kan immers nog steeds deze database opvragen en haar eigen lijst van kentekens van lease rijders hier tegen controleren. De niet-lease-rijders blijven zo ehcter wel buiten schot. En dat is in ieder geval iets.