Objavljeno:

Trajno brisanje podatkov (mala šola informacijske varnosti, 6. del)

Kot smo že izpostavili v prispevku o šifriranju nosilcev podatkov, fizični dostop do nosilcev podatkov predstavlja eno večjih nevarnosti za nepooblaščen dostop do podatkov. Najboljša rešitev je seveda šifriranje celotnega nosilca podatkov, če pa to ni mogoče, pa je smiselno datoteke, ki jih ne želimo več imeti, trajno izbrisati (ang. to wipe).

Običajno brisanje podatkov v resnici podatkov ne izbriše iz diska. Odvisno od datotečnega sistema se namreč izbrisana datoteka (se pravi tista, ki je bila odstranjena tudi iz koša) odstrani samo iz seznama datotek v datotečnem sistemu, njena vsebina pa še vedno ostane zapisana na disku.

Če torej želimo datoteko trajno izbrisati, je potrebno njeno vsebino prepisati. A pozor. To ni vedno enostavno in zanesljivo opravilo. V določenih okoliščinah je tudi vsebino prepisanih datotek s forenzično analizo mogoče (vsaj delno) obnoviti.

Načini prepisovanja

Pri prepisovanju podatkov namenjenih trajnemu izbrisu lahko uporabimo več možnosti oziroma več metod.

Najbolj enostavna metoda je, da podatke enkrat prepišemo z ničlami. Enkratno prepisovanje podatkov z ničlami je seveda najhitrejše, a iz varnostnega stališča neustrezno. Kot prvo bo potencialni napadalec, ki bo analiziral nosilec podatkov, lahko sklepal, da je bil disk namenoma prepisan z ničlami, poleg tega pa je z nekaterimi metodami mogoče obnoviti enkrat z ničlami prepisane podatke. Znan je recimo primer ameriškega vojaka Bradleya Manninga, ki je organizaciji Wikileaks posredoval tajne podatke. Ko so ga aretirali, je bil njegov disk prepisan z ničlami, a samo enkrat, ameriški preiskovalci pa so podatke kljub temu uspeli obnoviti.

Druga, boljša možnost je prepisovanje z naključnimi oziroma psevdonaključnimi podatki. Takšna metoda prepisovanja podatkov napadalca zmede, saj ne ve ali gre za neke nerazumljive ostanke nekih drugih, ne do konca izbrisanih podatkov, ali pa se med podatki res ne skriva nič uporabnega. Žal je prepisovanje diska z naključnimi podatki precej bolj dolgotrajno. Razlog je v tem, da so generatorji naključnih števil v običajnih računalnikih razmeroma počasni in ne uspejo dovolj hitro zgenerirati dovoljšnje količine podatkov za prepis. Nekoliko hitrejša možnost je uporaba generatorja psevdonaključnih števil in torej prepisovanje s psevdonaključnimi podatki.

Obstaja tudi možnost brisanja s pomočjo tim. nizkonivojskega formata (ang. low level format), a ta metoda nikakor ni zanesljiva. ATA-1 specifikacija namreč res vsebuje poseben ukaz FORMAT TRACK, ki je namenjen tim. nizkonivojskemu formatiranju trdega diska. Vendar pa je v specifikaciji izrecno zapisano, da je akcija, ki se izvede ob takšnem ukazu odvisna od proizvajalca – akcija torej s strani ATA standarda ni predpisana, nizkonivojsko formatiranje pa zato ne zagotavlja, da bodo podatki zares tudi uničeni.

Najboljša možnost je zato večkratno prepisovanje s pomočjo posebnih metod večkratnega prepisovanja podatkov. Pri tem prepisovanje poteka s posebnim vzorcem (npr. najprej se podatke prepiše enkrat z ničlami, nato enkrat z enkami, nato večkrat z naključnimi podatki). Najbolj znana je sicer tim. Gutmannova metoda, ki zahteva 35-kratno prepisovanje po posebnem vzorcu, obstajajo pa tudi druge).

Naj še omenimo, da so nekateri mnenja, da enkratno prepisovanje celotnega nosilca podatkov z naključnimi podatki ni zanesljivo, in da je tako prepisane podatke mogoče programsko rekonstruirati. To naj bi bilo mogoče zaradi “preskakovanja” bralnih glav diska.

