Úvodem
Stále přibývá uživatelů, kteří chrání svá lokální data šifrováním a Linux jim nabízí mnohé možnosti. Někteří mají kompletně šifrovaný harddisk pomocí dm_crypt/LUKS a jiní alespoň využívají ochranu domovského adresáře skrze EncFS. V době miniaturních flashdisků s kapacitou několika GB, je však vhodné chránit i data na těchto médiích. Není až tak těžké ztratit něco malého, co váží několik desítek gramů.
Pominu-li ukončený TrueCrypt, bylo pro mnohé uživatele jednodušší používat pro šifrování výměnných médií zmíněný EncFs, protože jej lze ovládat jednoduchým GUI (Cryptkeeper). Osobně jsem raději volil pro data na flashdisku dm_crypt/LUKS, ale příkazová řádka není to pravé ořechové, obzvlášť máte-li takových flashdisků několik. GUI ZuluCrypt velmi usnadní nejen vytváření, ale i správu výměnných a lokálních médií, byť se zpočátku příkazovému řádku nevyhnete.
Instalace ZuluCrypt
Již jsem zmínil v úvodu nutnost použití příkazového řádku. Bohužel ZuluCrypt není distribuován v podobě deb balíčků a ani s rpm se moc nesetkáte (jsou pro Fedoru18 a OpenSuse). Nezbývá než kompilace ze zdrojových souborů, které stáhnete zde (zuluCrypt-4.7.2.tar.xz).
Kompilace není nikterak složitá a zabere cca 5 minut. Důležitým faktorem však je, jaké vymoženosti od ZuluCrypt požadujete. Ne každý Linux vám v základu umožní využít všech možností tohoto grafického prostředí, proto budu nadále v textu odkazovat na zkušenosti s GUI na Debianu 7.5 a Mintu 17.
Pro kompilaci budete potřebovat následující balíčky:
- libblkid-dev (nainstaluje i uuid-dev, který je také potřebný)
- libqt4-dev (GUI je postaveno na Qt)
- gcc
- g++
- cmake
- cryptsetup-dev (diskové šifrování - nutné)
- libtcplay-dev (požadujete-li vytváření TrueCrypt kontejnerů – vyžaduje cryptsetup-dev verze 1.6)
- libgcrypt11-dev (knihovna pro šifrování – nutné / můžete použít i libgcrypt20-dev, máte-li instalován libgcrypt20)
- libsecret-1-dev (pouze chcete-li využít klíčenku z GNOME pro hesla)
- kde-dev (pouze chcete-li využít klíčenku z KDE pro hesla)
- pkg-config
- libdevmapper-dev
Debian a libtcplay-dev
Pokud potřebujete v Debianu vytvářet a spravovat TrueCrypt kontejnery, je nejjednodušší zůstat u TrueCrypt 7.1a, protože knihovna libtcplay-dev se nachází ve větvi testing a sid. Složitější a mnohem nebezpečnější cestou je vytvoření souboru /etc/apt/apt.conf (jako superuživatel), do kterého vložíte následující text:
APT::Default-Release "wheezy";
Po uložení souboru zadáte do terminálu jen apt-get update a můžete instalovat výše zmíněné balíčky v aktuální verzi. Jistým nebezpečím je povýšení knihoven libc6 a cryptsetup z 1.4.3 na 1.6.x. Neopomeňte si zálohovat systém, obzvlášť pokud jej máte šifrovaný.
Máte-li instalováno vše potřebné, nastal čas pro kompilaci aplikace. Rozbalte stáhnutý archiv se zdrojovými soubory (aktuální verze 4.7.2) a ve vzniklém adresáři si prohlédněte v souboru BUILD_INSTRUCTIONS možnosti kompilace aplikace.
V příkazovém řádku se přesuňte do zmíněného adresáře a zadejte:
$ mkdir build $ cd build
(následující volby jsem použil při kompilaci – soubor BUILD_INSTRUCTIONS vám napoví)
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/ -DNOKDE=true -DNOGNOME=true - DHOMEMOUNTPREFIX=true -DCMAKE_BUILD_TYPE=RELEASE . .. $ make
(v Debianu místo sudo použijete příkazu su a poté make install)
$ sudo make install
Po instalaci zadejte ještě příkaz:
$ zuluCrypt-cli --test
Objeví-li se u všech testů PASSED, je vše v pořádku a můžete začít využívat grafické prostředí ZuluCrypt.
Začátky se ZuluCrypt
Okno aplikace je jednoduché, plně dostačující svému účelu. Tvorba šifrovaných kontejnerů nebo celých oddílů je práce na několik kliknutí.
Šifrovaný kontejner
Jako první si ukážeme tvorbu šifrovaného kontejneru s LUKS, který má možnost využívat až osm klíčů pro přístup k datům. Vyberte z menu create > encrypted container in a file. V následujícím okně vyplňte pouze název šifrovaného kontejneru a určete jeho velikost. Tu můžete určovat v jednotkách KB, MB a GB. Stiskem tlačítka create se přesunete do dalšího okna.
Název a velikost šifrovaného kontejneru
Kontejner je vytvořený, ale je potřebné nastavit jeho vlastnosti zabezpečení. Jak patrno z obrázku, můžete kontejneru nastavit heslo (key), nebo umožnit přístup k datům pomocí souboru (keyfile), což může být certifikát, klíč, textový soubor atd.
Vlastnosti pro zabezpečení kontejneru
Ponecháte-li volbu key (heslo), jsou pole pod touto volbou určena pro zadání a opakování hesla. Na obrázku je použito soukromého klíče (vytvořen v OpenSSL – RSA 4096 b), kdy místo hesla zadáváte cestu k souboru.
Volume type určuje druh kontejneru. Na výběr je plain (samotný dm_crypt – nikdo vám nedokáže, že se jedná o šifrovaná data), luks (dm_crypt s nadstavbou LUKS – rozšiřuje možnosti nejen o používání klíčů) a máte-li aplikaci kompilovanou s podporou pro TrueCrypt, naleznete zde i možnost vytvoření jednoduchého i pokročilého (se skrytým kontejnerem) TrueCrypt kontejneru.
Pod volume type se nachází (na obrázku neaktivní) volby pro pokročilý TrueCrypt kontejner, kde určujete vlastnosti zabezpečení skrytému kontejneru.
Nad tlačítky create a cancel si určíte souborový systém kontejneru a generátor pro naplnění kontejneru pomocí náhodných čísel.
Poznámka: Pro kontejnery a celé šifrované flashdisky není vhodné používat žurnálovacích souborových systémů (ext3, ext4 atd.). Potřebujete-li přenositelnost mezi Linuxem a Windows, zvolte raději FAT32. Pro čistě linuxové uživatele je výhodnější ext2 (nemá taková omezení na velikost souboru jako FAT32).
Tlačítkem create se vám vytvoří šifrovaný kontejner a jako poslední okno se zobrazí doporučení o zálohování LUKS hlavičky.
Manipulace s kontejnerem
Šifrovaný kontejner již máte vytvořený. Připojení je také otázkou několika kliknutí. Menu open > encrypted container in a file vám zpřístupní vyhledání kontejneru a nastavení potřebného pro jeho dešifrování. Zde je vhodné zmínit, že kompilace s volbou -DHOMEMOUNTPREFIX=true bude veškerá média (kontejnery, oddíly) připojovat do vašeho domovského adresáře. Pokud tedy máte šifrovaný kontejner v domovském adresáři, musíte položku mount name pozměnit.
Připojení šifrovaného kontejneru
Po úspěšném připojení kontejneru se v hlavním okně ZuluCrypt objeví položka obsahující informace o připojení. Nyní můžete v kontejneru manipulovat s daty ve svém správci souborů nebo jej v ZuluCrypt spravovat (záloha/obnova LUKS hlavičky, manipulace s klíči, přidání do oblíbených atd.).
Šifrovaný oddíl (flashdisk)
Zde se tvorba liší pouze na začátku při výběru zařízení. Chcete-li se ZuluCrypt šifrovat celé oddíly i na harddisku (flashdisk není považován za systémový, proto jej v nabídce vždy naleznete), kompilujte ZuluCrypt bez parametru -DUDEVSUPPORT=true, neboť udev identifikuje externí harddisky jako systémové a jsou v tomto případě z nabídky ZuluCrypt vynechány.
Menu create > encrypted container in a partition vám zpřístupní výběr všech dostupných oddílů.
Z obrázku je patrné, že mi ZuluCrypt nabízí pracovat se systémovým diskem (sda), flashdiskem (sdc) a externím harddiskem (sdd). Tlačítko use uuid použije pro další práci s médiem jeho jednoznačnou identifikaci (uuid) místo názvu zařízení (/dev/sdX). Externí média nesmí mít v systému přípojný bod, pokud je chcete v tomto seznamu pro výběr.
Dvojklikem na řádku (v mém případě flashdisk=/dev/sdc) s požadovaným médiem si nejprve zpřístupníte bezpečné smazání (přepis) dat.
Varování před bezpečným smazáním dat
Tuto volbu potvrďte (pokud jste si jisti :-) ) a následuje další varování před spuštěním přepisu dat na médiu.
Poslední varování před přepisem média
U tohoto varování můžete tlačítkem no přeskočit bezpečné přepsání dat na médiu a začít s nastavováním šifrovaného oddílu, které je shodné jako v případě nastavení vlastností šifrovaného kontejneru.
Tlačítkem yes započne přepis dat na médiu (pravděpodobně pomocí /dev/random), což může trvat i několik desítek minut. Naštěstí lze tento přepis kdykoliv přerušit a začít s nastavením šifrování.
Dokončení a následná manipulace se šifrovaným oddílem je shodná jako v příkladu se šifrovaným kontejnerem, jen pro připojení oddílu vyberete menu open > encrypted container in a partition.
Funkce ZuluCrypt
Jedná se o přímočaré funkce, proto jen ve zkratce s několika subjektivními poznámkami.
zC :
- obnova seznamu připojených médií (update volume list)
- zavření všech připojených médií (close all opened volumes)
- smazání dat (erase data in a device) – kontejner, nebo médium nesmí být v ZuluCrypt připojeno
- šifrování/dešifrování souboru (encrypt/decrypt a file) – zašifruje samostatný soubor – takový soubor se mi podařilo dešifrovat pouze pomocí ZuluCrypt, což může být limitující při přenosu. Zřejmě se jedná o gpg šifrování, ale to nemám ověřené.
open – create:
- připojování a vytváření šifrovaných kontejnerů a oddílů
- tvorba klíče pro šifrování – jedná se o velmi pokročilé heslo v běžném textovém souboru
volumes:
- přidání klíče pro LUKS (luks add key)
- odebrání klíče z LUKS (luks delete key)
- zálohování hlavičky (backup volume header) - LUKS, TC – záloha/obnova bezproblémově funguje (cca 30 pokusů), ale ZuluCrypt používá pro zálohu vlastní formát a proto raději nadále zůstávám u příkazového řádku a programu dd
- obnovení hlavičky ze zálohy (restore volume header) - LUKS, TC
Pod ostatními volbami naleznete pouze seznam oblíbených médií, nastavení tohoto seznamu, vytvoření "klíčenky" pro oblíbená média (pokud nepoužíváte klíčenky z GNOME/KDE) a pod menu help je k dispozici několik informací (i o použitém výchozím šifrování).
Podle autora aplikace by ZuluCrypt neměl mít problém s LVM ani s raidem. Sice jsem tyto možnosti netestoval, ale jelikož GUI využívá standardních nástrojů (backend je dm_crypt/LUKS), nemám důvod být v tomto ohledu skeptický.
ZuluCrypt vs TrueCrypt
Kontejnery typu TrueCrypt (jednoduché i pokročilé), vytvořené v ZuluCrypt plně fungovaly v aplikaci TrueCrypt 7.1a. Stejně tak kontejnery vytvořené v aplikaci TrueCrypt (použito výchozí i pozměněné nastavení šifrování) jsou v ZuluCrypt bez problému rozpoznány a provozuschopné.
Závěr
Osobně jsem na takovouto aplikaci velmi dlouho čekal. ZuluCrypt je rychlý, přehledný a jednoduchý, což jistě napomůže začínajícím uživatelům. Žádné omalovánky se nekonají, stejně tak výchozí nastavení ohledně šifrování jsou optimální.
Ano, jako zkušenější uživatel bych mohl namítat, že právě volba druhu šifrování je to, co nutně potřebuji pro bezpečí svých dat, že šifrování jednotlivých souborů je nedostatečné (jak jej dešifrovat bez ZuluCrypt?), ale proč bych si měl stěžovat? Tak přímočaré GUI pro mnou oblíbené dm_crypt a jeho nadstavbu v podobě LUKS jsem opravdu dlouho hledal, a na složitější věci mám příkazový řádek :-)
Co více si přát od takové aplikace, než licenci GPL, pilíř linuxové bezpečnosti jako základ a pokračující vývoj.