Erinevus lehekülje "Plokkseadme LUKS formaadis krüptimine" redaktsioonide vahel

Allikas: Kuutõrvaja
(Kürptitud plokkseadme kasutamine koos tarkvaralise RAID ja LVM lahendusega)
(Märkused)
 
(ei näidata sama kasutaja 48 vahepealset redaktsiooni)
1. rida: 1. rida:
 
===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.
+
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, tarkvaralise RAID lülituse 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.
+
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. Kõvaketta krüptimine on samuti asjakohane kõvaketta laenutamise või remonti saatmise juhtumil.
  
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.
+
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. Sama tehnikat kasutatakse ka siis, kui Debiani paigaldamisel teha valik, et kasutatakse krüptitud plokkseadmeid.
  
 
LUKS'ile on iseloomulik
 
LUKS'ile on iseloomulik
11. rida: 11. rida:
 
* väidetavalt eeskujulikult dokumenteeritud ja standardne lahendus
 
* väidetavalt eeskujulikult dokumenteeritud ja standardne lahendus
 
* LUKSi saab portida erinevatele platvormidele (osalt järeldub eelmisest), nt http://en.wikipedia.org/wiki/FreeOTFE
 
* LUKSi saab portida erinevatele platvormidele (osalt järeldub eelmisest), nt http://en.wikipedia.org/wiki/FreeOTFE
* haldusprotseduure saab pandlikult sooritada (nt võtmete vahetamine)
+
* haldusprotseduure saab paindlikult 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.
+
Muud tuntud Linux tuuma DM (device mapper) infrastruktuuri kasutavad alamsüsteemid on nt 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
 
Krüptitud plokkseadme kasutamist võiks ette kujutada selliselt
  
 
       /home                /dev/mapper/c_home                /dev/sdb1
 
       /home                /dev/mapper/c_home                /dev/sdb1
   failisüsteem  <--->    loogiline   interface   <--->    füüsiline plokkseade
+
   failisüsteem  <--->    loogiline     liides   <--->    füüsiline plokkseade
 
       nt ext3                encrypt/decrypt
 
       nt ext3                encrypt/decrypt
  
 
* füüsilisel plokkseadmed on andmed krüptitud
 
* 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
+
* selleks, et füüsilisel plokkseadmed olevaid andmed saaks operatsioonisüsteem kasutada moodustatakse loogiline liides, mis on iseenesest samuti plokkseade ja mis töötab vahendajana füüsilise 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
 
* 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)
+
* cryptsetup tarkvara abil juhitakse skeemil kujutatud loogilise liidese tööd (määratakse krüptoalgoritmid, võtmete pikkused jms)
 +
 
 +
Lihtne katse näitab, et krüptimise kasutamine vähendab ca 30% andmekandja kasutamise kiirust ning samal ajal kasutatakse arvuti arvutusressurssi.
  
 
===Ettevalmistused===
 
===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
+
Selleks, et sissejuhatuses kirjeldatud moel krüptimist korraldada peab olema operatsioonisüsteemi tuumas vajalik tugi ning olemas olema vajalik 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
 
   # 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
+
Lisaks peab olema kasutada mõni plokkseade, mida saab hakata krüptitud kasutuseks ettevalmistama, nt olgu fdisk abil moodustatud partitsioon /dev/hdb1 ning kavatsus seda kasutada süsteemi kasutajate kodukataloogide jaoks. 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 (enam-vähem moodsa arvuti puhul saab kiiruseks ca 4 MBait/s)
  
 
   # dd if=/dev/urandom of=/dev/sdb1
 
   # dd if=/dev/urandom of=/dev/sdb1
 +
 +
dd niisama oma edenemise progressi ei näita, kuid saates talle USR1 signaali ütleb ta kaugel on. Nii tuleks vaadata õige protsessi PID
 +
 +
  # ps aux | grep dd
 +
 +
ning saata USR1 signaal
 +
 +
  # kill -USR1 PID
  
 
===Plokkseadmele LUKS formaadi moodustamine===
 
