Kako sigurno šifrirati datoteke na Linuxu pomoću Dm-crypta? Linux pokretači koji podržavaju potpunu enkripciju diska? Debian šifriranje diska.

U ovom članku ću vam reći kako stvoriti skriveni kripto kontejner. standardnim sredstvima Linux OS (LUKS i cryptsetup). Ugrađene funkcije LUKS-a (kao što je korištenje eksternih zaglavlja i postavljanje stvarnih podataka na zadati pomak) omogućavaju korisniku pristup podacima skrivenim unutar postojećeg kontejnera, kao i negiraju postojanje takvih podataka.

UPD: Pošto je ovaj post bio gotov prije mjesec dana, nisam mogao ni zamisliti tako čudnu i neočekivanu smrt projekta. Pa da, možda još nije sasvim umro, da vidimo... Ipak, u ovom tekstu sam odlučio da sve reference na TrueCrypt ostavim onakvim kakvi jeste.

Šta je "uvjerljivo poricanje"?

Možete pronaći veoma dug i detaljan opis ovog koncepta na Wikipediji: http://en.wikipedia.org/wiki/Plausible_deniability. Ukratko, to znači da možete imati nešto (ili ste mogli nešto učiniti), u čije prisustvo niko ne može posumnjati niti dokazati (osim ako to sami ne priznate, naravno). I nakon toga možete negirati postojanje (ili činjenicu da ste radili) ovo nešto, ako neko želi da vas optuži, jer (ponavljam) ta činjenica je nedokaziva. Pa, na primjer, ako bi dijete šutnulo svog mlađeg brata u guzicu, a brat otišao da traži pravdu od svojih roditelja, šta bi se desilo u ovom slučaju?

Pa... Kao da se ništa ne dešava. Jer će ovaj tip odbiti, a roditelji, formalno, neće moći da ga uhvate za ruku (jer, prvo, glupo nema svedoka, a drugo, mlađi brat može da igra svoju prljavu igru). Dakle, niko neće biti kažnjen. Pa, ili će kazniti oboje za svakog vatrogasca. Ovo je bio samo primjer korištenja mogućnosti vjerodostojnog poricanja od strane djeteta sklonog agresiji. Ali ti i ja smo, naravno, bijeli i pahuljasti, i koristit ćemo skrivene kontejnere isključivo da zaštitimo naše osobne podatke od loših momaka. Pa zar ne? Naravno, „šta je „dobro“, a šta „loše““ je posebna tema... Ipak, nešto više.

Opća ideja implementacije

Pretpostavimo da želimo pohraniti neke važne podatke unutar šifrirane datoteke. Općenito, koristit ćemo neku vrstu programa za kripto zaštitu koji će obaviti sav prljavi posao umjesto nas. Možda bismo željeli tretirati šifriranu datoteku kao da je virtualni disk, a to značajno sužava broj potencijalnih kandidata. Međutim, postoji jedno "ali". Gotovo svi takvi programi rade sa datotekom kao sa jednim šifriranim podacima. Dozvolite mi da objasnim: korisnik obično ima jedan lozinka (i možda nekoliko "rezervnih") za sve podataka unutar kontejnera. To znači da postoji barem jedna slaba karika: lozinka kontejnera. Ne želim da napominjem da lozinka mora biti kriptografski jaka, jer je to uobičajena istina. Ono što mislim je da ako korisnik odustane od te lozinke iz nekog razloga (npr. pod prisilom), svi podaci će biti pročitani. I ova činjenica mi deluje tužno i potpuno pogrešno...

