Antti Orava:

Tiedon poistaminen kiintolevyltä ja flash-muistilta

Johdanto

Jokaiselle tietokoneen omistajalle tulee eteen tilanne, jolloin vanhan kiintolevyn tai muistitikun/muistikortin myyminen tai kierrättäminen tulee ajankohtaiseksi. Joku poistaa tiedon "deletoimalla" ja joku vähän fiksumpi alustamalla. Nämä eivät kuitenkaan ole tietoturvallisia menetelmiä!

Kerron tutkielmassani erilaisista menetelmistä poistaa tietoa kiintolevyiltä ja flash-muisteilta. Tarkoitus ei ole kertoa tekniikasta liian syvällisesti eikä myöskään keskittyä eri menetelmien ja niiden standardien syövereihin. Tarkoitus on siis tarjota tietopaketti eri menetelmistä, joiden pohjalta voi löytää itselleen riittävän tietoturvallisen tavan poistaa tieto, tutkielman otsikon mukaisilta medioilta.

Mikä on kiintolevy?

Tämän tutkielman kannalta tärkein kiintolevyn (hard disk, hard drive) osa on magneettiset levyt (platters). Enemmän tietoa kiintolevyn rakenteesta, toimintaperiaatteesta ja historista löydät HDDTech:n, Wikipedian ja HowStuffWorksin kiintolevyä käsittelevistä artikkeleista. [1] [2] [3]

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

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 keskustojen (paikka josta luetaan ja kirjoitetaan bittiin) välissä on "raja-alue" (offtrack), joka myös magnetisoituu, kuten itse bittikin. Tätä heikkoa magneettikenttää kutsutaan kaiuksi (echo) ja niidenkin tila on mahdollista lukea. Kaiku-alueelle on mahdollista "varastoitua" useampia viereisien bittien aikaisempia tiloja.

* 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 voidaan myös tarvittessa korvata toisenlaisella konfiguraatiolla. [5] 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.

Menetelmät luvussa esille tuleva ylikirjoitus on myös eräänlainen matalan tason alustusmenetelmä. 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. Ensin luodaan levyosiolle tiedostojärjestelmää varten tiedostotaulu (file allocation table) ja juurihakemistoksi (root directory) kutsuttu data-alue. Seuraavaksi lasketaan sektorien määrä ja tarkistaa niiden tila. Lopuksi merkitään tiedostotauluun sektorien määrä sekä vialliset sektorit joista lukeminen ei onnistunut. [6]

Mikä on Flash-muisti?

Flash-muisti koostuu kelluvaporttisista transistoreista (floating-gate transistors). Nämä voivat olla NOR- tai NAND-tyyppisiä. Yleensä transistoreja kutsutaan muistisoluiksi (memory cells). Muistisolun tila voi olla 0 tai 1 ja sitä muutetaan sähköisesti, mutta itse tilan olemassa oloon ei tarvita sähköä. Kuitenkin, jos flash-muistia ei sähköistetä noin kymmenen vuoden aikana, sen muistisolujen tilat alkavat muuttua. NAND-tyyppinen flash-muisti on tänä päivänä paljon yleisempää kuin NOR-tyyppinen.

Flash-muisteihin tieto tallennetaan lohkoihin (blocks), jotka koostuvat 32-128 sivusta (pages), jossa yhden sivun koko on 512-4096 tavua. Yhden lohkon koko on siis 16-512 kilotavua. NAND-tyyppisen flash-muistin tiedontallennus tapahtuu sivu kerrallaan ja tästä syytä se muistuttaa kiintolevyä (page, 512-4096 tavua vs. sector, 512 tavua). Tiedon poistaminen tosin tehdään lohko kerrallaan.

Flash-muisti on kiintolevyä altiimpi muistisolujen virheille kuin kiintolevy sektorien virheille. Tämä johtuu jo tallennustavan erosta. Flash-muistille tieto tallennetaan sähköisesti transistoreihin, jotka kuluvat aina hieman joka kerta, kun niiden tilaa muutetaan. Kiintolevylle taasen tieto tallennetaan magneettisille levyille, jotka eivät kulu magneettikentän vaikutuksesta, mutta ovat alttiita luku-/kirjoitus-päiden tekemille naarmuille. Flash-muistin transistorien kulumisen takia tarvitaan sisäistä logiikaa, ts. ohjelmallista lohkojen hallintaa (block management, wear-leveling). [7] Lohkojen hallinnan tarkoitus on käyttää kirjoittaessa flash-muistin kapasiteettia mahdollisimman tasaisesti, jotta mikään flash-muistin lohko ei kuluisi merkittävästi muita enemmän.

Myös flash-muistilla täytyy olla tiedostojärjestelmä, jotta flash-muistille voidaan kirjoittaa. Flash-muisti täytyy siis alustaa ennen käyttöönottoa. Lisää Flash-muistin rakenteesta, eri tyypeistä, yms. voit lukea Wikipedian tai HowStuffWorksin flash-muistia käsittelevistä artikkeleista [8] [9].

Menetelmät

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

Poisto (Delete & rm)

Poisto ei varsinaisesti poista tiedostoa kiintolevyltä tai flash-muistilta. Tiedosto kyllä näyttää häviävän, koska 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. Tästä syystä palautus kannattaa suorittaa heti, jos on huomannut poistaneensa jotain mitä ei olisi pitänyt poistaa.

Uudelleen alustus (Re-Format)

Uudelleen alustus tarkoittaa ylemmän tason alustuksen uudelleen suorittamista. Levyosiolle tai flash-muistille luodaan uusi tiedostotaulu ja juurihakemisto. Uudelleen alustus ei kuitenkaan hävitä kaikkea data-alueella olevaa tietoa [10]. Siitä 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ä. Toisin sanoen jokainen bitti voidaan ylikirjoittaa nollaksi (Zero tai ykköseksi One). Random-menetelmä arpoo jokaisen bitin kohdalla tuleeko siitä nolla vai ykkönen. Tämän jälkeen kiintolevy on täynnä ykkösiä ja/tai nollia, eikä siellä ole enää osioita. Ylikirjoitusta voi jo pitää aika varmana menetelmänä, koska siinä koko kiintolevy kirjoitetaan yli, ensimmäisestä viimeiseen sektoriin. Tämä vaikeuttaa selvästi kiintolevyllä olleen tiedon palauttamista, koska alkuperäinen tieto ei enää löydy biteistä.

Flash-muistilta ylikirjoituksen jälkeen on lähes mahdotonta palauttaa tietoa, koska flash-muisti ei perustu magneettiseen tallennustapaan vaan sähköiseen. Ykkösestä nollaksi (tai toisinpäin) muuttunut bitti on nolla (tai ykkönen) eikä siitä jää kaikuja flash-muistille. Tämän rakenteellisen eron takia ylikirjoituksen standardit ja fyysiset menetelmät eivät ole oleellisia flash-muistin kannalta. Niitä voidaan käyttää flash-muisteihin, mutta niiden käytöstä ei saada lisäetua normaaliin ylikirjoitukseen verrattuna.

Ylikirjoitetuiltakin kiintolevyiltä voidaan lukea siellä ollutta tietoa. Tiedonpalautusohjelmat eivät tätä osaa tehdä, mutta teknisesti se on mahdollista. Tarvitaan tekniikkaa jolla kiintolevyn ohjausprosessori uudelleen ohjelmoidaan lukemaan levyllä olevia kaikuja. Vaihtoehtoisesti kiintolevy puretaan ja magneettiset levyt siirretään laitteeseen, jolla niistä voidaan lukea kaiut hyvinkin tarkasti. Toisin sanoen tällä laitteella voidaan lukea useampi bitin aikaisempi tila.

Ylikirjoitusstandardit

Ylikirjoitusstandardien pohjalta tehdään erilaisia ylikirjoitusohjelmia. Standardien mukaan kiintolevy ylikirjoitetaan useaan kertaan peräkkäin eri tavoin. Esim. Gutmannin menetelmällä [11] kiintolevy ylikirjoitetaan ensin muutaman kerran Randomilla, sitten nollaa ja ykköstä erilaisissa järjestyksissä (esim. 010101...; 101010...; 00110011; 11001100; jne.), välissä Zerolla ja Onella sekä lopuksi taas muutaman kerran Randomilla. 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.*

Yleisimpiä ylikirjoitusstandardeja: [12] [13] [14]