===Plokkseadmele LUKS formaadi moodustamine===
43. rida: 53. rida:
  
 
   # dd if=/dev/random of=/root/cryptsetup-hdb1.key bs=1 count=256
 
   # dd if=/dev/random of=/root/cryptsetup-hdb1.key bs=1 count=256
 +
 +
ning hoolitseme, et see ei oleks teistele kasutajatele ligipääsetav
 +
 +
  # chmod 0600 /root/cryptsetup-hdb1.key
  
 
Plokkseadme krüptimiseks tuleb esmalt plokkseadmele vastav LUKS formaat tekitada öeldes
 
Plokkseadme krüptimiseks tuleb esmalt plokkseadmele vastav LUKS formaat tekitada öeldes
  
 
   # cryptsetup --key-size=256 luksFormat /dev/hdb1 /root/cryptsetup-hdb1.key
 
   # cryptsetup --key-size=256 luksFormat /dev/hdb1 /root/cryptsetup-hdb1.key
 +
 
 +
  WARNING!
 +
  ========
 +
  This will overwrite data on /dev/hdb1 irrevocably.
 +
 
 +
  Are you sure? (Type uppercase yes): YES
 +
  Command successful.
  
 
Tulemus saab vaadata öeldes
 
Tulemus saab vaadata öeldes
  
   # cryptsetup luksDump /dev/wddata/tione
+
   # cryptsetup luksDump /dev/hdb1
 
   LUKS header information for /dev/hdb1
 
   LUKS header information for /dev/hdb1
 
    
 
    
80. rida: 101. rida:
  
 
Siinjuures on näha, et selle ühe ja sama plokkseadme puhul saab kasutada kuni kaheksat erinevat võtit/parooli.
 
Siinjuures on näha, et selle ühe ja sama plokkseadme puhul saab kasutada kuni kaheksat erinevat võtit/parooli.
 +
 +
Kõik krüptoseadet puudutavad andmed sisalduvad formaaditud seadmes endas va ligipääsuks vajalik võti/parool. Kuna nende andmete hoidmiseks on tarvis krüptitud seadmel natuke ruumi, siis kasutatav krüptitud seadmele vastava loogilise seadme maht on pisut väiksem vastava füüsilise seadme mahust.
 +
 +
Lisaks füüsilisele seadmele saab krüptida ka nt tarkvaralise RAID seadmeid või LVM voluume.
  
 
===Krüptitud plokkseadme kasutamine===
 
===Krüptitud plokkseadme kasutamine===
  
Krüptitud plokkseadme kasutamiseks tuleb seade avada öeldes
+
Krüptitud plokkseadme kasutamiseks tuleb seade avada, mille tulemusena moodustatakse operatsioonisüsteemi ja krüptitud plokkseadme vahele device mapperit kasutades loogiline liides, nt nimega /dev/mapper/c_home. Selle liidese poole pöördudes paistavad andmed krüptimata kujul ning /dev/mapper/c_home seadet saab kasutada nagu tavalist plokkseadet. Antud juhul on nimeks valitud c_home, aga see võib olla ka samahästi midagi muud.
  
 
   # cryptsetup --key-file /root/cryptsetup-hdb1.key luksOpen /dev/hdb1 c_home
 
   # cryptsetup --key-file /root/cryptsetup-hdb1.key luksOpen /dev/hdb1 c_home
100. rida: 125. rida:
 
   mode:    read/write
 
   mode:    read/write
  
Tulemusena on moodustatud operatsioonisüsteemi ja krüptitud plokkseadme vahele pala alguses mainitud loogiline interface nimega /dev/mapper/c_home mida saab kasutada nagu tavalist plokkseadet. Antud juhul on nimeks valitud c_home, aga see võib olla ka samahästi midagi muud. Esmakordsel kasutamisel tuleks sinna moodustada failisüsteem
+
====Failisüsteem====
 +
 
 +
Üheks otsekoheseks krüptitud plokkseadme kasutuseks oleks moodustada sinna failisüsteem
  
 
   # mke2fs -j /dev/mapper/c_home
 
   # mke2fs -j /dev/mapper/c_home
112. rida: 139. rida:
 
   # umount /dev/mapper/c_home
 
   # umount /dev/mapper/c_home
  
