Šifrování disku s klíčem na flashce


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