Jak bezpečně zašifrovat soubory na Linuxu pomocí Dm-crypt? Zavaděče Linuxu podporující úplné šifrování disku? Debian šifrování disku.

V tomto článku vám řeknu, jak vytvořit skrytý krypto kontejner. standardní prostředky OS Linux (LUKS a cryptsetup). Vestavěné funkce LUKS (jako je použití externích hlaviček a umístění skutečných dat s daným offsetem) umožňují uživateli přístup k datům skrytým uvnitř existujícího kontejneru a také odmítají existenci takových dat.

UPD: Vzhledem k tomu, že tento příspěvek byl připraven před měsícem, pak jsem si ani nedokázal představit tak zvláštní a nečekanou smrt projektu. No ano, možná to ještě úplně nezemřelo, uvidíme... Přesto jsem se v tomto textu rozhodl ponechat všechny odkazy na TrueCrypt tak, jak je.

Co je to „věrohodné popření“?

Velmi dlouhý a podrobný popis tohoto konceptu můžete najít na Wikipedii: http://en.wikipedia.org/wiki/Plausible_deniability . To ve zkratce znamená, že můžete mít něco (nebo jste mohli něco udělat), z čehož přítomnost nemůže nikdo tušit ani prokázat (pokud si to ovšem sami nepřiznáte). A poté můžete popřít existenci (nebo fakt, že to děláte), pokud vás někdo bude chtít obvinit, protože (opakuji) tato skutečnost je neprokazatelná. No, například, kdyby dítě koplo svého malého bratra do zadku a bratr by šel hledat spravedlnost u svých rodičů, co by se stalo v tomto případě?

No... Jako by se nic nedělo. Protože tenhle frajer odmítne a jeho rodiče, formálně řečeno, ho nebudou moci chytit za ruku (protože za prvé tu nejsou žádní svědci a za druhé mladší bratr může hrát svou špinavou hru). Nikdo tedy nebude potrestán. No, nebo budou trestat oba za každého hasiče. To byl jen příklad využití možnosti věrohodného popření dítětem se sklonem k agresi. Ale vy a já jsme samozřejmě bílí a načechraní a skryté kontejnery budeme používat výhradně k ochraně našich osobních údajů před padouchy. Tak správně? Samozřejmě, „co je „dobré“ a co „špatné“ je samostatný problém... Nicméně více k věci.

Obecná představa o implementaci

Předpokládejme, že chceme uložit některá důležitá data do zašifrovaného souboru. Obecně budeme používat nějaký kryptoochranný program, který za nás udělá všechnu špinavou práci. Můžeme chtít zacházet se zašifrovaným souborem, jako by to byl virtuální disk, a to značně zužuje počet potenciálních kandidátů. Je tu však jedno „ale“. Téměř všechny takové programy pracují se souborem jako s jedním kusem zašifrovaných dat. Dovolte mi vysvětlit: uživatel obvykle má jeden heslo (a možná i pár "náhradních") pro Všechno data uvnitř kontejneru. To znamená, že existuje alespoň jeden slabý článek: heslo kontejneru. Nechci zmiňovat, že heslo musí být kryptograficky silné, protože to je běžná pravda. Mám na mysli, že pokud se uživatel z nějakého důvodu vzdá tohoto hesla (např. pod nátlakem), všechna data se přečtou. A tato skutečnost mi připadá smutná a naprosto mylná...

Obecně však existuje naděje. :) Existuje například program jako , který je docela chytrý. Uživatel může vytvořit dva kontejnery v jednom souboru: jeden je „fiktivní“ s určitým počtem „zakázaných“, ale relativně bezpečných souborů, a druhý je skutečný, s daty, která by za žádných okolností neměla být vystavena. TrueCrypt tedy žádá o dvě různá hesla, když chce uživatel vytvořit takový „dvojitý“ kontejner. Při provozu uživatel zadá pouze jedno heslo pro „skutečnou“ část a pracuje s ní. V případě, že je uživatel pod tlakem vnějších okolností nucen prozradit obsah kontejneru třetím osobám, jednoduše zadá jiné heslo a TrueCrypt „fejk“ otevře. Zdůrazňuji (a to je opravdu důležité), že neexistuje žádný způsob, jak prokázat přítomnost skryté části, pokud výzkumník nezná odpovídající heslo.

