Ministerie van Privacy

Geheugenproblemen

0. Samenvatting

Kijk op tweedehands sites zoals marktplaats.nl of Vinted en je vindt genoeg mensen die hun oude geheugendragers verkopen: USB-sticks en harde schijven. Het heeft me altijd gefascineerd: hoe zeker weten die verkopers dat hun persoonlijke gegevens echt van het apparaat verdwenen zijn? Ik besloot het uit te zoeken. Ik kocht gebruikte USB-sticks en harde schijven en liet er herstelsoftware op los. Wat volgde was een avontuur dat me op plekken bracht die nog steeds buikpijn van krijg: foto’s van geldige paspoorten, opgeslagen wachtwoorden, medische dossiers, naaktfoto’s en bankgegevens.

Een woord vooraf.

Dit project draaide om het herstellen van gegevens van tweedehands USB-sticks en harde schijven, gekocht van particuliere verkopers en bedrijven. Sommige dingen die ik tegenkwam waren zeer gevoelig: foto’s van geldige paspoorten, medische informatie, bankgegevens, intieme beelden en inloggegevens. Ik wil vooraf duidelijk zijn over hoe hiermee is omgegaan, want dat is belangrijk:

Dit is geen handleiding om andermans gegevens te herstellen, en het is geen uitnodiging om afgedankte schijven te kopen en erin te gaan snuffelen. Het punt is juist het tegenovergestelde: met echte cijfers laten zien dat het verwijderen van je bestanden niet hetzelfde is als het verwijderen van je gegevens, zodat mensen die ene extra stap zetten voordat ze een opslagapparaat verkopen, weggeven of weggooien.

Ik ben geen computerexpert, geen jurist en geen privacyprofessional, gewoon iemand die nieuwsgierig werd, zich erin verdiepte en probeerde verantwoord om te gaan met wat er tevoorschijn kwam. Neem niets op deze site als gezaghebbend, ik heb gewoon mijn best gedaan. Het werk aan dit project begon rond februari 2024 en verliep met horten en stoten en ik heb geprobeerd het verhaal leesbaar en relevant te houden in plaats van uitputtend, er is dus veel weggelaten om dat zo te houden. Ik heb ook gebruikgemaakt van Google, ChatGPT en Claude om te helpen bij het schrijven en verbeteren van code en tools. Mijn doel was steeds om een helder en eerlijk beeld te geven van de stappen die ik heb genomen, op een manier die anderen kunnen volgen en, als ze dat willen, kunnen reproduceren.

1. Inleiding

Het begon met een YouTube-video over het herstellen van bestanden van een USB-stick. Ik probeerde het op een van mijn eigen sticks en schrok van hoe makkelijk het was. Rond diezelfde tijd zag ik mensen oude USB-sticks verkopen op marktplaats.nl en werd ik nieuwsgierig: hadden ze die echt gewist? Konden de bestanden nog worden hersteld? Ik kocht er een paar om erachter te komen, en dat was het begin van het konijnenhol. Ik eindigde met in totaal 80 USB-sticks en harde schijven en flink wat buikpijn.

De opzet van het project

Verderop ga ik dieper in op de details, maar hier is een overzicht van de stappen die ik heb genomen.

  1. De apparaten kopen. Ik kocht apparaten van mensen die ze verkochten op tweedehands sites zoals marktplaats.nl en Vinted.
  2. Een kopie maken van de apparaten. Een apparaat direct scannen kan lang duren, zeker bij USB-sticks, dus bleek het veel sneller om eerst een image van elk apparaat te maken en die image te scannen. Ik kocht een externe harde schijf om de images en geëxtraheerde bestanden op op te slaan.
  3. Informatie uit de image halen. Ik controleerde elke image op bestanden die niet waren verwijderd, en gebruikte herstelsoftware om te kijken of verwijderde bestanden alsnog konden worden teruggehaald. Alles wat de herstelsoftware vond, ging in een aparte map op de externe schijf.
  4. De geëxtraheerde informatie analyseren. Ik nam de herstelde bestanden door, documenteerde wat ik vond, en verwijderde daarna de bestanden.

