Jak już wcześniej pisałem, dziś postanowiłem opisać pierwszą metodę szyfrowanie danych, dziś AES-Loop.
Przez wiele osób kojarzone z jądrem 2.4.X niestety Loop-AES nigdy w nim nie był i pewnie już nigdy nie będzie, jest dostępny tylko i wyłącznie jako patch/moduł na oba 2.4.X i 2.6.X.
Jak sama nazwa wskazuje Loop-AES koduje za pomocą algorytmu AES i nie da się go zmienić na żaden inny. Loop-AES nie używa crypto-loop-a który pojawił się w 2.6.X a na dodatek nie zadziała gdy jest on wkompilowany, co wcale nie jest dobra ani fajne bo dla osób które migrują np. z crypto-loop-a (inny algorytm niż AES) operacja jest utrudniona.
Muszę też dodać że Loop-AES jest „kapryśny” podczas kompilacji, o czym będę pisał później.
A teraz do rzeczy:
1. Musimy mieć źródła kernel-a możliwie nowego które pobieramy do /usr/src (http://www.kernel.org/)
2. Rozpakowywanemu je do /usr/src/linux
3. Pobieramy AES-Loop (http://loop-aes.sourceforge.net/) i rozpakowywanemu do /usr/src/loop-AES-XXXXX
4. Pobieramy i rozpakowywanemu util-linux do /usr/src/util-linux (http://www.kernel.org/pub/linux/utils/util-linux/)
5.MODUŁ – Ustawiamy kernel tak aby NIE posiadał:
< > Loopback device support
Spotkałem się już z kilkoma opisami które piszą że do Loop-AES wymagane są: RAM disk czy też MINIX (system plików), nie wiem do czego to ma być ale testowałem i nie są wymagane. (Ram disk może być gdy ktoś by chciał kodować / ale można to samo zrobić wkompilowując Loop-AES w jądro.
5. WKOMPILOWANY W JĄDRO – zanim przystąpimy do ustawiania kernel-a musimy go zpatchować:
cd /usr/src/linux
patch -p1 < /usr/src/loop-AES-vX.XX/kernel-2.6.X.diff
potem „make menuconfig”
i wybieramy:
<*> Loopback device support
[*] AES encrypted loop device support (NEW)
6. Kompilujemy, instalujemy a potem uruchamiamy nowy kernel.
7. Teraz kompilacja Loop-AES, bardzo zalecam: make clean && make
8. Potem wskakujemy do util-linux i patchujemy jego źródło patchem z loop-AES:
patch -p1 <../loop-AES-vX.XX/util-linux-X.XXX.diff
9. Instalacja util-linux trzeba wykonać dokładnie tak:
# 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
(zalecenia autora)
10. Na koniec można wykonać mały test funkcjonoania Loop-AES wchodząc do katalogu źródeł Loop-AES i wykonując „make tests” co powinno dać nam wynik:
*** Tests result ok ***
11. KONIEC INSTALACJI :>
UŻYTKOWANIE
A. Szyfrowanie ala cała partycja.
1. Jeżeli mamy jakąś miłą partycję którą możemy wykorzystać pod Loop-AES, musimy wymłócić na niej dane. W tym celu:
dd if=/dev/zero of=/dev/hdaX bs=4k
co skutecznie zastąpi wszelkie dane na partycji losowymi danymi.
wersja hARdCORE (losowymi danymi)
dd if=/dev/urandom of=/dev/hdaX bs=4k
co niestety może potrwać i zależy w dużej mierze od mocy obliczeniowej naszego komputera.
2. Inicjacja szyforwania partycji:
losetup -e AES256 -T /dev/loop0 /dev/hdaX
Potem wpisujemy hasło, im dłuższe i bardziej zróżnicowane tym lepsze.
Zamiast AES 256bit możemy jeszcze użyć AES128 i AES192 jednak trzeba pamiętać że zwiększa to prawdopodobieństwo że ktoś rozkoduje nasze dane. (nieznacznie)
3. Inicjujemy system plików:
mkfs -t xfs /dev/loop0
Ja używam xfs oraz reiserfs ale każdy może wybrać co chcesz np. ext3 i nie wpłynie to w żaden sposób na bezpieczeństwo naszych danych.
4. Montujemy partycję:
losetup -e AES256 /dev/loop0 /dev/hdaX
mount /dev/loop0 /mnt/szyfrowana
GOTOWE :>
5.Aby odmontować:
umount /dev/loop0
losetup -d /dev/loop0
Można też się bawić w skrypty czy wpisy do fstab tak aby system montował naszą partycję przy starcie:
/dev/hdaX /mnt/szyfrowana xfs defaults,loop=/dev/loop0,encryption=AES256 0 0
i pytał o hasło :>
Ja osobiście do zamiast hasło używam pliku umieszczonego na pen-drive w którym mam jakieś kilka kilo danych prosto z /dev/urandom
A montuje to za pomocą skryptu:
#/bin/sh
mount /dev/sda1 /mnt/flash
cat /mnt/flash/klucz | losetup -e AES256 /dev/loop0 /dev/hdaX
mount -t xfs /dev/loop0 /mnt/szyfrowana
B. Szyfrowanie ala plik
1. Tworzymy plik w którym będą nasze dane:
dd if=/dev/zero of=/root/zaszyfrowany bs=4k count=2560
2. Wiążemy pętle z plikiem
losetup -e AES256 -T /dev/loop0 /root/zaszyfrowany
3. Tworzymy system plików:
mkfs -t xfs /dev/loop0
4. Montujemy plik:
losetup -e AES256 /dev/loop0 /root/zaszyfrowany
mount /dev/loop0 /mnt/zaszyfrowany
Tak samo jak z partycją tak i z plik możemy wpisać do fstab.
To chyba tyle 🙂
Dodam jeszcze że X w moim opisie oznacz coś co trzeba zmienić dopasować pod własny system lub jest to wersja programu pakietu itp.
Strona domowa: http://sourceforge.net/projects/loop-aes/
Jeżeli ktoś ma jakieś pytanie to proszę kierować je na forum.