Plokkseadme LUKS formaadis krüptimine

Allikas: Kuutõrvaja
Redaktsioon seisuga 24. detsember 2008, kell 12:42 kasutajalt Imre (arutelu | kaastöö) (Plokkseadme krüptimine)

Plokkseadme krüptimine

Kõvakettal olevaid andmeid saab krüptida mitmes kihis, alates plokkseadme plokkidest (need tavaliselt 512 baidi suurused tükid) kuni failisüsteemis asuvate üksikute failide krüptimiseni. Järgnev käsitleb plokkseadme (nt partitsiooni või LVM voluumi) krüptimist.

Plokkseadme krüptimine on üks andmekandja füüsilise turvalisusega seotud instrument. St kui nt krüptitud ja parasjagu kasutuses mitte olev kõvaketas kaotsi läheb või ära varastatakse, siis ei saa seda kasutada ilma vastava parooli või võtmeta. Kui aga krüptitud plokkseadmelt on failisüsteem külge ühendatud, siis ei paku asjaolu, et plokkseade on krüptitud mingit täiendavat kaitset nt süsteemi sisse murdnud pahalase eest.

Andmekandjal asuvate andmete sh plokkseadme krüptimiseks on konstrueeritud mitmesuguseid tehnikaid, käesolevas palas tutvustatakse Linuxi tuuma dm-crypt alamsüsteemi abil LUKS (ingl. k. Linux Unified Key Setup) formaadis andmete krüptimist. Kerneli vastavate funktsioonide juhtimiseks kasutatakse tarkvara cryptsetup.

LUKS'ile on iseloomulik

  • väidetavalt eeskujulikult dokumenteeritud ja standardne lahendus
  • LUKSi saab portida erinevatele platvormidele (osalt järeldub eelmisest), nt http://en.wikipedia.org/wiki/FreeOTFE
  • haldusprotseduure saab pandlikult sooritada (nt võtmete vahetamine)

Muud tuntud Linux tuuma DM (device mapper) infrastruktuuri kasutav alamsüsteem on LVM2 (Logical Volume Management) ja multipath. DM võimaldab moodustada füüsilistele plokkseadmetele nn virtuaalseid kihte.

Krüptitud plokkseadme kasutamist võiks ette kujutada selliselt

      /home                /dev/mapper/c_home                 /dev/sdb1
  failisüsteem   <--->    loogiline   interface    <--->    füüsiline plokkseade
     nt ext3                encrypt/decrypt
  • füüsilisel plokkseadmed on andmed krüptitud
  • selleks, et füüsilisel plokkseadmed olevaid andmed saaks operatsioonisüsteem kasutada moodustatakse loogiline interface, mis tegeleb vahendajana plokkseadme ja nö muu arvuti vahel ja mille ülesanne on ühes suunas liikuvaid andmeid krüptida ja teises suunas lahti krüptida
  • failisüsteemi kiht (ja seda kasutavad rakendusprogrammid) kasutab nö tavalist plokkseadet ja ei pea midagi teadma seal taga toimuvast krüptimisest
  • cryptsetup tarkvara abil juhitakse skeemil kujutatud loogilise interface'i tööd (määratakse krüptoalgoritmid, võtmete pikkused jms)

Ettevalmistused

Selleks, et sissejuhatuses kirjeldatud moel krüptimist korraldada peab olema operatsioonisüsteemi tuumas vajalik tugi ning olemas olema vajalikud haldustarkvara. Moodsates Linuxi distributsioonides sisaldub üldiselt kõik vajalik ja midagi ei ole kompileerida tarvis. Debian GNU/Linuxi kasutamisel piisab kui öelda

 # apt-get install cryptsetup

Lisaks peab olema kasutada mõni plokkseade, mida saab hakata krüptitud kasutuseks ettevalmistama, nt olgu fdisk abil moodustatud partitsioon /dev/hdb1. Lisaks soovitatakse see seade ennem kasutamist kirjutada üle juhuslike andmetega, nt piisavalt kvaliteetse tulemuse võiks saada nii, arusaadavalt hävivad seejuures partitsioonil olnud andmed

 # dd if=/dev/urandom of=/dev/sdb1

Plokkseadmele LUKS formaadi moodustamine

Krüptimisel on oluline kasutatav võti, cryptsetup võimaldab kasutada kas failis asuvat võtit või klaviatuurilt sisestatavat parooli. Järgnevas on eelistatud võtme kasutamist failist, kuna sel moel on võtme materjal kvaliteetsem ning praktiliseks kasutamiseks ehk ka mugavam, nt saab bootimisel võtme anda arvutile ette USB pulgalt. Vajadusel saab LUKS võtme omakorda krüptida nt parooliga.

Moodustame 256 baidi pikkuse võtme

 # dd if=/dev/random of=/root/cryptsetup-hdb1.key bs=1 count=256

Plokkseadme krüptimiseks tuleb esmalt plokkseadmele vastav LUKS formaat tekitada öeldes

 # cryptsetup --key-size=256 luksFormat /dev/hdb1 /root/cryptsetup-hdb1.key

Tulemus saab vaadata öeldes

 # cryptsetup luksDump /dev/wddata/tione 
 LUKS header information for /dev/hdb1
 
 Version:        1
 Cipher name:    aes
 Cipher mode:    cbc-essiv:sha256
 Hash spec:      sha1
 Payload offset: 2056
 MK bits:        256
 MK digest:      69 84 d4 bb 3f 67 0b ac f3 8f 84 b3 4c f7 08 2e 9c 9a c2 ca 
 MK salt:        ab e9 db 52 73 54 62 0a 2d bb a3 0e 6b c1 f6 fe 
                 6b 42 c7 bb f2 41 4b 2e 12 61 33 ac 5b ff 82 f6 
 MK iterations:  10
 UUID:           0a9ca3d6-7e86-4fc6-999c-153b0fd0d266
 
 Key Slot 0: ENABLED
         Iterations:             424787
         Salt:                   87 7b 1c da 55 bb 0f d2 cc ef a3 a9 f5 e1 ed fa 
                                 8b 16 05 53 66 29 ae bf f5 3e e9 b7 d3 fc 39 5e 
         Key material offset:    8
         AF stripes:             4000
 Key Slot 1: DISABLED
 Key Slot 2: DISABLED
 Key Slot 3: DISABLED
 Key Slot 4: DISABLED
 Key Slot 5: DISABLED
 Key Slot 6: DISABLED
 Key Slot 7: DISABLED

Siinjuures on näha, et selle ühe ja sama plokkseadme puhul saab kasutada kuni kaheksat erinevat võtit/parooli.

Krüptitud plokkseadme kasutamine

Kasulikud lisamaterjalid