Privacy

Nadat ik de eerste paar USB-sticks had gescand en er persoonlijke informatie op vond, besefte ik dat ik een echt plan nodig had om de privacy te beschermen van de mensen van wie deze gegevens waren. Dat heb ik op vijf manieren aangepakt: pseudonimisering, minimale gegevensverzameling, toegangscontrole, proportionele analyse en minimale bewaartermijn.

Pseudonimisering. Ik nam maatregelen om het moeilijker te maken om een USB-stick of harde schijf, en de gegevens erop, te koppelen aan de verkoper. Dit is belangrijk omdat hoe meer een stuk data te herleiden is naar een identificeerbare verkoper, hoe groter het privacyrisico. Dit deed ik op drie manieren:

Zo min mogelijk verzamelen. Een eenvoudige manier om privacy te beschermen is simpelweg minder gegevens te verzamelen. Daarom zocht ik alleen naar de informatie die het meest waarschijnlijk mijn eigenlijke vraag zou beantwoorden (of persoonlijke gegevens nog herstelbaar waren) en beperkte ik me tot officebestanden, mediabestanden en ZIP-archieven.

Toegangscontrole. Ik controleerde ook wie toegang had tot de gegevens die ik verzamelde:

Proportionele analyse. Herstelde bestanden werden alleen geanalyseerd voor zover nodig was om de onderzoeksvraag te beantwoorden. Bestanden werden precies ver genoeg bekeken om te controleren of ze corrupt waren en om in te schatten of ze persoonlijke informatie bevatten. Als bijvoorbeeld een gescande afbeelding het briefpapier van een bank toonde, ging ik ervan uit dat die persoonlijke informatie bevatte, zonder de brief zelf te lezen. Waar documenten inloggegevens bevatten (gebruikersnamen en wachtwoorden), heb ik nooit getest of ze nog werkten.

Minimale bewaartermijn. Bij elke stap verwijderde ik de gegevens van de stap ervoor: zodra een USB-stick was ge-imaged, werd de stick zelf gewist; zodra een image was geanalyseerd, werd de image verwijderd; enzovoort. Dit ondersteunt zowel toegangscontrole (minder gegevens om te beschermen) als pseudonimisering (moeilijker om gegevens terug te herleiden naar een verkoper). Nadat de geëxtraheerde informatie was geanalyseerd en gedocumenteerd, heb ik ook de externe harde schijf gewist die de images en herstelde bestanden had bevat.

2. De geheugendragers kopen

Ik kocht alle geheugendragers via marktplaats en vinted. Ik heb het ook geprobeerd bij kringloopwinkels, maar heb er daar nooit gevonden. Ik was niet kieskeurig: als een geheugendrager gebruikt oogde en de prijs redelijk was, stuurde ik de verkoper een bericht. Soms verkochten ze maar één geheugendrager, soms meerdere. USB-sticks kwamen alleen van particuliere verkopers; harde schijven zowel van particuliere verkopers als van bedrijven. Ik was van plan geweest een zorgvuldig overzicht bij te houden van wat ik betaalde, de exacte omvang, enzovoort. Maar dat is gewoon niet wie ik ben, zeker niet over een project dat tweeënhalf jaar besloeg. Dus hier is de informatie die ik wel heb over de schijven:

In de maanden die volgden bleven er geheugendragers binnenkomen via de post. Ik maakte alle pakketten tegelijk open en gooide ze in een plastic bak, om ze door elkaar te mixen.

3. Een kopie maken van de schijven

Ik begon met het programma Foremost rechtstreeks op elke USB-stick los te laten, één voor één. Scannen op deze manier duurde lang, zeker bij oudere sticks. Dus schakelde ik over op het eerst maken van een image van elke geheugendrager op een externe harde schijf en het scannen van die image, wat de zaak flink versnelde.

