EncFS - Transparentní šifrování adresáře s FUSE

V dnešním článku bych vás rád seznámil s několika nejjednodušeji aplikovatelnými (ale samozřejmě účinnými a profesionálními) metodami šifrování, dozvíte se například jak připojit šifrovaný obraz disku jako znakové zařízení či disk, nebo jak šifrovat libovolný adresář, to vše "on-the-fly" (za letu nebo také transparentně). Bezpečnost především…

Úvod

Ačkoli každý z nás občas měl nějaká data, které chtěl skrýt (ať už ve správném a OPODSTATNĚNÉM patologickém schizofrenním paranoidním strachu před black-haty, veřejností, nebo policií), málo kdo se nějakým způsobem zabýval pokusem o jejich šifrování. Musím upozornit, ze těm, kdo potřebují na svém disku ukrývat nějaké věci, před svým nejbližším (převážně Linuxově negramotným) okolím, dostatečně postačí dát na začátek názvu adresáře tečku: <tt>mv pr0n .mami_sem_mi_nelez</tt> ;D, ale protože tady se zabýváme obraně před orgány s mnohem sofistikovanějšími technologiemi a znalostmi než má pravděpodobně někdo, kdo by mohl ve vašem počítači hledat materiály této povahy…

Přehled různých nástrojů

název/popis/algoritmy/deb/další/další zdroje

EncFS

- připojí zašifrovaný adresář do specifikovaného mountpointu, je postavený na <a href="http://en.wikipedia.org/wiki/FUSE_%28Linux%29">FUSE</a><br /> - AES, Blowfish, Blowfish-Compat<br /> - ano (encfs + fuse, libfuse2, rlog, OpenSSL)<br /> - já po instalaci musel ještě kompilovat FUSE ze staženého tarrballu (naleznete na <a href="http://fuse.sourceforge.net/">oficiálním webu</a>), pomocí balíčku libpam-encfs lze připojovat disky automaticky při přihlášení pomocí PAMu<br /> - <a href="http://arg0.net/wiki/encfs">Oficialní web</a><br />

TrueCrypt

- připojí zašifrovaný obraz disku do specifikovaného mountpointu<br /> - AES, Blowfish, CAST5 (CAST-128), Serpent, Triple DES, Twofish, kombinace předešlých<br /> - ne<br /> - Velikost zašifrovaného disku se nedá změnit, umožňuje brute-force útok (alespoň u slabých hesel), existuje verze pro Windows (pouze GUI) a přenosná pro flashdisky…<br /> - <a href="http://www.truecrypt.org/">truecrypt.org</a>, root.cz: <a href="http://www.root.cz/clanky/sifrujeme-data-programem-truecrypt/">úvod</a>, <a href="http://www.root.cz/clanky/truecrypt-profesionalni-ochrana-dat-zdarma/">více</a><br /> <br />

CryptoLoop (LoSetup)

