Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Zaostřeno na dm-crypt

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.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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.

TIB2012

       

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

Školení: Zavedení Google Apps do firmy

Cílem školení je provést účastníky jednotlivými kroky zavedení Google Apps na vlastní doménu a seznámit je se základy administrace, aby byli schopni Google Apps sami udržovat a rozvíjet dle potřeb. Účastníci se také dozví, jak používat základní služby v balíku Google Apps (Gmail, Kalendář, Dokumenty a Weby Google) a jaké jsou možnosti jejich využití ve firmě.

Podrobnější informace a přihláška  

Ohodnoťte jako ve škole:
Průměrná známka 3,70

Přehled názorů

dm-snap
Abraxis 16. 9. 2004 00:25
Nový
10+
pf 16. 9. 2004 00:52
Nový
Opravdu to funguje?
Marťas 16. 9. 2004 10:02
Nový
├ 
Re: Opravdu to funguje?
Michal 16. 9. 2004 10:25
Nový
└ 
Re: Opravdu to funguje?
Michal Ludvig 16. 9. 2004 12:38
Nový
loop-aes
cuiviemen 16. 9. 2004 10:38
Nový
└ 
Re: loop-aes
Josef "jose" Kadlec 16. 9. 2004 17:06
Nový
sifrovat cely oddil?
Peter Cernoch 16. 9. 2004 10:44
Nový
├ 
Re: sifrovat cely oddil?
Mormegil 16. 9. 2004 11:58
Nový
├ 
Re: sifrovat cely oddil?
Michal Ludvig 16. 9. 2004 12:22
Nový
└ 
Re: sifrovat cely oddil?
Josef "jose" Kadlec 16. 9. 2004 17:22
Nový
 
└ 
Re: sifrovat cely oddil?
Peter Cernoch 16. 9. 2004 18:43
Nový
 
 
├ 
Re: sifrovat cely oddil?
Josef "jose" Kadlec 16. 9. 2004 19:19
Nový
 
 
│
└ 
Re: sifrovat cely oddil?
Petr Vejsada 16. 9. 2004 19:43
Nový
 
 
│
 
└ 
Re: sifrovat cely oddil?
petr_p 16. 9. 2004 20:32
Nový
 
 
└ 
Re: sifrovat cely oddil?
Michal Ludvig 17. 9. 2004 17:38
Nový
EVMS2
Jakub Moc 16. 9. 2004 11:59
Nový
└ 
Re: EVMS2
Josef "jose" Kadlec 16. 9. 2004 17:32
Nový
sifrovany adresar
Pavel Riha 16. 9. 2004 13:09
Nový
├ 
Re: sifrovany adresar
Josef "jose" Kadlec 16. 9. 2004 18:10
Nový
│
└ 
Re: sifrovany adresar
Pavel Riha 17. 9. 2004 09:31
Nový
└ 
Re: sifrovany adresar
Jan Hlavatý 17. 9. 2004 14:07
Nový
 
└ 
Re: sifrovany adresar
Pavel Riha 11. 10. 2004 14:05
Nový
Výkon
Libor Nenadál 16. 9. 2004 16:47
Nový
├ 
Re: Výkon
Tomáš 16. 9. 2004 17:26
Nový
├ 
Re: Výkon
Josef "jose" Kadlec 16. 9. 2004 17:44
Nový
├ 
Re: Výkon
k 17. 9. 2004 00:14
Nový
│
└ 
Re: Výkon
k 17. 9. 2004 00:17
Nový
└ 
Re: Výkon
Martin Pelikán 21. 7. 2006 11:50
Nový
Šifra AES
Vladimír Stwora 16. 9. 2004 17:38
Nový
└ 
Re: Šifra AES
Josef "jose" Kadlec 16. 9. 2004 17:57
Nový
 
└ 
Re: Šifra AES
ava 12. 12. 2006 19:46
Nový
A ještě k tomu /dev/mapper
Vladimír Stwora 16. 9. 2004 17:50
Nový
├ 
Re: A ještě k tomu /dev/mapper
Josef "jose" Kadlec 16. 9. 2004 18:19
Nový
│
└ 
Re: A ještě k tomu /dev/mapper
Vladimír Stwora 16. 9. 2004 18:29
Nový
└ 
Re: A ještě k tomu /dev/mapper
ACMik 18. 9. 2004 09:03
Nový
kompatibilita sifrovani - jeste jednou
Peter Cernoch 17. 9. 2004 10:23
Nový
└ 
Re: kompatibilita sifrovani - jeste jednou
Petr Vejsada 17. 9. 2004 11:39
Nový
2.6.8.1
Badza 18. 9. 2004 17:22
Nový
Re: 2.6.8.1
Badza 18. 9. 2004 19:29
Nový
DM-crypt pomoci klice a hesla
Michal 30. 4. 2005 19:44
Nový
└ 
Re: DM-crypt pomoci klice a hesla
Sten 19. 6. 2005 20:32
Nový
Zasifrovani jen jednoho LVM svazku
Miroslav Kopecek 15. 5. 2007 09:31
Nový
└ 
Re: Zasifrovani jen jednoho LVM svazku
Miroslav Kopecek 15. 5. 2007 13:11
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem