Hlavní navigace

Zaostřeno na dm-crypt

Josef Kadlec 16. 9. 2004

Protože se v cryptoloopu objevilo dost nejen bezpečnostních nedostatků, bude se od jeho podpory v nových linuxových kernelech pomalu upouštět. Jeho úlohu nahrazuje dm-crypt a my si ho dnes představíme.

Ve dvoudílném článku Cryptoroot pro nejvyšší bezpečnost jsem popsal, jak vytvořit šifrovaný kořenový svazek. K jeho realizaci na té nejnižší vrstvě jsem využíval tzv. cryptoloop – samozřejmě ho lze využít i k šifrování jednotlivých diskových oddílů či adresářů. Cryptoloop je však v současné době nahrazován modernějším nástrojem, a tím je dm-crypt jakožto šifrovací vrstva pro device-mapper. I když se mnozí z různých důvodů vztekají a tuto změnu si nepřejí, je pravdou, že cryptoloop obsahuje řadu známých zranitelností (není odolný proti plaintext a watermark útokům), takže není pochyb o tom, že je výměna na místě – zvláště pokud se jedná o nástroj k ochraně dat, že. Další výhodou dm-cryptu je to, že na rozdíl od cryptoloop není závislý na util-linux ani na žádném jiném uživatelském nástroji. Kdo někdy patchoval util-linux, jistě mi dá za pravdu, že to občas může být docela nesnadné – např. vzhledem k existenci různých nekompatibilních patchů a jejich různých verzí. Cryptoloop také trpěl svou nestabilitou. To dm-crypt radikálně řeší použitím tzv. mempoolu, který ho tvoří velmi stabilním. O nedostatcích v cryptoloopu pojednává článek na lwn.net.

Problémem může být pouze samotná migrace, a proto je cryptoloop v jádrech řady 2.6 stále udržován, přičemž je již k dispozici dm-crypt (device-mapper). Přesněji řečeno byla podpora dm-cryptu zařazena do stabilního jádra verze 2.4. Doporučuje se však použít jádro 2.6.5 a novější z důvodu blíže neurčených problémů u jádra 2.6.4.

Co je zbrusu nového na dm-cryptu a dělá dm-crypt dm-cryptem, je právě device-mapper, který umožňuje nadefinovat nový oddíl nebo logickou jednotku. K tomu potřebuje znát rozsah sektorů nebo existující bloková zařízení, která jsou mapována tzv. mapovací tabulkou (mapping table), a dm-crypt pak tyto cíle určuje pro šifrování přes standardní cryptoAPI.

Nyní si stručně popíšeme, jak to celé nainstalovat a jaké další nástroje budeme potřebovat. Prvně potřebujeme jádro – nejlépe vanilla 2.6.5 a novější. Jádro musí mít zakompilovanou podporu („natvrdo“ nebo jako modul) pro Device Mapper Support ( CONFIG_BLK_DEV_DM) a Crypt Target Support ( CONFIG_DM_CRYPT). Obojí najdete v sekci Multi-device support (RAID and LVM). Pokud je podpora dm-cryptu zavedena jako modul, je potřeba modul zavést ( modprobe dm-mod) a zajistit, aby se zaváděl automaticky po startu systému (v mé distribuci Slackware Linux 10 je to soubor /etc/rc.d/rc.modules). K šifrování také budeme potřebovat šifrovací funkce (či funkci) z jádra, které najdeme v sekci Cryptographic Options. Doporučuji prověřenou šifru AES (Rijndael) –  CONFIG_CRYPTO_AES.

Ještě než nainstalujeme samotný device-mapper, spustíme skript devmap_mknod.sh, který najdeme v archivu s device-mapperem v adresáři scripts. Tento skript vytvoří zařízení /dev/mapper/control device, které je využíváno device-mapperem. Pak již můžeme zkompilovat a nainstalovat samotný device-mapper klasickou cestou ./configure; make; make install(Slackwaristi jistě zase využijí  ./configure; make; checkinstall).

Pro snazší práci s dm-cryptem si ještě nainstalujeme (zkopírujeme do $PATH nebo nastavíme $PATH adresář s tímto skriptem a nasadíme mu x bit) skript cryptsetup.sh, jenž nám ulehčí práci s utilitou dmsetup, kterou nainstaloval device-mapper. Místo cryptsetup.sh lze použít i implementaci v C cryptsetup, která vyžaduje ještě nainstalovat libgcrypt a libdevmapper. Obě verze, jak verze interpretovaná, tak kompilovaná, mají stejnou syntax, takže přechod je bezbolestný.

Pokud budeme chtít vytvářet klíče pomocí nástroje hashalot, tak ho také nainstalujeme ( ./configure, make, make install).

