» »

Šifriranje nosilcev podatkov v okolju Linux in Windows

Cryptography is a data-protection technology just as gloves are a hand-protection technology. Cryptography protects data from hackers, corporate spies and con artists, whereas gloves protect hands from cuts, scrapes, heat, cold and infection. The former can frustrate FBI wiretapping, and the latter can thwart FBI fingerprint analysis. Cryptography and gloves are both dirt-cheap and widely available. In fact, you can download good cryptographic software from the Internet for less than the price of a good pair of gloves.

--Ronald L. Rivest (1998), The Case Against Regulating Encryption Technology



Ena izmed mo┼żnosti napada na ra─Źunalni┼íke sisteme je tudi tim. offline napad, torej napad, ko napadalec pridobi fizi─Źni dostop do ra─Źunalnika medtem, ko je le-ta ugasnjen. Mo┼żnosti napadov na ra─Źunalnike je v tem primeru ve─Ź (npr. podtikanje razli─Źnih strojnih "dodatkov" ali nalaganje spremenjenega firmwarea na strojno opremo), najve─Źjo nevarnost pa verjetno predstavlja dostop do trdega diska in podatkov na njem. In to ne samo podatkov, ki so na disku zapisani, pa─Ź pa tudi podatkov, ki so bili iz diska izbrisani, ne pa tudi prepisani. V primeru USB diskov in prenosnih ra─Źunalnikov pa nevarnost predstavlja tudi izguba oz. kraja. Napadalci si v tem primeru lahko pomagajo z tim. ┼żivimi CD-ji (ang. live CD) ter s forenzi─Źnimi orodji kot so Testdisk, PhotoRec, Get Data Back, Autopsy Forensic Browser in drugimi.

Kako se boriti proti tak┼ínim napadom? Re┼íitev je razmeroma enostavna - z uporabo ┼íifriranja. ┼áifrirati je mogo─Źe celoten sistem oziroma trdi disk iz katerega se za┼żene operacijski sistem (razen majhnega zagonskega razdelka), kar je v ve─Źini operacijskih sistemov nekoliko bolj zapleteno opravilo (velja tako za ve─Źino Windows kot tudi ve─Źino Linux distribucij). V tokratnem ─Źlanku pa si bomo ogledali kako je mogo─Źe v Ubuntu Linuxu uporabljati ┼íifrirane razdelke (particije) in prenosne USB diske.

┼áifriranje nosilcev podatkov ima dolo─Źene prednosti, pa tudi dolo─Źene pomankljivosti. Glavna pomankljivost je v tem, da s ┼íifriranjem izgubimo prenosljivost. ┼áifrirni programi namre─Ź niso name┼í─Źeni na vsakem ra─Źunalniku in zato ┼íifriranih nosilcev podatkov ne moremo uporabiti kjerkoli, poleg tega za zagon ┼íifrirnega programa praviloma potrebujemo administratorski dostop. Ena izmed mo┼żnih re┼íitev je, da si na prenosnem USB disku naredimo dodatni manj┼íi FAT32 razdelek, kjer shranimo ┼íifrirni program, s katerim bomo na ciljnem ra─Źunalniku lahko priklopili ┼íifrirani nosilec podatkov. Problem prenosljivosti pa odpade, kadar ┼íifrirane USB diske uporabljamo na omejenem ┼ítevilu ra─Źunalnikov (npr. za prenos datotek od doma v slu┼żbo), ali kadar prenosni disk uporabljamo za izdelavo varnostnih kopij. V primeru kraje ali izgube prenosnega diska namre─Ź varnost podatkov ne bo ogro┼żena. Izdelamo pa si lahko tudi ┼íifrirane virtualne razdelke, ki jih shranimo na CD, DVD ali podobne nosilce podatkov.

Prednosti ┼íifriranja pomnilni┼íkih medijev je na precej zabaven na─Źin opisal eden izmed razvijalcev operacijskega sistema Debian, Uwe Hermann:

After unmounting, nobody will be able to see your data without knowing the correct passphrase. Drive is stolen? No problem.
Drive is broken, and you want to send it in for repair without the guys there poking in your data? No problem.
You leave the USB drive at home and some jerk breaks into your house, steals your drive, rapes your wife, and kills your kids? No problem.
Well, sort of, but you get the idea ;-)


┼áe opozorilo. Uporaba ┼íifriranja lahko v primeru napake oziroma okvare trdega diska privede do izgube podatkov. V primeru uporabe ┼íifriranja zato poskrbite za ustrezne varnostne kopije. Podatki naj se nikoli ne nahajajo samo na enem (┼íifriranem) nosilcu. Prav tako je pri uporabi spodaj opisanih postopkov potrebno nekaj previdnosti, predvsem pri izbiri ciljnega razdelka in formatiranju diska. ─îe gre za ob─Źutljive podatke pa je potrebno razmisliti ali ni smiselno, da so prav vse kopije podatkov ┼íifrirane. Opisane metode je mogo─Źe uporabiti za vse vrste pomnilni┼íkih nosilcev, ne samo USB diske.

Opisani postopki so bili preiskušeni v Linuxu Ubuntu 7.04 Feisty Fawn in Windows 2000 ter Windows Xp. Za uporabo v ostalih Linux/Windows distribucijah jih je potrebno smiselno prilagoditi.


Na─Źini ┼íifriranja podatkovnih nosilcev



Pri šifriranju podatkovnih nosilcev sta na voljo dva koncepta. Lahko:


Šifriranje celotnega razdelka

V tem primeru izbire tega na─Źina ┼íifriranja, med fizi─Źni nosilec in datote─Źni sistem "vrinemo" ┼íe dodaten "nivo", ki skrbi za ┼íifriranje. Tipi─Źno to izgleda takole: najprej imamo nek fizi─Źni razdelek, recimo /dev/sdc3, ki ga priklju─Źimo na virtualni ┼íifrirani razdelek, npr. /dev/mapper/crypto_sdc3, le-tega pa potem priklju─Źimo v sistem, recimo na /media/USB-crypt. Ta razdelek nato formatiramo s poljubnim datote─Źnim sistemom in nanj zapisujemo datoteke.



Ko torej zapi┼íemo neko datoteko na /media/USB-crypt, se datoteka najprej zapi┼íe na "virtualni" nosilec, sledi ┼íifriranje na /dev/mapper/crypto_sdc3 in na koncu fizi─Źno shranjevanje ┼íifriranih podatkov na /dev/sdc3.

Šifriranje datoteke, ki jo priklopimo kot virtualni razdelek

Drugi koncept pa je uporaba šifrirane datoteke, ki jo priklopimo kot virtualni razdelek. V tem primeru imamo nekje na disku šifrirano datoteko, ki jo priklopimo kot poseben, nov virtualni razdelek na katerega potem zapisujemo podatke.

Podatki se v tem primeru zapisujejo namesto na razdelek v datoteko (oz. virtualni razdelek), torej imamo pribli┼żno tako strukturo: "virtualni" razdelek - ┼íifriranje - shranjevanje v datoteko, ki je priklju─Źena kot virtualni razdelek - datoteka se nahaja na poljubnem fizi─Źnem nosilcu.




Ostale mo┼żnosti ┼íifriranja

Za ┼íifiranje lahko uporabimo geslo (password, passphrase) in/ali tim "datoteko s klju─Źem" (key file), datoteko, katere vsebina predstavlja ┼íifrirni klju─Ź za dostop do ┼íifriranega razdelka. Uporabimo lahko tekstovne, glasbene ali kak┼íne druge datoteke. Seveda pa v primeru uporabe datoteke s klju─Źem njene vsebine kasneje ne smemo ve─Ź spreminjati, saj v nasprotnem primeru do ┼íifriranih podatkov ne bomo mogli ve─Ź dostopati. Na izbiro imamo tudi razli─Źne ┼íifrirne metode (algoritme), ve─Źinoma pa je najbolj enostavno uporabiti privzete (navadno je to AES).

