loop-AES - szyfrowany system plik贸w
Posted by admin | Under Linux czwartek maja 22, 2008
Loop-AES to modu艂, implementuj膮cy szyfrowanie urz膮dze艅 blokowych, na przyk艂ad dysku twardego lub CD-ROM.
Modu艂 szyfruje urz膮dzenia blokowe podmontowane za pomoc膮 loop device, b臋d膮cego standardowym elementem kernela Linuxa. Do szyfrowania u偶ywany jest algorytm AES-128, AES-192 lub AES-256, dla kt贸rego kluczem jest skr贸t SHA obliczony na podstawie podanego przez u偶ytkownika has艂a (minimum 20 znak贸w).
Szyfrowanie odbywa si臋 w spos贸b przezroczysty dla systemu plik贸w i jest praktycznie niezauwa偶ane w systemie. Najlepsz膮 wydajno艣膰 mo偶na osi膮gn膮膰 konfiguruj膮c szyfrowane loop device na fizycznej partycji dysku, na kt贸rym nast臋pnie mo偶na za艂o偶y膰 dowolny system plik贸w.
AES(ang. Advanced Encryption Standard) zosta艂 zatwierdzony przez NIST (ang. National Institute of Standards and Technology) jako standard dla ameryka艅skiej administracji rz膮dowej oraz sektora finansowego. Jego z艂amanie przy obecnie znanej technologii jest niemo偶liwe.
Nam szarym u偶ytkownikom komputer贸w mo偶e si臋 on przyda膰 do szyfrowania danych do kt贸rych nikt inny nie ma mie膰 dost臋pu. Jest to bardzo dobry spos贸b na przechowywanie r贸偶nego rodzaju: program贸w, muzyki, film贸w itd. Nawet w przypadku kradzie偶y komputera nikt nie odszyfruje danych.
INSTALACJA
- 艢ci膮gamy najnowszy kernela ( http://www.kernel.org/ )
- Rozpakowujemy do /usr/src/ (powstanie katalog np.: /usr/src/linux-2.6.6)
- 艢ci膮gamy loop-AES-v2.1b ( http://loop-aes.sourceforge.net/)
- Rozpakowujemy do /usr/src/ (powstanie katalog: /usr/src/loop-AES-v2.1b)
- 艢ci膮gamy util-linux-2.12a ( http://www.kernel.org/pub/linux/utils/util-linux/ )
- Rozpakowujemy do /usr/src/ (powstanie katalog: /usr/src/util-linux-2.12a)
- Przechodzimy do katalogu z kernelem: # cd /usr/src/linux-2.6.6
- make menuconfig i zaznaczamy:
Block devices ---> < > Loopback device support <*> RAM disk support (4096) Default RAM disk size (NEW) [*] Initial RAM disk (initrd) support File systems ---> <*> Ext3 journalling file system support <*> Second extended fs - Ustawiamy jeszcze inne potrzebne nam opcje i zapisujemy konfiguracj臋. Mo偶na na pocz膮tku wczyta膰 configa z poprzedniego kernela (przewa偶nie: /boot/config) a nast臋pnie skonfigurowa膰 reszt臋. W pliku komfiguracyjnym sprawdzamy czy mamy:
CONFIG_MODULES=y
CONFIG_BLK_DEV_LOOP=n,
CONFIG_BLK_DEV_RAM=y,
CONFIG_BLK_DEV_INITRD=y,
CONFIG_MINIX_FS=m,
CONFIG_PROC_FS=Y
- Kompilacja: # make clean dep bzImage modules
- Instalacja modu艂贸w: # make modules_install
- Instalacja kernela: # make install (w wersjach 2.4.x trzeba samemu skopiowa膰 nowego kernela do katalogu /boot itd.)
- Przechodzimy do katalogu ze 藕r贸d艂ami loop-AES: # cd /usr/src/loop-AES-v2.1b
- Wydajemy kolejno polecenia:
# make clean
# make - Przechodzimy do katalogu ze 藕r贸d艂ami utils-linux: # cd /usr/src/util-linux-2.12a
- Nak艂adamy patcha: # patch -p1 <../loop-AES-v2.1b/util-linux-2.12a.diff
- Wydajemy kolejno polecenia:
# export CFLAGS=-O2
# export LDFLAGS=’-static -s’
# ./configure
# make SUBDIRS=”lib mount”
# cd mount
# install -m 4755 -o root mount umount /bin
# install -m 755 losetup swapon /sbin
# rm -f /sbin/swapoff && ( cd /sbin && ln -s swapon swapoff )
# rm -f /usr/share/man/man8/{mount,umount,losetup,swapon,swapoff}.8.gz
# install -m 644 mount.8 umount.8 losetup.8 /usr/share/man/man8
# install -m 644 swapon.8 swapoff.8 /usr/share/man/man8
# rm -f /usr/share/man/man5/fstab.5.gz
# install -m 644 fstab.5 /usr/share/man/man5
# cp -p /lib/modules/`uname -r`/block/loop.ko /boot/loop-`uname -r`.ko - Teraz przechodzimy do /usr/src/loop-AES-v2.1b i sprawdzamy czy wszystko jest dobrze:
# make tests Je艣li uka偶e nam si臋 *** Tests result ok *** to znaczy ze wszystko jest ok.
Loop-AES jest przemy艣lany g艂贸wnie jako modu艂 kernelowy. Przy konfiguracji kernelu nie mo偶e by膰 wybrany loop device (dlatego 偶e zast膮pi go loop-AES).
Mo偶na te偶 obs艂ug臋 loop-aes wkompilowa膰 w kernela. W tym celu b臋d膮c w katalogu ze 藕r贸d艂ami kernela wydajemy polecenie: # patch -p1 < /usr/src/loop-AES-v2.1b/kernel-2.6.6.diff a nast臋pnie zaznaczamy w konfiguracji j膮dra:
Block devices —>
<*> Loopback device support
[*] AES encrypted loop device support (NEW)
Reszta przebiega tak samo jak przy instalacji AES’a jako modu艂.
SZYFROWANIE:
Nasz szyfrowany system plik贸w mo偶e by膰 fizyczn膮 partycj膮 lub po prostu plikiem.
- Szyfrowanie partycji
- Partycj臋 kt贸r膮 chcemy zaszyfrowa膰 np. /dev/hda3 wype艂niamy zerami:
# dd if=/dev/zero of=/dev/hda3 bs=4k lub losowymi danymi ( # dd if=/dev/urandom of=/dev/hda3 bs=4k ) ale potrwa to znacznie d艂u偶ej. - Kojarzymy loop z nasz膮 partycj膮 i wybieramy rodzaj szyfrowania (128, 192 lub 256 bit贸w):
# losetup -e AES128 -T /dev/loop0 /dev/hda3
(zostaniemy poproszeni o podanie has艂a min. 20 znak贸w.) - Zak艂adamy nowy system plik贸w: # mkfs -t ext3 /dev/loop0
- Usuwamy skojarzenie mi臋dzy partycj膮 a urz膮dzeniem loop
- Montujemy partycj臋 np. do katalogu /mnt/code,
# losetup -e AES128 /dev/loop0 /dev/hda3
# mount /dev/loop0 /mnt/code - Gdy chcemy odmontowa膰 wydajemy polecenia:
# umount /mnt/tajne
# losetup -d /dev/loop0 - Mo偶na te偶 doda膰 odpowiedni wpis (/dev/hda3 /mnt/code ext3 defaults,loop=/dev/loop0,encryption=AES128 0 0) do pliku /etc/fstab montuj膮cy partycj臋 przy starcie, ale w tym momencie system b臋dzie si臋 nam zatrzymywa艂 i czeka艂 na has艂o. Lepiej jest stworzy膰 prosty skrypt kt贸ry podmontuje lub odmontuje nam partycj臋 wtedy kiedy b臋dziemy tego chcieli. W tym celu tworzymy plik o zawarto艣ci:
#!/bin/bash losetup -e AES128 /dev/loop0 /dev/hda3 mount /dev/loop0 /mnt/code
- Zapisujemy pod nazw膮 /bin/p
- Nadajemy prawa do wykonywania: # chmod +x /bin/p
- I od tej pory po wydaniu polecenia # p system spyta nas o has艂o i podmontuje partycj臋.
- Analogicznie post臋pujemy z odmontowywaniem.
- Szyfrowany plik
Je艣li nie mamy wolnej partycji, mo偶emy utworzy膰 dowolnej wielko艣ci plik, kt贸ry po odpowiednich zabiegach b臋dzie widoczny w systemie tak jak partycja.
- Tworzymy odpowiedniej wielko艣ci plik np. 10MB
# dd if=/dev/zero of=/root/sejf bs=4k count=2560
Jak obliczy膰 wielko艣膰: (10MB * 1024) / 4 = 2560 - Kojarzymy loop z nasz膮 partycj膮 i wybieramy rodzaj szyfrowania (128, 192 lub 256 bit贸w):
# losetup -e AES128 -T /dev/loop1 /root/sejf
(zostaniemy poproszeni o podanie has艂a min. 20 znak贸w.) - Zak艂adamy nowy system plik贸w: # mkfs -t ext3 /dev/loop1
- Usuwamy skojarzenie mi臋dzy partycj膮 a urz膮dzeniem loop
- Montujemy partycj臋 np. do katalogu /mnt/sejf
# losetup -e AES128 /dev/loop1 /root/sejf
# mount /dev/loop1 /mnt/sejf - Gdy chcemy odmontowa膰 wydajemy polecenia:
# umount /mnt/sejf
# losetup -d /dev/loop0 - Aby zwyk艂y user m贸g艂 montowa膰 tak膮 partycj臋 dodajemy wpis:
/root/sejf /mnt/sejf ext3 users,exec,noauto,sync,loop=/dev/loop1,encryption=AES128 0 0
do pliku /etc/fstab