A teď pojďme rychle zjistit, jak tato haraburdí funguje ... Ve skutečnosti je vše velmi jednoduché. Software rozdělí kontejnerový soubor na dvě (obecně řečeno, nestejné) části. První část, která může být relativně malá, obsahuje speciálně připravená data; ten druhý je skutečný. V souladu s tím musí být program schopen pracovat se dvěma různými hlavičkami (konfiguracemi) pro dvě různé části a také musí být schopen vybrat si, která část bude dešifrována v závislosti na heslu zadaném uživatelem. A musím říct, že to není ta nejtriviálnější část práce. No jednoduše proto, že „oficiálně“ by měla být viditelná pouze jedna „falešná“ konfigurace: pokud má kontejner standardní hlavičku, měla by to být pouze „falešná“ hlavička; pokud jsou parametry kontejneru uloženy v samostatné konfiguraci, měla by tato konfigurace umožňovat dešifrování pouze "falešné" části. A po rozluštění „falešné“ části by neměl být jediný náznak přítomnosti té pravé. Musí být absolutně nezávislí. Navíc, když se otevře „falešná“ část, software by měl ukázat plnou kapacitu krypto kontejneru, i když je objem této části mnohem menší.

Tak co LUKS?

No, tady máme dobré zprávy a... ehm... ještě více dobrých zpráv.

Dobrou zprávou je, že cryptsetup dokáže dešifrovat a připojit svazky vytvořené TrueCryptem ". Pouze pro čtení, ale to je nesmysl. Protože existují lepší zprávy. Konkrétně můžeme vytvářet "skryté" kontejnery výhradně pomocí . Navíc vám tato utilita umožňuje vytvořit libovolný počet „skrytých“ částí. Samozřejmě v rozumných mezích. A tady je návod, jak to lze udělat.

Ale než budete pokračovat,

VELKÉ TUČNÉ STRAŠIVÉ VAROVÁNÍ!!!

  • Cokoli popsané níže může způsobit nevratnou ztrátu dat.
  • Ve vaší zemi může být používání silné kryptografie zakázáno, takže můžete být uvězněni ne kvůli skutečným informacím, ale jednoduše za to, že máte krypto kontejner, který bude nalezen na vašem šroubu.
  • Kryptografie může ochránit vaše data, ale neochrání vás před mučením. Skrytý kontejner může pomoci uchovat cenné informace, ale nemůžete popřít jeho přítomnost v případě zrady nebo udání.
  • Kluci, kteří se zajímají o vaše šifrovaná data, nemusí být tak hloupí, jak jste očekávali. I když nemohou prokázat přítomnost skryté části kontejneru, mohou vás klidně zavřít do jedné cely s ostřílenými zločinci a za pár dní si budete pamatovat všechna hesla ke všem skrytým datům.
  • Pokud máte blízké lidi (přítelkyni / přítele, příbuzné, přátele), mohou se stejně dobře stát terčem tvrdého nátlaku. A to vám jistě pomůže zapamatovat si vše obecně mnohem rychleji, včetně toho, co jste ani nevěděli.

Je tedy lepší si dvakrát rozmyslet, o kolik informací je cennější než váš život a životy vašich blízkých. A udělat zálohu. Jen pro případ.

No, cryptsetup nám může hodně říct zajímavé detaily o možnostech příkazového řádku tohoto nástroje. Podívejme se například na volbu --header:

Dobře. To znamená, že nyní můžeme mít objem dat naplněný náhodným nevyžádaným zbožím bez absolutně žádných smysluplných podpisů. Popis této možnosti obsahuje trochu více informací, upozornění a varování, ale v konečném důsledku je to vše, co je požadováno. Nicméně vřele doporučuji přečíst si tento skvělý návod.

Další velmi užitečnou možností je --align-payload , která umožňuje umístit skutečná data s určitým posunem vzhledem k začátku svazku:

A to je také skvělé, protože nyní můžeme svá data libovolně přesouvat do jakékoli části svazku. Chápeš nápad, že?

  1. Inicializujeme svazek pro šifrování: zcela jej přepíšeme náhodnými daty.
  2. Vytvoříme „oficiální“ zašifrovaný svazek a trochu upustíme infikovaná varese, vinutá muzla, pron užitečný bezplatný software, nahrávky vaší amatérské rockové kapely, milostné filmy atd. obecně, za což vám bude dána nejdéle dvouletá zkušební doba.
  3. Pomocí výše uvedených možností esoterického šifrování vytvoříme skrytý svazek (uvnitř „oficiálního“) a jeho název přeneseme na externí média, kde můžete ukládat skutečně nebezpečné informace (například fotografie ze školky nebo plány na dobytí světa).