Međutim, generalno postoji nada. :) Na primjer, postoji program poput , koji je prilično pametan. Korisnik može kreirati dva kontejnera u jednoj datoteci: jedan je „lažni“ sa određenim brojem „zabranjenih“, ali relativno sigurnih datoteka, a drugi je pravi, sa podacima koji ni pod kojim okolnostima ne bi trebali biti izloženi. Dakle, TrueCrypt traži dvije različite lozinke kada korisnik želi da kreira takav "dupli" kontejner. Tokom rada korisnik unosi samo jednu lozinku za "pravi" dio i radi sa njom. U slučaju da pod pritiskom vanjskih okolnosti korisnik bude primoran da otkrije sadržaj kontejnera trećim licima, on jednostavno unese drugu lozinku, a TrueCrypt otvara "lažnu". Naglašavam (a to je zaista važno) da ne postoji način da se dokaže prisustvo skrivenog dijela ako istraživač ne zna odgovarajuću lozinku.

A sada hajde da brzo shvatimo kako ovo smeće funkcionira... Zapravo, sve je vrlo jednostavno. Softver dijeli datoteku kontejnera na dva (općenito govoreći, nejednaka) dijela. Prvi dio, koji može biti relativno mali, sadrži posebno pripremljene podatke; drugi je stvaran. Shodno tome, program mora biti sposoban da radi sa dva različita zaglavlja (konfiguracije) za dva različita dijela, kao i da može izabrati koji dio će dešifrirati u zavisnosti od lozinke koju je unio korisnik. A ovo, moram reći, nije najtrivijalniji dio posla. Pa, jednostavno zato što "zvanično" samo jedna "lažna" konfiguracija treba da bude vidljiva: ako kontejner ima standardno zaglavlje, trebalo bi da bude samo "lažno" zaglavlje; ako su parametri kontejnera pohranjeni u zasebnoj konfiguraciji, ova konfiguracija bi trebala omogućiti dešifriranje samo "lažnog" dijela. A nakon dešifriranja "lažnog" dijela, ne bi trebalo biti ni nagoveštaja o prisutnosti pravog. Moraju biti apsolutno nezavisni. Štaviše, kada se otvori “lažni” dio, softver bi trebao pokazati puni kapacitet kripto kontejnera, čak i ako je volumen ovog dijela mnogo manji.

Pa šta je sa LUKS-om?

Pa, ovdje imamo dobre vijesti i... hm... još više dobrih vijesti.

Dobra vijest je da cryptsetup može dešifrirati i montirati volumene kreirane od strane TrueCrypt". Međutim, samo za čitanje, ali to je besmislica. Pošto ima boljih vijesti. Naime, "skrivene" kontejnere možemo kreirati isključivo koristeći . Štaviše, ovaj uslužni program vam omogućava da kreirate bilo koji broj "skrivenih" dijelova. Naravno, u razumnim granicama. A evo kako se to može učiniti.

Ali prije nego nastavite,

OGROMNO DEBELO ZAstrašujuće UPOZORENJE!!!

  • Sve što je dolje opisano može uzrokovati nepovratan gubitak podataka.
  • U vašoj zemlji može biti zabranjena upotreba jake kriptografije, tako da možete biti zatvoreni ne zbog pravih informacija, već jednostavno zato što imate kripto kontejner koji će se naći na vašem vijku.
  • Kriptografija može zaštititi vaše podatke, ali vas neće zaštititi od mučenja. Skriveni kontejner može pomoći u čuvanju vrijednih informacija, ali ne možete poreći njegovo prisustvo u slučaju izdaje ili prokazivanja.
  • Momci koje zanimaju vaši šifrirani podaci možda nisu tako glupi kao što ste očekivali. Čak i ako ne mogu dokazati postojanje skrivenog dijela kontejnera, mogli bi vas zatvoriti u istu ćeliju sa iskusnim kriminalcima, a za par dana ćete zapamtiti sve lozinke za sve skrivene podatke.
  • Ako imate bliske ljude (djevojku/dečka, rodbinu, prijatelje), oni isto tako mogu postati meta žestokog pritiska. A ovo će vam sigurno pomoći da se mnogo brže sjećate svega općenito, uključujući i ono što niste ni znali.

Zato je bolje razmisliti dvaput o tome koliko je informacija vrijednije od vašeg života i života vaših najmilijih. I napravi rezervnu kopiju. Samo u slučaju.

