Portál AbcLinuxu, 2. května 2025 22:53
Jak vytvořit bezpečný úložný prostor přímo na vašem harddisku. Ve dvou dílech se dozvíte, jak systém připravit, konfigurovat a účelně využívat.
Mnoho problémů s bezpečností linuxových strojů může být připisováno chabému zabezpečení, pokud má útočník fyzický přístup k počítači. Tehdy si s ním může dělat co si jen zamane (včetně získání všech dat na počítači uložených). Napadne nás jistě pousta scénářů, kdy k něčemu podobnému může dojít a kdy zneužití (prozrazení) může náš život přinejmenším zkomplikovat.
Je tedy jistě vhodné tomu nějak zabránit. Jednou z nepříliš rozumných možností by bylo před naším počítačem hlídkovat nebo jej uložit někde do trezoru. Tento postup je jistě vhodný, ale musíme být dostatečne silní, aby se našeho harddisku stejně nikdo nezmocnil.
Daleko elegantnější bude, když obsah našeho disku zašifrujeme a případný útočník pak dostane pro něj naprosto nepoužitelnou hromádku dat. Postup jak šifrovaný filesystém vytvořit si právě zde vysvětlíme.
Než se pustíme do vytvoření šifrovaného filesystému, je potřeba začít poněkud zeširoka. V dnešní době můžeme pomocí externích patchů linuxového jádra zašifrovat disk, síťové spojení atd. V tomto článku se zaměříme hlavně na Linux CryptoAPI.
Nemusíme si zde jistě dlouze vysvětlovat, o co to vlastně v šifrování jde. Pokud si v této oblasti někdo není příliš jistý, na internetu se jistě dá objevit spousta materiálů, které pomohou nejasnosti eliminovat.
Tím, že jsme přidali podporu šifrování do "kernel space", jsme získali spoustu nových možností jak důležité informace více zabezpečit. Od šifrování disků po IPsec a jiné druhy šifrování komunikace.
V současné době jsou k dispozici dvě možnosti podpory šifrování na úrovni kernelu. Je jím loop-AES a CryptoAPI, kterým se budeme zabývat dále. Obě z těchto variant umožňují použití bez nutnosti kompilace nového kernelu (stačí pouze zkompilovat příslušné moduly), a dokonce bez nutnosti restartu stroje. Oba způsoby tedy umožňují podporu šifrování v kernelu formou modulů. V našem seriálu si ukážeme jak zprovoznit CryptoAPI při kompilaci kernelu.
Loop-AES je navržen pouze pro šifrování filesystému. Pro šifrování používá Advanced Encryption Standard (AES). Jeho implementace je rychlá a pro Intel x86 procesory je dokonce přímo v assembleru (pro ostatní platformy musíme použít implementaci v jazyce C). Další informace najdeme na domovské stránce tohoto projektu http://loop-aes.sourceforge.net/.
Naopak CryptoAPI poskytuje daleko rozsáhlejší možnosti použití. Obsahuje v sobě rozhraní, které umožňuje ostatním modulům využít možnosti šifrování dat. Šifrování filesystému je pouze jednou z aplikací. Další výhodou je možnost využití 12 různých šifrovacích technik a podpora použití filesystémů šifrovaných pomocí loop-AES.
Budeme se zde zabývat instalací s kernelem řady 2.4, v případě 2.5 je problém jednodušší, jelikož podpora je přímo součástí jádra. K instalaci CryptoAPI tedy budeme potřebovat zdrojový kód kernelu (je také dobré vědět, o jaký kernel se jedná), dále pak zdrojové kódy CryptoAPI. Zde je nutno říci, že díky lehce zavádějícím informacím na domovských stránkách projektu CryptoAPI. instalace není úplně triviální záležitostí, Možností, jak CryptoAPI nainstalovat je více. My si zde povíme o jedné z nich, která by měla fungovat.
Předpokládejme kernel 2.4.20, jistě jej spousta z nás používá. Je nutné si
stahnout zdrojové kódy tohoto kernelu (pokud je na svém stroji již nemáme).
Dále získáme patch z adresy:
http://www.kernel.org/pub/linux/kernel/people/hvr/testing/.
Pro náš příklad se bude jednat o soubor patch-int-2.4.20.1.gz
. Následující
postup není jedinou možností, nicméně v praxi fungoval. Tedy vzhůru do
práce!
Nejprve musíma patch rozbalit a poté aplikovat na zdrojové kódy připraveného kernelu. Čili zkopírujeme jej do adresáře se zdrojovými kódy kernelu a aplikujeme následujícím příkazem:
patch -p1 < patch-int-2.4.20.1
Nyní musíme nastavit konfigurační soubor kernelu, abychom poté mohli
získat potřebné moduly (nebo jádro s přímou podporou CryptoAPI). Po
aplikování patche nám přibude ve výběru (jádro nejlépe nastavíme utilitou
spuštěnou příkazem make menuconfig
případně
xconfig
) další položka v menu s názvem Cryptography support
(CryptoAPI). V ní je nutné zaškrtnout položky CryptoAPI support a v
Crypto Devices položku Loop Crypto support. Dále si vybíráme z několika možných
šifer a tzv. one-way (jednocestné) funkce. Je vhodné vybrat alespoň jednu
šifru, jelikož bychom pak neměli čím šifrovat. Při výběru té správné nám
částečně pomůže následující kapitola. Také nesmíme zapomenout zaškrtnout
podporu Loopback device v sekci Block devices! Je to jediná položka,
kterou potřebujeme a která je mimo sekci Cryptography support. Proto je
celkem jednoduché ji vynechat.
Předpokládejme, že již máme vybrány všechny nutné volby. Můžeme se tedy pustit do kompilace kernelu. Postup se od tohoto okamžiku neliší od běžné praxe, proto jím nebudeme zdržovat a půjdeme dále.
Dalším nezbytným krokem je stahnutí a nainstalování programu losetup, který je součástí balíčku util-linux. Ukážeme si tedy, jak jej správně nainstalovat.
Nejdříve si musíme balíček stáhnout. Najdeme jej například na serveru ftp.kernel.org nebo na dalších mirrorech se zdrojovými kódy kernelu. Pro správný chod tohoto softwaru ještě potřebujeme patch, který najdeme například zde.
Jelikož není k dispozici patch pro nejnovější verzi util-linux, použijeme verzi 2.11r. Stáhneme tedy util-linux-2.11r.tar.gz a odpovídající patch util-linux-2.11r.patch.gz. Rozbalíme util-linux i patch a patch na nej aplikujeme běžným způsobem:
patch -p1 < util-linux-2.11r.patch
Dále postupujeme podle přiloženého souboru INSTALL, obvykle klasickou kombinací příkazů:
./configure
make
make install
Nyní máme vše připraveno a můžeme začít používat šifrované filesystémy.
Výběr šifry, kterou použijeme pro náš filesystém, je jistě také důležitou volbou. Nebudeme si zde uvádět fakta o bezpečnosti jednotlivých šifer, zaprvé se to na tento server tolik nehodí a navíc by to bylo moc obsáhlé. Všem zájemcům doporučuji použít vyhledávače a najít si potřebné informace na internetu, určitě neco najdou.
Kromě bezpečnosti nás však bude zajímat i rychlost jednotlivých šifer, jelikož nikdo si nechce svůj počítač příliš zpomalovat. Hodnoty uvedené v tabulce nesouvisí přímo s CryptoAPI a dokonce nebyly získány na operačním systému Linux. Nám však mohou posloužit k porovnání jednotlivých šifer mezi sebou, o což nám jde.
U každé šifry je uveden počet zašifrovaných bytů dat za sekundu. Test byl proveden z dnešního hlediska již na zastaralém počítači (s procesorem Intel Celeron 450MHz). V dnešní době dosáhneme hodnot výrazně vyšších.
Sifra | B/s |
AES (Rijndael) | 11751322 |
Blowfish | 9013043 |
CAST5 (CAST-128) | 9019403 |
DES | 7372170 |
GOST | 5216999 |
IDEA | 6388278 |
MARS | 16690115 |
RC5 | 26025058 |
RC6 | 20230270 |
Serpent | 6982324 |
Twofish | 10168780 |
3DES | 2457390 |
To je pro dnešek vše. Příště si povíme něco o vytváření a používání šifrovaných filesystémů.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.