To ne drži. Če malce premislimo, je namreč logično, da do preskakovanja bralnih glav ne sme prihajati, saj bi v nasprotnem primeru prihajalo tudi do napak pri branju in zapisovanju podatkov na disk in bi bila torej uporaba trdih diskov za shranjevanje podatkov nezanesljiva. Je pa res, da je tako prepisane podatke mogoče obnoviti z nekaterimi neprogramskimi tehnikami (o tem več v nadaljevanju), s programskimi tehnikami pa le v primeru, da ne prepisujemo celotnega nosilca podatkov in da se za prepisovanje ne uporablja (psevdo)naključne vzorce.

Prepisovanje katerih podatkov?

Prepisujemo lahko več oblik podatkov in sicer:

  • prepisujemo lahko vsebino datotek;
  • prepisujemo lahko tim. prazen prostor (ang. free space, gre za prostor, ki ga datotečni sistem ne zaseda);
  • prepisujemo lahko tim. mrtvi prostor (ang. slack space – gre za prostor, ki ga datotečni sistem zasede na disku, vendar ni uporabljen; mrtvi prostor je problematičen zlasti v datotečnem sistemu FAT);
  • prepisujemo lahko vsebino izmenjalnega razdelka (ang. swap space – na njem se nahajajo podatki, ki so se nekoč nahajali v pomnilniku RAM – lahko tudi gesla in podobno)
  • prepisujemo lahko vsebino celotnega razdelka oziroma celoten nosilec podatkov.

Vsaka izmed možnosti pa ima žal določene pomankljivosti, zato še enkrat poudarjamo, da je podatke najbolje zaščititi s šifriranjem.

Pomankljivosti prepisovanja podatkov

Trajno brisanje vsebine datotek pri tim. dnevniških datotečnih sistemih (ang. journal file systems) ni enostavno, predvsem pa ne zanesljivo opravilo, prav tako je še bolj nezanesljivo trajno brisanje podatkov v omrežnih datotečnih sistemih ali v oblaku. Izbris vsebine datoteke tudi ni zanesljiv, če smo pred brisanjem uporabljali tim. defragmentacijo diska. Podatki se namreč v vseh teh primerih ne nahajajo samo na enem mestu na nosilcu podatkov, pač pa se ostanki podatkov (lahko) nahajajo na več mestih.

Delna rešitev tega problema je brisanje tim. praznega (ang. free space) in tim. mrtvega (ang. slack space) prostora, precej bolje pa je uporabiti trajno brisanje celotnega nosilca podatkov, saj nekateri datotečni sistemi hranijo prejšnje različice datotek. Pri brisanju pa je seveda pomembno pomisliti tudi na uničenje varnostnih kopij podatkov.

Vendar pa tudi brisanje celotnega nosilca podatkov ni povsem zanesljivo, saj je v določenih primerih tudi iz takega nosilca kljub temu mogoče obnoviti nekatere podatke. Res pa je, da po drugi strani SSD nosilci podatkov otežujejo forenzično analizo oz. obnavljanje podatkov, o čemer več v nadaljevanju.

Rezervirani deli diska

Sodobni diski vsebujejo določena rezervirana področja, kjer se tudi lahko nahajajo podatki. Če želimo podatke na teh področjih izbrisati, so zato potrebni posebni pristopi.

Prvo tako področje je tim. Host Protected Area (HPA), ki je definirano v ATA specifikaciji različica 4. Specifikacija ATA-4 je namreč uvedla posebno območje diska (Host Protected Area), ki je “skrito” pred končnim uporabnikom. Na tem posebnem delu diska se lahko nahajajo razna diagnostična orodja, varnostna kopija operacijskega sistema, lahko pa tudi kakšni drugi podatki.

HPA je seveda operacijskemu sistemu skrit in ga pri normalni uporabi računalnika ni mogoče videti. Brati ga je mogoče le s posebno programsko opremo. V Linuxu obstajajo posebna orodja (hdparm, Sleuthkit,…), ki omogočajo zaznavanje in manipulacijo s HPA, vendar zahtevajo nekoliko podrobnejše poznavanje področja digitalne forenzike.