- Kryptografický wrapper mezi dvě znaková zařízení (nebo znakové zařízení a soubor)<br /> - AES, XOR, (lze doplnit další, např. DES)<br /> - ano - já (Etch - 1CD verze), jsem ho měl již předinstalovaný<br /> - zastaralý, jednoduchý<br /> - <a href="http://encryptionhowto.sourceforge.net/Encryption-HOWTO-4.html">Encryption HOWTO</a>, <a href="http://www.linuxcommand.org/man_pages/losetup8.html">man losetup</a><br /> eCryptFS (<a href="http://ecryptfs.sourceforge.net/">SF</a>) <b>[Doplněno 1.11. 2oo7]</b>, systém ne nepodobný EncFS. Připojení oddílu ale probíhá takto:<br /> <br /> <tt># mount -t ecryptfs ~/crypt ~/crypt</tt><br /> pro používání bez roota potřebujete balíčky ecryptfs-userspace a ecryptfs-utils, pak se pravděpodobně opět mountuje přes dodanou utilitku pomocí FUSE. eCryptFS se sám označuje jako "An Enterprise-class Cryptographic Filesystem for Linux" a patří do rodiny GNUPGFS. S tímto systémem nemám žádné zkušenosti a uvádím ho jen pro úplnost.<br /> <br /> Další informace<br /> - Také jsou dostupné další kvalitní systémy jako <a href="http://en.wikipedia.org/wiki/Dm-crypt">dm-crypt</a> a <a href="http://luks.endorphin.org/">LUKS</a>, nebo můžete šifrovat jednotlivé soubory nějakou <a href="https://www.soom.cz/index.php?name=download/kategorie&sid=12">jednoduchou utilitkou</a>… Tyto možnosti jsem ale již tolik nerozebíral (vzhledem ke své spokojenosti s EncFS).<br /> - <a href="http://en.wikipedia.org/wiki/List_of_cryptographic_file_systems">Wikipedia/List_of_cryptographic_file_systems</a><br /> - <a href="http://en.wikipedia.org/wiki/Full_disk_encryption">Wikipedia/Full_disk_encryption</a><br /> <br /> <h3>Vše závisí jen na vašich konkrétních požadavcích a stupni důvěrnosti dat.</h3><br /> <br />

EncFS

Tento program jsem si vybral já, protože je nejpohodlnější a třeba narozdíl od také velmi kvalitního TrueCryptu má dynamickou velikost šifrovaného disku a tak nemusím řešit problémy s příliš malým, nebo příliš velkým diskem… Samozřejmě, že není pozadu ani co se týče bezpečnosti.<br /> <br /> K připojení slouží program encfs: <tt>encfs ~/.crypt ~/crypt</tt><br /> První argument je adresář se zašifrovanými daty, druhý je ten, do kterého se připojí data dešifrovaná - pro čtení a zápis. Dešifrovaná data tedy nejsou fyzicky na disku a tedy se k nim nikdo jentak nedostane…<br /> <br /> Při prvním spuštění budou zadané adresáře vytvořeny (pokud již neexistují), potom budete mít na výběr (nejlepším výběrem pro nás bude zadání znaku "p" - paranoidní nastavení (AES-256), zkušenější mohou dát "x" - vlastní nastavení, ovšem pokud nevíte jaký je rozdíl mezi různými algoritmy a jejimi obdobami, verzemi a jak má vypadat bezpečný klíč pro daný algoritmus, nebo prostě nemáte náladu nic řešit, použijte raději "p"). Na druhou stranu v "x" režimu lze například vypnout šifrování názvů souborů (nebezpečné!!! - útočník může zaměnit soubor, ke kterému nemá přístup s tím, který mu poskytujete dobrovlně) a spousta dalších nastavení.<br /> <br /> Pak budete dotázáni na heslo (poprvé ho zadejte ještě jednou pro ověření)…<br /> <br /> Dešifrovaný adresář odpojíte příkazem <tt>fusermount -u ~/crypt</tt> (kde adresář je mountpoint - tedy rozšifrovaná data)<br /> <br /> Šťouralové si jistě všimnou, že v adresáři se zašifrovanými daty je soubor .encfs? (? = zřejmě číslo podverze - v mém případě EncFS 1.2.5 má soubor .encfs5), který obsahuje všecna nastavení šifrování našeho adresáře. <b>Já dopručuji tento soubor pečlivě zazálohovat stejně dobře, jako si pamatujete heslo, je totiž pravděpodobné, že v případě jeho poškození přijdete o všechna zašifrovaná data!!!</b><br /> <br /> <b>[Doplněno 1.11. 2oo7]:</b> EncFS obsahuje ještě dvě další utilitky, tou první je <tt>encfssh</tt>, která udělá pouze to, že vytvoří dočasný zašifrovaný adresář a otevře nový shell, jakmile ukončíte svojí práci v tomto shellu (např. Ctrl+D), tento adresář se smaže. Ve skutečnosti jde pouze o jednoduchý skript.<br /> <br /> Další utilitkou je <tt>encfsctl</tt>, ta vám umožní provádět různé změny v nastavení a jiné pomůcky (změna hesla, jednorázový přístup k zašifrovaným souborům, atd..). Pro více informací viz. screenshot.<br /> <br /> <h2>Screenshot z encfsctl:</h2><br />

harvie@harvie-srv:~$ encfsctl<br />
encfsctl version 1.2.5<br />
Usage:<br />
encfsctl (root dir)<br />
-- displays information about the filesystem, or<br />
encfsctl info (root dir)<br />
-- zobraz informace (Implicitní příkaz)<br />
encfsctl passwd (root dir)<br />
-- změnit heslo pro svazek<br />
encfsctl autopasswd (root dir)<br />
-- change password for volume, taking password from standard input.<br />
No prompts are issued.<br />
encfsctl showcruft (root dir)<br />
-- ukázat nerozkódovatelná jména souborů ve svazku<br />
encfsctl cat (root dir) path<br />
-- decodes the file and cats it to standard out<br />
encfsctl decode (root dir) encoded-name<br />
-- rozkódovat jméno a ukázat jeho čitelnou verzi<br />
encfsctl encode (root dir) [plaintext-name]<br />
-- encodes a filename and print result<br />
encfsctl export (root dir) path<br />
-- decrypts a volume and writes results to path<br />
encfsctl --version<br />
-- vypiš číslo verze a ukonči běh<br />
<br />
Example:<br />
encfsctl info ~/.crypt<br />
<br />
harvie@harvie-srv:~$ encfsctl info ~/.crypt<br />
<br />
Version 5 configuration; created by EncFS 1.2.5 (revision 20040813)<br />
Filesystem cipher: "ssl/aes", version 2:1:1<br />
Filename encoding: "nameio/block", version 3:0:1<br />
Key Size: 256 bits<br />
Block Size: 512 bytes, including 8 byte MAC header<br />
Each file contains 8 byte header with unique IV data.<br />
Filenames encoded using IV chaining mode.<br />
File data IV is chained to filename IV.<br />
<br />
harvie@harvie-srv:~$

<br /> <br /> <h2>A na závěr screenshot z expertního režimu encfs:</h2><br />

harvie@harvie-ntb:~$ encfs ~/.crypt ~/crypt<br />
The directory "/home/harvie/.crypt/" does not exist. Should it be created? (y,n) y<br />
The directory "/home/harvie/crypt/" does not exist. Should it be created? (y,n) y<br />
Creating new encrypted volume.<br />
Please choose from one of the following options:<br />
enter "x" for expert configuration mode,<br />
enter "p" for pre-configured paranoia mode,<br />
anything else, or an empty line will select standard mode.<br />
?> x<br />
<br />
Manual configuration mode selected.<br />
The following cipher algorithms are available:<br />
1. AES : 16 byte block cipher<br />
-- Supports key lengths of 128 to 256 bits<br />
-- Supports block sizes of 64 to 4096 bytes<br />
2. Blowfish : 8 byte block cipher<br />
-- Supports key lengths of 128 to 256 bits<br />
-- Supports block sizes of 64 to 4096 bytes<br />
3. blowfish-compat : algorithm compatible with EncFS 0.2-0.6<br />
-- key length 160 bits<br />
-- block size 64 bytes<br />
<br />
Enter the number corresponding to your choice: 1<br />
<br />
Selected algorithm "AES"<br />
<br />
Please select a key size in bits. The cipher you have chosen<br />
supports sizes from 128 to 256 bits in increments of 64 bits.<br />
For example:<br />
128, 192, 256<br />
Selected key size: 256<br />
<br />
Using key size of 256 bits<br />
---------------- Zkráceno ----------------<br />

<br /> <a href="https://www.ihrisko.org/"><i>THX2Ihrisko.org (EncFS quickstart by Wiro Wire)</i></a>