ja sulgeda loogiline interface, sulgemisel pole vaja võtit/parooli näidata
+
ja sulgeda loogiline liides, sulgemisel pole vaja võtit/parooli näidata
  
 
   # cryptsetup luksClose c_home
 
   # cryptsetup luksClose c_home
 +
 +
Selleks, et failisüsteemi külgeühendamine toimuks arvuti alglaadimisel automaatselt sobib kasutada faili /etc/crypttab sisuga kusjuures võtme loabittide väärtuseks on 0600
 +
 +
  c_home /dev/hdb1 /root/cryptsetup-hdb1.key luks
 +
 +
ja /etc/fstab
 +
 +
  /dev/mapper/c_home /home ext3 defaults 0 2
 +
 +
Arvuti töötamise ajal saab /etc/crypttab'iga töötamist esile kutsuda öeldes
 +
 +
  # /etc/init.d/cryptdisks start | stop
 +
 +
====LVM====
 +
 +
Krüptitud plokkseadet saab kasutada ka LVM PV seadmena, selleks sobib öelda
 +
 +
  # pvcreate /dev/mapper/c_home
 +
 +
Ja kasutada edasi nagu tavalisel LVM puhul plokkseadet kasutatakse.
  
 
===Krüptitud seadme haldamine===
 
===Krüptitud seadme haldamine===
134. rida: 181. rida:
 
Krüptitud seadme kasutamise lõpetamiseks tuleb kõik võtmed hävitada ja võtta seade uude kasutusse.
 
Krüptitud seadme kasutamise lõpetamiseks tuleb kõik võtmed hävitada ja võtta seade uude kasutusse.
  
===Kürptitud plokkseadme kasutamine koos tarkvaralise RAID ja LVM lahendusega===
+
===Plokkseadme krüptimine koos tarkvaralise RAID ja LVM lahendusega===
  
 
Kuna plokkseadme krüptimisel on nö sisendiks ja väljundiks samuti plokkseade, siis saab seda teha RAID ja LVM lahenduse puhul põhimõtteliselt kolmes kohas
 
Kuna plokkseadme krüptimisel on nö sisendiks ja väljundiks samuti plokkseade, siis saab seda teha RAID ja LVM lahenduse puhul põhimõtteliselt kolmes kohas
  
*  failsüsteem -> LVM -> RAID -> krüptitud füüsiline seade (nt /dev/hdb1)
+
*  failsüsteem -> LVM -> RAID -> loogiline liides -> krüptitud füüsiline seade (nt /dev/hdb1)
*  failsüsteem -> LVM -> krüptitud RAID seade (nt /dev/md0)-> füüsiline seade
+
*  failsüsteem -> LVM -> loogiline liides -> krüptitud RAID seade (nt /dev/md0)-> füüsiline seade
*  failsüsteem -> krüptitud LVM voluum (nt /dev/system/home) -> RAID -> füüsiline seade
+
*  failsüsteem -> loogiline liides -> krüptitud LVM voluum (nt /dev/system/home) -> RAID -> füüsiline seade
 +
 
 +
Valiku tegemisel peab arvestama, millised asjaolud on olulised
 +
 
 +
* Krüptida LVM voluume, siis saab igale voluumile omistada erineva parooli/võtmega; kui krüptida kiht madalamal, siis on kõik voluumid plokkseadme krüptimise mõttes kaitstud sama LUKS parooli/võtmega.
 +
* Krüptides RAID skeemi koosseisu kuuluvat füüsilist seadet tuleb arvutil kõnealust RAID skeemi kasutades teha asjatult mitmekordset krüptimist (nt kui RAID skeemi koosseisu kuulub 5 füüsilist seadet).
 +
 
 +
Tundub, et nö keskmisel kasutusjuhul on kõige mõistlikum krüptida RAID seadet.
 +
 
 +
===Jõudlus===
 +
 
 +
Arusaadavalt vähendab krüptimine failisüsteemi kasutamise kiirust. Muidu samades tingimustes pöördumisel otse krüptitud seadme ja vastava loogilise seadme poole on erinevus nii lugemisel kui kirutamisel ca 30%
 +
 
 +