Eerst gebruikte ik dd om de kopie te maken, en hashte ik zowel de image als de originele geheugendrager om te bevestigen dat ze precies overeenkwamen. Het nadeel was dat het hashen van een geheugendrager net zo lang duurde als het kopiëren ervan. Via dcfldd kwam ik ddrescue tegen, dat betere strategieën heeft voor het lezen van beschadigde geheugendrager. Op dat punt verschoof mijn focus van forensisch dubbelchecken naar simpelweg zoveel mogelijk data van elke geheugendrager halen. Ik gebruikte het volgende commando:

ddrescue -S "$STICK" "$IMAGE" "${GEVONDEN}/mapfile.log"

4. Informatie uit de kopie halen

Het doel hier was om te zien hoe goed elke geheugendrager daadwerkelijk was gewist. Eerst controleerde ik of de image nog gewone, niet-verwijderde bestanden bevatte door het .dd-bestand te mounten en erin te kijken.

Om verwijderde bestanden te herstellen, probeerde ik drie tools: Foremost, PhotoRec en Scalpel. Scalpel kreeg ik nooit goed aan de praat: veel te veel valse positieven; de gecombineerde omvang van de bestanden die het “herstelde” overschreed vaak de omvang van de image zelf. Foremost beviel me meteen: snel en overzichtelijk. Maar toen ik PhotoRec probeerde, vond het consequent meer bestanden dan Foremost, dus stapte ik daarop over.

Hoe werken herstelprogramma’s eigenlijk? Programma’s zoals PhotoRec scannen een geheugendrager of image byte voor byte, op zoek naar de signatuur die het begin van een bekend bestandstype markeert. Een PDF begint bijvoorbeeld altijd met “%PDF”, en een ZIP-bestand met “PK”. Zodra een beginpunt is gevonden, zoekt het programma naar het bijbehorende einde en slaat alles daartussen op als bestand. Dit werkt, maar niet altijd: als een bestand gefragmenteerd over de geheugendrager staat, of gedeeltelijk overschreven is, is het resultaat een corrupt bestand dat niet opent. Er zijn ook valse positieven, waarbij een willekeurige reeks bytes toevallig lijkt op een bestandsheader.

Bestanden herstellen (controleren op bestaande bestanden, verwijderde bestanden extraheren, resultaten loggen) kost veel handwerk. Ik deed het meeste ervan terwijl ik andere dingen deed, laptop en een bak ongescande schijven naast me. Om tijd te besparen en de methode voor elke geheugendrager consistent te houden, schreef ik een script: stop de geheugendrager erin, voer een uniek ID en het pad van de geheugendrager in, en de rest deed het script zelf. Dit is het kerncommando dat het uitvoerde:

photorec /log /d "$PHOTOREC_OUT" /cmd "$IMAGE" fileopt,everything,disable,zip,jpg,png,pdf,doc,kdb,kdbx,rlv,key,pfx,txt,mpg,mp3,search

Dit doet het volgende:

Dit leverde elke geheugendrager zijn eigen map op: logbestanden, plus een set herstelde bestanden. Hier zie je hoe dat er in de console uitzag, ik heb “->” en uitleg toegevoegd:

$ tree 14_20260422_084102
14_20260422_084102
├── 14_20260422_084102.log -> mijn logbestand
├── mapfile.log -> logbestand van PhotoRec
├── mapfile.log.bak -> PhotoRec maakt een back-up van zijn logbestand
├── photorec -> Lege map, niet zeker waarom
└── photorec.1 -> Map met geëxtraheerde bestanden
  ├── f0038624.docx -> geëxtraheerd bestand
  ├── f0038704.pptx -> geëxtraheerd bestand
  ├── f0038768.pdf -> geëxtraheerd bestand
  ├── f0038784.pdf -> geëxtraheerd bestand
  └── report.xml -> rapport dat PhotoRec maakte

3 directories, 8 files

5. De geëxtraheerde informatie analyseren

Hier volgt bij hoeveel apparaten ik informatie kon extraheren, welke bestanden ik vond en wat die bevatten.

De geheugendragers