Vlastně, lidi, to je všechno. Žádná magie. Přirozeně nemůžete nacpat kapacitu „oficiálního“ šifrovaného disku z toho prostého důvodu, že část jeho prostoru je předána skrytému kontejneru. A jak jsem řekl na začátku, můžete, pokud chcete, vytvořit více skrytých jednotek podle stejné logiky.

Zde ... A pokud stále potřebujete podrobnosti, pak speciálně pro vás -

Návod

Pozornost!

Následující příkazy zničí vaše data, pokud budou provedeny bez zapnutí mozku. Ztracené informace nelze obnovit, protože nástroje jako dd fungují na nízké úrovni (tj. pod úrovní souborového systému). Proto nebude možné vrátit změny nebo vrátit jejich účinek, a to ani v případě, že je přerušíte ihned po spuštění.

Stručně řečeno, nedělejte to, pokud vás nenapadne smysluplné vysvětlení toho, jak jednotlivé kroky souvisí s vašimi cíli. A udělat zálohu. Právě teď.

Řekněme tedy, že máme zařízení s více oddíly. Nechť je to například /dev/sdb. A nechť je /dev/sdb1 relativně malý (8GB) oddíl vyhrazený pro šifrování. Rozdělíme si to 5 na 3, kdy 5GB část bude „oficiální“ a 3GB skrytá. Předpokládejme také, že klíč k šifrovanému disku ponecháme v /etc/keys, respektive hlavičku skrytého kontejneru na externím USB disku, který připojíme do /media/user/ExtUSBStick. Předpokládám, že již víte, jaká oprávnění musíte nastavit na úložišti klíčů, jak nakonfigurovat encfs / ecryptfs pro bezpečné ukládání důvěrných dat na nezabezpečených zařízeních a také to, že má smysl kopírovat skutečné tajné klíče a ukládat je do několika geograficky oddělených trezorů.

Dobře, svažuji reptání a přecházím k podstatě problému.

    Inicializace zařízení /dev/sdb1:

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

    Vytvoříme klíč pro šifrovaný svazek. 512 bitů (64 bajtů) pro naše účely přes střechu:

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

    Zašifrujte svazek pomocí nově vytvořeného klíče:

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

    Otevřete šifrované zařízení a nakonfigurujte mapování v tajných datech:

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

    Vytvořte na šifrovaném svazku souborový systém(např. btrfs):

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

    ...a namontovat:

    Připojit /dev/mapper/secretdata /var/secretdata/

    S ohledem na limit 5 giga nastavte kvótu dílčího objemu:

    Povolení kvóty Btrfs /var/secretdata/

    Protože kvóty btrfs se vztahují pouze na podsvazky, vytvořte jednu takovou věc:

    brfs subvolume vytvořit /var/secretdata/workingvolume

    ... a aplikujte na něj zadanou kvótu (všimněte si, že podsvazky btrfs lze připojit jako běžné souborové systémy, takže pro vás může být pohodlnější připojit tento konkrétní podsvazek místo celého fs později):

    btrfs qgroup limit 5G /var/secretdata/workingvolume

    Vyplníme jej některými údaji:

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

    To je vše, nyní můžete zapomenout na tuto část:

    Umount /var/secretdata cryptsetup luksClose secretdata

    Nyní vytvoříme „rybu“ pro hlavičku a nacpeme do ní náhodné odpadky:

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

    A teď přichází ten pravý okamžik, kdy začíná ta pravá magie. (Cože? Řekl jsem, že neexistuje žádná magie? Tak jsem lhal.) Používáme stejný tajný klíč, ale ne celý, ale jen polovinu (z offsetu 32 bajtů). Zbývajících 256 náhodných bitů je však docela schopných vytvořit dobrý klíč. Poté oddělíme hlavičku a dáme ji na flash disk. Nakonec řekneme cryptsetup "y", že chceme kompenzovat náš skrytý kontejner o 5 GB (tj. 10485760 512bajtových bloků) od začátku svazku:

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

    Ano, je to tak jednoduché. Nyní otevřeme nové šifrované zařízení:

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

    Hodíme libovolné fs, které chceme:

    Mkfs.btrfs /dev/mapper/realsecretdata

