Hlavní navigace

Cryptoroot pro nejvyšší bezpečnost (2)

Josef Kadlec

V tomto dílu nás čeká vytvoření potřebného GPG klíče, kterým budeme oddíl šifrovat. Dále dokončíme realizaci celého initrd - především vytvoření initrd. Nakonec také vytvoříme šifrovaný swap.

Jak již bylo řečeno, jako šifrovací klíč bude sloužit GPG klíč. Vytvoříme si jej takto:

umask 077
head -c 2880 /dev/random | uuencode -m - | head -n 65 | tail -n 64 | gpg --symmetric -a > /key.gpg 

Zadáte heslo a pak bude zřejmě potřeba nějaká činnost na počítači, aby se zajistila entropie při vytváření klíče – ideální je např. někam kopírovat zdrojáky linuxového kernelu. Klíč by pak měl být hotov během pár sekund. Klíč tedy umístíme na externí zařízení a kopii na nějaké bezpečné místo v případě, že by se nám externí zařízení třeba porouchalo. Dále je tu možnost vytvořit klíč z již existujícího GPG klíče. Co víc, lze vytvořit takový multi-key GPG klíč, což je klíč vytvořený z více GPG klíčů, čímž umožníte, aby data mohlo rozšifrovat více uživatelů. Poslední možnost je, že nepoužijeme GPG klíč, ale pouze heslo – to je ta nejméně bezpečná varianta. Takové heslo pak musí mít minimálně 20 znaků – toto lze potlačit, pokud před instalací util-linux zavedete globální proměnnou CFLAGS:

export CFLAGS="-O2 -DLOOP_PASSWORD_MIN_LENGTH=1"

Tato varianta nás momentálně stejně nezajímá. Zůstaneme proto u GPG klíčů.

Teď je potřeba upravit soubor /etc/lilo.conf (pokud používáte jiný zavaděč, tak to bude samozřejmě jiný konfigurační soubor). Hlavní část /etc/lilo.conf bude vypadat takto:

image = /boot/vmlinuz
  append = "init=/linuxrc rootfstype=minix"
  initrd = /boot/initrd.gz
  root = /dev/ram0
  label = GNU/Linux
  read-only

Zatím zavaděč neinstalujeme (nezapisujeme). Teď nás čeká asi nejdůležitější část, a to je úprava skriptu build-initrd.sh, který nám vytvoří initrd. Tento skript naleznete v adresáři s rozbaleným archivem loop-AES. Nastavíme následující položky:

USEDEVFS=0 (devfs nepoužíváme, používáme klasická jména pro disky) USEPIVOT=1 (používáme pivot_root namísto zastaralého change_root) BOOTDEV=/dev/hda1 (nezašifrovaný oddíl s jádrem, initrd atd.) BOOTTYPE=ext2 (souborový systém na oddíle BOOTDEV) CRYPTROOT=/dev/hda5 (oddíl pro zašifrovaný kořenový svazek) ROOTTYPE=ext2 (souborový systém na oddíle CRYPTROOT) CIPHERTYPE=AES256 (použitá síla šifry AES – v tomto případě se bude heslo hašovat pomocí SHA-512) PSEED=„-S fifjdkrieo“ (semínko pro ztížení úspěšnosti slovníkových útoků) ITERCOUNTK=„-C 100“ (další mechanismus pro zpomalení neoprávněného lámání hesla) USEGPGKEY=1 (používáme GPG klíč) EXTERNALGPGFILES=1 (používáme externí zařízení) EXTERNALGPGDEV=/dev/­sda1 (ext. zařízením bude blokové zařízení na USB portu /dev/sda1) EXTERNALGPGTY­PE=ext2 (na tomto blokovém zařízení je vytvořen ext2 filesystem) INITIALDELAY=3 (některá USB zařízení jsou initrd-em nalezena až po pokusu o připojení, proto je potřeba dát prodlevu)

Samozřejmě si jednotlivé položky editujte podle vlastní situace. Ostatní položky je možno nechat, jak jsou.

Nyní zapište zavaděč – v případě LILA je to příkaz lilo. Zaveďte modul loop příkazem:

modprobe loop

A pak spusťte skript build-initrd.sh, který by měl úspěšně vytvořit initrd na oddílu /dev/hda1.

Restartuje počítač a nabootujte z nějaké live distribuce – Knoppix, SLAX,… a nebo záchrané CD Slackware (CD2). Pokud máte floppy mechaniku, můžete nabootovat i z diskety. Po úspěšném nabootování připojíme nejprve oddíl pro šifrovaný svazek

mount -t ext2 /dev/hda5 /mnt

a přepíšeme /mnt/etc/fstab tak, že místo řádku

/dev/hda5      /     ext2        defaults    1   1

bude řádek

/dev/loop5     /     ext2        defaults    1   1

Proč loop5? Protože ve skriptu build-initrd.sh je implicitně nastavena hodnota ROOTLOOPINDEX=5.

Oddíl můžeme odpojit

umount /mnt; sync

Nyní připojíme oddíl /dev/hda1

mount -t ext2 /dev/hda1 /mnt

a také USB klíč s GPG klíčem

mkdir /usb; mount -t ext2 /dev/sda1 /usb

A nyní zašifrujeme data v kořenovém svazku pomocí programu dd a aespipe takto:

dd if=/dev/hda5 bs=64k | /mnt/aespipe -e AES256 -K /usb/key.gpg -G / | dd of=/dev/hda5 bs=64k conv=notrunc 

Poté zadáte správné heslo. Toto může trvat velmi dlouho. V případě mého skoro 40GB oddílu to trvalo dobré dvě hodiny. Až se nám vytvoří, odpojíme oddíl /dev/hda1 i /dev/sda1