10 apparaten bevatten nog steeds bestanden die niet waren verwijderd. Van de 64 USB-sticks die ik kon imagen en scannen, heb ik van 54 ervan bestanden hersteld, dus 84% had herstelbare bestanden erop. Van de 16 harde schijven kon ik bij 7 ervan bestanden extraheren, oftewel 44%. Gemiddeld bevatte 76% van de geheugendragers die ik probeerde bestanden die ik kon extraheren.

De gevonden bestandstypen

Een fijne eigenschap van Foremost is dat het een samenvatting geeft van wat het heeft gevonden. Helaas was ik al overgestapt op PhotoRec, dat dit niet standaard doet. Dus toen de extractie klaar was, draaide ik het volgende commando op de map met alle geëxtraheerde bestanden, om een overzicht van bestandstypen te krijgen:

find . -type f | sed -n 's/.*\.\([a-zA-Z0-9]*\)$/\1/p' | sort | tr '[:upper:]' '[:lower:]' | sort | uniq -c | sort -rn

Dit is wat ik vond:

Hoeveel  bestandstype
 337084   txt
 301979   jpg
 72563   png
 18102   doc
 14459   mpg
 14111   mp3
  9605   h
  6544   java
  6416   html
  4018   docx
  3722   epub
  2928   pdf
  2647   ini
  2094   zip
  1354   xls
  1017   jsp
  997   py
  923   f
  627   c
  590   xlsx
  567   vcf
  539   jar
  450   csv
  209   ppt
  159   log
  150   pptx
  141   db
  118   bat
   78   xml
   64   ods
   55   sxw
   50   bak
   35   odt
   29   inf
   20   vsd
   16   json
   13   msg
   13   ai
   12   xlr
   11   pfx
   7   php
   6   kdb
   3   xpi
   3   pub
   3   asp
   2   kmz
   1   tif
   1   tex
   1   pl
   1   ldif
   1   go
   1   dat
   1   albm

Ik was er vrij zeker van dat ik PhotoRec had beperkt tot een specifieke lijst van bestandstypen, dus ik weet niet zeker hoe de andere typen in de resultaten terecht zijn gekomen.

De inhoud

Niet elk hersteld bestand was daadwerkelijk bruikbaar. Sommige waren maar gedeeltelijk aanwezig, of corrupt, wat een inherente beperking is van deze extractiemethode. Hoeveel er corrupt waren, verschilde sterk per bestandstype. Mijn methode om corruptie vast te stellen was simpel: proberen het bestand te openen. Ik merkte ook dat bestanden met namen die een mens er plausibel aan zou hebben gegeven (bijvoorbeeld dagboek.docx) veel minder vaak corrupt bleken.

Ik had oorspronkelijk gepland om de exacte corruptiepercentages per bestandsextensie bij te houden. Het ding met een project als dit is dat je dingen over jezelf leert, en wat ik leerde is dat ik niet dat soort persoon ben. Dus schattingen zullen moeten volstaan. De meeste JPG’s en PNG’s openden prima; van Word-documenten en ZIP-bestanden was slechts zo’n 10-15% toegankelijk. Tekstbestanden waren pure chaos, variërend van delen van websites, XML, logbestanden tot zelfs wat eruitzag als hexadecimale informatie. Van één harde schijf haalde PhotoRec 196030 van dit soort tekstbestanden. De ruwe hoeveelheid herstelde bestanden vertaalt zich dus niet 1-op-1 naar bruikbare data. Ook de moeite waard om te noemen: een deel van de herstelde afbeeldingen waren thumbnails, dus het aantal werkelijk unieke afbeeldingen ligt lager dan het ruwe bestandsaantal doet vermoeden.

Van de bestanden die ik kon openen, bevatte maar een deel persoonlijke informatie. Als een geheugendrager maar een handjevol bestanden opleverde, bekeek ik ze allemaal; als het er veel waren, opende ik willekeurig bestanden totdat ik het gevoel had een representatief beeld te hebben. Ik had aanvankelijk een schaal opgezet voor hoe gevoelig de inhoud was (niet persoonlijk, persoonlijk, gevoelige persoonsgegevens (AVG artikel 9), en inloggegevens), maar in de praktijk werkte ik gewoon de bestanden door en noteerde ik een korte omschrijving zodra er iets nieuws opdook.