Pa, man cryptsetup nam može reći mnogo zanimljivi detalji o opcijama komandne linije ovog uslužnog programa. Pa, na primjer, pogledajmo opciju --header:

Pa, ok. To znači da sada možemo imati volumen podataka ispunjen nasumičnim smećem, bez apsolutno nikakvih smislenih potpisa. Opis ove opcije sadrži malo više informacija, upozorenja i upozorenja, ali u krajnjoj liniji, ovo je sve što je potrebno. Ipak, toplo preporučujem da pročitate ovaj odličan vodič.

Još jedna vrlo korisna opcija je --align-payload , koja vam omogućava da postavite stvarne podatke na određeni pomak u odnosu na početak volumena:

I ovo je također super, jer sada možemo slobodno prebacivati ​​naše podatke u bilo koji dio volumena. Shvaćate ideju, zar ne?

  1. Inicijaliziramo volumen za šifriranje: potpuno ga prepisujemo nasumičnim podacima.
  2. Napravimo "zvanični" šifrirani volumen i malo spustimo inficirane vareze, namotane muzle, pron koristan besplatni softver, snimke iz vašeg amaterskog rock benda, ljubavne filmove itd., općenito, za koje nećete dobiti više od dvije godine uslovne kazne.
  3. Koristeći gore navedene ezoterične opcije kriptopostavke, kreiramo skriveni volumen (unutar “zvaničnog”) i prenosimo njegov naslov na vanjski medij. Ovdje možete pohraniti zaista opasne informacije (kao što su vaše fotografije iz vrtića ili planovi za osvajanje svijeta).

U stvari, narode, to je sve. Nema magije. Naravno, ne možete napuniti "službeni" šifrirani disk do kapaciteta iz jednostavnog razloga što je dio njegovog prostora prepušten skrivenom kontejneru. I, kao što sam rekao na početku, možete, ako želite, kreirati više skrivenih diskova slijedeći istu logiku.

Evo... A ako vam još trebaju detalji, onda posebno za vas -

Hodati kroz

Pažnja!

Sljedeće naredbe će uništiti vaše podatke ako se izvrše bez uključivanja mozga. Izgubljene informacije se ne mogu povratiti jer uslužni programi poput dd rade na niskom nivou (to jest, ispod nivoa sistema datoteka). Stoga, neće biti moguće vratiti promjene ili poništiti njihov učinak, čak i ako prekinete odmah nakon pokretanja.

Ukratko, nemojte to raditi osim ako ne možete smisliti smisleno objašnjenje o tome kako se svaki korak odnosi na vaše ciljeve. I napravi rezervnu kopiju. Sad.

Recimo da imamo uređaj sa više particija. Neka to bude, na primjer, /dev/sdb. I neka /dev/sdb1 bude relativno mala (8GB) particija posvećena enkripciji. Podijelit ćemo ga na 5 na 3, pri čemu će dio od 5 GB biti "zvaničan", a dio od 3 GB će biti skriven. Pretpostavimo i da ćemo ključ za šifrovani disk čuvati u /etc/keys, odnosno zaglavlje skrivenog kontejnera na eksternom USB drajvu, koji ćemo montirati u /media/user/ExtUSBStick. Pretpostavljam da već znate koje dozvole trebate postaviti na skladište ključeva, kako konfigurirati encfs/ecryptfs za sigurno pohranjivanje povjerljivih podataka na nesigurnim uređajima, kao i da ima smisla kopirati prave tajne ključeve i pohraniti ih u nekoliko geografski odvojenih sefova.

