You are here: TUTWiki>Tietoturva/Tutkielmat>JarvenpaaT?>2007-1

Antti Orava:

Kiintolevyn tyhjentäminen

Johdanto

Tietokone ja sen kiintolevy voivat tulla käyttöikänsä päähän tai kiintolevy myydään eteenpäin päivityksen yhteydessä. Mitä tulisi tehdä, ettei kiintolevyn mukana siirtyisi mitään arkaluontoista tietoa?

Joku poistaa tiedon "deletoimalla" ja joku vähän fiksumpi alustamalla kiintolevyn. Mutta nämä eivät ole tietoturvallisia menetelmiä!

Keskityn tutkielmassani erilaisiin menetelmiin poistaa tieto kiintolevyltä. Aloitan huonoista, siirryn hyviin ja lopuksi käsittelen ~100% varmoja menetelmiä mukaan lukien täysin varmat menetelmät.

Mikä on kiintolevy?

Tämän tutkielman kannalta tärkein kiintolevyn (hard disk) osa on magneettiset levyt (platters). Enemmän tietoa kiintolevyn rakenteesta, toimintaperiaatteesta ja historista löydät HDDTech:n kiintolevyä käsittelevästä artikkelista [1] tai englanninkielisen Wikipedian kiintolevyä käsittelevältä wiki-sivulta [2].

Keskitytään siis magneettisiin levyihin. Magneettiset levyt ovat joko alumiinia tai lasia, joihin on metaloitu magneettinen pinta [3].

Magneettisille levyille tieto (data) varastoidaan uraan (track), joka kiertää levyn pinnan ympäri. Yhdellä levypinnalla uria on useita ja levypintoja on aina kaksi yhtä magneettista levyä kohti: ylä- ja alapinta. Ura jaetaan lohkoihin* (sector), joiden koko on aina 512 tavua (bytes). Yksi tavu (byte) taasen koostuu kahdeksasta bitistä (bit). Bitti on pienin "tietoyksikkö" ja se voi olla joko nolla tai yksi. Varsinkin suomalaiset sekoittavat herkästi bitit (bits) ja tavut (bytes), koska usein niitä kutsutaan samalla termillä, bitti.

Yhdessä lohkossa on siis 4096 bittiä, joiden tilaa (nolla tai yksi) muutetaan kirjoituspäällä ja luetaan lukupäällä.

Bittien välissä on pienen pieni alue, joka myös magnetisoituu, kuten itse bittikin. Tätä heikkoa magneettikenttää kutsutaan kaiuksi (echo) ja niidenkin tila on mahdollista lukea. Kaikua kutsutaan kaiuksi, koska tälle pienelle alueelle on mahdollista "varastoitua" useampi viereisen bitin aikaisempi tila.

* Lohkosta käytetään myös termejä sektori ja osio, mutta osio-termin kanssa tulee helposti sekaannuksia levyosio-termin kanssa, jolla sijaitsee alustettu levyasema (esim. C-asema Windows:ssa).

Kiintolevyn alustus

Kiintolevytehtaan kokoonpanohihnalta saapuva kiintolevy on fyysisesti valmis ja alustettu matalalle tasolle (low level format). Sille ei kuitenkaan voi heti kirjoittaa tietoa. Kiintolevylle täytyy ensin suorittaa korkean tason alustus. Sitten vasta kiintolevyllä on tiedostojärjestelmä (file system), jolle käyttöjärjestelmä osaa kirjoittaa tietoa eli tiedostoja (file). Tästä eteenpäin tässä tutkielmassa tieto ja tiedosto ovat sama asia.

Matalan tason alustus (Low level format)

Matalan tason alustuksessa kiintolevyn magneettisien levyjen pinta jaetaan uriin ja sektoreihin. Tämä tieto tallennetaan luku-/kirjoituspäitä ohjaavaan prosessoriin, jotta se tietää missä mikäkin ura ja sektori sijaitsevat. Tämä tieto jää ohjausprosessorin muistiin, mutta se voidaan tarvittessa korvata toisenlaisella ura- ja sektorikonfiguraatiolla [4].

Nykyaikaiset kiintolevyjen ohjausprosessorit pitävät lisäksi kirjaa mm. viallisista sektoreista (bad sectors). Näiden lisätietojen takia uusille kiintolevyille ei ole suositeltavaa tehdä matalan tason alustusta valmistajan tekemän päälle, koska muuten kaikki nämä hyödylliset tiedot kiintolevyn tilasta häviävät.

Menetelmissä esille tuleva ylikirjoitus on myös eräänlainen matalan tason alustus menetelmä. Se ei kuitenkaan määritä kiintolevyn fyysistä rakennetta uudelleen, joten sitä kutsutaankin epäaidoksi/teeskennellyksi (pseudo) matalan tason alustukseksi.

Korkean tason alustus (High level format)

