Architectuur en bewijs
Deze pagina beschrijft hoe zeropii Maskeer werkt, wat er is gemeten en wat de tool niet doet. Bedoeld voor wie moet beoordelen of dit in de organisatie past, en voor wie het gewoon wil narekenen.
Waar je document heen gaat
Er staat geen stap 4. De verwerking gebeurt in de browser die je nu open hebt; het bestand gaat niet naar zeropii of naar iemand anders. De pagina blijft werken als je je internet uitzet nadat hij geladen is.
Zelf controleren: open de netwerk-tab van je browser en maskeer een document.
Er hoort geen enkel verzoek te verschijnen. De pagina stuurt bovendien een instructie mee
(connect-src 'none') die de browser verbiedt om überhaupt verbinding te maken.
Dat geldt ook als er per ongeluk code zou staan die het toch probeert.
Deterministisch, geen AI-model
Er komt geen taalmodel aan te pas. Herkenning gebeurt met vaste patronen, en waar het kan met een wiskundige controle:
| Gegeven | Hoe herkend | Controle |
|---|---|---|
| BSN | negen cijfers | elfproef |
| IBAN | Nederlands rekeningnummer | mod-97-controlegetal |
| E-mailadres | patroon | geen |
| Telefoonnummer | Nederlands mobiel (06 / +316) | geen |
| Postcode | vier cijfers + twee letters | geen |
| KvK-nummer | acht cijfers | geen |
Dat heeft een praktisch gevolg: hetzelfde document geeft altijd hetzelfde resultaat. Geen model dat vandaag iets vindt en morgen niet. De keerzijde staat verderop bij de beperkingen. Een patroon zonder controlegetal kan zich vergissen, en een naam herkent een patroon niet.
Gegevens die onzichtbaar door het bestand verspreid staan
Word verspreidt lopende tekst vaak over losse stukjes in het bestand, op plekken die je op je scherm niet ziet. Een BSN dat er voor jou uitziet als één getal, kan intern in stukken verdeeld staan.
Eenvoudige maskeertools lopen het bestand stukje voor stukje af, vinden zo'n opgeknipt gegeven niet, en melden "niets gevonden". zeropii Maskeer vindt die gegevens wél, ook wanneer ze over meerdere stukjes verdeeld staan. De rest van het document blijft ongemoeid. Hoe betrouwbaar dat is, staat verderop bij Wat er gemeten is.
Welke onderdelen worden gelezen
Niet een vaste lijst met plekken waarvan wij dachten dat er tekst staat. De tool loopt alle onderdelen van het bestand langs, en de inhoud bepaalt hoe elk onderdeel wordt behandeld. Onderdelen die niet gelezen kunnen worden (een afbeelding bijvoorbeeld) worden niet stilzwijgend overgeslagen maar gemeld, in het scherm én in het rapport.
| Wordt gelezen en gemaskeerd | Wordt niet gelezen |
|---|---|
|
|
Wat er gemeten is
Onderstaande cijfers komen uit de tests die bij elke wijziging draaien. Ze staan hier zoals ze zijn, niet afgerond naar iets mooiers.
| Meting | Uitkomst | Waarop |
|---|---|---|
| Versnipperde gegevens teruggevonden | 14 van 14 | 12 documenten met gegevens opgeknipt over meerdere stukjes, ook midden in een woord |
| Gegevens buiten de hoofdtekst gevonden en weg | 14 van 14 | opmerkingen, verwijderde wijzigingen, documenteigenschappen, e-maillinks, zaaksysteem-gegevens |
| Document blijft heel | 9 van 9 | zaaknummers, grafiekwaarden, bladwijzers en stijlen mogen niet als gegeven worden aangezien |
| Verzoeken naar internet tijdens verwerking | 0 | gemeten in een echte browser op de live pagina |
Eerlijk over wat dit is: de testdocumenten zijn door ons gemaakt, met verzonnen gegevens. Dat betekent dat ze bewijzen dat de tool vindt wat wij erin hebben gestopt. Niet dat hij alles vindt wat in de praktijk voorkomt. Precies die beperking heeft ons eerder pijn gedaan: een testverzameling die dezelfde blinde vlek had als de code liet gegevens in opmerkingen ongemoeid, terwijl alle tests groen stonden. Daarom staan er nu ook tests die zijn geschreven door mensen die de code niet hadden gebouwd, met als opdracht hem te breken. Er is geen meting op een echte, onafhankelijke Nederlandse testverzameling; als we die doen, komt hij hier te staan.
Wat er mis kan gaan
- Een naam blijft staan. De tool herkent geen namen. Staat er "Jan de Vries" in je document, dan staat dat er daarna nog steeds.
-
Een adres blijft half staan. Let hier op. Van "Privacylaan 8, 5678 ZZ Testdorp"
wordt alleen de postcode gemaskeerd. Er staat daarna "Privacylaan 8,
[POSTCODE]Testdorp", en dat is nog steeds een adres. Juist omdat er een label in de regel verschijnt, ziet die regel er afgehandeld uit terwijl hij dat niet is. Straatnaam en woonplaats hebben geen vaste vorm en geen controlegetal, dus ze worden nu niet gezocht. - Een scan blijft ongemoeid. Is je document een foto van een brief, dan wordt er geen letter gelezen. Je krijgt dan wel de melding dat niet alles gelezen kon worden.
-
Een nummer dat geen KvK-nummer is, wordt toch gemaskeerd. Acht losse cijfers
zijn niet te onderscheiden van een KvK-nummer. Een dossiernummer in een zin kan dus
[KVK]worden. In veldcodes en verwijzingen gebeurt dat niet. Daar zoeken we alleen naar gegevens met een controlegetal, juist om het document niet te beschadigen. - Een postcode-achtig patroon. Vier cijfers gevolgd door twee hoofdletters wordt als postcode gezien, ook als het iets anders is.
- Maskeren is geen anonimiseren. Als iemand op grond van de resterende tekst alsnog te herleiden is, is het document niet anoniem. Deze tool haalt gegevens weg; of het resultaat in jouw situatie volstaat, blijft een beoordeling die jij maakt.
Bekijk een document dus altijd zelf voordat je het deelt. Automatische maskering is een hulpmiddel, geen garantie.
Het rapport
Bij elk document kun je een rapport downloaden. Daar staat in wat er is gevonden per soort, hoe vaak, welke onderdelen zijn gelezen en welke niet, plus een controlegetal (SHA-256) van het bestand vóór en na. Wat er niet in staat: de gegevens zelf. Geen BSN, geen adres, ook niet versleuteld of gehasht. Een BSN is negen cijfers, dus een hash daarvan is met een gewone computer binnen seconden terug te rekenen. Dat zou het rapport zelf tot een lek maken.
Versie
Deze pagina beschrijft versie 0.2.0. Het versienummer staat ook in elk rapport dat je downloadt, zodat je later kunt nagaan met welke versie een document is behandeld.
Iets gevonden?
Denk je dat er een gegeven doorheen glipt, of dat er iets anders niet klopt: mail [email protected]. Meldingen over beveiliging staan beschreven in security.txt. Stuur geen echte persoonsgegevens mee. Een beschrijving of een document met verzonnen gegevens is genoeg.