Pa dobro, vezujem gunđanje i prelazim na suštinu problema.

    Inicijalizacija uređaja /dev/sdb1:

    Dd if=/dev/urandom of=/dev/sdb1 bs=16M

    Izrađujemo ključ za šifrirani volumen. 512 bita (64 bajta) za naše potrebe kroz krov:

    Dd if=/dev/urandom bs=64 count=1 >/etc/keys/secret.key 2>/dev/null

    Šifrirajte volumen koristeći novokreirani ključ:

    Cryptsetup luksFormat /dev/sdb1 /etc/keys/secret.key

    Otvorite šifrirani uređaj i konfigurirajte mapiranje u tajnim podacima:

    Cryptsetup luksOpen --key-file /etc/keys/secret.key \ /dev/sdb1 secretdata

    Kreirajte na šifriranom volumenu sistem podataka(npr. btrfs):

    Mkfs.btrfs -L SecretData /dev/mapper/secretdata

    ... i montirajte ga:

    Montiraj /dev/mapper/secretdata /var/secretdata/

    Imajući na umu ograničenje od 5 koncerata, postavite kvotu ispod količine:

    Btrfs kvota omogućava /var/secretdata/

    Budući da se btrfs kvote primjenjuju samo na podvolume, napravimo jednu takvu stvar:

    brfs subvolume kreirati /var/secretdata/workingvolume

    ... i na njega primijenite specificiranu kvotu (imajte na umu da se btrfs podvolumenovi mogu montirati kao obični sistem datoteka, pa će vam možda biti zgodnije montirati ovaj određeni podvolumen umjesto cijelog fs kasnije):

    btrfs qgroup limit 5G /var/secretdata/workingvolume

    Popunjavamo ga nekim podacima:

    debootstrap --variant=buildd testiranje /var/secretdata/workingvolume

    To je sve, sada možete zaboraviti na ovaj dio:

    Umount /var/secretdata cryptsetup luksClose secretdata

    Sada napravimo "ribu" za zaglavlje i ubacimo nasumično smeće u njega:

    Dd if=/dev/urandom of=/media/user/ExtUSBStick/hidden.head bs=4M count=1

    I sada dolazi trenutak kada počinje prava magija. (Šta? Jesam li rekao da nema magije? Pa sam lagao.) Koristimo isti tajni ključ, međutim, ne u cijelosti, već samo polovinu (od pomaka od 32 bajta). Međutim, preostalih 256 nasumičnih bitova su prilično sposobni da naprave dobar ključ. Zatim ćemo odvojiti zaglavlje i staviti ga na fleš disk. Konačno, kažemo cryptsetup "y" da želimo pomaknuti naš skriveni kontejner za 5 GB (tj. 10485760 blokova od 512 bajta) od početka volumena:

    Cryptsetup --keyfile-offset 32 ​​--header /media/user/ExtUSBStick/hidden.head \ --align-payload 10485760 luksFormat /dev/sdb1 /etc/keys/secret.key

    Da, tako je jednostavno. Sada otvorimo novi šifrirani uređaj:

    Cryptsetup luksOpen --key-file /etc/keys/secret.key --keyfile-offset 32 ​​\ --header /media/user/ExtUSBStick/hidden.head /dev/sdb1 realsecretdata

    Ubacimo bilo koji fs koji želimo:

    Mkfs.btrfs /dev/mapper/realsecretdata

korisni linkovi

Za one koji žele znati nešto više, evo nekoliko dodatnih izvora informacija:

  • šifriranje diska, opće informacije o šifriranju diska: https://wiki.archlinux.org/index.php/Disk_encryption
  • Denied Encryption, koncept je nešto uži od "uvjerljivog poricanja", koji se odnosi samo na polje kriptografije: https://en.wikipedia.org/wiki/Deniable_encryption
  • TrueCrypt

Disk (a la TrueCrypt). Znam da je bilo posla da se doda podrška za šifrovanje u GRUB2, ali još nije spreman. Ima li drugih opcija?

(Imajte na umu da ovdje stvarno mislim na potpunu enkripciju diska, uključujući /boot)

Većina odgovora opisuje podešavanje u kojem /boot nije šifrovano, a neki od njih pokušavaju da objasne zašto bi nešifrovani /boot trebao biti u redu.

Bez da ulazim u raspravu o tome zašto mi zaista treba /boot da bude šifriran, evo članka koji opisuje tačno šta mi treba, na osnovu modifikovane verzije GRUB2:

  • http://xercestech.com/full-system-encryption-for-linux.geek