- Bruce Schneierin menetelmä, 7 ylikirjoitusta
- HMG Infosec Standard 5, The Baseline Standard, 1 ylikirjoitus
- HMG Infosec Standard 5, The Enhanced Standard, 3 ylikirjoitusta
- Kanadalainen ITSG-06, 3 ylikirjoitusta [15]
- Peter Gutmannin menetelmä, 35 ylikirjoitusta
- Saksalainen BSI/VSITR, 7 ylikirjoitusta
- Venäläinen GOST p50739-95, 1 ylikirjoitus
- Yhdysvaltain armeijan AR380-19, 3 ylikirjoitusta
- Yhdysvaltain ilmavoimien standardi 5020, 4 ylikirjoitusta [16]
- Yhdysvaltain merivoimien NAVSO P-5239-26, 3 ylikirjoitusta [17]
- Yhdysvaltain puolustusministeriön US DoD 5220.22 M, 3 ylikirjoitusta [18]

* 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. Noin 8 ylikirjoitusta on määrittelemäni "keskiarvo" eri tutkimuksien ylikirjoitusmääristä.

Mekaaninen vaurioittaminen

Mekaanisella vaurioittamisella ei sinäänsä pystytä hävittämään tietoa magneettisilta levyiltä. Mekaanisen vaurioittamisen tarkoitus onkin saattaa kiintolevy fyysisesti sellaiseen tilaan, että tiedon lukeminen levyltä olisi mahdollisimman hankalaa.

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 levyt vääntyvät käytännössä lukukelvottomiksi. Molemman tyyppiset kiintolevyt voidaan myös räjäyttää riittävän suurella räjähdyspanoksella tai muuttaa pieneksi puruksi riittävän tehokkaalla metallinrouhijalla. Puru voidaan vielä toimittaa jätteenpolttolaitoksiin, jotka polttavat sen erittäin korkeassa lämpötilassa. [19]

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ä oleva magneettisuus vaihtavat tilansa tämän voimakkaan magneettikentän mukaiseksi. Tämän jälkeen levyiltä on käytännössä mahdotonta lukea siellä ollutta tietoa. [20]

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 kiintolevyn servomoottorin ja luku- ja kirjoituspäiden varren ohjauksen kestomagneettien, magneettisuuden toissuuntaiseksi. Tämä sekoittaa sekä levyjen pyöritysmekanismin että luku- ja kirjoituspäiden varren ohjauksen, joten kiintolevystä tulee käyttökelvoton.

Päätelmät

Varsinkin kiintolevyltä tiedon kokonaan poistaminen on aika työlästä. Tieto täytyy kirjoittaa yli useaan kertaan ja tämä vie aikaa. Helpoimmalla pääsisi jos romuttaisi kiintolevyn. Tämä on ehkä vaihtoehto yrityksen yrityssalaisuuksia sisältävälle kiintolevylle, mutta ei välttämättä normaalin käyttäjän arvokkaalle (käyttö- tai rahallista arvoa) kiintolevylle. Onneksi normaalille käyttäjälle hieman tehottomampikin ylikirjoitusmenetelmä riittää, koska sen jälkeen tiedon ulos saamiseen tarvitaan kalliita laitteita ja ohjelmistoja.

Kiintolevyn ja flash-muistin ylikirjoittamiselle omat haasteensa luovat näiden medioiden erilaiset vaurionhallintajärjestelmät. Syventymättä sen enempää näiden järjestelmien hienouksiin ja erilaisiin ylikirjoitusohjelmiin sanoisin, että hyvin tehdylle ylikirjoitusohjelmalle ne eivät ole este vaan hidaste.

Tähän lopuksi ottaisin kuitenkin esille yhden ilmaisen ja helposti saatavilla olevan ylikirjoitusohjelman. Se on nimeltään dd ja löytyy lähes jokaisesta Linuxista. Se osaa kirjoittaa nollaa ja randomia, sekä pienellä lisätyöllä ykköstä. [21]

Lähteet

-- AnttiOrava? - 16 Nov 2009
Print version |  PDF  | History: r3 < r2 < r1 | 
Topic revision: r3 - 16 Nov 2009 - 21:19:16 - AnttiOrava
 

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