pátek 25. května 2007

Šifrování dat pod Linuxem (Ubuntu 7.04)

S vydáním Truecrypt 5.0 odpadá nutnost používat Terminál, protože TC 5.0 má velmi pěkné grafické rozhraní, co do prvků stejné jako Windows verze. Autoři TC doporučují přechod na verzi 5.0. Staré svazky (= vytvořené staršími verzemi TC) jdou v 5.0 připojit, ale obráceně to samozřejmě možné není. Osobně staré svazky okamžitě ruším.

Několik předběžných poznámek úvodem


Předem bych rád zdůraznil, že nejsem odborník na počítačovou bezpečnost - neumím odborně testovat spolehlivost šifrovacího software atd. Jsem prostý Franta uživatel, který si ovšem už ledaccos přečetl a vyzkoušel. V tomto bodě tedy důvěřuji tomu, co o svých softech říkají sami autoři případně odborníci a vůbec další uživatelé.

Dále upozorňuji, že následující článek se týká pouze šifrování do souboru (tj. kontejner) a nebo zašifrování adresáře. K zašifrování partišny nebo USB klíčenky v Linuxu jsem ještě nedorostl :) Takhle to je, pokud vám to vyhovuje, čtěte dále, pokud ne, je mi líto.

A za třetí, abyste mohli šifrovat, musíte znát aspoň základní ovládání terminálu, tj. command lajny - tedy tak jako já. Není to nic složitého, nemusíte umět počítat nebo programovat, jde pouze o to, naučit se pár příkazů - nebo je aspoň umět pozorně zkopírovat :) Tato podmínka se mi zdá hodně nutná , protože k oněm dvěma softíkům, o nichž budu dál psát , neexistuje zatím oficiální GUI čili grafické ovládání. Ale fakt se nemusíte lekat, jdou používat velmi snadno, chce to jen trošičku chtít.

Dva základní nástroje: ENCFS a Truecrypt

Pod Ubuntu (7.04) lze data bez problémů a relativně snadno šifrovat dvěma základními způsoby. Jednak pomocí tzv. encfs, jednak pomocí slavného Truecryptu. Návod na instalování a ovládání encfs je na Ubuntu.cz a pokud máte Ubuntu 7.04 jako já, neměl by být v ničem problém encfs instalovat a používat. Nemá smysl zde o encfs psát víc, to až v závěru, kde srovnám encfs a Truecrypt.

Instalace Truecrypt v Ubuntu

A nyní už k Truecryptu. Tento skvělý šifrovací software je free opensource, což je potěšující, protože je totiž k šifrování obsahu disku za chodu asi nejlepší ze všech (rozhodně je to nejlepší soft zadarmo a s otevřeným zdrojovým kódem). Truecrypt (dále TC) lze používat pod Windows (kde je samozřejmě oficiální grafické rozhraní), tak pod Linuxem, kde se oficiální GUI teprve plánuje. Pokud opravdu nechcete používat terminál, můžete zkusit neoficiální GUI pro TC, např. Forcefield.

Takže, co dělat, když chci používat v Ubuntu 7.04 TC? Nejdřív si musíte stáhnout linuxovou verzi instalačního balíčku TC. (Zkontrolujte, zda máte povoleny zdroje universe : Systém > Správa > Zdroje softwaru) V okamžiku, kdy píšu tento spot, je k dispozici zabalený archív pro 7.04 a úplně bez problémů stáhnutelný (download). Vyberte si v sekci Linux v rozbalitelné nabídce tu verzi, kterou máte, tedy příkladově Ubuntu 7.04 pro běžný X86 procesor (truecrypt-4.3a-ubuntu-7.04-x86.tar.gz), samozřejmě pokud nemáte 64-bitový procesor. Uložte stažený archív třeba na plochu nebo jinam do user adresáře. Klikněte na něj a po otevření se objeví složka, klikněte na ni a objeví se tři soubory. License a Readme ignorujte, důležitý je instalační balíček s koncovkou .deb. Klikněte na něj a instalujte (v Ubuntu 7.04 se o instalaci stará automaticky Nástroj pro instalaci balíků).

Používání Truecryptu v Terminálu Ubuntu 7.04

I. Vytvoření šifrovaného svazku (kontejneru)

Jakmile je TC instalovaný, spusťte Terminál (Aplikace > Příslušenství > Terminál). Btw, doporučuji přidat si Terminál na horní panel, je to pohodlnější (pravý klik, volba Přidat tento spouštěč na panel).

