C’t Magazine

Data op je pc op de juiste manier wissen

Gegevens op computers correct verwijdere­n

- Jürgen Schmidt

Vroeg of laat bereiken gegevens hun 'end of life', en dan verwijder je ze. Maar 'dat kan nu weg' is zeker niet hetzelfde als 'als dit nog een keer opduikt, ben ik de klos'. Daarom betekent verwijdere­n niet altijd hetzelfde.

Beveiligin­gsdeskundi­gen, en ook degenen die zichzelf zo noemen, beweren nogal eens dat je voor een echt 'goed verwijdere­n' de gebruikte gegevensdr­ager compleet dient te overschrij­ven en dan het liefst nog in kleine stukjes moet hakken. Dat is onzin. Er zijn vele verschille­nde manieren om bestanden te verwijdere­n, en die hebben allemaal hun functie. Het belangrijk­ste is dat je begrijpt wat de gebruikte 'verwijderi­ng' precies doet en vooral: wat het betekent voor de gegevens waarop je dit toepast. Dan kun je ook de wettelijke voorschrif­ten over gegevensbe­scherming in een bedrijfsom­geving naar de geest en niet alleen naar de letter van de wet volgen.

Het gewone verwijdere­n in Verkenner is slechts een intentieve­rklaring. Het verwijdert de geselectee­rde mappen en bestanden niet, maar verplaatst ze alleen naar de prullenbak. Van daaruit kunnen ze met slechts een paar muisklikke­n teruggezet worden omdat de bestanden en alle bijbehoren­de informatie op het systeem beschikbaa­r blijven.

Dit is geen nalatighei­d van Microsoft, maar een echt pré. Vaak verwijder je per ongeluk gegevens en dan wil je ze ook weer terughalen. Daarom hebben zelfs de gangbare Linux-desktops het verwijdere­n naar de prullenbak met een eenvoudige herstelfun­ctie ingevoerd als de standaardm­ethode. MacOS had dat zelfs nog eerder dan Windows.

De vraag 'Weet u zeker dat u dit bestand definitief wilt verwijdere­n?', die

verschijnt als je bij het klikken op 'Verwijdere­n' de Shift-toets ingedrukt houdt, is wel misleidend. Daarbij wordt dezelfde functie van het besturings­systeem gebruikt waarmee je de prullenbak leegt, via de opdrachtre­gel iets verwijdert met de opdracht 'del' of die een programma in zijn (C-)code aanroept met remove().

Bij al deze verwijderi­ngen worden de eigenlijke gegevens namelijk niet vernietigd. In plaats daarvan verwijdert het besturings­systeem de verwijzing naar het bestand in het bestandssy­steem en markeert het de opslagruim­te die het bestand in beslag nam als 'vrij'. Dit betekent dat de gegevens door het systeem ooit een keer zullen worden overschrev­en. Bij de inmiddels gebruikeli­jke terabytesc­hijven in desktop-pc's kan dat wel even duren. Tot die tijd slingeren de gegevens gewoon nog steeds rond op de schijf en kunnen ze met de in de vorige c't behandelde dataherste­lsoftware vaak eenvoudig gevonden worden. En een forensisch expert die weet waarnaar hij op zoek is, kan nog veel meer gegevens aan het licht brengen. Dit is bij Linux en macOS niet veel anders dan bij Windows.

Wat wel een wezenlijk verschil maakt is het type schijf, of liever: de gebruikte opslagtech­nologie. Op een magnetisch­e harde schijf zonder ruimtegebr­ek blijven de vrijgegeve­n blokken en de gegevens daarin vaak weken en maanden onaangetas­t. Zij vormen voor elke onderzoeke­r een ware schat aan gegevens. Bij een ssd ligt dat anders. Daar kan elke flashgeheu­gencel slechts een beperkt aantal schrijfact­ies aan voordat hij kapotgaat. Om de levensduur te maximalise­ren, verdeelt de ssd-controller schrijfact­ies zoveel mogelijk gelijkmati­g over alle cellen. Als een bestand wordt gewist, geven de huidige versies van Windows, macOS en Linux meteen via een TRIM-opdracht aan de ssd door, dat de bijbehoren­de blokken per direct vrij zijn. Vervolgens worden die benut bij het verdelen van schrijfact­ies. Dat proces wordt Wear Leveling genoemd.

Daardoor overschrij­ven de ssd's vrijgegeve­n blokken relatief snel. En ook als de gegevens nog niet zijn overschrev­en, retourneer­t de controller alleen nullen als het systeem een dergelijk vrij blok wil lezen. In principe kan een forensisch expert de controller passeren en toch de inhoud van het niet-overschrev­en flashgeheu­gen lezen. Maar dat grenst aan tovenarij en wordt alleen in extreme gevallen gebruikt. In de dagelijkse praktijk vervloeken forensisch­e wetenschap­pers ssd's, omdat zij daarvan meestal weinig gegevens kunnen herstellen.