Specifikacija ATA-6 pa je prinesla še podobno zaščiteno območje z imenom Device Configuration Overlay ali DCO.

Namen DCO-ja je, da proizvajalcem trdih diskov omogoča, da na eni proizvodni liniji proizvedejo več enakih trdih diskov, ki pa jim z DCO omejijo kapaciteto. DCO nastavitev je mogoče zaznati s primerjavo vrnjenih vrednosti ATA ukazov DEVICE CONFIGURATION IDENTIFY in READ NATIVE MAX (EXT), z ukazom DEVICE CONFIGURATION RESTORE pa je mogoče DCO odstraniti.

DCO je žal precej nepoznana zadeva in posledično je na voljo le malo orodij, ki to območje nosilca podatkov zna zaznati ali celo odstraniti (izjema so redka specializirana forenzična orodja). Diski lahko vsebujejo tako HPA in DCO hkrati. V tem primeru je treba najprej odstraniti HPA, šele nato pa DCO, sicer disk javi napako.

Precej večji problem za trajno brisanje podatkov pa predstavljajo tim. dodatni in okvarjeni sektorji.

Sodobni diski v resnici ne vsebujejo samo toliko prostora, kot je to na njih navedeno, pač pa vsebujejo še tim. nadomestne sektorje (ang. spare sectors). Ideja je preprosta. Če programska strojna oprema diska (ang. firmware) ali diskovni kontroler odkrijeta slab sektor, namesto njega uporabita enega izmed nadomestnih. Postopek se imenuje remapiranje, gre pa za to, da strojna programska oprema trdega diska zamenja fizično lokacijo logičnega sektorja.

Koliko sektorjev je bilo nadomeščenih je mogoče ugotoviti z nekaterimi S.M.A.R.T. atributi (Reallocated Sectors Count ter Reallocation Event Count), strojna programska oprema diska pa vzdržuje dva seznama okvarjenih sektorjev: P-list (Primary Defect List), gre za seznam sektorjev, ki so bili okvarjeni že v tovarni ob izdelavi diska ter G-list (Growing Defect List), ki pa je seznam sektorjev, ki so se okvarili po tem, ko je disk zapustil tovarno. G-list se nadgrajuje dinamično, s starostjo diska in kopičenjem okvar na njem.

Pregled SMART podatkov o uporabi rezervnih sektorjev

Pregled SMART podatkov o uporabi rezervnih sektorjev.

Okvarjeni sektorji sicer niso več fizično v uporabi oz. neposreden dostop do njih ni mogoč, a pred tem so se na teh sektorjih (iz G seznama) nahajali podatki. Zato se lahko tudi na izbrisanem nosilcu podatkov še vedno nahajajo občutljivi podatki (konkretno, na okvarjenih sektorjih iz G seznama). Z običajnimi programskimi tehnikami jih sicer ne bomo mogli prebrati, je pa dostop do okvarjenih sektorjev morda mogoč s pomočjo nekaterih posebnih (nedokumentiranih) ATA ali s SMART ukazov.

Podobna tehnologija se sicer uporablja tudi pri podaljševanju življenjske dobe USB ključev, SSD naprav in ostalih naprav, ki uporabljajo tim. flash RAM, znana pa je pod imenom wear levelling in prav tako predstavlja nevarnost za dostop do izbrisanih podatkov. Gre namreč za to, da se pomnilniške celice v napravah z tim. bliskovnim pomnilnikom (tim. flash pomnilnik) po določenem številu zapisovanj podatkov vanje izrabijo. Kontroler naprave zato podatke iz bolj obrabljenih celic premešča na manj uporabljane celice (in ta mehanizem se imenuje wear leveling) s čimer zagotovi bolj enakomerno izrabo celotne naprave. Imajo pa tudi novejše SSD naprave nekaj nadomestnih pomnilniških celic (ang. spare cells), torej SSD naprave poleg wear levellinga uporabljajo tudi nadomestne celice, kar predstavlja dodaten problem pri trajnem brisanju podatkov.