Füüsilise seadme kasutamine, nb! kirjutades otse loogilisele seadmele vastavale füüsilisele seadmele hävineb loogiline seade
 +
 
 +
  # dd if=/dev/hdb1 of=/dev/null bs=1024x1024 count=10240
 +
  10737418240 bytes (11 GB) copied, 98.8812 s, 109 MB/s
 +
 
 +
  # dd if=/dev/zero of=/dev/hdb1 bs=1024x1024 count=10240
 +
  10737418240 bytes (11 GB) copied, 109.111 s, 98.4 MB/s
 +
 
 +
Läbi vastava loogilise liidese kasutamine
 +
 
 +
  # dd if=/dev/mapper/c_home of=/dev/null bs=1024x1024 count=10240
 +
  10737418240 bytes (11 GB) copied, 135.59 s, 79.2 MB/s
 +
 
 +
  # dd if=/dev/zero of=/dev/mapper/c_home bs=1024x1024 count=10240
 +
  10737418240 bytes (11 GB) copied, 156.887 s, 68.4 MB/s
 +
 
 +
===Märkused===
  
Valiku tegemisel peab arvestama, millised asjaolud on olulised. Nt kui krüptida LVM voluume, siis saab igale voluumile omistada erineva parooli/võtmega; kui krüptida kiht madalamal, siis on kõik voluumid plokkseadme krüptimise mõttes kaitstud sama LUKS parooli/võtmega.
+
* Mitme protsessoriga arvutil mdadm ja cryptsetup koos kasutamisel tekib idee krüptida igat seadet eraldi ja ühendada krüptitud plokkseadmed kokku tarkvaraliseks raid lülituseks kuna nii krüptimise töö jaotub ühe asemel mitme kcryptd protsessi. Sisulist kasu sellest siiski ei tõuse kuna krüptitavate andmete maht mitmekordistub samuti.
 +
* Kui on väga suured plokkseadmed ning aega napib, siis üks variant oleks genereerida nt 1/4 kõvakettale juhuslikud andmed ning seda muudele osadele edasi kopeerida.
  
 
===Kasulikud lisamaterjalid===
 
===Kasulikud lisamaterjalid===
  
 +
* man crypttab, man cryptsetup, dpkg -L cryptsetup
 
* http://en.wikipedia.org/wiki/LUKS
 
* http://en.wikipedia.org/wiki/LUKS
 
* http://www.saout.de/tikiwiki/tiki-index.php?page=EncryptedDeviceUsingLUKS
 
* http://www.saout.de/tikiwiki/tiki-index.php?page=EncryptedDeviceUsingLUKS
 
* http://linuxgazette.net/140/pfeiffer.html
 
* http://linuxgazette.net/140/pfeiffer.html
 +
* https://help.ubuntu.com/community/EncryptedFilesystemLVMHowto
 +
* [[:Tarkvaraline RAID - mdadm]]
 +
* http://diskcryptor.net/wiki/Main_Page

Viimane redaktsioon: 11. august 2010, kell 16:39

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, tarkvaralise RAID lülituse 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. Kõvaketta krüptimine on samuti asjakohane kõvaketta laenutamise või remonti saatmise juhtumil.

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. Sama tehnikat kasutatakse ka siis, kui Debiani paigaldamisel teha valik, et kasutatakse krüptitud plokkseadmeid.

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 paindlikult sooritada (nt võtmete vahetamine)

Muud tuntud Linux tuuma DM (device mapper) infrastruktuuri kasutavad alamsüsteemid on nt 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      liides    <--->    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 liides, mis on iseenesest samuti plokkseade ja mis töötab vahendajana füüsilise 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 liidese tööd (määratakse krüptoalgoritmid, võtmete pikkused jms)

Lihtne katse näitab, et krüptimise kasutamine vähendab ca 30% andmekandja kasutamise kiirust ning samal ajal kasutatakse arvuti arvutusressurssi.

Ettevalmistused