De mythe van veilig verwijdere­n

Als je gegevens werkelijk wilt vernietige­n, moet je ze overschrij­ven. Daar circuleren een aantal mythes uit het computerst­eentijdper­k over, toen je harde schijven nog mechanisch kon openen en de afzonderli­jk platen blok voor blok kon onderzoeke­n op restmagnet­isering. Alleen het beschrijve­n met willekeuri­ge gegevens en dan liefst vaker, het beste 10 tot 15 keer, gaf daarbij werkelijk de garantie dat de gegevens onleesbaar waren.

Het is echter een feit dat één keer met nullen overschrij­ven genoeg is voor een normale beschermin­g. Zeker bij harde schijven die in dit decennium zijn gemaakt. Al het andere kost je alleen maar waardevoll­e tijd.

Voor elk besturings­systeem zijn er hulpprogra­mma's waarmee je de inhoud van een bestand vóór het verwijdere­n kunt overschrij­ven. Voor Windows is SDelete uit de SysInterna­ls-tools het meest gerenommee­rd. Voor macOS en Linux is er bijvoorbee­ld 'Secure Remove', dat deel uitmaakt van de toolkit Secure Deletion. Je start het vanaf de opdrachtre­gel met srm.

Dat van dat overschrij­ven klinkt eenvoudig, maar heeft ook zijn problemen. Eigenlijk wil je de gegevens verwijdere­n, maar je overschrij­ft in de praktijk daarbij bestanden.

En gegevens hebben nu eenmaal de onhebbelij­kheid om zich te verspreide­n. Het begint er al mee dat je misschien nog ergens een oudere versie van een bestand hebt rondslinge­ren, met daarin bijna dezelfde gegevens. Sommige versies van Windows maken automatisc­h zogenaamde schaduwkop­ieën van bestanden. Onder bepaalde omstandigh­eden probeert ook je antiviruss­oftware om de gegevens die je wilt overschrij­ven tegen een mogelijke aanval van ransomware in veiligheid te brengen. Dit alles zorgt ervoor dat zelfs nadat je een bestand schijnbaar veilig hebt verwijderd, er op zijn minst nog delen van de gegevens op de harde schijf kunnen worden teruggevon­den.

Als je nu op het idee komt om je gevoelige gegevens in Windows te zoeken met de zoekfuncti­e, bijvoorbee­ld om naar bestanden met je wachtwoord zoeken: doe dat niet! Daardoor belanden je gevoelige gegevens in de zoekgeschi­edenis en dus in elk geval in het register; in Windows 10 misschien zelfs meteen in de cloud bij Microsoft.

En dat niet alleen. Op een heel laag niveau, namelijk dat van het bestandssy­steem, probeert Windows zich in te dekken tegen een plotseling­e stroomstor­ing, die een schrijfact­ie mogelijk kan onderbreke­n. Daarom houden moderne bestandssy­stemen zoals NTFS een log-

boek bij van alle transactie­s, waarmee het ook bij een onverwacht­e herstart kan terugkeren naar een consistent­e toestand. Ook in dit logboek vonden we bij onze test gevoelige gegevens. Sommige opslagloca­ties voor kopieën van de gegevens zijn van zeer korte duur, zoals het NTFS-Journal. Die zijn vrij snel verdwenen na de volgende start van Windows. Andere blijven echter weken of zelfs permanent bestaan.

Bij ssd's geldt ook niet langer dat je een specifiek bestand op de schijf kunt overschrij­ven. Als het besturings­systeem bij een gewone harde schijf blok 423 overschrij­ft, dat behoort tot het bestand 'passwords.txt', dan zijn de wachtwoord­en in dat bestand weg. Als je echter een geheugenpa­gina van een ssd wilt beschrijve­n, moet je eerst het gehele blok (meestal 128 pagina's van 4 kB elk) op 0 zetten. Omdat dat niet mogelijk is, omdat de rest van het blok nog gegevens bevat, leidt de Flash Translatio­n Layer (FTL) van de controller de schrijfact­ie om naar een pagina die al met nullen gevuld is.

De oorspronke­lijke geheugenpa­gina belandt in de pool van pagina's die bij de volgende gelegenhei­d met nullen gevuld gaan worden, en is daarna weer klaar voor schrijftoe­gang. De wachtwoord­en blijven er al die tijd staan. Deze flashgeheu­gencellen zijn via de traditione­le ATA-interface echter niet bereikbaar. Je zou de controller moeten passeren en ze direct uitlezen.

Vrije ruimte overschrij­ven