Vsuvka: tento návod, připomínám, se týká pouze vytvoření šifrovaného kontejneru, nikoliv celé partišny (což je asi úplně nejlepší řešení, i když možná poněkud paranoidní:). Kontejner je ve skutečnosti adresář, obsahující zašifrované soubory. Je normálně viditelný jako jeden soubor (s jakýmkoliv názvem a koncovkou, kterou libo). TC je skvělé právě proto, že není možné poznat ani to, že kontejner je soubor vytvořený TC, ani to, že je to vůbec nějaký zašifrovaný soubor (což je na TC právě to ohromné!). Nikdo nemůže nijak detekovat, že jde o zašifrovaná data!

A teď už opravdu k používání TC v Terminálu. Nejdříve si vytvoříme kontejner, tedy zašifrovaný "soubor" (tj. ve skutečnosti složku, do níž si budete dávat vaše data).

truecrypt -c soubor.koncovka (obecná forma)
truecrypt -c tajnosti.txt (konkrétní příklad)

Vysvětlení: přepínač -c (tj. create) spustí interaktivní vytvoření šifrovaného svazku - kontejneru. Stačí jen odpovídat na otázky, tj. volit čísla odpovědí, nejsou v tom žádné čáry. Soubor.koncovka - libovolné, něco nenápadného (uvažte ovšem, nakolik podezřelý bude soubor o velikosti několika gigabajtů a s koncovkou .txt :)

Takže, nyní se spustí onen interaktivní Wizard (pokud znáte TC pod Windows, je to v podstatě tentýž Wizard, akorát bez té grafické parády). Pokud je předvybrána správná volba, kterou chceme, stačí jen entrovat.

Volume type:
1) Normal
2) Hidden
Select [1]:

Vyberte 1) Normal. Hidden znamená svazek ukrytý v jiném svazku, což je asi vůbec nejbezpečnější kontejnerový způsob, jak schovat data, o němž vím, ale jeho vytvoření je mimo rozsah tohoto návodu.

Filesystem :
1) FAT
2) None
Select [1] :

Vyberte 1) FAT. Jde o souborový systém na vytvářeném svazku (kontejneru).

Enter volume size (bytes - size/sizeK/sizeM/sizeG):
10G

Zvolte si velikost svazku (kontejneru). Tady si dobře rozmyslete, jaký typ dat chcete v daném kontejneru uchovávat. U textových dokumentů případně občasných obrázků stačí podle mě velikost do gigabajtu, maximálně dvou. Pokud chcete mít v kontejneru objemnější soubory, např. rodinná videa, ehm, tak samozřejmě zadejte nejméně několik gigabajtů, podle mě cokoliv pod 10G nemá dlouhodobě smysl (v příkladu je zvoleno právě 10G). U gigabajtových velikostí však také hraje roli (ne)nápadnost : tak veliký, ničím neotevřitelný soubor, který navíc ani nejde detekovat co do povahy dat, může vzbudit pozornost toho, kdo zkoumá váš harddisk (o tom víc při srovnání encfs a TC v závěru).

Hash algorithm:
1) RIPEMD-160
2) SHA-1
3) Whirlpool
Select [1]:

Zvolte 1.

Encryption algorithm:
1) AES .... atd.
Select [1]:

Zvolte opět jedna (u Win verze TC lze spustit benchmark rychlosti šifrování, a na jeho základě zvolit, tady nevím, doplním později:).

Enter password for new volume 'soubor.koncovka' :
Enter password for new volume 'tajnosti.txt' :

Tak, a jsme u klíčového bodu tvorby šifrovaného svazku (kontejneru). Musíte si vytvořit opravdu silné heslo, žádné roky a data narození, žádná jména apod. Navíc musí být heslo dostatečně dlouhé (aspoň 25 znaků!) a variované. Doporučuji k vytvoření hesla password generator programu KeePassX (ano, to je linuxová varianta KeePassu, můžete ji klidně mít i na klíčence, btw databáze hesel .kdb je cross platform, takže stačí poprvé vybrat tu vytvořenou KeePassem pod Windows a zvolit její pamatování..., netřeba pro KeePassX vytvářet novou). Pokud jsem si všimnul, tak v KeePassX nelze spustit generátor přímo z nabídky, ale rozhodně jej můžete spustit při editaci (jen jako) nějakého hesla a zkopírovat vygenerované heslo přímo do Terminálu.