Problem je u tome što ove modifikacije izgleda nisu podržane u trenutnoj bazi koda GRUB2 (ili mi možda nešto nedostaje).

8 rješenja prikupljaju web obrazac za „Linux pokretače koji podržavaju potpunu enkripciju diska?“

mislim da Trenutna verzija GRUB2 ne podržava učitavanje i dešifrovanje LUKS particija sam (sadrži neke šifre, ali mislim da se koriste samo za podršku lozinki). Ne mogu provjeriti granu eksperimentalnog razvoja, ali postoje nagoveštaji na GRUB stranici da je planiran neki posao koji želite da uradite.

Ažuriranje (2015.) : najnoviju verziju GRUB2 (2.00) već sadrži kod za pristup LUKS i GELI šifrovanim particijama. (Link xercestch.com koji je OP pružio spominje prve popravke za ovo, ali su sada uključene u najnoviju verziju).

Međutim, ako pokušavate šifrirati cijeli disk iz sigurnosnih razloga, imajte na umu da nešifrirani pokretač (kao što je TrueCrypt, BitLocker ili modificirani GRUB) ne pruža veću zaštitu od nešifrirane /boot particije (kao što je primijetio SP u komentar iznad). Svako ko ima fizički pristup računaru može ga jednostavno zamijeniti prilagođenom verzijom. Čak se spominje u članku na xercestech.com koji ste povezali:

Da budemo jasni, ovo ni na koji način ne čini vaš sistem manje ranjivim na oflajn napad ako bi napadač zamijenio vaš bootloader svojim vlastitim ili preusmjerio proces pokretanja da pokrene svoj vlastiti. sopstveni kod, vaš sistem je možda još uvijek kompromitovan.

Imajte na umu da svi softverski proizvodi za potpunu enkripciju diska imaju ovu slabost, bilo da koriste nešifrirani pokretački program ili nešifrovanu particiju za pokretanje/pretpokretanje. Čak i proizvodi koji podržavaju TPM (Trusted Platform Module) čipove, kao što je BitLocker, mogu se implementirati bez promjene hardvera.

Najbolji pristup bi bio:

  1. dešifriranje na nivou BIOS-a (in matična ploča ili adapter ili eksterni hardver [pametna kartica], sa ili bez TPM čipa), ili
  2. nosite autorizacijski kod PBA (preboot authorization) (u ovom slučaju particiju /boot) na prenosivom uređaju (na primjer, pametnoj kartici ili USB disku).

Da biste to učinili na drugi način, možete provjeriti Linux Full projekt Šifriranje diska(LFDE) na: http://lfde.org/ koja pruža post-instalacijsku skriptu za premještanje /boot particije na eksterni USB diskšifriranjem ključa pomoću GPG-a i pohranjivanjem na USB. Na ovaj način, slab dio putanje pokretanja (nešifrirana /boot particija) je uvijek s vama (bićete jedini sa fizički pristup na dešifriranje koda i ključa). ( Bilješka: ova stranica je izgubljena, a autorov blog je također nestao, međutim stare fajlove možete pronaći na https://github.com/mv-code/lfde uz napomenu da je posljednji razvoj urađen prije 6 godina). Kao lakša alternativa, možete montirati nešifrovanu particiju za pokretanje na USB disk kada instalirate OS.

S poštovanjem, M.V.

Neka vaš prvi RAMdisk i /boot folder budu nešifrirani.

Ovo će pozvati "minimalni" kernel sa drajverima i podrškom za prebacivanje na "pravi" root fajl sistem koji je šifrovan.

Prije nego što kažete "to je hak", zapamtite - većina (ako ne i sve) Linux distribucija se danas pokreće po defaultu. Ovo eksplicitno omogućava vašem sistemu da učita i učita korijenski FS koristeći module koji se moraju učitati iz sistema datoteka. (Vrsta problema sa kokošom i jajima). Na primjer, ako je vaš root sistem datoteka bio na hardverskom RAID volumenu i morali ste da učitate njegov drajver prije nego što ste mogli montirati root FS.