užitečné odkazy

Pro ty, kteří se chtějí dozvědět trochu více, zde jsou některé další zdroje informací:

  • šifrování disku, obecné informace o šifrování disku: https://wiki.archlinux.org/index.php/Disk_encryption
  • Odepřené šifrování, pojem je poněkud užší než „věrohodná popření“, odkazuje pouze na oblast kryptografie: https://en.wikipedia.org/wiki/Deniaable_encryption
  • TrueCrypt

Disk (a la TrueCrypt). Vím, že se pracovalo na přidání podpory šifrování do GRUB2, ale ještě to není hotové. Nějaké další možnosti?

(Všimněte si, že zde skutečně myslím úplné šifrování disku, včetně /boot)

Většina odpovědí popisuje nastavení, kde /boot není šifrovaný, a některé z nich se snaží vysvětlit, proč by nešifrovaný /boot měl být v pořádku.

Aniž bych se pouštěl do diskuse o tom, proč skutečně potřebuji šifrování /boot, zde je článek, který přesně popisuje, co potřebuji na základě upravené verze GRUB2:

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

Problém je v tom, že tyto úpravy zřejmě nejsou podporovány v současné kódové základně GRUB2 (nebo možná něco postrádám).

8 Řešení shromažďují formulářový web pro „zavaděče Linuxu podporující úplné šifrování disku?“

Myslím, že Současná verze GRUB2 sám o sobě nepodporuje načítání a dešifrování LUKS oddílů (obsahuje nějaké šifry, ale myslím, že se používají pouze pro podporu hesel). Nemohu se podívat na experimentální vývojovou větev, ale na stránce GRUB jsou nějaké náznaky, že se plánuje implementace nějaké práce, kterou chcete udělat.

Aktualizace (2015) : Nejnovější verze GRUB2 (2.00) již obsahuje kód pro přístup k šifrovaným oddílům LUKS a GELI. (Odkaz na xercestch.com, který OP poskytl, zmiňuje první opravy tohoto problému, ale ty jsou nyní zahrnuty v nejnovější verzi).

Pokud se však z bezpečnostních důvodů pokoušíte zašifrovat celý disk, mějte na paměti, že nezašifrovaný bootloader (jako je TrueCrypt, BitLocker nebo upravený GRUB) neposkytuje větší ochranu než nezašifrovaný oddíl /boot (jak uvádí SP v komentář výše). Každý, kdo má fyzický přístup k počítači, jej může stejně snadno nahradit vlastní verzí. Je to dokonce zmíněno v článku na xercestech.com, na který jste odkazovali:

Aby bylo jasno, v žádném případě to nečiní váš systém méně zranitelným vůči offline útoku, pokud by útočník nahradil váš bootloader svým vlastním nebo přesměroval zaváděcí proces, aby zavedl svůj vlastní. vlastní kód, váš systém může být stále kompromitován.

Všimněte si, že všechny softwarové produkty pro úplné šifrování disku mají tuto slabinu, ať už používají nešifrovaný bootloader nebo nešifrovaný boot/preboot oddíl. Dokonce i produkty, které podporují čipy TPM (Trusted Platform Module), jako je BitLocker, lze nasadit bez změny hardwaru.

Nejlepší přístup by byl:

  1. dešifrovat na úrovni BIOSu (in základní deska nebo adaptér disku nebo externí hardware [chytrá karta] s čipem TPM nebo bez něj), nebo
  2. noste autorizační kód PBA (preboot autorizace) (v tomto případě oddíl /boot) na vyměnitelném zařízení (například na čipové kartě nebo jednotce USB).

Chcete-li to provést druhým způsobem, můžete zkontrolovat projekt Linux Full Šifrování disku(LFDE) na adrese: http://lfde.org/, která poskytuje poinstalační skript pro přesunutí oddílu /boot externí USB disk zašifrováním klíče pomocí GPG a jeho uložením na USB. Tímto způsobem budete mít slabou část zaváděcí cesty (nešifrovaný oddíl /boot) vždy s vámi (budete jediný, kdo fyzický přístup k dešifrování kódu a klíče). ( Poznámka: tato stránka byla ztracena a blog autora zmizel také, nicméně staré soubory můžete najít na https://github.com/mv-code/lfde jen s tím, že poslední vývoj byl proveden před 6 lety). Jako jednodušší alternativu můžete při instalaci operačního systému připojit nezašifrovaný spouštěcí oddíl na jednotku USB.

