Wat houdt ons bezig

Nieuwe inzichten, nieuws, en tips aan onze top tech en zakelijke vernieuwers.

Persoonlijke informatie anonimiseren - telefoonnummers en BSN

afbleeding-avatar
Daniel Schuuring |september 13, 2019|Leestijd: 5 min

Bij informatieverzoeken in het kader van de Wet openbaarheid van bestuur (Wob) of verzoeken van internationale toezichthoudende instanties is het verplicht om persoonlijke en privacy gevoelige data (denk ook aan de AVG - GDPR) te beschermen. Het beschermen van deze informatie is een van de thema's voor de Wet open overheid (Woo) die in het najaar van 2019 in het parlement wordt besproken .

In navolging van mijn vorige blog over het anonimiseren van e-mail adressen, wil ik nu meer vertellen over het anonimiseren van Burgerservicenummers (BSN) en telefoonnummers.

Blogserie: Anonimiseren

BSN en telefoonnummers anonimiseren

Zoals eerder vermeld, heeft ZyLAB een krachtige zoekmachine en kun je een zoekopdracht maken waarbij de treffers van die zoekvraag automatisch worden geanonimiseerd.

Om BSN en telefoonnummers te anonimiseren, kun je gebruikmaken van de optie om te zoeken op vaste patronen. BSN nummers hebben bijvoorbeeld altijd 8 of 9 nummers achter elkaar staan. Je kunt dus gaan zoeken op alle reeksen met 8 en 9 cijfers.  Daarbij is het wel zo dat je ook de verkeerde vindt, de zogenaamde "false positives". Dit kun je voorkomen door het zoeken naar een nummer te combineren met een woord dat refereert aan iets van BSN. Je kunt dit vervolgens combineren met de mogelijkheid om op woorden te zoeken, die dicht bij elkaar staan.

Dus laten we als eerste een zoekvraag definiëren die aangeeft dat het om een BSN nummer gaat. Dat kan de volgende zoekvraag zijn:

1 of {sofi, sofi nummer~1, sofinummer~1, sofi nr, sofinr, burgerservicenummer~2, burger~1 service~1 nummer~1,  burgerservice~2 nummer~1,  burger~1 servicenummer~2,  burgerservice~2 nr, burg nummer~1, burg nr, bsn, bsn nummer~1, bsn nr,  bsnummer,  bsnnummer}

We zoeken nu naar allerlei mogelijke schrijfwijzen van het woord BSN. We zoeken ook met fuzzy om zo de OCR-fouten van gescande documenten te elimineren.

Dit gaan we nu combineren met het zoeken naar een numerieke waarde met het patroon van een BSN-nummer. BSN-nummers kennen in de afgelopen jaren, verschillende verschijningsvormen zoals 8 of 9 cijferige nummers (123456789, 23456789), en ook met puntjes tussen de cijfers (23.45.67.89, 234.567.89). Om dat te ondervangen, maken we de volgende zoekvraag.

1 of {[0-9]{9}, [1-9][0-9]{7}, [0-9]{2,5}.[0-9.]{2,5}.[0-9.]{2,5}}

We gaan nu beide zoekvragen combineren waarbij we zeggen dat de eerste zoekvraag met variaties van het woord BSN in een afstand van 3 woorden voor het nummer moet staan. Dan krijg je het volgende resultaat als zoekvraag:

(1 of {sofi, sofi nummer~1, sofinummer~1, sofi nr, sofinr, burgerservicenummer~2, burger~1 service~1 nummer~1, burgerservice~2 nummer~1, burger~1 servicenummer~2, burgerservice~2 nr, burg nummer~1, burg nr, bsn, bsn nummer~1, bsn nr, bsnummer, bsnnummer}) p/3 (1 of {[0-9]{9}, [1-9][0-9]{7}, [0-9]{2,5}.[0-9.]{2,5}.[0-9.]{2,5}})

Geen zorgen, je hoeft dit niet iedere keer te verzinnen. Je kunt nadat je een zoekvraag hebt gemaakt, deze gewoon hergebruiken (of je kopieert hem van deze pagina 😜). 

Van deze zoekvraag maken we weer een automatisch aflak-regel, zodat alle documenten met daarin een BSN nummer netjes worden geanonimiseerd.