Pogledao sam link koji ste postavili - ipak boot particija ne, čvrsti disk još uvijek ima nešifrirani pokretački program kojem se može pristupiti i kompromitovati zlonamjerni napad. Tražio sam sličnu postavku koja nema nikakve nešifrirane podatke na tvrdom disku, ali do sada sam samo došao do pokretanja pokretačkog programa sa prenosivog diska.

Vjerujem da je većina onoga što vam treba instrukcija o tome kako instalirati OS sa šifriranim HD-om.

Ubuntu ima lijepu stranicu sa uputstvima kako da kreirate šifrovane particije, LMVP, foldere, itd, samo vašu verziju vaše distribucije...

Ne, ne mislim tako.

Da li zaista trebate šifrirati/učitati? Sumnjam da ne. Ostatak datotečnog sistema može se šifrirati normalnim softver Linux koji se nalazi u initramfs u /boot i traži od korisnika u skladu s tim.

Čini se da tražite nešto što se ne može učiniti i da to upoređujete Windows rješenje, koji skriva implementaciju od vas, ali zapravo radi istu stvar kao i Linux.

Najbliže rješenje koje se mogu sjetiti je korištenje HDD, koji implementira sigurnost lozinkom i enkripciju. Neki Thinkpad laptopovi koristite ova hardverska rješenja.

Odgovor je u članku. "Ovo je sada moguće s proširenjima za sljedeću generaciju GRUB2 pokretačkog programa koji je zakrpljen da podržava više od pukog" i "želimo kasnije da instaliramo novu luks grub2 omogućenu sliku", i "Sada ćemo kompajlirati GRUB2 izvor sa LUKS-om podrška. Čini se da postoji popravka ili proširenje koje trebate dobiti i omogućiti s GRUB2 ili GRUB2 račvanim izvorom.