S pozdravem M.V.

Udělejte svůj první RAMdisk a /boot složku nešifrovanou.

To vyvolá „minimální“ jádro s ovladači a podporou pro přepnutí na „skutečný“ kořenový souborový systém, který je zašifrován.

Než řeknete „je to hack“, pamatujte – většina (pokud ne všechny) distribuce Linuxu se dnes standardně spouští. To explicitně umožňuje vašemu systému načíst a načíst kořenový FS pomocí modulů, které je třeba načíst ze systému souborů. (Problém slepice a vejce). Například pokud byl váš kořenový souborový systém na hardwarovém svazku RAID a před připojením kořenového FS jste potřebovali načíst jeho ovladač.

Díval jsem se na odkaz, který jsi poslal - ale spouštěcí oddíl ne, pevný disk má stále nešifrovaný zavaděč, ke kterému lze přistupovat a kompromitovat jej škodlivým útokem. Hledal jsem podobnou sestavu, která nemá na pevném disku žádná nezašifrovaná data, ale zatím jsem přišel jen na spuštění bootloaderu z vyměnitelného disku.

Věřím, že většina z toho, co potřebujete, je v první řadě návod, jak nainstalovat OS se šifrovaným HD.

Ubuntu má pěknou stránku s pokyny, jak vytvořit šifrované oddíly, LMVP, složky atd., prostě vaše verze vašeho distro...

Ne, to si nemyslím.

Opravdu potřebujete šifrovat/nahrát? Mám podezření, že ne. Zbytek souborového systému lze zašifrovat pomocí normálního software Linux, který se nachází v initramfs v /boot a vyzve uživatele odpovídajícím způsobem.

Zdá se, že žádáte něco, co nelze udělat, a srovnáváte to Windows řešení, který skrývá implementaci před vámi, ale ve skutečnosti dělá to samé co Linux.

Nejbližší řešení, které mě napadá, je použít HDD, která implementuje zabezpečení heslem a šifrování. Nějaký Notebooky Thinkpad použijte tato hardwarová řešení.

Odpověď je v článku. „To je nyní možné díky rozšířením pro zavaděč GRUB2 příští generace, který byl opraven, aby podporoval více než jen“ a „chceme později nainstalovat nový obraz s podporou luks grub2“ a „Nyní zkompilujeme zdrojový kód GRUB2 s LUKS Podpěra, podpora. Zdá se, že existuje oprava nebo rozšíření, které musíte získat a povolit pomocí GRUB2 nebo rozvětveného zdroje GRUB2.