Ennen korkean tason alustusta kiintolevylle täytyy tehdä levyosio (partition). Tieto siitä tallennetaan kiintolevyn käynnistysalueelle (master boot record). Tämän tutkielman kannalta korkean tason alustus on kuitenkin oleellisempaa, mutta osiointi on kuitenkin maininnan arvoinen asia, koska ilman sitä ei voi suorittaa korkean tason alustusta. Korkean tason alustus, kun kohdistuu juurikin levyosioon.

Korkean tason alustus tehdään alustusohjelmalla. Alustusohjelma luo levyosiolle tiedostojärjestelmää varten tiedostotaulun (file allocation table) ja juurihakemistoksi (root directory) kutsutun data-alueen. Ohjelma myös laskee sektorien määrän ja tarkistaa niiden tilan lukemalla niistä. Lopuksi se merkitsee tiedostotauluun sektorien määrän ja sektorit joista lukeminen ei onnistunut, viallisiksi sektoreiksi [5].

Menetelmät

Tiedon hävittäminen voidaan tehdä monella eri menetelmällä. Osa menetelmistä vain tekee sen mitä "Poissa silmistä, poissa mielestä." -sanontakin toteaa. Onneksi se toinen osa menetelmistä oikeasti siirtää tiedon "bittien taivaaseen".

Poisto (Delete & rm)

Poisto ei varsinaisesti poista tiedostoa kiintolevyltä. Tiedosto kyllä näyttää häviävän, koska kiintolevyllä oleva tiedostojärjestelmä ei enää huomioi sitä.

Tämä johtuu siitä, että delete ja rm ohjelmat poistavat tiedon tiedoston olemassa olosta tiedostojärjestelmän tiedostotaulusta. Yleensä ohjelma vain vaihtaa tiedoston nimen ensimmäisen kirjaimen tyhjäksi-merkiksi ja merkitsee tiedoston "entisen" sijainnin vapaaksi, jolloin tiedostojärjestelmä jättää tiedoston huomioimatta. Todellisuudessa tiedosto siis on olemassa data-alueella, mutta ilman tiedostotaulussa olevaa merkintää sen sijaintia ei tiedetä.

Tiedosto saadaan palautettua poiston peruutusohjelmalla (undelete) tai tiedonpalautusohjelmalla. Nämä ohjelmat käyvät tiedostotaulun läpi ja löytäessään tiedoston jonka nimen alussa on tyhjä-merkki, ne palauttavat sen näkyviin. Palautuksen onnistuminen kuitenkin edellyttää, että tiedoston sijaintipaikkaan ei ole kirjoitettu uutta tietoa. Toisin sanoen, palautus kannattaa suorittaa heti, jos on huomannut poistaneensa jotain mitä ei pitänyt poistaa.

Uudelleen alustus (Re-Format)

Uudelleen alustus tarkoittaa ylemmän tason alustuksen uudelleen suorittamista. Levyosiolle luodaan uusi tiedostotaulu ja juurihakemisto.

Uudelleen alustus ei kuitenkaan hävitä data-alueella olevia tiedostoja. Niistä vain ei ole tietoa tiedostotaulussa.

Tiedonpalautusohjelmilla tiedosto(t) kuitenkin saadaan esille, koska nämä ohjelmat eivät välitä tiedostojärjestelmän tiedostotaulusta. Ohjelmat tutkivat data-aluetta raakadatana (raw data). Ne ymmärtävät mistä tiedosto alkaa ja mihin se päättyy. Tässäkin tapauksessa tiedostoja ei saa palautettua, jos niiden sijaintipaikkaan on kirjoitettu uutta tietoa.

Ylikirjoitus (Zero, One ja Random)

Ylikirjoitus on menetelmä, jossa kaikki kiintolevyn lohkot ylikirjoitetaan bitti bitiltä. Jokainen bitti voidaan ylikirjoittaa nollaksi (Zero) tai ykköseksi One). Tämän jälkeen kiintolevy on siis täynnä ykkösiä tai nollia, eikä siellä ole enää alustettuja osioita.

Ylikirjoituksesta on olemassa erikoistapaus, jossa jokainen bitti ylikirjoitetaan satunnaisesti (Random) nollalla tai ykkösellä.

Ylikirjoitusstandardit

Yleisimpiä ylikirjoitusstandardeja ovat:

- Gutmannin menetelmä [6]
- Saksalainen VISTR
- Venäläinen GOST p50739-95
- Yhdysvaltojen puolustusvoimien US DoD? 5220.22 M

Nämä standardit käyttävät Zeron, Onen ja Randomin lisäksi nollan ja ykkösen erilaisissa järjestyksissä kirjoitusta (010101...; 101010...; 00110011; 11001100; jne.).

Standardien mukaan kiintolevy ylikirjoitetaan useaan kertaan peräkkäin erilaisin menetelmin. Tästä syystä standardien mukaisia menetelmiä voi jo kutsua täysin varmoiksi menetelmiksi. Esim. Gutmannin menetelmällä kiintolevy ylikirjoitetaan ensin muutaman kerran Randomilla, sitten nollaa ja ykköstä erilaisissa järjestyksissä, välissä Zerolla ja Onella sekä lopuksi taas muutaman kerran Randomilla. Ylikirjoituksia tulee yhteensä 35 kappaletta.