Pri tem pa sodobni ┼íifrirni programi uporabljajo zelo koristen trik. Geslo, ki ga vnesemo v ┼íifrirni program namre─Ź ne predstavlja tudi ┼íifrirnega klju─Źa. Podatki se namre─Ź ┼íifrirajo z nekim stati─Źnim ┼íifrirnim klju─Źem (to je npr. nek naklju─Źen niz znakov), ki je shranjen nekje v ┼íifriranem razdelku (navadno kje na za─Źetku) ter za┼íifriran z na┼íim geslom, ki v tem primeru predstavlja lo─Źeni ┼íifrirni klju─Ź. De┼íifriranje torej poteka takole: najprej vnesemo geslo (ali podamo datoteko-klju─Ź), s katerim "odklenemo" stati─Źni ┼íifrirni klju─Ź do na┼íih podatkov. S tem klju─Źem potem de┼íifriramo na┼íe podatke.

Zakaj je to koristno? Zato, ker nam to omogo─Źa enostavno spreminjanje gesel. ─îe bi namre─Ź ┼żeleli spremeniti oz. zamenjati stati─Źni ┼íifrirni klju─Ź, bi morali ob vsaki spremembi le-tega celotni ┼íifrirani razdelek na novo prekodirati. To pa je precej zamudno opravilo. ─îe pa ┼żelimo to storiti v primeru uporabe lo─Źenega ┼íifrinega klju─Źa (npr. gesla), se ob spremembi gesla prekodira samo kriptogram stati─Źnega ┼íifrirnega klju─Źa, kar je bistveno hitreje kot prekodiranje vseh podatkov.

Po drugi strani pa ima ta pristop tudi neko nevarnost. Recimo, da ┼íifrirani razdelek uporablja ve─Ź uporabnikov. Uporabnik, ki ima ustrezno geslo, si lahko prekopira tisti del datoteke, ki vsebuje stati─Źni ┼íifrirni klju─Ź (za┼íifriran z njegovim trenutnim geslom). Ko izgubi dostop do ┼íifriranih podatkov (mu na primer spremenimo geslo), lahko tak uporabnik na novo prekodirani stati─Źni ┼íifrirni klju─Ź prepi┼íe s staro kopijo (za katero pa ima geslo) in s tem kasneje pridobi dostop do podatkov. Napadalec z ustreznim dostopom lahko stati─Źni ┼íifrirni klju─Ź prekopira tudi ko je ┼íifrirani razdelek aktiven (priklopljen).

V nadaljevanju so bomo ogledali dve re┼íitvi, ki ju je mogo─Źe uporabiti tako v okolju Linux, kot v okolju Windows. Prva re┼íitev, orodje cryptsetup, je v osnovi razvito za Linux, kasneje pa je bil razvit tudi program, ki omogo─Źa uporabo ┼íifriranih razdelkov v okolju Windows. Drugi program, TrueCrypt, pa je bil v osnovi razvit za okolje Windows, kasneje pa prene┼íen v okolje Linux.

Ogledali si bomo kako uporabiti oba programa za ┼íifriranje obi─Źajnih in virtualnih razdelkov z geslom. Mimogrede: TrueCrpyt omogo─Źa razmeroma enostavno izdelavo varnostne kopije stati─Źnega ┼íifrirnega klju─Źa (Backup Volume Header / Restore Volume Header), to pa je mogo─Źe tudi s cryptsetupom (gre za izvoz tim. vzglavja diskovnega razdelka (ang. partition header) oz. metapodatkov (ang. metadata). Ker izvoz stati─Źnega ┼íifrirnega klju─Źa na neza┼í─Źiten medij lahko privede do izgube nadzora nad ┼íifrirnim klju─Źem, tega sicer razmeroma enostavnega postopka podrobneje ne bomo opisovali.

Izbira ustreznega razdelka



Najprej je seveda potrebno previdno izbrati razdelek, ki ga ┼żelimo prepisati oz. ga ┼íifrirati. V primeru napake so podatki na napa─Źno izbranem razdelku za vedno izgubljeni! Zato vedno dvakrat preverimo s katerim razdelkom bomo delali. Pred prepisovanjem oziroma name┼í─Źanjem ┼íifrirne sheme tudi naredimo varnostno kopijo podatkov!

V okolju Linux izbiro ustreznega razdelka na USB klju─Źu opravimo tako, da najprej priklopimo (USB) disk na katerega bomo namestili ┼íifrirno shemo in pogledamo njegovo lokacijo (kam je priklopljen) z ukazom:
  mount

Dobimo na primer naslednji izpis:
  /dev/sdc3 on /media/USB type reiserfs (rw,noexec,nosuid,nodev)

Iz izpisa sledi, da je tretji razdelek USB diska z imenom USB, ki je priklju─Źen na mesto /media/USB, fizi─Źno gledano naprava na /dev/sdc3. Ker smo se odlo─Źili, da bomo ┼íifrirno shemo namestili na tretji razdelek USB diska, bomo torej v nadaljevanju delali z napravo /dev/sdc3.

Katere razdelke (tudi nepriklju─Źene) imamo na voljo v sistemu lahko preverimo tudi z ukazom:
  sudo sfdisk -l

V okolju Windows si seznam priklju─Źenih diskovnih razdelkov pogledamo s klikom na ikono Moj ra─Źunalnik/My Computer oz. z desnim klikom na to ikono, izbiro mo┼żnosti Upravljaj/Manage ter pod Shramba/Storage izberemo Upravljanje diskov/Logical Drives.

Prepis diska ali razdelkov z naklju─Źnimi podatki



Preden se lotimo ┼íifriranja podatkovnih nosilcev je dobro razmisliti o uni─Źenju starih podatkov na njih oziroma prepis nosilcev podatkov z naklju─Źnimi podatki. Prepisovanje diska z naklju─Źnimi podatki sicer ni nujno potrebno, je pa priporo─Źljivo.

Razlogov za to je ve─Ź. Prvi je, da je stare podatke z nekaterimi programsko forenzi─Źnimi tehnikami mogo─Źe obnoviti. Drugi razlog je, da znajo sodobni trdi diski slabe sektorje zamenjati z rezervnimi dobrimi sektorji, kar pomeni, da podatki ostanejo "skriti" na tim. slabih sektorjih od koder jih je mogo─Źe obnoviti. Prepisovanje diska z naklju─Źnimi podatki pa je koristno tudi zato, ker na tako prepisanem disku ni mogo─Źe (oz. je to izredno te┼żko) ugotoviti koliko pravih ┼íifriranih podatkov je na disku in koliko je praznega prostora.

Slaba stran postopka pa je, da je prepisovanje z naklju─Źnimi podatki precej dolgotrajno. Na ra─Źunalniku s procesorjem Pentium 4 je prepisovanje 500 Gb razdelka preko USB 2.0 s pomo─Źjo psevdonaklju─Źnega generatorja ┼ítevil trajalo dobrih 29 ur, prepisovanje 320 Gb diska pa dobrih 19 ur. Za prepisovanje diska ali razdelka z naklju─Źnimi podatki imamo sicer na voljo ve─Ź metod. V nadaljevanju si jih bomo nekaj ogledali, priporo─Źljivo je uporabiti orodje dd s psevdonaklju─Źnim generatorjem ali orodje DBAN.

Prepisovanje podatkov v okolju Windows


V okolju Windows lahko za prepisovanje oz. brisanje podatkov uporabimo formatiranje (vendar ne tim. "hitro formatiranje"), ki pa ni preve─Ź zanesljivo. Uporabimo lahko tudi kak┼íno namensko orodje, npr. Clean Disk Security ali SDelete. ┼Żal je v okolju Windows varno oz. zanesljivo brisanje NTFS razdelkov nekoliko te┼żavno, zato se je potrebno zavedati, da uporaba teh orodij ni vedno optimalna.

Primerjavo namenskih orodij za brisanje podatkov v okolju Windows si lahko ogledate na spletni strani Sarah Dean (sicer tudi avtoritce programa FreeOTFE, ki bo opisan v nadaljevanju).

Uporaba orodja za preverjanje slabih sektorjev na disku v Linuxu


Precej hitrej┼ía metoda je uporaba orodja za preverjanje slabih sektorjev na disku v Linuxu - badblocks. Predpostavimo, da je diskovni razdelek na USB disku, ki ga ┼żelimo ┼íifrirati /dev/sdc3. USB disk najprej programsko odklopimo - z desnim klikom na disk izberemo mo┼żnost Izvrzi oz. Odklopi ali vnesemo ukaz:
  sudo umount /media/USB/

Disk naj ostane fizi─Źno priklju─Źen. Sledi ukaz:
  badblocks -c 10240 -s -w -t random -v /dev/sdc3

in po─Źakamo nekaj ur. Med tem se nam izpisuje pribli┼żno takle izpis:
  Checking for bad blocks in read-write mode
  From block 0 to 97530615
  Testing with random pattern:           30720/       97530614

Uporaba orodja dd (disk dump) v Linuxu


Verjetno najbolj optimalna metoda glede na razmerje med varnostjo in hitrostjo je uporaba orodja dd (disk dump). Mimogrede, orodje je del vsakega standardnega ┼żivega CDja (live CD). V na┼íem primeru je torej diskovni razdelek, ki ga ┼żelimo ┼íifrirati /dev/sdc3. USB disk najprej programsko odklopimo - z desnim klikom na disk izberemo mo┼żnost Izvrzi oz. Odklopi ali vnesemo ukaz:
  sudo umount /media/USB/

Disk naj ostane fizi─Źno priklju─Źen. Sedaj izvedemo ukaz:
  dd if=/dev/urandom of=/dev/sdc3 bs=16M

Ukaz dd (disk dump), bo razdelek /dev/sdc3 (ki je v na┼íem primeru tim "izhodna datoteka" output file (odtod v ukazu of=...=) prepisal s podatki, ki jih dobi na tim. "vhodni datoteki" (input file, oziroma if=...). Kot "vhodna datoteka" je nastavljen psevdonaklju─Źni generator ┼ítevil /dev/urandom.

─îe ┼żelimo dose─Źi ve─Źjo stopnjo varnosti lahko namesto psevdonaklju─Źnega generatorja ┼ítevil /dev/urandom uporabimo naklju─Źni generator ┼ítevil /dev/random in celo ve─Źkratno prepisovanje. V primerjavi uporabe naklju─Źnega generatorja ┼ítevil pa je dobro imeti dober vir entropije, kar lahko dose┼żemo z naklju─Źnim "tipkanjem" po tipkovnici ali z vklopom mikrofona, ki ga postavimo nekam na prosto. Se pa ─Źas prepisovanja v primeru naklju─Źnega generatorja ┼ítevil ┼íe podalj┼ía.

Prepišemo lahko tudi celoten disk (v tem primeru uporabimo napravo /dev/sdc - brez številke), vendar bo v tem primeru potrebno na povsem izbrisanem disku kasneje ustvariti nov razdelek.

Parameter blocksize (bs=16M) pri ukazu je precej pomemben, saj zelo pohitri prepisovanje diska. Po vnosu ukaza po─Źakajmo nekaj ─Źasa (precej ─Źasa, npr. prepisovanje 500 Gb diska na USB 2.0 in z Intel Pentium 4 procesorjem je trajalo dobrih 29 ur, prepisovanje 320 Gb diska pa dobrih 19 ur), da se disk v celoti prepi┼íe z naklju─Źnimi podatki.

Ker je prepisovanje z dd dolgotrajno, dd pa ne izpi┼íe napredka, lahko napredek pogledamo z naslednjim ukazom, ki procesu dd po┼ílje USR1 signal. Ukaz povzro─Źi izpis statusa delovanja programa, izvajanja procesa pa ne prekine:
  sudo killall -USR1 dd

Dobimo pribli┼żno takle izpis, ki v na┼íem primeru ka┼że, da smo prepisali ┼że 1,9 Gb podatkov:
  116+1 zapisov na vhodu
  116+0 zapisov na izhodu
  1946157056 bytes (1,9 GB) copied, 426,526 sekunde, 4,6 MB/s

Uporaba orodja DBAN


Lahko pa uporabimo tudi orodje DBAN, s katerim stare podatke na disku u─Źinkovito uni─Źimo z ve─Źkratnim prepisovanjem, na izbiro pa imamo ve─Ź metod. DBAN je potrebno najprej zapisati na disketo od koder ra─Źunalnik tudi za┼żenemo in nato izberemo razdelek ali disk, ki naj ga program izbri┼íe. Uporaba tega orodja je najbolj zanesljiva, vendar pa tudi najbolj dolgotrajna, ─Źe izberemo najbolj varno metodo brisanja.

Namestitev in uporaba šifrirnega programa cryptsetup



V nadaljevanju je najprej potrebno namestiti programski paket cryptsetup z LUKS podporo. LUKS oz. Linux Unified Key Setup podpora omogo─Źa uporabo ve─Ź gesel, ki jih je mogo─Źe tudi spreminjati, predvsem pa zagotavlja standardni vmesnik za delo s ┼íifriranimi nosilci podatkov. Cryptsetup z LUKS podporo uporablja tudi nekatere mehanizme s katerimi ote┼żuje napade z grobo silo (tim. brute force attacks) v primeru uporabe ┼íibkih gesel. Zelo priporo─Źljivo je imeti name┼í─Źeno razli─Źico Linux jedra 2.6.16 ali novej┼ío, saj so starej┼íe razli─Źice jedra vsebovale resno varnostno ranljivost v modulu dm-crypt. Ubuntu 7.04 sicer uporablja jedro 2.6.20, tako da glede tega ni te┼żav.

─îe programski paket ┼że imamo name┼í─Źen najprej preverimo ─Źe imamo dovolj novo razli─Źico, in sicer tisto z LUKS (Linux Unified Key Setup) podporo. Najla┼żje to storimo tako, da v konzolo vpi┼íemo:
  cryptsetup --help

─îe se na zaslonu poka┼że izpis, ki omenja luksFormat, imamo pravo razli─Źico, sicer pa jo je potrebno namestiti, kar lahko storimo preko grafi─Źnega namestilnika ali iz konzole:
  sudo apt-get install cryptsetup

Ob tem velja pripomniti, da Ubuntu 7.04 v svojih skladi┼í─Źih programskih paketov ┼że vsebuje novej┼ío razli─Źico cryptsetupa (in sicer 1.0.5). ─îe uporabljamo Ubuntu brez povezave v internet ali ┼żivi namestitveni CD (tim. live CD), pa lahko uporabimo namestitveni deb paket, ki ga dobimo v Ubuntujevih skladi┼í─Źih programskih paketov. Namestitveni paket za┼żenemo z dvoklikom nanj ali iz konzole z ukazom:
  sudo dpkg -i cryptsetup_1.0.4+svn26-1ubuntu2_i386.deb

Namestitev šifriranja


Najprej nalo┼żimo ustrezne jedrne module:
  sudo modprobe dm-crypt
  sudo modprobe dm-mod
  sudo modprobe aes
  sudo modprobe sha256 

Dobro je tudi dolo─Źiti, da se ob ponovnem zagonu sistema moduli samodejno nalo┼żijo. To storimo z vpisom teh modulov v datoteko /etc/modules. Iz konzole to lahko elegantno storimo z naslednjimi ukazi, lahko pa seveda uporabimo poljuben urejevalnik tekstovnih datotek v administratorskem na─Źinu in module dodamo na koncu datoteke:
  sudo su
  echo dm-crypt >> /etc/modules
  echo dm-mod >> /etc/modules
  echo aes >> /etc/modules
  echo sha256 >> /etc/modules
  exit

S tem je na┼í ra─Źunalnik prpravljen na uporabo ┼íifriranja.

Uporaba razdelka za šifriranje


─îe ┼żelimo ┼íifriranje namestiti na poljubni razdelek, ga formatiramo s posebnim programom, ki namesti tudi ┼íifrirno shemo. V na┼íem primeru bomo formatirali z datote─Źnim sistemom ReiserFS (lahko bi izbrali tudi drug datote─Źni sistem, recimo ext3, FAT32 ali NTFS). Pri tem uporabimo ukaz luksformat:
  sudo luksformat -t reiserfs /dev/sdc3

Dobimo izpis, ki nas opozori, da bomo v nadaljevanju izgubili vse podatke na izbranem razdelku. Za nadaljevanje je potrebno izraziti strinjanje, kar storimo tako, da z velikimi ─Źrkami vpi┼íemo "YES". Nato pa vpi┼íemo ┼íe geslo za dostop do ┼íifriranega razdelka (LUKS passphrase).

S tem geslom bomo kasneje dostopali do na┼íega ┼íifriranega razdelka, zato je treba biti pri izbiri previden in izbrati geslo, ki so ga bomo lahko zapomnili, a ga ne bo mogo─Źe lahko uganiti. V primeru formatiranja z datote─Źnim sistemom reiserfs je potrebno le-to potrditi s pritiskom na "y". Primer izpisa:
  Creating encrypted device on /dev/sdc3...
  
  WARNING!
  ========
  This will overwrite data on /dev/sdc3 irrevocably.
  
  Are you sure? (Type uppercase yes): YES
  Enter LUKS passphrase: 
  Verify passphrase: 
  Command successful.
  Please enter your passphrase again to verify it
  Enter LUKS passphrase: 
...
  UUID: 118a8e0a-b902-4757-8061-f1563edc9773
  ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
          ALL DATA WILL BE LOST ON '/dev/mapper/luksformat1'!
  Continue (y/n):
...
  ReiserFS is successfully created on /dev/mapper/luksformat1.

Uporaba celotnega diska za šifriranje


Namesto posameznega razdelka lahko uporabimo tudi celoten disk. V tem primeru je potrebno najprej pobrisati celoten disk (v primeru /dev/sdc):
  dd if=/dev/urandom of=/dev/sdc bs=16M

Nato na njem ustvarimo nov razdelek z ukazom fdisk ali pa uporabimo grafi─Źni program GParted.

OPOZORILO: ─Źe na disku ne bomo ustvarili novega razdelka, bo sicer na disk ┼íe vedno mogo─Źe namestiti ┼íifrirno shemo s cryptsetup, vendar se nov ┼íifrirani disk po vnosu gesla ne bo samodejno priklopil v sistem. Ob vklopu bomo sicer dobili poziv za vnos gesla, vendar bo potem napravo iz /dev/mapper/... potrebno ro─Źno priklopiti v sistem (z ukazom mount).

S programom fdisk razdelek ustvarimo po naslednjem postopku:
  sudo fdisk /dev/sdc

Najprej kot ukaz vnesemo n (dodaj nov razdelek):
  Disk /dev/sdc: 38913 cylinders, 255 heads, 63 sectors/track
  
  sfdisk: ERROR: sector 0 does not have an MSDOS signature
   /dev/sdc: unrecognised partition table type
  No partitions found
  
  Command (m for help): n

Nato dolo─Źimo, da je razdelek primarni (p) in prvi (1):
  Command action
     e   extended
     p   primary partition (1-4)
  
  p
  Partition number (1-4): 1
  First steza (1-38913, default 1):
  Using default value 1
  Last steza or +size or +sizeM or +sizeK (1-38913, default 38913):
  Using default value 38913

Na koncu spremembe zapi┼íemo na disk z ukazom w (zapi┼íi tabelo razdelkov in kon─Źaj):
  Command (m for help): w
  The partition table has been altered!
  
  Calling ioctl() to re-read partition table.
  Syncing disks.

Razdelek je sedaj pripravljen na nadaljne delo oz. namestitev šifrirne sheme (opisana zgoraj).

Enako operacijo lahko naredimo tudi z grafi─Źnim programom GParted, ki ga je potrebno zagnati z administratorskimi pravicami (v danem primeru smo uporabili napravo /dev/sde):





Formatiranje ┼íifriranega razdelka z drugimi datote─Źnimi sistemi


┼áifrirani razdelek lahko formatiramo tudi z drugimi datote─Źnimi sistemi. Z datote─Źnim sistemom FAT32 formatiramo z ukazom:
  sudo luksformat -t vfat /dev/sdc3

Z datote─Źnim sistemom ext3 formatiramo z ukazom (enako velja za ext2, le da spremenimo ustrezni parameter):
  sudo luksformat -t ext3 /dev/sdc3

Za formatiranje z NTFS pa je najprej potrebno namestiti programski paket ntfsprogs, za enostavnejšo podporo pisanju na NTFS pa morda tudi ntfs-config:
  sudo apt-get install ntfsprogs ntfs-config

Sledi ukaz:
  sudo luksformat -t ntfs /dev/sdc3

Seveda se v primeru izbire drugega datote─Źnega sistema izpis luksformata (progrma, ki namesti ┼íifrirno shemo in ┼íifrirani razdelek formatira) kon─Źa druga─Źe, v primeru formatiranja z NTFS pribli┼żno takole:
  Cluster size has been automatically set to 512 bytes.
  Initializing device with zeroes: 100% - Done.
  Creating NTFS volume structures.
  mkntfs completed successfully. Have a nice day.

Šifriranje virtualnih razdelkov

S cryptsetupom lahko ┼íifriramo tudi virtualne razdelke, ki so fizi─Źno gledano posebne datoteke s sliko (ang. image) virtualnega razdelka. Edina zahteva je, da so datoteke ve─Źje od 1 Mb. Postopek je slede─Ź. Najprej ustvarimo posebno datoteko, ki bo postala virtualni razdelek, npr. mojtest.img:
  touch mojtest.img

Sedaj datoteko pobrišemo in "raztegnemo" na velikost npr. 100 Mb. Pri tem lahko uporabimo ukaz shred, ki pobriše vsebino datoteke (uporabimo parameter -s, parameter -n1 pove kolikokrat bomo datoteko prepisali), ali pa prepišemo z dd (za 100 Mb veliko datoteko uporabimo bs=100 Mb, count=1, lahko pa bi uporabili tudi bs=50 Mb, count=2):
  shred -n1 -s100M mojtest.img

ali:
  dd if=/dev/urandom of=mojtest.img bs=100MB count=1

Nato najprej pogledamo katera je prva neuporabljena zankovna naprava (ang. loop device):
  sudo losetup -f

Dobimo pribli┼żno takle izpis, iz katerega sledi, da je prva neuporabljena zankovna naprava /dev/loop0:
  /dev/loop0

Sedaj datoteko mojtest.img priklopimo na to napravo kot virtualni razdelek:
  sudo losetup /dev/loop0 mojtest.img

Sledi namestitev ┼íifrirne sheme in formatiranje (v danem primeru z datote─Źnim sistemom ReiserFS - dobimo podobna vpra┼íanja in izpis kot zgoraj)...
  sudo luksformat -t reiserfs /dev/loop0

...nato v sistem priklopimo virtualni šifrirani razdelek...
  sudo cryptsetup luksOpen /dev/loop0 mojcryptodisk

...na tem mestu je potrebno vnesti ustrezno geslo (dobimo pribli┼żno takle izpis):
  Enter LUKS passphrase: 
  key slot 0 unlocked.
  Command successful.

...na koncu pa le-tega kot virtualni kon─Źni razdelek na /mnt na katerega bomo lahko zapisovali podatke:
  sudo mount /dev/mapper/mojcryptodisk /mnt

V danem primeru smo virtualni šifrirani razdelek priklopili na /mnt, lahko pa bi naredili tudi poseben podimenik (npr. /home/matej/mojcryptodisk) in ga priklopili tja.

┼áe odklop. Najprej odklopimo kon─Źni razdelek, nato ┼íifrirani razdelek, na koncu pa ┼íe zankovno napravo (loop device):
  sudo umount /mnt/
  sudo cryptsetup luksClose mojcryptodisk
  sudo losetup -d /dev/loop0

Uporaba ve─Źjega klju─Źa

Privzeto cryptsetup v Ubuntu Linuxu uporablja 128 bitne klju─Źe. Za posamezni ┼íifrirani razdelek lahko pogledamo podatke o dol┼żini klju─Źa in uporabljenem ┼íifrirnem algoritmu tako, da najprej pogledamo kateri razdelki so priklju─Źeni v sistem z ukazom:
  ls -l /dev/mapper/

Dobimo pribli┼żno takle izpis:
  crw-rw---- 1 root root  10, 63 2007-06-15 14:25 control
  brw-rw---- 1 root disk 254,  1 2007-06-27 08:05 crypto-test
  brw-rw---- 1 root disk 254,  0 2007-06-27 08:00 temporary-cryptsetup-18222

V sistemu je v vsakem prmeru prisotna datoteka control, ostale datoteke pa so ┼íifrirani razdelki (v na┼íem primeru imamo torej priklju─Źena razdelka crypto-test ter temporary-cryptsetup-18222). Za posamezezen razdelek sedaj pogledamo podatke o ┼íifriranju:
  sudo cryptsetup status crypto-test


  /dev/.static/dev/mapper/crypto-test is active:
    cipher:  aes-cbc-essiv:sha256
    keysize: 128 bits
    device:  /dev/sdc1
    offset:  2056 sectors
    size:    495896 sectors
    mode:    read/write

Iz izpisa sledi, da na razdelku crypto-test uporabljamo 128-bitni klju─Ź. Z ukazom:
  cat /proc/crypto

si lahko ogledamo katere ┼íifrirne module imamo prisotne v sistemu in kak┼ína je najve─Źja dol┼żina klju─Źa, ki ga lahko uporabimo. Iz izpisa sledi, da je najve─Źja dol┼żina klju─Źa za ┼íifrirni algoritem AES 256 bitov (32 zlogov * 8 bitov = 256 bitov):
  min keysize  : 16
  max keysize  : 32

─îe ┼żelimo uporabiti tak klju─Ź, je potrebno uporabiti naslednji ukaz (v primeru name┼í─Źanja ┼íifrirne sheme na razdelek /dev/sdc3):
  sudo cryptsetup --key-size 256 luksFormat /dev/sdc3

Nato razdelek priklju─Źimo...
  sudo cryptsetup luksOpen /dev/sdc1 crypto-test

...in ga formatiramo:
  sudo mkfs.ext3 /dev/mapper/crypto-test

Namesto ukaza mkfs.ext3 lahko uporabimo mkfs.ext2, mkfs.ntfs, mkfs.vfat, mkfs.reiserfs, ali kaj drugega.

(Prvi) priklop šifriranega razdelka v sistem


─îe smo uporabili razdelek na USB disku, ga fizi─Źno odklopimo in ga ponovno priklju─Źimo nazaj. Prika┼że se okno za vnos gesla:



Vnesemo ustrezno geslo in razdelek je ┼że ustrezno priklju─Źen v sistem. Naprava /dev/sdc3 je sedaj priklju─Źena na /dev/mapper/ (ki skrbi za ┼íifriranje podatkov), le ta pa na /media/disk-1. V nadaljevanju je smiselno ┼íifrirani razdelek preimenovati, kar nam delo z njim ┼íe nekoliko olaj┼ía. ┼áifrirani razdelek odklopimo z desnim klikom nanj in ukazom Izvrzi oz. Odklopi.

Mimogrede, ┼íifrirani razdelek lahko priklju─Źimo tudi ro─Źno iz konzole:
  sudo cryptsetup luksOpen /dev/sdc3 mojdisk

Ukaz ┼íifrirani razdelek /dev/sdc3 priklju─Źi na virtualno napravo /dev/mapper/mojdisk. Ubuntu novo napravo takoj priklju─Źi na /media (v na┼íem primeru na /media/disk, kar vidimo s pomo─Źjo ukaza mount). To sicer lahko storimo tudi ro─Źno, npr. z ukazom:
  sudo mount /dev/mapper/mojdisk /mnt

Napravo lahko tudi ro─Źno odklopimo. Najprej jo odklopimo iz "nivoja datote─Źnega sistema":
  sudo umount /media/disk/

Nato pa še iz "nivoja šifriranja":
  sudo cryptsetup luksClose mojdisk

Sedaj USB disk lahko fizi─Źno odklopimo iz ra─Źunalnika.

Sprememba imena razdelka (ang. volume label)


Najprej pogledamo kje je razdelek priklopljen:
  mount

Dobimo pribli┼żno takle izpis iz katerega sledi, da je ime razdelka (v na┼íem primeru) disk-1:
  /dev/mapper/luks_crypto_6671949e-937d-4387-9f7a-f317166d8bae on /media/disk-1 type reiserfs (rw,noexec,nosuid,nodev)

Iz izpisa sledi, da je razdelek priklopljen na /media/disk-1. Sedaj najprej programsko odklopimo šifrirani razdelek iz sistema (ne pa tudi iz nivoja šifriranja):
  sudo umount /media/disk-1

Sprememba imena razdelka z datote─Źnim sistemom ReiserFS

V opisanem primeru bomo šifrirani razdelek poimenovali USB-crypt. Vnesemo ukaz:
  sudo reiserfstune /dev/mapper/luks_crypto_6671949e-937d-4387-9f7a-f317166d8bae -l USB-crypt

Sprememba imena razdelka z datote─Źnim sistemom FAT32

Sprememba imena razdelka z datote─Źnim sistemom FAT32 pod Linuxom s pomo─Źjo orodja mtools oz. mlabel na ┼íifriranih razdelkih ┼żal ne deluje, zato je verjetno najbolj enostavno spremembo opraviti v okolju Windows.

Sprememba imena razdelka z datote─Źnim sistemom NTFS

Uporabimo ukaz ntfslabel (name┼í─Źen moramo imeti paket ntfsprogs):
  sudo ntfslabel /dev/mapper/luks_crypto_6671949e-937d-4387-9f7a-f317166d8bae USB-crypt

Sprememba imena razdelka z datote─Źnim sistemom ext3

Uporabimo ukaz e2label (isti ukaz lahko uporabimo na datote─Źnem sistemu ext2):
  sudo e2label /dev/mapper/luks_crypto_6671949e-937d-4387-9f7a-f317166d8bae USB-crypt

Razdelek lahko sedaj ponovno priklopimo in njegovo ime bo sedaj USB-crypt, priklopljen pa bo na /media/USB-crypt.


Nastavljanje ustreznih pravic za pisanje na ┼íifrirani razdelek z datote─Źnim sistemom ReiserFS, ext3 in ext2


Privzeto ima lastni┼íke pravice za pisanje na ┼íifrirani razdelek z datote─Źnim sistemom ReiserFS, ext3 in ext2 korenski uporabnik (tim. root) oz. administrator sistema. Tega problema pri FAT32 in NTFS razdelkih ni, saj jih Ubuntu samodejno priklju─Źi v polnem bralno-pisalnem na─Źinu.

Rešitev problema je, da ustvarimo poseben imenik, ki ga dodelimo trenutnemu uporabniku...
  sudo mkdir /media/USB-crypt/matej
  sudo chown -R matej.matej /media/USB-crypt/*

...ali pa trenutnemu uporabniku dodelimo celoten disk:
  sudo chown -R matej.matej /media/USB-crypt/

Sedaj ima uporabnik matej mo┼żnost pisanja v podimenik /matej oziroma na celoten disk brez dodatnih administratorskih pravic.


Dodajanje in odvzemanje gesel za dostop do šifriranega razdelka


─îe ┼żelimo, lahko dodajamo ali odstranjujemo gesla za dostop do ┼íifriranega razdelka. To lahko storimo pri priklju─Źeni ali programsko odklopljenem ┼íifriranem razdelku. Gesla se shranjujejo na posebna mesta (ang. slot) v ┼íifriranem razdelku, ki se ┼ítejejo od ni─Ź dalje. Prvo geslo se torej nahaja na mestu 0, drugo na mestu 1, itd. ─îe ┼żelimo, lahko najprej pogledamo koliko prostih mest imamo ┼íe na voljo:
  cryptsetup luksDump /dev/sdc3

Dodajanje gesla je sedaj mogo─Źe z naslednjim ukazom (kot parameter ukazu podamo razdelek, torej /dev/sdc3):
  sudo cryptsetup luksAddKey /dev/sdc3

Najprej je treba vnesti enega izmed obstoje─Źih gesel, nato pa novo geslo, ki ga ┼íe potrdimo. Izpis je pribli┼żno takle:
  Enter any LUKS passphrase: 
  key slot 0 unlocked.
  Enter new passphrase for key slot: 
  Verify passphrase: 
  Command successful.

Brisanje gesla iz mesta 1 (kot parameter ukazu podamo razdelek, torej /dev/sdc3 in številko mesta, torej 1.
  sudo cryptsetup luksDelKey /dev/sdc3 1

Najprej je potrebno vnesti enega izmed obstoje─Źih gesel (vendar pa ne tistega, ki ga ┼żelimo odstraniti). ┼áe opozorilo: ─Źe odstranimo vsa gesla, je dostop do ┼íifriranega razdelka za vedno onemogo─Źen. Izpis je pribli┼żno takle:
  Enter any remaining LUKS passphrase: 
  key slot 0 unlocked.
  Command successful.

Sprememba gesla je mogo─Źa tako, da najprej dodamo novo geslo, nato pa izbri┼íemo starega.

Uporaba LUKS šifriranih razdelkov v okolju Windows


Uporaba LUKS ┼íifriranja (ki ga podpira program cryptsetup) ima ┼íe eno prednost. LUKS ┼íifrirane razdelke je namre─Ź mogo─Źe uporabiti tudi v okolju Windows ter celo v PDA napravah. Pri tem si pomagamo s programom FreeOTFE, ki te─Źe v okoljih MS Windows 2000/XP/Vista ter Windows Mobile 2003/2005 za PDA naprave. Uporaba programa je precej enostavna. Iz spleta prenesemo kompresirano ZIP datoteko, jo odpremo in za┼żenemo FreeOTFE.exe. Program nas vpra┼ía, ─Źe ga ┼żelimo zagnati v tim. "mobilnem na─Źinu" (portable mode), pri katerem ni potrebna namestitev. A pozor: za zagon programa potrebujemo administratorske privilegije. Med nastavitvami lahko kasneje nastavimo, da se program vedno in samodejno za┼żene v mobilnem na─Źinu.

Priklop ┼íifriranega razdelka je enostaven. V meniju File izberemo mo┼żnost Linux volume in nato Mount partition:



Nato vnesemo geslo:



Pritisnemo OK...



...in razdelek je priklju─Źen:



┼Żal pri uporabi naprednej┼íih datote─Źnih sistemov kot npr. ext3 ali ReiserFS v okolju Windows naletimo na te┼żave, saj operacijski sistem po priklopu ┼íifriranega razdelka na USB klju─Źu sicer zazna nov nosilec, ne pa tudi datote─Źnega sistema na njem in zato ┼żeli novo napravo formatirati. Te┼żavo lahko re┼íimo tako, da ┼íifrirani razdelek v Linuxu formatiramo z datote─Źnim sistemom FAT32 oziroma z NTFS, ali pa v okolju Windows namestimo gonilnike za alternativne datote─Źne sisteme. Teh te┼żav v Linuxu ni, saj zna Linux brati in zapisovati na vse datote─Źne sisteme, ki jih uporabljajo Windowsi.

V tem primeru je šifrirani razdelkek v okolju Windows takoj po uspešnem priklopu povsem normalno viden:




Uporaba datotek s klju─Źem: uporaba LUKS ┼íifriranih razdelkov v organizacijskem okolju


Ker cryptsetup omogo─Źa uporabo ve─Ź gesel, je mogo─Źe ┼íifrirane razdelke uporabljati tudi v ve─Źuporabni┼íkih okoljih, pri ─Źemer imajo razli─Źni uporabniki lahko razli─Źna gesla. V primeru uporabe ┼íifriranja v ve─Źjih organizacijah pa pogosto prihaja do problema, da uporabniki pozabljajo gesla. Te┼żavo je mogo─Źe re┼íiti tako, da vsakemu ┼íifriranemu razdelku dodelimo posebno rezervno geslo, ki je shranjeno pri administratorju oz. upravljalcu ┼íifrirnih klju─Źev. V primeru, da uporabnik pozabi geslo, ga upravljalec ┼íifrirnih klju─Źev s svojim klju─Źem lahko enostavno obnovi. Seveda je v tem primeru pomembno zaupanje: zaupanje, da uporabnik rezervnega gesla ne bo odstranil ter zaupanje, da bo upravljalec ┼íifrirnih klju─Źev z rezevnim klju─Źem ravnal skrbno in odgovorno. To vklju─Źuje tudi varno shrambo rezervnega ┼íifrirnega klju─Źa.

Mo┼żnost zlorabe je mogo─Źe nekoliko zmanj┼íati z uporabo datotek s klju─Źem, ki jih lahko shranimo v sefu. Upravljalec ┼íifrirnih klju─Źev namre─Ź bistveno la┼żje namerno ali pomotoma komu pove navadno rezervno ┼íifrirno geslo, kot pa iz ustrezno varovanega sefa odnese datoteko s klju─Źem, ki vsebuje niz naklju─Źnih znakov. V nadaljevanju so bomo ogledali kako je na ┼íifrirana mesta v ┼íifriranem razdelku mogo─Źe dodati datoteko s klju─Źem, ki vsebuje naklju─Źen niz znakov.

Ustvarjanje datoteke s klju─Źem

Najprej ustvarimo datoteko s klju─Źem, ki vsebuje 2048-bitni klju─Ź (256 znakov x 8 bitov = 2048 bitni klju─Ź). Datoteko s klju─Źem poimenujmo keyfile:
  dd if=/dev/random of=keyfile bs=1 count=256

V tem primeru je smiselno uporabiti pravi in ne psevdonaklju─Źni generator, saj je datoteka s klju─Źem razmeroma majhna. Ker je potrebno zbrati nekaj entropije po vnosu ukaza lahko premikamo mi┼íko ali pritiskamo tipke na tipkovnici.

Dodajanje datoteke s klju─Źem na ┼íifrirno mesto

Nato v novo ┼íifrirno mesto dodamo datoteko s klju─Źem. Predpostavimo, da uporabljamo ┼íifrirani razdelek, ki se nahaja na /dev/sdc3:
  sudo cryptsetup luksAddKey /dev/sdc3 keyfile

Vnesemo obstoje─Źe geslo in postopek je kon─Źan:
  Enter any LUKS passphrase: 
  key slot 0 unlocked.
  Command successful.

Datoteko s klju─Źem je sedaj potrebno varno shraniti. Potrebno je tudi zagotoviti, da se pri npr. zapisovanju na CD ne shrani v kak┼íen za─Źasni imenik.
─îe ┼żelimo, lahko preverimo, da je datoteka s klju─Źem zares shranjena na ┼íifrirnem mestu 1:
  sudo cryptsetup luksDump /dev/sdc3


  LUKS header information for /dev/sdd1
  
  Version:        1
  Cipher name:    aes
  Cipher mode:    cbc-essiv:sha256
  Hash spec:      sha1
  Payload offset: 1032
  MK bits:        128
  MK digest:      87 5b b3 23 07 a7 0b 27 0f 67 f5 00 6c 42 ff 92 47 87 8b cb 
  MK salt:        ed f4 ac 6c df d9 ea 61 2c 41 0c 52 84 aa 3e 24 
                  35 d7 ec ce 3a a8 87 83 b1 a8 ab 30 8b e6 c2 32 
  MK iterations:  10
  UUID:           221e9736-353e-4814-8553-1e055d9f635c
  
  Key Slot 0: ENABLED
          Iterations:             81401
          Salt:                   c1 f4 39 a9 ef bf 37 f5 4a 0e a4 6f ac 82 e5 e2 
                                  d8 fa d4 44 62 55 d0 06 c2 e6 24 66 97 dc de 75 
          Key material offset:    8
          AF stripes:             4000
  Key Slot 1: ENABLED
          Iterations:             60694
          Salt:                   d3 89 65 63 be 61 b6 52 58 9b d4 ac 35 d9 c6 e3 
                                  88 f0 a8 91 d3 c6 c4 31 80 96 ad d7 14 aa fa 0f 
          Key material offset:    136
          AF stripes:             4000
  Key Slot 2: DISABLED
  Key Slot 3: DISABLED
  Key Slot 4: DISABLED
  Key Slot 5: DISABLED
  Key Slot 6: DISABLED
  Key Slot 7: DISABLED

Datoteko s klju─Źem iz mesta 1 lahko odstranimo z istim ukazom, kot odstranjujemo obi─Źajna gesla.

Priklop ┼íifriranega razdelka s pomo─Źjo datoteke s klju─Źem

V primeru izgube ┼íifrirnega gesla, lahko ┼íifrirani razdelek priklopimo z rezervno datoteko s klju─Źem z ukazom (uporabimo datoteko s klju─Źem /home/matej/keyfile, priklopimo pa razdelek /dev/sdc3 kot cryptorazdelek):
  sudo cryptsetup -d /home/matej/keyfile luksOpen /dev/sdc3 cryptorazdelek

┼áifrirani razdelek se sedaj nahaja na /dev/mapper/cryptorazdelek in ─Źe se ne priklopi sam, ga lahko priklopimo ro─Źno na npr. /mnt z ukazom mount.

Dodajanje novega gesla s pomo─Źjo datoteke s klju─Źem

─îe ┼żelimo, lahko sedaj s pomo─Źjo datoteke s klju─Źem dodamo novo geslo na novo ┼íifrirno mesto. Uporabimo ukaz:
  sudo cryptsetup -d keyfile luksAddKey /dev/sdc1

...in dobimo pribli┼żno takle izpis, kjer vnesemo novo geslo, ki se v na┼íem primeru doda na ┼íifrirno mesto 1:
  key slot 1 unlocked.
  Enter new passphrase for key slot: 
  Verify passphrase: 
  Command successful.

Staro geslo (na šifrirnem mestu 0) odstranimo z ukazom:
  sudo cryptsetup luksDelKey /dev/sdc1 0 keyfile 


Uporaba šifrirnega programa TrueCrypt



Za konec si bomo ogledali ┼íe uporabo ┼íifrirnega programa TrueCrypt pod Linuxom. TrueCrypt je namenjen ┼íifriranju diskovnih razdelkov, je odprtokoden in brezpla─Źen, ─Źetrta razli─Źica pa je poleg razli─Źice za okolje Windows prinesla tudi razli─Źico za Linux, kar pomeni, da lahko program uporabljamo tako v okolju Linux, kot v okolju Windows.

TrueCrypt ima ┼ítevilne uporabne funkcije, med drugim lahko znotraj ┼íifriranega razdelka ustvari ┼íe skriti razdelek. Vsak je seveda dostopen s svojim geslom. V primeru, da smo prisiljeni razkriti svoje ┼íifrirne klju─Źe, lahko razkrijemo samo klju─Ź navadnega razdelka, z obi─Źajno kriptoanalizo pa ni mogo─Źe ugotoviti, da se znotraj te skriva ┼íe eden s podatki, ki jih zares ┼żelimo skriti (tim. plausible deniability). Razli─Źica 4 prina┼ía ┼íe novost, saj lahko z vpisom posebnega gesla priklopimo navadni razdelek, vendar tako, da podatki, ki jih zapisujemo nanjo ne prepi┼íejo podatkov na skritem razdelku (torej priklju─Źimo oba razdelka hkrati). Uporabno za vse, ki ┼żivijo v nedemokrati─Źnih dr┼żavah.

TrueCrypt je mogo─Źe zagnati tudi v tim. potovalnem na─Źinu (ang. traveller mode), kar pomeni, da razdelek lahko prena┼íamo na npr. USB klju─Źu in ga prikopimo tudi na ra─Źunalnikih, kjer TrueCrypt ni name┼í─Źen, vendar za zagon potrebujemo administratorske privilegije. Nova razli─Źica tudi ni─Źesar ne zapisuje v Windows register, pa─Ź pa v posebne XML datoteke, kar pove─Źuje anonimnost uporabe programa. Program podpira mo┼żnost lokalizacije in uporabo datotek s klju─Źem (ang. keyfiles) - gre za datoteko, ki ┼íele skupaj z geslom omogo─Źa priklop ┼íifriranega razdelka. Datoteka je lahko kakr┼ínakoli, recimo GIF slika ali MP3, v primeru da datoteka ni prisotna, pa priklop ┼íifriranega razdelka samo z geslom sploh ni mogo─Ź.



Grafi─Źni vmesnik v okolju Windows omogo─Źa enostavno ustvarjanje in delo s ┼íifriranimi TrueCrypt razdelki, ki jih je mogo─Źe uporabljati tako v okolju Windows, kot v okolju Linux. TrueCrypt omogo─Źa uporabo pravih ali virtualnih ┼íifriranih razdelkov.

Namestitev programa TrueCrypt


Program najprej prenesemo iz uradne spletne strani. Na voljo sta tudi razli─Źici za Ubuntu 6.10 in Ubuntu 7.04, ki ju lahko shranimo na disk, raz┼íirimo tar.gz datoteko in namestimo deb paket tako, da nanj dvakrat kliknemo:



Ro─Źna namestitev programa TrueCrypt


Če uporabljamo kakšno drugo Linux distribucijo lahko prenesemo datoteko z izvorno kodo in jo razširimo:
  tar xvfz truecrypt-4.3a-source-code.tar.gz
  cd truecrypt-4.3a-source-code/Linux/

Pred namestitvijo moramo namestiti ┼íe izvorno kodo Linux jedra. Najprej pogledamo razli─Źico na┼íega trenutnega Linux jedra:
  uname -r

Dobimo pribli┼żno naslednji izpis:
  2.6.20-15-generic

Iz izpisa sledi, da uporabljamo jedro 2.6.20, torej bomo potrebovali programski paket linux-source-2.6.20:
  sudo apt-get install linux-source-2.6.20
  cd /usr/src/
  sudo tar xvjf linux-source-2.6.20.tar.bz2

Ustvarimo še simbolno povezavo do izvorne kode Linux jedra...
  sudo ln -s linux-source-2.6.12 linux

...ter namestimo orodja potrebna za prevajanje:
  sudo apt-get install build-essential

Sedaj po┼żenemo namestitveno skripto (na vsa vpra┼íanja odgovorimo s privzetimi odgovori, torej pritisnemo tipko enter):
  cd
  cd truecrypt-4.3a-source-code/Linux/
  sudo ./build.sh
  sudo ./install.sh

Postopek namestitve je s tem kon─Źan.

Ustvarjanje novega šifriranega TrueCrypt virtualnega razdelka


V Linuxu nov TrueCrypt razdelek ustvarimo s pomo─Źjo parametra -c, ki mu podamo lokacijo TrueCrypt datoteke ali razdelka, ki bo ┼íifriran (npr. /dev/sdc3). Predpostavimo, da bomo TruCrypt razdelek poimenovali mojtest.tc:
  sudo truecrypt -c mojtest.tc

V nadaljevanju najprej dolo─Źimo tip nosilca: obi─Źajen (normal) ali skriti (hidden):
  Volume type:
   1) Normal
   2) Hidden
  Select [1]: 

Izberemo ┼íe datote─Źni sistem (pravzaprav je na voljo le FAT):
  Filesystem:
   1) FAT
   2) None
  Select [1]:

Vnesemo velikost TrueCrypt razdelka (npr. 2M za 2 Mb):
  Enter volume size (bytes - size/sizeK/sizeM/sizeG):

Izberemo zgostitveni in šifrirni algoritem (npr. RIPEMD-160 ter AES):
  Hash algorithm:
   1) RIPEMD-160
   2) SHA-1
   3) Whirlpool
  Select [1]: 

  Encryption algorithm:
   1) AES
   2) Blowfish
   3) CAST5
   4) Serpent
   5) Triple DES
   6) Twofish
   7) AES-Twofish
   8) AES-Twofish-Serpent
   9) Serpent-AES
  10) Serpent-Twofish-AES
  11) Twofish-Serpent
  Select [1]: 

Na koncu vnesemo geslo za dostop oziroma lokacijo datoteke s klju─Źem (njena vsebina predstavlja ┼íifrirni klju─Ź zato je pomembno, da je kasneje ne spreminjamo):
  Enter password for new volume 'mojtest.tc': 
  Re-enter password: 
  
  Enter keyfile path [none]: 

Na koncu moramo zbrati ┼íe nekaj entropije s pomo─Źjo premikanja mi┼íke:
  Is your mouse connected directly to computer where TrueCrypt is running? [Y/n]: 
  Please move the mouse randomly until the required amount of data is captured...
  Mouse data captured: 12% 

In TrueCrypt datoteka je izgotovljena:
  Done: 2.00 MB  Speed: 1.74 MB/s  Left: 0:00:00  
  Volume created.

Ker smo datoteko ustvarili kot uporabnik z administratorskimi pravicami ji na koncu še popravimo lastništvo:
  sudo chown matej.matej mojtest.tc

S tem je postopek kon─Źan. V okolju Windows je postopek podoben, le da ga izvedemo preko grafi─Źnega vmesnika. Iz menija Volumes izberemo Create New Volume in sledimo preprostim navodilom.

Priklop šifriranega TrueCrypt razdelka


V okolju Windows TrueCrypt razdelke priklapljamo s pomo─Źjo grafi─Źnega vmesnika: najprej izberemo datoteko, nato pa ─Źrko nosilca (npr. X:) in pritisnemo Mount. Grafi─Źnega vmesnika za TrueCrypt v okolju Linux sicer ┼íe ni, zato je potrebno ukaze vna┼íati preko konzole. Predpostavimo, da ┼żelimo priklju─Źiti virtualni ┼íifrirani razdelek, ki se nahaja v obliki ┼íifrirane datoteke na USB disku. USB disk je priklju─Źen na lokacijo /media/MATEJ/, virtualni ┼íifrirani razdelek pa bomo priklju─Źili na /mnt. Uporabimo naslednji ukaz:
  sudo truecrypt /media/MATEJ/TrueCrypt/mobile.tc /mnt/

Vnesemo TrueCrypt geslo...
  Enter password for '/media/MATEJ/TrueCrypt/mobile.tc':

...in razdelek je priklju─Źen na /mnt.

Izpis priklju─Źenih TrueCrypt razdelkov

  sudo truecrypt -vl

Dobimo pribli┼żno tak izpis:
  /dev/mapper/truecrypt0:
  Volume: /media/MATEJ/TrueCrypt/mobile.tc
  Type: Normal
  Size: 15728128 bytes
  Encryption algorithm: AES
  Mode of operation: LRW
  Read-only: No
  Hidden volume protected: No

Odklop TrueCrypt razdelkov


TrueCrypt razdelke lahko odklopimo s parametrom -d, ki mu dodamo lokacijo TrueCrypt razdelka (npr. /media/MATEJ/TrueCrypt/mobile.tc):
  sudo truecrypt -d /media/MATEJ/TrueCrypt/mobile.tc

Ukaz:
  sudo truecrypt -d

pa odklopi vse priklju─Źene TrueCrypt razdelke.




Zaklju─Źek



Kot smo torej videli, je uporaba ┼íifriranja nosilcev podatkov razmeroma enostavna in precej dobro integrirana v Ubuntu Linux, ┼íifriranje pa je mogo─Źe uporabiti na razli─Źnih platformah, kar mu pravzaprav daje veliko stopnjo uporabnosti. Uporabniki, ki cenijo svoje podatke in svojo zasebnost, imajo torej na voljo dovolj alternativ, da se u─Źinkovito za┼í─Źitijo. V Linuxu je to najbolj enostavno s tremi preprostimi koraki:
- namestimo programski paket cryptsetup in nalo┼żimo ustrezne jedrne module
- izbrani razdelek na nosilcu podatkov prepi┼íemo z naklju─Źnimi znaki (opcijsko)
- razdelek formatiramo s programom luksformat, kjer dolo─Źimo geslo za dostop do njega.

Oziroma:
- namestimo šifrirni program TrueCrypt
- ustvarimo ┼íifriran virtualni razdelek (kjer dolo─Źimo velikost, geslo in ostale nastavitve).

Od tu naprej s ┼íifriranim razdelkom delamo kot z obi─Źajnimi razdelki, le s to razliko, da so podatki na njem varni pred nepoobla┼í─Źenimi zasegi. Podobno enostavna je uporaba ┼íifriranja v okolju Windows, le da namesto programa cryptsetup uporabimo FreeOTFE oziroma razli─Źico TrueCrypta za Windows.



Forenzi─Źna analiza ┼íifriranega razdelka ni na┼íla iskanega niza.




Forenzi─Źni program PhotoRec na ┼íifriranem razdelku ni na┼íel nobene datoteke.

Mimogrede, v skladu s pravnim na─Źelom, ki prepoveduje samoobto┼żbo (ang. self-incrimination) osebi v kazenskem postopku ni potrebno razkriti ┼íifrirnih klju─Źev ali gesel. Pravna podlaga za to v ZDA je 5. amandma ameri┼íke ustave, v Evropi je to pravico ┼że ve─Źkrat priznalo Evropsko sodi┼í─Źe za ─Źlovekove pravice na podlagi 6. ─Źlena Evropske konvencije o ─Źlovekovih pravicah ki govori o pravici do po┼ítenega sojenja, pravno podlago za to pa daje tudi 14. (3) (g) ─Źlen Mednarodnega pakta o dr┼żavljanskih in politi─Źnih pravicah.

V Sloveniji je prepoved samoobto┼żbe ustavna kategorija, saj 29. ─Źlen Ustave dolo─Źa, da obdol┼żenec kaznivega dejanja ni dol┼żan izpovedati zoper sebe ali svoje bli┼żnje, ali priznati krivde, podobno dolo─Źbo pa ima tudi 5. ─Źlen Zakona o kazenskem postopku.

Prisilna dejanja za razkritje gesel ali klju─Źev so torej v pravni dr┼żavi za osumljenca ali obto┼żenca nezakonita, mogo─Źe pa jih je uporabiti zgolj za pri─Źe v postopku.

─îisto za konec pa ┼íe namig za uporabnike Linuxa, glede rednega shranjevanja varnostnih kopij. Uporabite lahko orodje rsync, ki ustvari varnostne kopije podatkov. Orodje ob prvem prenosu ustvari varnostno kopijo, kasneje pa zna prenesti samo spremembe datotek. Ukaz, s katerim si iz npr. /home/matej ustvarimo varnostno kopijo podatkov na /media/USB-crypt/matej/ in pri tem ohranimo ─Źas nastanka, lastni┼ítvo in dovoljenja nad datotekami je slede─Ź:
  sudo rsync --verbose --progress --stats --compress --rsh=/usr/bin/ssh --recursive --times --perms --acls --links --owner --group --executability --delete /home/matej/ /media/USB-crypt/matej/


Toliko o uporabi ┼íifriranih nosilcev podatkov, prihodnji─Ź pa si bomo ogledali kako vzpostavimo v celoti ┼íifriran sistem, torej ┼íifriran trdi disk iz katerega se za┼żene operacijski sistem in kjer so shranjene vse na┼íe datoteke.

Dodatno branje



Ve─Ź informacij o ┼íifriranju nosilcev podatkov si lahko preberete na:
- Opis in navodila za Linux Unified Key Setup (LUKS)
- Encrypted Devices Using LUKS
- Navodila za uporabo programa TrueCrypt
- SECURITY dmcrypt
- HOWTO Burn Encrypted Optical Media With Luks
Trajno brisanje podatkov

Trajno brisanje podatkov

Opozorilo: Uporaba spodaj opisanih postopkov lahko privede do resne izgube podatkov ali do okvare sistema. Uporaba na lastno odgovornost. Dedek Mraz vam je prinesel nov računalnik in čas je, da se znebite starega. Ni problema, porečete in se s staro “škatlico” odpravite proti najbližjemu ...

Preberi cel članek »

Vzpostavitev v celoti šifriranega sistema

Vzpostavitev v celoti šifriranega sistema

Priporočamo, da si najprej preberete članek z naslovom: [st.povezava /clanki/07003 Šifriranje nosilcev podatkov v okolju Linux in Windows]. Opozorilo: Uporaba spodaj opisanih postopkov lahko privede do resne izgube podatkov ali do okvare sistema. V nekaterih nedemokratičnih državah je osebna uporaba ...

Preberi cel članek »

Intervju z Dustinom Kirklandom, glavnim razvijalcem sistemov za šifriranje v Ubuntuju

Intervju z Dustinom Kirklandom, glavnim razvijalcem sistemov za šifriranje v Ubuntuju

English version Dustin Kirkland je Ubuntu Core razvijalec, zaposlen pri podjetju Canonical. Preden je začel delati na razvoju Ubuntu serverja, je preživel 8 let pri IBM-u. Trenutno je osredotočen na razvoj Ubuntu Enterprise oblaka za prihajajočo različico Ubuntuja, 10.04 LTS, pred tem pa je delal na ...

Preberi cel članek »