Selleks, et sissejuhatuses kirjeldatud moel krüptimist korraldada peab olema operatsioonisüsteemi tuumas vajalik tugi ning olemas olema vajalik 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 ning kavatsus seda kasutada süsteemi kasutajate kodukataloogide jaoks. 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 (enam-vähem moodsa arvuti puhul saab kiiruseks ca 4 MBait/s)

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

dd niisama oma edenemise progressi ei näita, kuid saates talle USR1 signaali ütleb ta kaugel on. Nii tuleks vaadata õige protsessi PID

 # ps aux | grep dd

ning saata USR1 signaal

 # kill -USR1 PID

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

ning hoolitseme, et see ei oleks teistele kasutajatele ligipääsetav

 # chmod 0600 /root/cryptsetup-hdb1.key

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

 # cryptsetup --key-size=256 luksFormat /dev/hdb1 /root/cryptsetup-hdb1.key
 
 WARNING!
 ========
 This will overwrite data on /dev/hdb1 irrevocably.
 
 Are you sure? (Type uppercase yes): YES
 Command successful.

Tulemus saab vaadata öeldes

 # cryptsetup luksDump /dev/hdb1
 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.

Kõik krüptoseadet puudutavad andmed sisalduvad formaaditud seadmes endas va ligipääsuks vajalik võti/parool. Kuna nende andmete hoidmiseks on tarvis krüptitud seadmel natuke ruumi, siis kasutatav krüptitud seadmele vastava loogilise seadme maht on pisut väiksem vastava füüsilise seadme mahust.

Lisaks füüsilisele seadmele saab krüptida ka nt tarkvaralise RAID seadmeid või LVM voluume.

Krüptitud plokkseadme kasutamine

Krüptitud plokkseadme kasutamiseks tuleb seade avada, mille tulemusena moodustatakse operatsioonisüsteemi ja krüptitud plokkseadme vahele device mapperit kasutades loogiline liides, nt nimega /dev/mapper/c_home. Selle liidese poole pöördudes paistavad andmed krüptimata kujul ning /dev/mapper/c_home seadet saab kasutada nagu tavalist plokkseadet. Antud juhul on nimeks valitud c_home, aga see võib olla ka samahästi midagi muud.

 # cryptsetup --key-file /root/cryptsetup-hdb1.key luksOpen /dev/hdb1 c_home
 key slot 0 unlocked.
 Command successful.

Avatud seadme kohta saab küsida tema andmeid nii

 # cryptsetup status c_home
 /dev/mapper/c_home is active:
 cipher:  aes-cbc-essiv:sha256
 keysize: 256 bits
 device:  /dev/dm-43
 offset:  2056 sectors
 size:    100661240 sectors
 mode:    read/write

Failisüsteem

Üheks otsekoheseks krüptitud plokkseadme kasutuseks oleks moodustada sinna failisüsteem

 # mke2fs -j /dev/mapper/c_home

ning seejärel saab ta külge ühendada ning kasutama asuda, andmete krüptimisega eest hoolitseb Linuxi tuum

 # mount /dev/mapper/c_home /home

Kasutamise lõpetamiseks tuleb ühendada failisüsteem lahti

 # umount /dev/mapper/c_home

ja sulgeda loogiline liides, sulgemisel pole vaja võtit/parooli näidata

 # cryptsetup luksClose c_home

Selleks, et failisüsteemi külgeühendamine toimuks arvuti alglaadimisel automaatselt sobib kasutada faili /etc/crypttab sisuga kusjuures võtme loabittide väärtuseks on 0600

 c_home /dev/hdb1 /root/cryptsetup-hdb1.key luks

ja /etc/fstab

 /dev/mapper/c_home /home ext3 defaults 0 2

Arvuti töötamise ajal saab /etc/crypttab'iga töötamist esile kutsuda öeldes

 # /etc/init.d/cryptdisks start | stop

LVM

Krüptitud plokkseadet saab kasutada ka LVM PV seadmena, selleks sobib öelda

 # pvcreate /dev/mapper/c_home

Ja kasutada edasi nagu tavalisel LVM puhul plokkseadet kasutatakse.

Krüptitud seadme haldamine

