» »

Š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:

  • šifriramo razdelek (ki ga kasneje priklopimo kot običajen razdelek), ali pa

  • šifriramo posebno datoteko, ki jo kasneje priklopimo kot virtualni razdelek.



Š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 »

ASCII Videowall

ASCII Videowall

Gradnja takšne kuriozitete spominja na kuhanje mojstrovine. Za veščega je proces povsem enostaven, samorazviden in zabaven, za nesrečnega opazovalca pa mističen in strašljiv. Povsem po nepotrebnem, bomo rekli. Naš recept je tako sestavljen iz opisa za vešče, ki sovpada s spiskom sestavin, ...

Preberi cel članek »

Varnost slovenskih GSM omrežij

Varnost slovenskih GSM omrežij

V članku so predstavljeni rezultati varnostne analize slovenskih GSM omrežij, ki smo jo opravili v prvi polovici leta 2012. Namen članka je opozoriti na varnostne ranljivosti v slovenskih GSM omrežjih z namenom, da se varnostne ranljivosti odpravijo, posledično pa se poveča stopnja varnosti in zasebnosti ...

Preberi cel članek »

Napadi na delovni pomnilnik

Napadi na delovni pomnilnik

Delovni pomnilnik ali RAM (Random Access Memory) je del računalnika, v katerem se začasno shranjujejo podatki. Podatki v RAM pomnilniku naj bi se po izključitvi računalnika iz napajanja izgubili, vendar bomo v nadaljevanju videli, da to ne drži povsem. Poleg tim. "običajnega" delovnega pomnilnika, ...

Preberi cel članek »