umount /mnt; sync
umount /usb; sync

A restartujeme počítač. Nyní je vše hotovo, a pokud se vše zdařilo, měli byste být po načtení initrd dotázáni na heslo ke klíčí GPG, který je na USB zařízení zasunutém v USB portu. Po zadání správného hesla se spustí samotný systém.

Pokud budeme chtít používat swap, budeme ho také šifrovat, protože se na něj odkládají i data přímo spojená se šifrováním – používá ho např. GPG. Pokud jsme aktivovali swap dříve (např. při instalaci), vypneme nejdříve všechna swap zařízení v /etc/fstab:

swapoff -a

Do souboru /etc/fstab doplníme (v případě, že tam již swap máte, tak editujeme) řádek se swap zařízením, aby vypadal nějak takto:

/dev/hda6   none   swap   sw, loop=/dev/loop6, encryption=AES256   0   0 

Dále přepíšeme data, která mohla na oddíle zůstat nezašifrovaná, např. takto:

dd if=/dev/zero of=/dev/hda6 bs=64k conv=notrunc

Místo programu dd lze využít i např. programu shred. A vytvoříme samotný swap:

mkswap /dev/hda6

A swap aktivujeme:

swapon -a

A teď už nám snad nic nechybí.

Způsobů, jak vytvořit cryptoroot, je více, ale tento je podle mě nejsnazší. Je to hlavně dáno tím, že initrd vám vytváří automaticky hotový skript a nemusíte ho vytvářet ručně.

Pokud nyní budete chtít například rekompilovat jádro, tak obecně není problém. Je pravděpodobné, že budete muset upgradnout util-linux, pokud přecházíte z jádra 2.4 na jádro 2.6.

Nedělal jsem žádné testy výkonnosti (třebas mě někdo ukecá a v diskusi se to objeví), ale tyto informace si lze jistě pro různé procesory, síly šifer,… dohledat ve veřejných informačních zdrojích.

Policie klepe na dveře, vypínám notebook, polykám USB disk…

Thx to Jari Ruusu for help and for loop-AES.

TODO: vytvoření initrd s linuxrc skripty pro rozšifrování oddílu a nabootování systému s nezašifrovaným kořenovým svazkem a dalším linuxrc skriptem pro přešifrování oddílu jiným typem AES šifry a následným bootem systému s kořenovým svazkem zašifrovaným touto novou šifrou – např. pokud chceme zvýšit sílu šifry. Něco podobného jako v dokumentu Cryptoroot HOWTO Dominika „Joe“ Pantůčka.

Linky:

loop-aes.sourcefor­ge.net/loop-AES.README
linuxfromscrat­ch.org/~devine/er­fs-howto.html
www.breakt.co­.il/main/Disk-Encryption-HOWTO
www.frech.ch/how­to/HOWTO/html_sin­gle/Cryptoloop-HOWTO">
forums.gentoo­.org/viewtopic­.php?t=31363
www.joe.cz/cms/Pa­pers/Cryptoro­ot%20HOWTO.html

Našli jste v článku chybu?

3. 5. 2006 20:46

B.E. (neregistrovaný)
Jak si uvedl,
tak kryptovani/dekryptovani jede 3MB/s. Vykon dnesnich disku je vetsi jak 15MB/s pri cteni/zapisu (to jsi taky uvedl), z cehoz jasne vyplyva, ze nenastane situace, ze by disk nestihal zapisovat, a tim padem by se data nehromadili v cachi. Hlavnim problemem je rychlost procesoru, ktery nestiha (de)sifrovat data rychlosti vetsi nez 3MB/s.
Reseni jsou tedy dve:
1) velka ramka (tve reseni)
2) nebo aspon 4x rychlejsi procak
(3MB/s x 4 = 12MB/s coz je vetsi nez teor. rychlost prenosu…




20. 8. 2004 21:40

nautiluZ (neregistrovaný)

kdyz uz jsme u te bezpecnosti, tak proc radeji nepouziovat skutecne bezpecnou, troufam si rici platformu, Trustix, OpenBSD je mozna relativne dost bezpecne jako OS, ale nektere tradicne derave sluzby na nem...

Lupa.cz: Obchod budoucnosti je bez front, košíků i pokladen

Obchod budoucnosti je bez front, košíků i pokladen

DigiZone.cz: SES zajistí HD pro M7 Group

SES zajistí HD pro M7 Group

120na80.cz: Boreliózu nelze žádným testem prokázat

Boreliózu nelze žádným testem prokázat

Vitalia.cz: To nejhorší při horečce u dětí: Febrilní křeče

To nejhorší při horečce u dětí: Febrilní křeče

DigiZone.cz: R2B2 a Hybrid uzavřely partnerství

R2B2 a Hybrid uzavřely partnerství

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

DigiZone.cz: Sat novinky: slovenská TV8 HD i ruský NTV Mir

Sat novinky: slovenská TV8 HD i ruský NTV Mir

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Vitalia.cz: Nejlepší obranou při nachlazení je útok

Nejlepší obranou při nachlazení je útok

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

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

Podnikatelům dorazí varování od BSA

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Vitalia.cz: Potvrzeno: Pobyt v lese je skvělý na imunitu

Potvrzeno: Pobyt v lese je skvělý na imunitu

DigiZone.cz: Ohrozí Freedom TV přechodové sítě?

Ohrozí Freedom TV přechodové sítě?

Vitalia.cz: Test na HIV je zdarma i za pět set

Test na HIV je zdarma i za pět set

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

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

Jak vymáhat výživné zadarmo?