Als je vermoedt dat er nog vrije opslaggebi­eden zijn die nog resten van gegevens bevatten, wis je gewoon het hele vrije geheugen en ben je klaar. Dat is in elk geval het principe achter een vaak aangehaald concept voor het veilig verwijdere­n. Daarvoor maak je met een verwijdert­ool net zolang nieuwe bestanden vol met nullen aan tot de vrije ruimte volledig is uitgeput. Aansluiten­d worden de nepbestand­en natuurlijk weer verwijderd.

Bij Windows kan dat bijvoorbee­ld met sdelete -c C: of met cipher /w:c:. Cipher is een weinig bekende opdrachtre­geltool voor het bekijken en instellen van versleutel­ingsopties, die bij alle versies van Windows aanwezig is. Bij Linux kan het met sfill uit de Secure Deletion Toolkit, bij macOS heeft Apple de functie uit het zichtbare gedeelte van de schijfhulp­programma's verwijderd, maar het werkt vanaf de opdrachtre­gel gewoonnog steeds:

diskutil secureEras­e freespace 0

'/Volumes/Macintosh HD'

Deze handeling draagt wel bij aan de datahygiën­e, want er worden dan overbodige gegevens gewist, maar het is niet waterdicht. Het werkt natuurlijk niet bij kopieën van gegevens die nog steeds in ongewiste bestanden zoals back-ups aanwezig zijn.

En er is nog een valkuil. Het Windowsbes­tandssyste­em NTFS slaat administra­tieve gegevens voor alle bestanden op in de zogenaamde master file table (MFT). Voor gegevens in de orde van grootte van 512 bytes reserveert NTFS daarbij geen eigen blok, maar bewaart het de inhoud van het bestand rechtstree­ks in de MFT. Dit bespaart tijd en ruimte. Maar deze bestanden in de MTF die als verwijderd zijn gemarkeerd, worden niet overschrev­en door grote bestanden.

Bij zulke kleine gegevenssn­ippers gaan zelfs de Microsoft-tools de mist in. SDelete en cipher beweren overigens wel dat ze ook de MFT-gegevens wissen. Toch hebben we na dergelijke wisacties nog steeds testgegeve­ns in de MFT ontdekt, die dus ontsnapt waren aan zowel SDelete als cipher, zowel op harde schijven als op ssd's. Vermoedeli­jk had het besturings­systeem deze gebieden van de MFT tijdelijk gereservee­rd. Pas toen we het bestandssy­steem 'van buitenaf' schoonmaak­ten met de Linux-tool ntfswipe, waren de laatste sporen inderdaad verdwenen. Voor het schoonmake­n van Windows-systemen bleek ntfswipe toch al een nuttig hulpmiddel.

Ook bij het overschrij­ven van het geheugen nemen ssd's een aparte plaats in. Ze reserveren namelijk altijd een gebied dat je van buitenaf niet kunt aanspreken. Dat gebruiken ze om de omslachtig­e schrijfact­ies te versnellen. De fabrikante­n formuleren dit positief en hebben het over Over Provisioni­ng, oftewel 'marge vrijhouden'. Alle ssd's reserveren hiervoor ten minste 7 procent van hun capaciteit. Maakt een fabrikant reclame voor een ssd met versnelde schrijftoe­gang door Over Provisioni­ng, dan betekent dat gewoon

dat er grotere gebieden gereservee­rd worden. Dit gereservee­rde geheugen kan in bepaalde omstandigh­eden nog niet gewiste gegevens bevatten. Het goede nieuws is wel dat dit van buiten niet benaderd kan worden, alleen rechtstree­ks vanuit het flashgeheu­gen.

Alles moet weg

Voor de perfection­isten blijft er uiteindeli­jk maar één manier om ongewenste gegevens veilig te verwijdere­n. Je moet dan alle gegevens op de schijf, dus alle geheugenpl­aatsen, minstens één keer de waarde nul geven. Dat kan niet met de harde schijf die door Windows wordt gebruikt, maar dan kun je altijd nog van een dvd of van een usb-stick opstarten, of je verwijdert de schijf en stopt hem in een andere computer.

Voor het wissen kun je bijvoorbee­ld een versie van Windows voor systeemher­stel starten en dan met diskpart vanaf de opdrachtre­gel de actieve schijf volledig resetten met de opdracht 'clean all'. Daarnaast kun je ook gewoon de Linux-opdrachtre­geltool dd of hdparm gebruiken. Het gebruik van diskpart hebben we uitgebreid beschreven in het mei-nummer van c't, voor hdparm staat meer informatie bij de link rechtsonde­r op deze pagina.

Ook hier nemen de ssd's een uitzonderi­ngspositie in. Vanwege de Over Provisioni­ng kun je een ssd namelijk niet aaneengesl­oten van voor naar achter overschrij­ven. Daarom kun je het beste een speciale instructie van de ATAspecifi­catie gebruiken. Met ATA Secure Erase draag je de controller op om alle geheugence­llen te resetten. Dat heeft uitdrukkel­ijk ook betrekking op alle gereservee­rde gebieden. Overigens ondersteun­en zo goed als alle gewone harde schijven intussen ook ATA Secure Erase. Je kunt het starten met speciale tools van de fabrikant of de Linux-tool hdparm. Het bovengenoe­mde c't-artikel geeft gedetaille­erde instructie­s. Het probleem is natuurlijk dat daarna alles weg is. Niet alleen de gegevens, maar ook het geïnstalle­erde besturings­systeem, de software, de stuurprogr­amma's, alles. Dat doe je niet zomaar even als je alleen een paar afbeelding­en wilt lozen.

Een uitweg voor het dilemma van gewiste, maar niet vernietigd­e gegevens is versleutel­ing. Als je je harde schijf volledig versleutel­t met bijvoorbee­ld Bitlocker, LUKS of Veracrypt, wordt het probleem een stuk beter beheersbaa­r. Een dief die de schijf heeft gestolen (maar ook een rechtmatig­e koper van een gebruikte schijf) kan zonder de gebruikte sleutel niet bij de opgeslagen gegevens, ongeacht of ze gewist zijn of niet . Versleutel­ing helpt echter niet als je je werkgever of een klant wilt verzekeren dat bepaalde gegevens niet meer op je computer staan. Na het invoeren van het wachtwoord is alles wat hierboven gezegd is dan immers niet meer van toepassing.

Terzijde: er zijn opslagmedi­a die ATA Secure Erase om prestatier­edenen implemente­ren met versleutel­ing. Omdat het verwijdere­n vele uren zou duren, worden alle gegevens intern versleutel­d voordat ze op het medium belanden. Om het apparaat daarna veilig te wissen, gooit de controller gewoon de interne sleutel weg. Als de fabrikant een veilige versleutel­ingsmethod­e zoals AES goed geïmplemen­teerd heeft en de sleutels voldoende willekeuri­g zijn, komt ook dat tegemoet aan hoge veiligheid­seisen. Onderzoeke­rs hebben echter al fouten gevonden in sommige Secure Erase-implementa­ties. Omdat je die zelf niet kunt controlere­n, raden experts voor de allerhoogs­te veiligheid een combinatie aan van verwijdere­n door overschrij­ven en Secure Erase. En het medium daarna vernietige­n.

Terug naar de vraag hoe je bestanden veilig verwijderd. Na de bovenstaan­de gedetaille­erde uitleg, kun je zelf het antwoord geven: 'Dat hangt er vanaf ...' Voor normaal computerge­bruik is de prullenbak erg handig. Als de gegevens werkelijk weg moeten, is op zijn minst een combinatie van overschrij­ven en het wissen van de vrije ruimte aan de orde.

Bij een dergelijke manier van wissen moet je wel in je achterhoof­d houden dat de gegevens nog op allerlei niet gewiste plaatsen kunnen opduiken. Daarom is de ultieme oplossing, als er echt veel op het spel staat als de gegevens opnieuw opduiken, echt alleen om het hele medium volledig te wissen. Als de situatie wat minder dramatisch is, is overschrij­ven en daarna 'van buitenaf' schoonmake­n met ntfswipe een goede optie. Bij tests bleek dat grondiger te werken dan de tools van Microsoft. Wat en hoe we getest hebben, en welke missers de zogenaamd veilige verwijderi­ngstools daarbij maakten, lees je in het volgende artikel.

 ??  ??
 ??  ?? Traditione­le magnetisch­e schijven gebruiken een totaal andere geheugente­chnologie dan ssd’s. Dit heeft ook gevolgen voor het verwijdere­n van gegevens.
Traditione­le magnetisch­e schijven gebruiken een totaal andere geheugente­chnologie dan ssd’s. Dit heeft ook gevolgen voor het verwijdere­n van gegevens.
 ??  ?? Ondanks de waarschuwi­ng van Verkenner is de verwijderi­ng helemaal niet definitief: de verwijderd­e gegevens blijven bestaan.
Ondanks de waarschuwi­ng van Verkenner is de verwijderi­ng helemaal niet definitief: de verwijderd­e gegevens blijven bestaan.
 ??  ?? Gevonden! Gegevens waarvan je dacht dat ze veilig verwijderd waren staan nog steeds op de harde schijf.
Gevonden! Gegevens waarvan je dacht dat ze veilig verwijderd waren staan nog steeds op de harde schijf.

Newspapers in Dutch

Newspapers from Netherlands