Useiden ylikirjoituksien tarkoitus on muokata magneettisilla levyillä olevien bittien kaiut tilaan, joka ei varmasti ole enää kiintolevyllä olleen tiedon tila. Noin 8 kertaa ylikirjoitetulta levyltä ei voi edes edistyneillä teknisillä laitteilla saada esille levyllä ollutta tietoa.*

* Ylikirjoitusten määrästä, jolloin kaiut ovat varmasti eri tilassa, on tehty monta tutkimusta, mutta yhteisymmärrystä eri tutkijoiden välillä ei ole kuitenkaan saatu. Esim. Yhdysvaltojen puolustusvoimat ja NATO ylikirjoittavat 7 kertaa.

Täysin varmat menetelmät

Tieto voidaan tuhota pysyvästi kiintolevyltä monella eri menetelmällä. Lukuunottamatta uudelleen magnetointia, nämä menetelmät rikkovat kiintolevyn pysyvästi, jolloin sitä ei voi enää käyttää uudelleen.

Mekaaninen vaurioittaminen

Mekaanisella vaurioittamisella ei sinäänsä pystytä hävittämään tietoa magneettisilta levyiltä. Lasista tehdyt magneettiset levyt rikotaan vasaroimalla kiintolevyä, jolloin levyt hajoavat sirpaleiksi.

Alumiiniset magneettiset levyt rikotaan esimerkiksi hydrauliikkaprässin avulla, joka painaa magneettisia levyjä pyörittävän servomoottorin ulos kiintolevyn kotelosta. Samalla alumiiniset magneettiset levyt vääntyvät käytännössä lukukelvottomiksi.

Molemman tyyppiset kiintolevyt voidaan myös räjäyttää riittävän kovalla räjähdyspanoksella. Myös riittävän tehokkaalla metallinrouhijalla kiintolevystä voidaan tehdä pientä haketta.

Sulattaminen/Polttaminen

Kiintolevy voidaan myös sulattaa/polttaa korkeissa lämpötiloissa, jolloin kiintolevyn metallirunko ja magneettiset levyt sulavat/palavat. Sulattaminen/Polttaminen on mahdollista suorittaa jätteenpolttolaitoksissa. [7]

Uudelleen magnetointi (Degauss)

Kiintolevy voidaan "ylikirjoittaa" 100%:sesti magnetisoimalla magneettiset levyt uudelleen voimakkaan magneettikentän avulla. Kun kiintolevy altistetaan voimakkaalle magneettikentälle, kaikki magneettisilla levyillä olevat bitit vaihtavat tilansa tämän voimakkaan magneettikentän mukaiseksi. Tämän jälkeen magneettisilta levyiltä on käytännössä mahdotonta lukea siellä ollutta tietoa. [8]

Uudelleen magnetoinnin jälkeen kiintolevyä voidaan usein käyttää uudelleen. Tosin kiintolevylle tulee suorittaa korkean tason alustus, jotta kiintolevylle voi taas tallentaa tietoa. Mahdollisesti jopa alemman tason alustus täytyy suorittaa uudelleen.

Joissain tapauksissa liian voimakas uudelleen magnetointi voi magnetoida servomoottorin kestomagneetitkin, jonka johdosta servomoottori ei enää toimi. Näissäkin tapauksissa kiintolevyn muita osia voisi periaatteessa kierrättää.

Päätelmät

Tutkielman pohjalta voidaan todeta kiintolevyn tyhjennysmenetelmällä olevan väliä, jos haluaa varmistua, että kiintolevyltä ei voi enää lukea siellä ollutta tietoa.

Menetelmä tulee myös valita sen mukaan haluaako käyttää kiintolevyä uudelleen vai haluaako vain varmistaa, että tiedot tuhotaan pysyvästi.

Peruskansalaiselle sinäänsä riittää, että kiintolevy ylikirjoitetaan kerran nollalla tai ykkösellä. Kerran ylikirjoitus on riittävää, koska harva on niin kiinnostunut kiintolevyn entisestä sisällöstä, että on valmis maksamaan erilaisista tiedonpalautusohjelmista ja -palveluista.

Peruskansalaisen tarpeisiin Linuxin dd-ohjelma [9] on varsin hyvä ja ilmainen. Se osaa kirjoittaa nollaa, ykköstä ja randomia.

On olemassa myös monia ilmaisia ja kaupallisia ylikirjoitusohjelmia, jotka osaavat erilaisia ylikirjoitusstandardeja, mm. Active@ KillDisk? [10] (kaupallinen).

Ja mitä tiedonpalautusohjelmiin tulee, niin yksi parhaista on Ontrack Data Recoveryn EasyRecovery? [11], mutta valitettavasti se on kaupallinen ohjelma.

Lähteet


-- TeroJarvenpaa? - 19 Sep 2009
Print version |  PDF  | History: r1 | 
Topic revision: r1 - 19 Sep 2009 - 18:16:41 - TeroJarvenpaa?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback