Šifrování disku je základ
Už více než před rokem jsem začal disk ve svém počítači šifrovat a nemůžu si to vynachválit. Počítal jsem s problémy, ale kromě těch počátečních vlastně ani žádné nejsou. Dokonce ani výkonnostní, co by člověk mohl postřehnout.
Samotný postup je docela jednoduchý. Dopředu uvádím, že jsem šifrování dělal pro Gentoo Linux, a to na celém disku – někteří si nechávají nešifrovaný alespoň oddíl /boot, ale já nechtěl vystavovat MBR nebo tabulku oddílů, protože pak je zřejmé, že na tom disku něco je, jen se k tomu nikdo nemůže bez hesla dostat. Já zvolil cestu externího bootovacího média, bez kterého nikdo nepozná, že na disku vlastně něco je (byť podezření asi pojme).
Než se začne disk používat, obvykle se zaplní náhodnými daty. Jsou v zásadě dvě možnosti, kdy to lze provést: před šifrováním a po šifrování. Já šel první cestou, ale druhá se mi jeví jako výhodnější, protože není třeba náhodných dat – stačí nulová data –, takže je proces rychlejší (šifrování zajistí, že z vnějšku se tato data budou jako náhodná jevit).
První možnost – před šifrováním:
U mě byla průměrná rychlost 2,3 MB/s, takže celý disk trvalo zaplnit hodně dlouho (řádově desítky hodin). I proto bych podruhé zvolil raději následující zaplnění až po zašifrování disku:
Tady rychlost bude záležet na dvou faktorech (resp. na tom slabším z nich) – na rychlosti šifrování procesorem a na rychlosti zapisování zašifrovaných nul na disk.
Pro samotné zašifrování je potřeba si zvolit šifru a její parametry, nicméně to tu rozebírat nebudu, spíše odkáži na další užitečné zdroje, vypsané na konci článku.
Já zvolil méně běžný Twofish. Hardwarovou akceleraci AES stejně nemám, tak proč volit pro útočníka pohodlnější cestu. Řekl jsem si, že mi to za potenciální snížení výkonu stojí. V praxi ale žádné nepociťuji, takže jsem se svou volbou spokojený.
Zaprvé se musí zavést potřebné moduly (místo twofish_i586 bude na amd64 zřejmě twofish_x86_64), pokud nejsou přímo v jádru:
A zadruhé provést samotné zašifrování:
Pak již stačí jen nový disk otevřít, rozdělit (není od věci sáhnout po LVM), vytvořit souborové systémy a nainstalovat systém:
Co je potřeba, je vytvoření bootovatelného externího média. Kromě toho, že je na něj potřeba nahrát bootloader (třeba GRUB či něco odlehčenějšího, například extlinux) a jádro, klíčový je initramdisk, který zajistí odemčení disku při bootu. Osobně jsem s ním docela zápasil, takže se podělím i o /init skript (dopředu říkám, že jsem se nesnažil o žádné mistrovské dílo, jen o co nejmenší skript, který by dělal, co jsem potřeboval, což se mi, myslím, i podařilo):
Do adresářové struktury pak nakopírovat všechny potřebné binárky, případně i knihovny, na kterých závisí. V /dev stačí mít zařízení console
, null
a tty
. Výsledek se jednoduše zabalí:
A zbytek už jistě zvládne každý. :-)
Na konec uvádím užitečné zdroje:
Seriál Diskové šifrování pomocí dm-crypt/LUKS:
- https://www.root.cz/clanky/proc-a-jak-na-sifrovani-disku-v-linuxu/
- https://www.root.cz/clanky/jak-vytvorit-sifrovany-oddil-v-linuxu/
- https://www.root.cz/clanky/sprava-sifrovanych-oddilu-v-linuxu/
https://blog.root.cz/jenda/sifrovani-v-archu/
https://www.abclinuxu.cz/blog/m4r3k/2007/8/zadelavame-si-na-problemy-aneb-sifrujeme-root-oddil
https://wiki.archlinux.org/index.php/LUKS_Encrypted_Root
https://wiki.archlinux.org/index.php/LVM
https://en.wikipedia.org/wiki/Comparison_of_disk_encryption_software
A neodpustím si ještě poznámku, že poškození disku se v podstatě rovná ztrátě dat s mnohem nižší šancí na záchranu (pokud vůbec nějakou), takže zálohování je nutnost (podotýkám, že také šifrované, jinak byla celá snaha zbytečná ;-)). Od věci pak nemusí být zálohování LUKS hlavičky (pozor na to, že při změně hesla je nutné zničit staré zálohy):
Zaškatulkováno v kategorii: GNU/Linux | 21. dubna 2012