Kõige levinumaks haldusprotseduuriks on krüptitud seadmega seotud paroolide/võtmetega tegelemine. Nt saab võtme lisada öeldes

 # cryptsetup --key-file /root/cryptsetup-hdb1.key luksAddKey /dev/hdb1 /root/cryptsetup-hdb1-teine.key

Seejuures tuleb tähele panna, et nüüd saab kasutada sama krüptitud seadet nende mõlema võtmega.

Võtme eemaldamiseks tuleb öelda

 # cryptsetup --key-file /root/cryptsetup-hdb1.key luksKillSlot /dev/hdb1 1
 key slot 1 verified.
 Command successful.

Oluline on mitte kõiki võtmeid/paroole eemaldada, vastasel korral ei pääse enam andmetele juurde.

Krüptitud seadme kasutamise lõpetamiseks tuleb kõik võtmed hävitada ja võtta seade uude kasutusse.

Plokkseadme krüptimine koos tarkvaralise RAID ja LVM lahendusega

Kuna plokkseadme krüptimisel on nö sisendiks ja väljundiks samuti plokkseade, siis saab seda teha RAID ja LVM lahenduse puhul põhimõtteliselt kolmes kohas

  • failsüsteem -> LVM -> RAID -> loogiline liides -> krüptitud füüsiline seade (nt /dev/hdb1)
  • failsüsteem -> LVM -> loogiline liides -> krüptitud RAID seade (nt /dev/md0)-> füüsiline seade
  • failsüsteem -> loogiline liides -> krüptitud LVM voluum (nt /dev/system/home) -> RAID -> füüsiline seade

Valiku tegemisel peab arvestama, millised asjaolud on olulised

  • Krüptida LVM voluume, siis saab igale voluumile omistada erineva parooli/võtmega; kui krüptida kiht madalamal, siis on kõik voluumid plokkseadme krüptimise mõttes kaitstud sama LUKS parooli/võtmega.
  • Krüptides RAID skeemi koosseisu kuuluvat füüsilist seadet tuleb arvutil kõnealust RAID skeemi kasutades teha asjatult mitmekordset krüptimist (nt kui RAID skeemi koosseisu kuulub 5 füüsilist seadet).

Tundub, et nö keskmisel kasutusjuhul on kõige mõistlikum krüptida RAID seadet.

Jõudlus

Arusaadavalt vähendab krüptimine failisüsteemi kasutamise kiirust. Muidu samades tingimustes pöördumisel otse krüptitud seadme ja vastava loogilise seadme poole on erinevus nii lugemisel kui kirutamisel ca 30%

Füüsilise seadme kasutamine, nb! kirjutades otse loogilisele seadmele vastavale füüsilisele seadmele hävineb loogiline seade

 # dd if=/dev/hdb1 of=/dev/null bs=1024x1024 count=10240
 10737418240 bytes (11 GB) copied, 98.8812 s, 109 MB/s
 # dd if=/dev/zero of=/dev/hdb1 bs=1024x1024 count=10240
 10737418240 bytes (11 GB) copied, 109.111 s, 98.4 MB/s

Läbi vastava loogilise liidese kasutamine

 # dd if=/dev/mapper/c_home of=/dev/null bs=1024x1024 count=10240
 10737418240 bytes (11 GB) copied, 135.59 s, 79.2 MB/s
 # dd if=/dev/zero of=/dev/mapper/c_home bs=1024x1024 count=10240
 10737418240 bytes (11 GB) copied, 156.887 s, 68.4 MB/s

Märkused

  • Mitme protsessoriga arvutil mdadm ja cryptsetup koos kasutamisel tekib idee krüptida igat seadet eraldi ja ühendada krüptitud plokkseadmed kokku tarkvaraliseks raid lülituseks kuna nii krüptimise töö jaotub ühe asemel mitme kcryptd protsessi. Sisulist kasu sellest siiski ei tõuse kuna krüptitavate andmete maht mitmekordistub samuti.
  • Kui on väga suured plokkseadmed ning aega napib, siis üks variant oleks genereerida nt 1/4 kõvakettale juhuslikud andmed ning seda muudele osadele edasi kopeerida.

Kasulikud lisamaterjalid