V teh napravah (SSD nosilci podatkov, USB ključi) namreč pomnilniške celice po določenem številu zapisovanj postanejo neuporabne, in sicer na način, da vanje ni več mogoče zapisovati novih podatkov, oziroma podatke iz njih izbrisati, branje pa je še vedno mogoče (drugače povedano, celice ohranijo zmožnost branja, izgubijo pa možnost zapisovanja in brisanja (ang. read-only)!

Ker torej nosilci podatkov vsebujejo določene dodatne kapacitete, ki nadomeščajo okvarjene dele naprave, in ker teh okvarjenih delov pomnilnika kasneje z običajnimi programskimi tehnikami ni mogoče izbrisati, vedno obstaja nevarnost, da bodo na “popolnoma izbrisanem” nosilcu podatkov v resnici ostali še kakšni občutljivi podatki. Ravno iz tega razloga je priporočljivo uporabljati šifriranje celotnega nosilca podatkov že od začetka.

Naj omenimo še možnost rekonstrukcije podatkov s pomočjo elektronskega mikroskopa, ki se sicer uporablja izjemno rekdo. Gre za tehniko mikroskopiranja magnetnih sil, ki jo je leta 1996 v članku Secure Deletion of Data from Magnetic and Solid-State Memory opisal Peter Gutmann, tehniko pa opisujeta tudi Venema in Farmer v knjigi Forensic Discovery (2004).

S to tehniko je v nekaterih primerih mogoče rekontruirati enkratno oziroma tudi večkratno prepisane podatke in sicer zaradi temperaturnega krčenja in širjenja diska. Potrebna oprema je sicer precej draga (cene se gibljejo od pol milijona EUR dalje), vendar pa smo pred časom pri pripravi članka o trajnem brisanju podatkov za spletišče Slo-Tech dobili možnost dostopa do takšne naprave in z njo tudi sami poskusno pregledali trdi disk.

SSD nosilci podatkov

Kot že omenjeno, pa za razliko od klasičnih diskov nekateri SSD nosilci podatkov otežujejo forenzično analizo oz. obnavljanje podatkov. Raziskovalca Graeme B. Bell in Richard Boddington iz avstralske Murdoch University sta namreč leta 2011 ugotovila, da SSD nosilci podatkov, ki podpirajo funkcijo TRIM izbrisane podatke nepovratno uničijo (več o tem v članku Solid State Drives: The Beginning of the End for Current Practice in Digital Forensic Discovery?).

Njuni testi so pokazali, da SSD nosilci podatkov ob tim. hitrem formatiranju (ang. quick format) podatke nepovratno uničijo v samo treh minutah. Proces uničevanja podatkov pa poteka tudi v primeru, ko je bil disk priključen na blokator pisanja (tim. write blocker, posebna naprava, ki fizično preprečuje kakršnokoli pisanje podatkov na disk).

V primeru, da SSD ni bil priključen na blokator pisanja, po treh minutah mogoče obnoviti samo 1.064 datotek od 316.666. V primeru, ko je bil SSD priključen na blokator pisanja, pa je bilo po 20 minutah nepovratno uničenih kar 19% izbrisanih datotek. Pri klasičnih trdih diskih je bilo v slednjem primeru mogoče obnoviti vse datoteke, ne glede na pretečeni čas.

Je pa potrebno omeniti, da je podatke, ki so iz SSD naprave izbrisani s TRIM ukazom teoretično vseeno mogoče rekonstruirati, vendar je za to potrebna posebna oprema. Zato je pred brisanjem SSD naprave z ukazom TRIM smiselno vseeno izvesti prepisovanje z naključnimi podatki.

V Linuxu je TRIM podporo na SSD nosilcu podatkov mogoče ugotoviti z ukazom hdparm (_hdparm -I /dev/sda grep “TRIM supported”), v okolju Windows pa je to razvidno v med ogledom zmožnosti SSD naprave v upravitelju naprav (_Device Manager). V kolikor je TRIM podprt, v Linuxu v ukazni vrstici dobimo naslednji izpis (če vnesemo zgoraj navedeni ukaz):
Data Set Management TRIM supported (limit 1 block)

Naj omenimo, da pa uporaba TRIM funkcije skupaj s šifriranjem celotnega nosilca podatkov varnost dejansko zmanjšuje, saj napadalcu omogoča vpogled v količino praznega (neuporabljenega) prostora na nosilcu ter mu olajšuje ugotavljanje kateri datotečni sistem se uporablja na šifrirani napravi.

Iz razloga varnosti je na Linux sistemih z Linux jedrom od 3.1 dalje v primeru šifriranja (z dm-crypt oz. Cryptsetup) TRIM funkcija privzeto izključena, (na starejših sistemih z datotečnim sistemom ext4 pa jo je priporočljivo izključiti ročno, s pomočjo parametra discard, v konfiguracijski datoteki /etc/fstab). Trenutna različica operacijskega sistema Ubuntu (12.04) sicer uporablja Linux jedro 3.2.

Po drugi strani pa uporaba šifriranja na celotni SSD napravi z onemogočeno funkcijo TRIM povzroča večjo obrabo SSD naprave (ker ni mogoč wear levelling) in s časom zmanjšuje hitrost njenega delovanja. SSD naprave morajo namreč celice, kamor zapisujejo podatke pred zapisovanjem izbrisati, in če je šifriran celoten SSD nosilec podatkov – kar pomeni, da na nosilcu ni prostih pomnilniških celic (takih, ki bi se sprostile s TRIM ukazom) – to podaljšuje čas zapisovanja podatkov. Iz tega razloga je del SSD naprave, ki bo šifrirana smiselno pustiti prazen (torej na nosilcu pustiti tim. nedodeljen, neparticioniran prostor (ang. unallocated space)) – ta prostor potem naprava uporabi za wear levelling in pohitritev zapisovanja.

Poseben problem pri SSD napravah je tudi uporaba medpomnilnika, zaradi česar v primeru izgube napajanja lahko pride do izgube podatkov (kontrolerji SSD naprav pa operacijskemu sistemu pošiljajo lažne podatke o uspešnosti zapisa podatkov na nosilec). Novejši SSD nosilci imajo v ta namen sicer rezervno napajanje, kljub temu pa se je potrebno zavedati, da uporaba programskega šifriranja celotnega nosilca podatkov na SSD napravi prinaša določene težave, ki se jim lahko izognemo le delno. Več o samem delovanju SSD naprav si je mogoče prebrati v članku na ArsTechnici.

Programska oprema za trajno brisanje podatkov

V okolju Windows lahko za prepisovanje datotek, praznega prostora in mrtvega prostora uporabimo aplikacijo Clean Disk Security. Na voljo so še številne druge, npr. Eraser ali SDelete. V Linuxu v ukazni vrstici lahko uporabimo orodji shred ali wipe, zelo zmogljivo je tudi orodje dd, s katerim lahko izbrišemo vsebino celotnega diska, razdelka ali pa prazen prostor. Velja pa opozorilo – navedena orodja niso igrača in ob nepravilni uporabi lahko privedejo do uničenja podatkov!

Uporaba omenjenih orodij za Linux je v ukazni vrstici nekoliko bolj zapletena, zelo enostavno pa je mogoče trajno brisati podatke in prazen prostor s pomočjo Nautilus Wipe – dodatka za pregledovalnik datotek Nautilus. Dodatek sicer v ozadju poganja program secure-delete.

Dodatek privzeto ni nameščen, namestimo ga s pomočjo programskega paketa nautilus-wipe. Po namestitvi se v Nautilusu pojavi možnost trajnega brisanja datotek in map ter praznega prostora. Možnost prikličemo tako, da na datoteko ali mapo kliknemo z desno miškino tipko in iz menija, ki se odpre izberemo Wipe oziroma Wipe available diskspace.

Nautilus Wipe

Nautilus Wipe.

V nadaljevanju lahko izberemo število prehodov oz. prepisovanj (ang. number of passes) ter označimo ali želimo uporabiti hitrejšo in manj varno metodo prepisovanja s pomočjo psevdonaključnega generatorja števil (pri tem Nautilus Wipe tudi ne preverja ali so bili (psevdo)naključni podatki dejansko zapisani na disk) oziroma ali naj v zadnjem prehodu prepisujemo podatke z ničlami namesto z naključnimi podatki.

Privzeta možnost je dvakratno prepisovanje, na voljo pa sta tudi enkratno in prepisovanje po Guttmanovi metodi. Postopek brisanja je sicer sledeč. Program najprej prepiše podatke z izbrano metodo, po vsakem prepisovanju pa resetira tim. diskovni medpomnilnik (ang. flush dick cache). Nato datoteko “okrajša” (ang. truncate), da morebitni napadalec ne bi mogel ugotoviti na katerih blokih na disku se je fizično nahajala. Datoteko nato preimenuje v neko naključno izbrano ime, da morebitni napadalec ne bi mogel iz imena datoteke sklepati na vsebino. Na koncu pa to datoteko izbriše iz sistema z običajnim sistemskim klicem.

Kot rečeno, pa trajno brisanje vsebine datotek pri tim. dnevniških datotečnih sistemih, kot sta v Linuxu ext3 in ext4 ni zanesljivo, zato naj velja vodilo, ki je zapisano v uporabniškem priročniku (tekstovnega) programa wipe: “Don’t trust your harddisk. Encrypt all your data.” – “Ne zaupajte svojemu disku. Vse svoje podatke šifrirajte.“.

Druga možnost prepisovanja, ki smo jo že omenili pa je prepisovanje celotnega razdelka oziroma celotnega nosilca podatkov. V tem primeru razdelki seveda ne smejo biti programsko priključeni (ang. mounted) v sistem.

Za prepisovanje celotnega diska lahko uporabimo tim. živi CD z Linuxom in disk nato prepišemo z orodjem dd, potrebno pa je paziti na to, da uporabimo takšno distribucijo, ki pri zagonu ne uporabi tim. izmenjalnega prostora na lokalnem disku (ali pa med zagonske parametre vpišemo ukaz noswap oz. uporabo izmenjalnega prostora izključimo z ukazom swapoff -a).

Precej bolj enostavna možnost pa je uporaba specializiranega orodja. Tovrstnih orodij je več, med bolj znanimi brezplačnimi orodji pa program DBAN. DBAN ali Darik’s Boot and Nuke je program, ki postopek izbire diska ali diskovnega razdelka in prepisovanja bistveno olajša, saj je program mogoče upravljati preko preprostega vmesnika.

Program si prenesemo iz spletišča http://www.dban.org/ (ISO slika CD-ja je velika nekaj čez 10 Mb) ter ustvarimo zagonski CD (ali disketo) s pomočjo katerga zaženemo računalnik. Nato označimo diske za brisanje, izberemo metodo brisanja in počakamo, da se postopek zaključi. Na spletni strani programa je  zapisano, da omogoča celo brisanje tim. remapiranih sektorjev (potrebno naj bi bilo uporabiti tim. ATA-6 wipe method), vendar gre za napako, saj bo ta funkcionalnost na voljo šele za prihodnje različice programa. Naj na tem mestu opozorimo, da brisanje remapiranih sektorjev ni zanesljivo. DBAN ne podpira brisanja HPA.

DBAN

DBAN.

Prepisovanje celotnega diska je vsekakor priporočljivo izvesti vedno, kadar disk nameravamo prodati ali zavreči, smisleno pa je tudi, da na tak način pobrišemo vsebino nosilcev podatkov, ki jih nameravamo šifrirati. S tem namreč popolnoma uničimo nešifrirane različice podatkov nanjem, hkrati pa otežimo ugotavljanje zasedenosti šifriranega diska s podatki.

Zaključek

Kot smo torej videli, obstaja kar nekaj tehnik s katerimi podatke lahko čim bolj oziroma trajno uničimo. Vendar pa imajo tehnike programskega prepisovanja podatkov določene pomankljivosti, zato je v primeru zahtev po visoki stopnji varnosti odslužene nosilce podatkov najbolje fizično uničiti, oziroma na nosilec podatkov zapisovati izključno šifrirane podatke.

Če pa to ni mogoče, pa je na voljo dovolj kvalitetnih odprtokodnih orodij, ki podatke skušajo čim bolj temeljito uničiti in tako onemogočiti njihovo kasnejšo rekonstrukcijo.

Kategorije: Digitalna forenzika, Informacijska varnost, Odprta koda, Zasebnost
Ključne besede: mala šola informacijske varnosti, trajno brisanje podatkov