Nejlépe bude, když si v KeePassX vytvoříte novou položku přímo pro daný svazek (kontejner) a spustíte generátor v editaci. Pak ještě vložte na výzvu Terminálu heslo podruhé. Pokud máte v KeePassX heslo už uložené jako samostatnou položku a máte nastaveno nějaké vyprázdnění klipboardu, musíte dvojkliknout na heslo v položce v KeePassX ještě jednou, abyste je mohli vložit znovu.

Enter keyfile path [none] :

Cesta ke keyfiles. Keyfiles jsou druhá možná složka, jak ovládat vstup do zašifrovaného svazku, tj. musíte zvolit soubory v nějakém umístění, ale mně osobně nijak k srdci nepřirostly (asi kvůli relativní křehkosti - stačí jeden byte takového souboru pozměněný a tradáá) a pro tento návod je neuvažuju. Takže entrujte (je přednastaveno žádná).

Dále se ozve hláška* o nastavení myši, aby mohla být sbírána náhodná data ke krycímu vyplnění kontejneru, ale tu ignorujte, a hned napište náhodně 320 znaků na klávesnici.

Please type at least 320 randomly chosen characters and then press Enter:

Nemusíte počítat - když entrujete menší počet než 320, hláška vás upozorní, kolik ještě zbývá napsat.

* Pokud jste spustili vytváření svazku se sudo, můžete v tomto kroku jen hýbat náhodně myší, stejně jako pod Win.

Jakmile entrujete požadovaný počet znaků či více (nebo ve variantě se sudo dostatečně hýbete myší), začne vytváření svazku (kontejneru) - objeví se takové ubíhající údaje (příklad je přibližný):

Done: 753.21 MB Speed: 18.08 MB/s Left : 0:09:54

Znamenají Hotovo - Rychlost - Zbývá času. Nakonec se objeví hláška Volume created (svazek vytvořen) a Terminál se přehodí zpátky do stavu, kdy možno psát jakékoliv příkazy.

II. Připojování a odpojování šifrovaného svazku (kontejneru)

Ačkoliv se to na první pohled nemusí zdát, jsou obě tyto operace - připojení a odpojení šifrovaného svazku - velice jednoduché. Bylo by však dobré, abyste se naučili základy práce s terminálem, minimálně byste měli vědět, že cestu do vlastního adresáře lze zkráceně zapsat tildou + lomítkem: ~/. Tím si ušetříte zdlouhavé vypisování celé cesty.

Protože jsme na začátku vytváření šifrovaného svazku (kontejneru) nezadali žádnou cestu, vytvořil se soubor (konkrétně tajnosti.txt) v adresáři user (místo "user" si dále vždy doplň vlastní username, třeba vasek, petulka, kralik atd.). To je jednak výhodné, jednak je s tím spojena malá potíž. Výhodné je to proto, že kdykoliv chcete připojit (namountovat) šifrovaný svazek (tj. odemknout jej k používání), stačí napsat cestu zkráceně, v našem příkladu jako:

~/tajnosti.txt (zkrácený zápis cesty tildou a lomítkem)
/home/user/tajnosti.txt (plná cesta)

Malá potíž je v tom, že do svazku nelze normálně zapisovat (asi to jde někde povolit, ale mně se to zdá zbytečné). Na to musíte být root, nikoliv jen nějaký user. Lze to ale řešit velmi snadno, prostě napíšete do připojovacího příkazu TC přepínač -u. Po entru vás terminál požádá o heslo roota či uživatele a teprve až potom o heslo ke svazku (kontejneru).

Ještě jedno menší vysvětlení: pokud jste pracovali s TC pod Win, tak asi víte, že svazek se vždy připojuje jako nový disk (a to podle některého volného písmena, které mu zadáte v hlavním okně windowsovského TC). Když se chcete dostat do takto připojeného kontejneru, prostě jen v Tento počítač zvolíte nově se objevivší logický disk (třeba E:, F:, atd., podle písmena, co jste zvolili v TC) a kliknete na něj, čímž se dostanete do celého kontejneru.

V TC pod Linuxem Ubuntu 7.04 probíhá připojení trochu jinak. Žádný nový logický disk v Místa nebo v Místa > Počítač se neobjeví. Práce se šifrovaným souborem (tj. přesně vzato adresářem, kontejnerem) probíhá tak, že kontejner musíte připojit do nějakého prázdného, defacto pracovního adresáře. Když zadáte správně heslo, objeví se šifrovaný obsah kontejneru v tomto adresáři, kde s ním můžete dělat třeba psí kusy, měnit, mazat, atd. Jakmile odpojíte svazek (kontejner) pomocí příkazu odpojit pracovní adresář (viz níže), zmizí soubory, s nimiž jste pracovali v onom pracovním adresáři, jako mávnutím proutku, a tento pracovní adresář je prázdný.

Z tohoto pojetí práce se šifrovaným svazkem (kontejnerem) vychází pak celé ovládání TC v Terminálu Ubuntu (7.04). Když pochopíte toto, snáze se vám bude celý příkaz psát, protože budete vědět, co právě děláte, co právě chcete uskutečnit. Zdánlivě složitý zápis se vám najednou začne zdát až brutálně primitivní (což taky je). Viz příkazy:

připojení svazku (kontejneru) - napište do terminálu:

truecrypt -u ~/sifrovanysoubor.koncovka ~/adresardonehozseotevre
truecrypt -u ~/tajnosti.txt ~/pracovni

Což znamená: připojí se jako uživatel, aby mohl operovat s danými soubory v kontejneru + kontejner tajnosti.txt v adresáři uživatele se připojí do adresáře pracovni, který je rovněž v adresáři uživatele (tilda a lomítko = zkrácený zápis cesty do adresáře uživatele).

odpojení svazku (kontejneru) - dvě možnosti :

truecrypt -d (odpojí všechny připojené zašifrované svazky, užitečné pokud máte připojen jen jeden svazek a chcete ho rychle odpojit, nebo pokud opravdu chcete odpojit všechny, např. před skončením práce s pc)
truecrypt -d ~/pracovni (odpojí pouze daný svazek, tj. napsáno plnou cestou je to /home/user/pracovni - příkaz by tedy mohl být doslovně napsán i jako:
truecrypt -d /home/user/pracovni s týmž výsledkem, odpojením daného svazku tajnosti.txt od pracovního adresáře pracovni)

A teď si představte, že o tuhle celou legraci by nás oficiální GUI pro TC pod Linuxem ochudilo :))))

Závěrem - srovnání encfs a Truecryptu

Zřejmě se po přečtení tohoto návodu logicky zeptáte: a který z obou programů pro šifrování v Ubuntu mám tedy používat?

Ještě je potřeba dodat k TC pod Win, že nejlepší je TC vůbec do Win neinstalovat (resp. nenechávat instalované!), protože to je samozřejmě pro útočníka nápověda jako Brno. TC pro Win lze uložit z instalovaného TC jako portable verzi (má asi 1MB) na klíčenku (a tuto portable verzi lze pak kopírovat i na jiná média, tj. třeba další klíčenky). Tím se zvýší pravděpodobnost, že útočníky ani nenapadne, že byste měli na kompu něco zašifrované. Portable verze TC pro Linux zřejmě neexistuje, aspoň jsem si nevšimnul v manuálu TC (napiš do Terminálu man truecrypt), že by šla vytvořit.

Mazání historie terminálu

Nevím zatím, jak je to s usage tracks pod Linuxem, zatím jsem nenašel soft na jejich mazání (?), ale dejte si pozor minimálně na historii Terminálu. Pastovaná hesla sice nejsou vidět, zato všechny vaše příkazy ano! Historii Terminálu lze však ručně vymazat:

sudo gedit ~/.bash_history

Spustí se editor (sudo vám dává práva roota, ale musíte zadat své uživatelské heslo) a v něm otevřený daný soubor (nebo si ho najděte ve vaší uživatelské složce, nejdřív ovšem CTRL+H, je skrytý). Update: historii terminálu lze úplně vypnout.

Zablokování souboru auth.log

Používáte-li Truecrypt, je třeba smazat a blokovat také soubory auth.log (/var/log/auth.log), aktuální i archivované! Ručně lze smazat takto:

sudo rm /var/log/auth*

Vytváření souboru auth.log je třeba zastavit, jinak kdokoliv, kdo si tento log bude moci prohlédnout, zjistí, které zašifrované soubory (kontejnery) a partišny máte na disku (jména souborů a cestu k nim), kdy jste se k nim připojili a kdy je odpojili. Zatím nevím o jiném řešení než použití brute force, totiž smazání auth.log souboru a okamžité vytvoření stejnojmenného adresáře:

sudo mkdir /var/log/auth.log

Tak se nebude moci soubor auth.log opakovaně vytvářet.

Související články:
Zašifrování diskového oddílu v Ubuntu pomocí Truecryptu
Změna hesla TC svazku v Ubuntu
Zálohování hlavičky TC svazku v Ubuntu

Žádné komentáře: