Před pár dny mě přepadla malá paranoia a rozhodnul jsem se, zašifrovat si data na disku. Zvolil jsem variantu, kdy jsou data šifrována klíčem, který je uložen pouze na vloženém flashdisku. Není-li flashdisk připojen při startu systému, data se neodemknou.
Funguje to asi tak, že služba s názvem dmcrypt se při startu podívá do své konfigurace, kde jsou uvedeny informace o tom, co a čím popř. jak odemykat. Služba potom čeká na zařízení (flashdisk), na kterém se má nacházet klíč. Je-li v dohledné době vloženo, dočasně si jej připojí a načte z něj klíč, kterým odemkne data.
Na gentoo je potreba upgradovat na baselayout-2 a openrc.
Doporučuji přečíst http://en.gentoo-wiki.com/wiki/DM-Crypt_with_LUKS
Nejprve nainstalueme potřebné utilitky
emerge sys-fs/cryptsetup
Zašifrujem partišnu s daty
cryptsetup luksFormat /dev/partisna /cesta/ke/klic
Soubor s klíčem může být libovolný souobor. Klíč si určitě zálohujte, bez něj se k datům dostat nedá!!! LUKS dovoluje mít až 10 klíčů k jednomu šifrovanému zařízení, zvažte přidání záložních klíčů.
Odemkneme
cryptsetup --key-file /cesta/ke/klic luksOpen /dev/partisna enc-data
Vytvoříme souborový systém
mkfs.ext3 /dev/mapper/enc-data
Přidáme záznam do souboru /etc/conf.d/dmcrypt
target=enc-data # vysledne zarizeni vznikne jako /dev/mapper/enc-data
source=/dev/partisna # zdrojova partisna zasifrovana pomoci luks
key=/klic #abolutni cesta ke klici vzhledem k flashdisku
remdev=/dev/flashdisk #zarizeni, ktere bude docasne pripojeno pri bootu pro nacteni klice
Pozn: Nejlepším řešením pro zadání zařízení /dev/flashdisk je použít jeho UUID. Dá se tím předcházet situacím, kdy máte při startu připojeno více disků než obvykle a flashdisk se neobjeví v systému jako /dev/sdb ale třeba jako /dev/sdc. UUID disku nebo partisny lze získat pomocí ls -la /dev/disk/by-uuid/
Nakonec přidáme službu dmcrypt do boot runlevelu (aby se zařízení odkryptovala dříve, než se začnou mountovat filesystemy z fstabu)
rc-update add dmcrypt boot