Menu

Synthetische data versus geanonimiseerde data: wat het verschil betekent

Synthetische data versus geanonimiseerde data is geen kwestie van woordkeuze: de een is verzonnen, de ander is echte data die is getransformeerd. Het onderscheid bepaalt wat u ermee mag.

Gepubliceerd

  • testgegevens
  • identiteit
  • privacy

Synthetische data versus geanonimiseerde data klinkt als een keuze tussen twee varianten van hetzelfde, en het zo behandelen veroorzaakt echte problemen. Een van de twee is nooit van iemand geweest; de ander was van iemand en is verwerkt om die persoon te verwijderen. Het verschil bepaalt wie de data mag zien, hoe lang die mag worden bewaard, en of die überhaupt buiten de organisatie mag worden gedeeld.

Dit artikel zet de vier benaderingen uiteen die mensen feitelijk voor testdata gebruiken, wat elk ervan wel en niet garandeert, en waarom het combineren van velden het detail is dat de meeste pogingen tot verwijdering stilletjes tenietdoet.

De vier benaderingen naast elkaar

De meeste testdatasets worden door een van vier methoden geproduceerd, en ze worden vaak met hetzelfde woord beschreven.

Benadering Hoe die wordt gemaakt Wat die garandeert
Synthetisch Waarden worden gegenereerd uit regels en willekeur Niets in de set heeft ooit een echt persoon beschreven
Geanonimiseerd Echte records worden verwerkt zodat individuen niet kunnen worden geïdentificeerd De oorspronkelijke data bestond en de transformatie moet worden bewezen
Gepseudonimiseerd Directe identificatoren worden vervangen door codes, met een bewaarde mapping De data is nog steeds via de mapping aan mensen te koppelen
Gemaskeerd Gevoelige tekens worden vervangen voor weergave De onderliggende waarde bestaat meestal nog

Alleen de eerste begint bij niets. De andere drie beginnen allemaal bij echte records, wat de reden is waarom elk ervan een verplichting erft die de eerste nooit had.

Waarom maakt het verwijderen van namen een dataset niet anoniem?

Omdat een naam slechts een van vele manieren is om iemand aan te wijzen, en meestal niet de betrouwbaarste. Een tabel waarin de naamkolom is verwijderd, vertelt u nog steeds dat een vrouw van in de dertig bij een bepaalde kleine werkgever in een bepaald klein dorp werkt, en in die bevolking is er misschien precies één zo iemand. Er is niets geanonimiseerd; de identificator is simpelweg vervangen door een reeks identificatoren die iets meer moeite kosten.

De statistische versie van hetzelfde probleem is dat elke dataset quasi-identificatoren draagt — waarden die op zichzelf niet uniek zijn maar in combinatie uniek worden. Geboortedatum, postcode, geslacht en beroep zijn de klassieke set, en de rekenkunde is genadeloos: een combinatie die over een heel land breed lijkt, kan binnen een stad uniek zijn, en een testdatabase is meestal een doorsnede van één markt in plaats van een steekproef uit de wereld.

Heridentificatie is daarom niet exotisch. Het is de gewone consequentie van het combineren van een paar kolommen met openbaar beschikbare informatie, en het wordt makkelijker met elke extra dataset die beschikbaar komt. Dat is waarom een eerlijke anonimiseringsclaim zich moet richten op wat overblijft, niet slechts op wat is verwijderd.

Wat geldt eigenlijk als anoniem?

Data is anoniem wanneer de individuen erin door niemand kunnen worden geïdentificeerd, met welk redelijkerwijs te gebruiken middel dan ook — wat een sterkere voorwaarde is dan de meeste teams aannemen, omdat het informatie elders omvat. Praktisch betekent dat dat een juiste anonimiseringsclaim rust op een gedocumenteerde beoordeling: welke velden zijn verwijderd of gegeneraliseerd, hoe de resulterende bevolking eruitziet, wat in combinatie overblijft, en waarom identificatie redelijkerwijs niet mogelijk is.

Twee consequenties zijn het serieus nemen waard. Ten eerste is de beoordeling specifiek voor een dataset en een context, dus een aanpak die voor de ene release werkt, werkt misschien niet voor de volgende als er nieuwe kolommen worden toegevoegd. Ten tweede is de beoordeling echt moeilijk, omdat het bewijzen van een negatieve bewering over identificatie veel meer werk is dan aantonen dat een tekenreekskolom is verwijderd.

Waar de moeilijkheid hoog is, is het eerlijke antwoord meestal om de data niet langer anoniem te noemen. Gepseudonimiseerd, beperkt, of alleen-intern zijn allemaal verdedigbare beschrijvingen; anoniem is een claim die moet worden verdiend.

Welke benadering moet een testomgeving gebruiken?

Synthetische data, in de grote meerderheid van de gevallen, omdat die de verplichting wegneemt in plaats van beheert. Een dataset die uit regels en een vaste invoer is gegenereerd, bevat helemaal geen individuen, dus er is geen bewaarklok, geen toestemmingsvraag, geen verwijderverzoek om te voldoen, en geen datalek om te melden als die uitlekt. Die kan aan een testrepository worden toegevoegd, tussen teams worden gemaild en in een ticket worden geplakt zonder er nog bij na te denken van wie de informatie is.