RedactionBSN

 

Hetzelfde kunnen we doen voor telefoonnummers. Ook hiervoor hebben wij een zoekvraag gemaakt om vaste nummers en mobiele nummers te anonimiseren. Hieronder het voorbeeld 😀voor mobiele nummers waarbij we zoeken naar verschillende variaties van 06 nummers (0612345678, 06 12345678, (06)12345678, 06 12 34 56 78, etc.) 

((((6) or (06) or (0 p/1 6) or ([\+]{0,1}316) or ([\+]{0,1}31 p/1 6) or (00316) or (0031 p/1 6) or (0031) or ([\+]{0,1}31)) p/1 (([0-9]{8}) or ([0-9]{4} p/1 [0-9]{4}) or ([0-9]{3} p/1 [0-9]{5}) or ([0-9]{5} p/1 [0-9]{3}) or (6[0-9]{8}) or (6[0-9]{4} p/1 [0-9]{4}) or (6[0-9]{2} p/1 [0-9]{3} p/1 [0-9]{3}) or ([0-9]{3} p/1 [0-9]{3} p/1 [0-9]{2}) or ([0-9]{3} p/1 [0-9]{2} p/1 [0-9]{3}) or ([0-9]{2} p/1 [0-9]{3} p/1 [0-9]{3}) or ([0-9]{2} p/1 [0-9]{2} p/1 [0-9]{2} p/1 [0-9]{2}))) or ((06[0-9]{8}) or (06[0-9]{4} p/1 [0-9]{4}) or (06[0-9]{3} p/1 [0-9]{3} p/1 [0-9]{2}) or (06[0-9]{3} p/1 [0-9]{2} p/1 [0-9]{3}) or (06[0-9]{2} p/1 [0-9]{3} p/1 [0-9]{3}) or (06[0-9]{3} p/1 [0-9]{5}) or (06[0-9]{5} p/1 [0-9]{3}) or (06[0-9]{2} p/1 [0-9]{2} p/1 [0-9]{2} p/1 [0-9]{2}) or ([\+]{0,1}316[0-9]{8}) or ([\+]{0,1}316[0-9]{4} p/1 [0-9]{4}) or ([\+]{0,1}316[0-9]{3} p/1 [0-9]{3} p/1 [0-9]{2}) or ([\+]{0,1}316[0-9]{3} p/1 [0-9]{2} p/1 [0-9]{3}) or ([\+]{0,1}316[0-9]{2} p/1 [0-9]{3} p/1 [0-9]{3}) or ([\+]{0,1}316[0-9]{3} p/1 [0-9]{5}) or ([\+]{0,1}316[0-9]{5} p/1 [0-9]{3}) or ([\+]{0,1}316[0-9]{2} p/1 [0-9]{2} p/1 [0-9]{2} p/1 [0-9]{2}) or (00316[0-9]{8}) or (00316[0-9]{4} p/1 [0-9]{4}) or (00316[0-9]{3} p/1 [0-9]{5}) or (00316[0-9]{5} p/1 [0-9]{3}) or (00316[0-9]{3} p/1 [0-9]{3} p/1 [0-9]{2}) or (00316[0-9]{3} p/1 [0-9]{2} p/1 [0-9]{3}) or (00316[0-9]{2} p/1 [0-9]{3} p/1 [0-9]{3}) or (00316[0-9]{2} p/1 [0-9]{2} p/1 [0-9]{2} p/1 [0-9]{2})))

Het resultaat is hieronder weergegeven. We hebben het geanonimiseerde deel een transparant rode kleur gegeven. Uiteraard maken we deze anonimisering bij het publiceren definitief en maken we het gedeelte waar het telefoonnummer stond wit met een zwart randje (of iedere andere combinatie die gewenst is).

AutoRedactionMobiel

 

Meer weten over onder andere het afhandelen van Wob verzoeken, klik dan hier.

 

Daniel Schuuring
Daniel is Product Manager e-Discovery en Wob (Dutch FOIA), ▉▉▉▉▉ van het ZyLAB DevOps team.

Deel deze blog:

Ontvang de laatste ZyLAB updates