Članki » Zasebnost » Šifriranje nosilcev podatkov v okolju Linux in Windows
Š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
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 ...
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 ...
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, ...
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 ...
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, ...