Het omzeilt ook een praktisch probleem dat vermomde data blijft genereren: de mapping. Gepseudonimiseerde data heeft een mapping nodig die ergens wordt bewaard, en die mapping is zelf een gevoelige dataset die moet worden beschermd, geroteerd en geauditeerd. Teams besteden routineus meer inspanning aan het beschermen van de mapping dan ze aan het genereren van de data zouden hebben besteed.

Wat synthetische records niet doen, is automatisch elke eigenschap van echte data reproduceren. Als een test afhangt van de verdeling — de frequentie van een zeldzaam randgeval, de correlatie tussen twee velden, de vorm van een lange staart — moet die bewust worden gemodelleerd in plaats van geërfd. De eisen op het gebied van veldconsistentie zijn een goed voorbeeld: een generator moet worden gebouwd om gerelateerde velden met elkaar in overeenstemming te houden, want willekeurigheid alleen zal dat niet doen.

Hoe houdt u een gegenereerde dataset reproduceerbaar?

Door die een functie te maken van een invoer die u beheert in plaats van van de klok of van een willekeurige bron die u niet kunt herhalen. De gebruikelijke regeling is een zaadje: een korte, door mensen te onthouden waarde die elke beslissing van de generator aanstuurt, zodat hetzelfde zaadje op elke machine en op elke dag dezelfde records oplevert.

Reproduceerbaarheid doet er om drie redenen toe die onder tijdsdruk makkelijk te vergeten zijn. Een geautomatiseerde test kan een vaste steekproef vasthouden en daartegen asserten, zodat een fout diagnosticeerbaar is in plaats van een muntworp. Een bugmelding kan het exacte record noemen dat hij zag, zodat iedereen het op zijn eigen machine kan herbouwen. En een review kan een demonstratie exact reproduceren, wat belangrijk is wanneer een dataset wordt aangeboden als bewijs dat er geen echte records bij betrokken zijn.

Gegenereerde records van de generator voor identiteits- en testgegevens werken zo, en de waarden volgen de echte opmaakconventies van elk land terwijl ze volledig verzonnen blijven. Het zijn synthetische records uitsluitend bedoeld voor softwaretesten; ze beschrijven geen echt persoon, en ze kunnen niet worden gebruikt om er een te vertegenwoordigen of om enige echte verificatie te doorstaan.

Hoe bewijst u dat een testdataset geen echte records bevat?

Door te kunnen beschrijven waar elke waarde vandaan kwam. Dat is een herkomstvraag, en die wordt beantwoord op het moment van genereren in plaats van op het moment van audit. Een dataset die is geproduceerd door een generator met een bekend zaadje te draaien, uit een generator die geen productiebron leest, heeft een antwoord van één regel. Een dataset die is geproduceerd door een productie-export te transformeren, heeft een antwoord dat afhangt van de correctheid van de transformatie, en de last om dat te bewijzen verdwijnt nooit helemaal.

Twee gewoonten maken de herkomst duurzaam. Label de data zelf — een kolom of een kop die rijen als synthetisch markeert — zodat een kopie die in een ticket, een spreadsheet of een schermafbeelding terechtkomt, nog steeds aankondigt wat ze is. En houd de generatiestap in versiebeheer, zodat het opnieuw produceren van dezelfde dataset een commando is in plaats van een mondelinge overlevering.

Er is een laatste controle die het toepassen waard is op elke dataset die beweert veilig te zijn: probeer één persoon erin te identificeren. Als de poging ook maar één keer slaagt, was de claim overdreven, en het juiste antwoord is een smallere claim in plaats van een luidere.

Voor ontwikkelaars: zaadjes, verdelingen en eerlijke claims

Ontwerp de generator zo dat elke willekeurige beslissing vanuit het zaadje door één gedocumenteerd pad stroomt. Twee generators die beide een zaadje accepteren maar willekeur in een andere volgorde verbruiken, zullen het oneens zijn, en het meningsverschil zal lijken op een bug in de test in plaats van in de generator.

Modelleer de verdeling bewust. Echte data heeft van alles ongelijke hoeveelheden, en een uniforme trekking levert een dataset op die te netjes is: geen zeldzame namen, geen ongewone leeftijden, geen afwezige velden. Als de test een lange staart nodig heeft, moet de generator er bewust een produceren, en dat is een specificatievraag over de data in plaats van een eigenschap die vanzelf ontstaat.

Houd de claim over de data smal en waar. Synthetisch en gegenereerd voor testen is een claim die kan worden geverifieerd door de generatiestap te lezen. Dat is voor een auditor veel meer waard dan een bredere claim over anonimiteit die niemand kan reproduceren. En draag de beperking over in de fixture-notities: op deze manier geproduceerde records bestaan om software te beproeven, niet om iemand na te doen of om ergens als een echte identiteit te worden aangeboden.

Volgende stappen

Zoek één dataset in uw testomgevingen waarvan niemand de herkomst kan noemen, en traceer die; dat antwoord is meestal interessanter dan de dataset zelf. Vervang die dan door een gegenereerde batch en noteer het zaadje naast de data, zodat iedereen die kan herbouwen. Als u de alternatieven afweegt, behandelt het artikel over privacyregels voor testgegevens wat elke keuze u daarna verplicht te doen.

Verder lezen

Handleidingen over Identiteits- en testdatagenerator