A teď již k samotnému použití. Ty, kteří budou chtít vytvářet šifrovací oddíl pomocí utility dmsetup, odkáži na domovské stránky, kde se hned na titulní straně nachází dokumentace. Pokud po tom opravdu netoužíte nebo to nepotřebujete, doporučuji používat skript cryptsetup.sh, který utilitu dmsetup volá, a tvoří jí tedy jakýsi front-end.

Dejme tomu, že tajná data, která chceme šifrovat, máme na diskovém oddílu /dev/hda2. Oddíl odpojíme (odmountujeme) a pro jistotu použijeme příkaz sync. Také ho můžeme zkontrolovat příkazem fsck. A teď přijde ten důležitý příkaz:

cryptsetup.sh -c aes -h ripemd160 -y -b `blockdev --getsize /dev/hda2` create cryptodev1 /dev/hda2 

Vidíme, že používáme šifru AES. Dále si všimněme, že používáme hashovací funkci ripemd160 – je obsažena v hashalot. Pokud nemáte hashalot nainstalován, použijte -h plain. Příznak -y znamená, že budete na heslo dotázáni dvakrát. Za příznakem -b následuje velikost šifrovaného oddílu v sektorech. Tu lze zjistit příkazem blockdev. Následuje akce create, kterou se vytvářejí zařízení v adresáři /dev/mapper/. Akce má dva parametry – jméno zařízení a diskový oddíl, který se bude šifrovat. Takže naše zařízení se jmenuje cryptodev1 a jeho přesné umístění po spuštění příkazu bude /dev/mapper/cryp­todev1. Možná si můžeme toto zařízení představit jako loop zařízení u cryptoloopu. Šifrovaný oddíl již známe a je jím /dev/hda2. Po zadání příkazu budete dotázáni na heslo. Příkaz je nutno volat při startu systému, takže je potřeba ho umístit někam do rc skriptů.

Dalším krokem je nakopírování dat z /dev/hda2  do /dev/mapper/cryp­todev1, a to provedeme takto:

dd if=/dev/hda2 of=/dev/mapper/cryptodev1 bs=4k

Pro jistotu můžeme zkontrolovat blokové zařízení /dev/mapper/cryp­todev1 příkazem fsck. Pak už můžete jednoduše připojovat /dev/mapper/cryp­todev1 na nějaký adresář.

Vidíme, že práce je s ním možná o něco příjemnější než s cryptoloopem, nemluvě o jeho výhodách, o kterých sem již řekl dost na začátku. Možná vás někoho zajímá, jak pomocí dm-cryptu vytvořit cryptoroot. Metodika je stejná, ba dokonce ještě jednodušší. Se znalostmi nabytými z článku Cryptoroot pro nejvyšší bezpečnost a Jak funguje initramdisk byste to měli zvládnout. Problém nenastane ani, pokud budete k šifrování chtít použít GPG klíč. Lze to provést přes rouru např. takto:

gpg -q --cipher-algo AES256 --decrypt key.gpg | cryptsetup.sh create cryptodev1 /dev/hda2 

GPG je jistě bezpečnější varianta než používat pouze heslo. A hodí se zvláště, pokud chcete vytvořit externí token (např. USB dongle), i když na takováto zařízení lze samozřejmě ukládat i hesla v plain textu.

Poslední věta před smrtí: „To že jsem paranoidní, neznamená, že po mně nejdou.“ :-)

Encrypting partitions using dm-crypt and the 2.6 series kernel

Našli jste v článku chybu?

15. 5. 2007 9:31

Zdravim,
mam asi takovouto situaci: mam nekolik disku, rozsekal jsem kazdy na 3 partitions na a nad nimi jsem si udelal nekolik oddelenych RAIDu.
md0=/boot (RAID1), md1=/ (RAID5), md2= pro LVM (RAID5)

Na md2 jsem udelal VG pres LVM, abych mohl jednotlive oddily za behu dle potreby zvetsovat nebo zmensovat, podle
toho, kde budu potrebovat konkretni misto a predevsim pro to, abych mel kontrolu a mantinely pro objem dat v LV ulozenych
VG jsem tedy rozsekal na LV
vlg0-home
vlg0-var
vlg0-www
vlg…









Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Jak vybrat ořechy do cukroví a kde mají levné

Jak vybrat ořechy do cukroví a kde mají levné

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

120na80.cz: Rovnátka, která nejsou vidět

Rovnátka, která nejsou vidět

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Podnikatel.cz: Na poslední chvíli šokuje výjimkami v EET

Na poslední chvíli šokuje výjimkami v EET

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?