Grub2 verze 2.02~beta3 umí hodně, co Grub2 verze 2.02~beta2 neumí, mnou ověřeno:

  1. Spouštění pomocí disku Super Grub 2
  2. Zadejte "c" pro přechod na příkazový řádek
  3. Zadejte příkazy pro připojení požadovaného šifrovaného oddílu
    • insmod lux
    • cryptomount (hd0, #) // kde # představuje šifrovaný oddíl
  4. Vstupte klíčová fráze a zadejte nějaké příkazy
    • multiboot (crypto0) /grub/i386-pc/core.img
    • bota

Toto spustí další Grub2, který je uvnitř šifrovaného oddílu, žádný zlý šílený útok zde... Zavedu systém z CD (pouze pro čtení) a poté připojím šifrovaný oddíl (ne heslo, nic!), pak zavedu zevnitř šifrovaný oddíl a bootování Grub2 s vlastním menu atd.

Upozornění: Grub2 verze 2.02~beta2 nemůže dělat totéž, protože má některé chyby (které se zdají být opraveny v Grub2 verze 2.02~beta3) související s příkazem cryptomount...

Chyby beta2, o kterých mluvím, jsou:

  1. Ve skutečnosti nepřipojuje šifrovaný oddíl, takže vám neumožňuje přístup (crypto0)/*
  2. Pokud existuje více než jeden šifrovaný oddíl, použití cryptomount -a vyžaduje pouze jednu přístupovou frázi
  3. Po prvním spuštění cryptomount se spustí znovu, nedělá nic

na beta 3:

  1. Ve skutečnosti připojí šifrovaný oddíl a umožní vám přistupovat k souborům přes (crypto0)/* nebo (crypto1)/* atd., pokud je připojeno více než jeden oddíl současně
  2. Ptá se na každou přístupovou frázi (jedno na zašifrovanou sekci)
  3. To vám umožní spustit jej tolikrát, kolikrát chcete, můžete nainstalovat jeden, pak další atd.

Poznámka: Nepřišel jsem na to, jak je odpojit jinak než restartováním nebo načtením jiného nebo jednoho zavaděč grub2/ostatní atd.

Doufám, že to pomůže věci vyjasnit, a doufám, že verze 2.02~beta3 Grub2 bude integrována do LiveCD, abychom ji mohli nainstalovat, aniž bychom ji museli sami kompilovat.

PD: S diskem Super Grub 2 nevidím způsob, jak nainstalovat Grub2 verze 2.02~beta3 na oddíl MBR/boot atd.

V tomto článku se pokusím porovnat výkon různých šifrovacích systémů pod linuxem. Teoreticky je samozřejmě známo, který systém je produktivnější, a pokouší se vypočítat výkon různé systémy byli (). Truecrypt dokonce obsahuje vestavěný benchmark (který však ukazuje výkon na RAM, lze jej použít pouze pro vyhodnocení rychlosti různých šifrovacích algoritmů). Ale udělám něco jiného – změřím rychlost souborového systému zašifrovaného různými prostředky v procentech v porovnání s běžným nešifrovaným souborovým systémem.


Zašifrujeme samostatný oddíl na samostatném pevném disku, který neobsahuje kořenový souborový systém, pomocí algoritmu používaného ve výchozím nastavení v každém konkrétním případě. Jako běžný uživatel nechápu nuance šifrovacích standardů (například jak se liší hash RIPEMD-160 od Whirpool, který z těchto režimů je rychlejší, který přispívá k vyšší bezpečnosti), takže spoléháme jen na to, že že výrobci každého softwarový produkt zvolili dostatečně kryptoodolné výchozí parametry. Možná to není úplně správné, protože výkon různých šifrovacích algoritmů není stejný. Pokud chcete, můžete samozřejmě změnit typ šifrování, ale nejsem si jistý, že ve všech testovaných produktech existuje absolutně identická sada algoritmů. Budeme testovat:

3) eCryptfs je výchozí systém nabízený uživatelům Ubuntu pro šifrování domovských adresářů, a proto je součástí tohoto testu. Funguje nad existujícím souborovým systémem. Šifruje každý soubor zvlášť, takže každý vidí práva, data úprav, počet zašifrovaných souborů; ve výchozím nastavení jsou také viditelné názvy souborů, i když existuje možnost je zašifrovat. Nejméně funkční nástroj vůbec.

4) EncFS - přibližná obdoba eCryptfs, ale používá FUSE.

Takže pro testy byl přidělen samostatný stroj poměrně pokročilého věku v následující konfiguraci: CPU - Intel Celeron 2000 MHz, RAM - 512 Mb DDR PC2700, systémový HDD- WD Caviar SE 5400 RPM 80Gb, testovací HDD - WD Caviar SE 7200 RPM 80Gb.
OS - Ubuntu 12.04 LTS, verze veškerého softwaru jsou relevantní pro úložiště tohoto OS v době psaní tohoto článku (Truecrypt 7.1a-linux-x86 není z repozitářů).

Otestujeme výchozí souborový systém ext4 pro většinu distribucí. Pro testování výkonu použijeme nástroj iozone3 a shell skript napsaný „na koleni“, abychom změřili procentuální rozdíl v testech.

Počítací skript. Čistotě kódu nebyla věnována žádná zvláštní pozornost, jediným kritériem pro zápis byla přítomnost správného výsledku.

#!/bin/sh gendifffile () ( #procedura vygeneruje soubor, který je vhodný pro analýzu. Za prvé, řádky, které nelze analyzovat, jsou oříznuty; za druhé jsou oříznuta první dvě čísla v každém řádku, což značí #velikost souboru a záznam velikost, respektive ; zatřetí, celý soubor se vypíše řádek po řádku - #jeden výsledek testu na řádek cat $1 | při čtení LINE ; do echo $LINE| grep "^[[:mezera:]]*[[:digit:] ]" | awk "(pro (i=3;i<=NF;i++) {print $i}}" done > > $2 ) getline () ( #procedure vypíše číslo řádku $2 souboru $1 head -n $2 "$1" | tail -n 1 ) porovnej () ( #procedure porovnává soubor $1 a $2 řádek po řádku a vypočítává procentuální rozdíl každého pár testů #pak vypočítá aritmetický průměr, o kolik procent je rychlejší nebo pomalejší #soubor obsahující první skupinu testů, soubor obsahující druhou skupinu P=0 MAX=0 L1=`cat "$1" | wc -l` # počet testů v souboru L2=`cat "$2" | wc -l` if [ $L1 -ne $L2 ]; pak #pokud soubory obsahují jiný počet testů, pak je nebudeme porovnávat echo error return fi STEP=$(($L1*5/100)) J=0 pro I v `seq 1 $L1`; proveďte J=$(($J+1)), pokud [ $J -eq $STEP ]; pak J =0 echo "$((100*$I/$ L1))% dokončeno ($I z $L1)" fi A=`getline "$1" $I` B=`getline "$2" $I` if [ ` echo $A \> $B|bc -l` - eq 1 ]; potom D=`echo "100-($B*100/$A)"|bc -l` pokud [ `echo $D \> $MAX | bc -l` -eq "1" ]; pak MAX=$D spánek 5 fi else D=`echo "100-($A*100/$B)"|bc -l` pokud [ `echo $D \ > $MAX| bc -l` -eq "1" ]; n MAX=$D spánek 5 fi D="-$D" #pokud má hodnota znaménko "-", tento test byl rychlejší #ve druhém souboru než v prvním fi P=`echo "$P+$D "| bc -l`done P=`echo $P/$L1| bc -l` #výpočet aritmetického průměru echo PERCENT=$P MAX_PERCENT=$MAX ) genaverage () ( #postup pro generování souboru připraveného pro analýzu, jehož každý řádek je #aritmetickým průměrem odpovídajících řádků všech zpráv soubory umístěné v analyzovaném adresáři AVG=` mktemp` F=`ls "$1"|wc -l` #počet souborů s reporty v určeném adresáři #za předpokladu, že jsou tam uloženy pouze takové soubory a nic jiného #nebudeme kontrolovat správnost tohoto předpokladu, pokud [ ! -d " $1" -o $F -lt 2 ]; potom echo error >/dev/stderr #v tomto postupu vypíšeme všechny zprávy do stderr, protože #stdout je nahrazeno jiným procedura rm -f $AVG exit fi TMP=` mktemp` najděte "$1" -zadejte f| při čtení SOUBOR; proveďte #pro každý soubor zprávy iozone v daném adresáři I=`mktemp` #gendifffile "$FILE" "$I " #names zapisují všechny takové soubory do "TMP" řádek po řádku echo "$I">>$TMP hotovo L=`cat \`getline "$TMP" 1\`|w c -l` cat "$TMP"| při čtení ŘÁDEK; udělat #trochu kontroly je dobré L1=`cat "$LINE"| wc -l` #do všech souborů obsahuje stejný počet testů if [ $L -ne $L1 ]; potom echo error >/dev/stderr exit fi hotovo STEP=$(($L*5/100)) J=0 pro I v `seq 1 $L`; do J=$(($J+1)) if [ $J -eq $STEP ]; potom J=0 echo "$((100*$I/$L))% hotovo ($I z $L)" >/dev/stderr fi SUMFILE=`mktemp` #tímto způsobem získám hodnotu proměnné SUM z vnořené smyčky SUM=0 cat "$TMP"| při čtení ŘÁDEK; do SUM=$(`getline "$LINE" $I`+$SUM)) echo $SUM > "$SUMFILE" done echo `tail -n 1 "$SUMFILE"`/$F|bc -l >> $ AVG #získejte aritmetický průměr #a zapište jej do příslušného umístění #souboru AVG rm -f "$SUMFILE" hotovo cat "$TMP"| při čtení ŘÁDEK; do #delete dočasné soubory rm -f "$LINE" done rm -f "$TMP" echo $AVG ) printf %b "\\033)