Grub2 verzija 2.02~beta3 može učiniti mnogo što Grub2 verzija 2.02~beta2 ne može, ja sam potvrdio:

  1. Dizanje pomoću Super Grub 2 diska
  2. Otkucajte "c" da biste otišli na komandnu liniju
  3. Unesite naredbe za montiranje šifrirane particije koju želim
    • insmod lux
    • cryptomount (hd0, #) // gdje # predstavlja šifriranu particiju
  4. Enter ključna fraza i unesite neke komande
    • multiboot (crypto0) /grub/i386-pc/core.img
    • cipela

Ovo će pokrenuti drugi Grub2 koji je unutar šifrovane particije, ovdje nema zlih ludih napada... Pokrećem se sa CD-a (samo za čitanje) i onda montiram šifrovanu particiju (ne šifrovanu frazu, bilo šta!), zatim dižem iznutra šifrovana particija i dizanje Grub2 sa sopstvenim menijem, itd.

Upozorenje: Grub2 verzija 2.02~beta2 ne može učiniti isto jer ima neke greške (koje izgleda da su ispravljene u Grub2 verziji 2.02~beta3) povezane sa komandom cryptomount...

beta2 greške o kojima govorim su:

  1. Zapravo ne montira šifrovanu particiju, tako da vam ne dozvoljava pristup (crypto0)/*
  2. Ako postoji više od jedne šifrirane particije, korištenje cryptomount -a zahtijeva samo jednu pristupnu frazu
  3. Nakon što jednom pokrene cryptomount, ponovo se pokrene, ne radi ništa

na beta 3:

  1. On zapravo montira šifrovanu particiju i omogućava vam pristup datotekama putem (crypto0)/* ili (crypto1)/* itd. ako je više od jednog montirano u isto vrijeme
  2. Traži svaki pristupni izraz (jedan po šifriranom dijelu)
  3. Ovo vam omogućava da ga pokrenete koliko god puta želite, možete instalirati jedan, pa drugi, itd.

Napomena: Nisam shvatio kako da ih isključim osim ponovnog pokretanja ili učitavanja drugog ili jednog boot loader grub2/ostalo itd.

Nadam se da će ovo pomoći da se stvari razjasne, i nadam se da će 2.02~beta3 verzija Grub2 biti integrisana u LiveCD tako da možemo da je instaliramo bez potrebe da je sami kompajliramo.

PD: Sa Super Grub 2 pogonom, ne vidim način da instaliram Grub2 verziju 2.02~beta3 na MBR/boot particiju, itd.

U ovom članku pokušaću da uporedim performanse različitih sistema šifrovanja pod linuxom. U teoriji se, naravno, zna koji je sistem produktivniji i pokušava se izračunati učinak različiti sistemi bili (). Truecrypt čak sadrži i ugrađeni benchmark (koji pokazuje, međutim, performanse na RAM-u, može se koristiti samo za procjenu brzine različitih algoritama šifriranja). Uradiću nešto drugačije - izmeriću brzinu sistema datoteka šifrovanog na različite načine u procentima u poređenju sa konvencionalnim nešifrovanim sistemom datoteka.


Šifrovaćemo posebnu particiju na zasebnom HDD-u koji ne sadrži root fajl sistem sa algoritmom koji se podrazumevano koristi u svakom konkretnom slučaju. Kao običan korisnik, ne razumijem nijanse standarda enkripcije (na primjer, po čemu se RIPEMD-160 heširanje razlikuje od Whirpool-a, koji je od ovih načina brži, koji doprinosi većoj sigurnosti), pa se samo oslanjamo na činjenicu da proizvođači svake od njih softverski proizvod izabrao dovoljno kripto-otporne zadane parametre. Možda ovo nije sasvim točno, jer performanse različitih algoritama šifriranja nisu iste. Po želji, naravno, možete promijeniti vrstu enkripcije, ali nisam siguran da u svim testiranim proizvodima postoji apsolutno identičan skup algoritama. Mi ćemo testirati:

3) eCryptfs je podrazumevani sistem koji se nudi korisnicima Ubuntua za šifrovanje kućnih direktorijuma, zbog čega je uključen u ovaj test. Radi na vrhu postojećeg sistema datoteka. Šifruje svaki fajl posebno, tako da svako može da vidi prava, datume izmene, broj šifrovanih fajlova; prema zadanim postavkama, nazivi datoteka su također vidljivi, iako postoji opcija za njihovo šifriranje. Najmanje funkcionalan alat ikada.

4) EncFS - približan analog eCryptfs-a, ali koristi FUSE.

Dakle, za testove je dodijeljena zasebna mašina prilično napredne dobi u sljedećoj konfiguraciji: CPU - Intel Celeron 2000MHz, RAM - 512 Mb DDR PC2700, sistem HDD- WD Caviar SE 5400 RPM 80Gb, test HDD - WD Caviar SE 7200 RPM 80Gb.
OS - Ubuntu 12.04 LTS, verzije cijelog softvera su relevantne za riznice ovog OS-a u vrijeme pisanja ovog teksta (Truecrypt 7.1a-linux-x86 nije iz spremišta).

Testiraćemo podrazumevani ext4 sistem datoteka za većinu distribucija. Za testiranje performansi koristićemo uslužni program iozone3 i shell skriptu napisanu „na koljenu“ da izmjerimo procentualne razlike u testovima.

Skripta za brojanje. Na čistoću koda nije se obraćala posebna pažnja, jedini kriterij za pisanje je prisustvo ispravnog rezultata.

#!/bin/sh gendifffile () ( #procedura generiše datoteku koja je zgodna za raščlanjivanje. Prvo, redovi koji se ne mogu raščlaniti su skraćeni; drugo, prva dva broja u svakom redu su skraćena, što ukazuje na #veličinu datoteke i zapis veličina, respektivno; treće, ceo fajl se ispisuje red po red - #jedan rezultat testa po liniji cat $1 | dok se čita LINE ; uradi echo $LINE| grep "^[[:space:]]*[[:digit:] ]" | awk "(za (i=3;i<=NF;i++) {print $i}}" done > > $2 ) getline () ( #procedure ispisuje red broj $2 datoteke $1 glava -n $2 "$1" | rep -n 1 ) compare () ( #procedure uspoređuje fajl $1 i $2 red po red, izračunavajući postotak razlike za svaki par testova #zatim izračunava aritmetičku sredinu, za koji procenat je brži ili sporiji #fajl koji sadrži prvu grupu testova, fajl koji sadrži drugu grupu P=0 MAX=0 L1=`mačka "$1" | wc -l` # broj testova u datoteci L2=`cat "$2" | wc -l` if [ $L1 -ne $L2 ]; tada #ako fajlovi sadrže različit broj testova, onda ih nećemo upoređivati ​​echo error return fi KORAK=$(($L1*5/100)) J=0 za I u `seq 1 $L1`; uradite J=$(($J+1)) ako je [ $J -eq $STEP]; tada J =0 echo "$((100*$I/$ L1))% završeno ($I od $L1)" fi A=`getline "$1" $I` B=`getline "$2" $I` if [ ` echo $A \> $B|bc -l` - eq 1 ]; tada D=`echo "100-($B*100/$A)"|bc -l` if [ `echo $D \> $MAX | bc -l` -eq "1" ]; tada MAX=$D spavanje 5 fi else D=`echo "100-($A*100/$B)"|bc -l` if [ `echo $D \ > $MAX| bc -l` -eq "1" ]; n MAX=$D spavanje 5 fi D="-$D" #ako vrijednost ima znak "-", ovaj test je bio brži #u drugom fajlu nego u prvom fi P=`echo "$P+$D "| bc -l`done P=`echo $P/$L1| bc -l` #izračunaj aritmetičku sredinu eho PERCENT=$P MAX_PERCENT=$MAX ) genaverage () ( #procedura za generisanje datoteke pripremljene za analizu, čiji je svaki red #aritmetička sredina odgovarajućih redova svih izvještaja fajlovi koji se nalaze u analiziranom direktorijumu AVG=` mktemp` F=`ls "$1"|wc -l` #broj fajlova sa izveštajima u navedenom direktorijumu #pod uslovom da su samo takve datoteke tamo pohranjene i ništa drugo #nećemo proveravati ispravnost ove pretpostavke ako je [ ! -d " $1" -o $F -lt 2 ]; zatim eho greška >/dev/stderr #u ovoj proceduri ćemo sve poruke izbaciti u stderr, pošto je #stdout zamijenjen drugim procedura rm -f $AVG izlaz fi TMP=` mktemp` pronađi "$1" -tip f| dok čita FILE; uradi #za svaku datoteku izvještaja o ozoni u datom direktoriju I=`mktemp` #gendifffile "$FILE" "$I " #names pišu sve takve fajlove u "TMP" red po red echo "$I">>$TMP done L=`cat \`getline "$TMP" 1\`|w c -l` mačka "$TMP"| dok čita LINE; uradi #mala provera je dobra L1=`mačka "$LINE"| wc -l` #da li svi fajlovi sadrže isti broj testova ako [ $L -ne $L1 ]; onda greška eha >/dev/stderr izlaz fi urađen STEP=$(($L*5/100)) J=0 za I u `seq 1 $L`; do J=$(($J+1)) ako [ $J -eq $STEP ]; onda J=0 echo "$((100*$I/$L))% gotovo ($I od $L)" >/dev/stderr fi SUMFILE=`mktemp` #na ovaj način dobijam vrijednost varijable SUM iz ugniježđene petlje SUM=0 mačka "$TMP"| dok čita LINE; do SUM=$((`getline "$LINE" $I`+$SUM)) echo $SUM > "$SUMFILE" urađeno echo `tail -n 1 "$SUMFILE"`/$F|bc -l >> $ AVG #uzmite aritmetičku sredinu #i zapišite je na odgovarajuću lokaciju #AVG datoteke rm -f "$SUMFILE" done cat "$TMP"| dok čita LINE; uradi #izbriši privremene datoteke rm -f "$LINE" urađeno rm -f "$TMP" echo $AVG ) printf %b "\\033)