Ik heb een samenvatting gemaakt van wat ik heb gevonden. Die is niet uitputtend en beweert niet compleet te zijn, maar geeft een goed beeld van het soort informatie dat naar boven komt.

Mogelijke gevolgen

Om dit project meer te maken dan een abstract statistiekje, wilde ik de resultaten koppelen aan alledaags risico. Een paar scenario’s die ik bedacht:

Er zijn nog veel meer scenario’s mogelijk dan deze lijst.

6. Conclusies

Dit project had als doel één vraag te beantwoorden: hebben mensen die hun USB-sticks of harde schijven verkopen hun persoonlijke gegevens daadwerkelijk verwijderd? Het antwoord is nee. 76% van de geheugendragers die ik onderzocht bevatte nog herstelbare informatie, sommige zeer persoonlijk. Op 10 geheugendragers stonden zelfs nog bestanden die niet verwrijderd waren.

Mijn project laat niet alleen zien dat er gegevens achterblijven, het laat zien dat die gegevens echte schade kunnen veroorzaken. Uit wat eerste verkenning heb ik het idee dat een USB-stick goed wissen onmogelijk is, vanwege de manier waarop flashgeheugen intern omgaat met wear-levelling (provisioning). Een harde schijf wissen is mogelijk, maar alleen betrouwbaar op firmwareniveau, en lastig achteraf te verifiëren.

Oplossingen

Voorlopig zie ik twee echte opties: zorg dat je geheugendragers nooit je huis verlaten of versleutel ze. De eerste optie is niet ingewikkeld: verkoop of leen de geheugendrager niet uit. Als je de geheugendrager niet meer nodig hebt, vernietig het. Voor USB-sticks zou het simpelweg afbreken van de connector genoeg moeten zijn om te voorkomen dat iemand met alleen thuisapparatuur er gegevens uit kan halen. Voor harde schijven: verwijder de printplaat en gooi die apart weg. Het is een kleine prijs om te betalen: USB-sticks zijn tegenwoordig weinig waard, en tenzij je computerspecialist bent, is de harde schijf die je verkoopt waarschijnlijk oud en klein genoeg dat hij toch niet veel had opgebracht. Ben je wél computerspecialist (en verkoop je mogelijk grotere geheugendragers), dan zou je absoluut voor de tweede optie moeten kiezen.

De beste optie is versleuteling gebruiken. Versleutel je geheugendragers vanaf de dag dat je ze in gebruik neemt, en je hoeft niets meer te wissen voordat je ze verkoopt. Zonder het wachtwoord kan niemand lezen wat erop staat. En als bonus: mocht je apparaat ooit kwijtraken of gestolen worden, dan zijn je gegevens beschermd. Vergeet alleen niet om versleuteling aan te zetten zodra je de geheugendrager krijgt, voordat je er iets op opslaat.

Terugblik

Dit project liep over een periode van ongeveer tweeënhalf jaar. Ik werkte eraan wanneer ik er tijd en zin in had. Ik begon met experimenteren op mijn eigen oude apparaten, en het herstellen van bestanden van jaren geleden gaf me een echte kick, het herbeleven van oude herinneringen. Maar het herstellen van bestanden van gekochte geheugendragers voelde anders. Elke keer als ik iets vond, voelde ik me verdrietig. Zoveel mensen, kwetsbaar zonder het zelf te beseffen. Het gevoel dat mensen beschermd zouden moeten worden, hield me op de been en overtuigde me ervan de wereld erover te vertellen.

Toekomstig onderzoek

Niets is ooit echt af. Dit zijn vragen waar ik onderweg tegenaan liep, maar waarvoor ik nu de tijd, het geld, de kennis of de motivatie miste om ze verder uit te zoeken:

Bedankt dat je het tot het einde hebt volgehouden. Heb je gedachten hierover? Ik heb nog veel meer informatie, is er iets wat je zou willen weten? Stuur me een berichtje: hello@ministerievanprivacy.nl