Zarejestruj się na BitBay.net
Home > Bezpieczeństwo, Linux > loop-AES – szyfrowany system plików

loop-AES – szyfrowany system plików

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

  1. Ściągamy najnowszy kernela ( http://www.kernel.org/ )
  2. Rozpakowujemy do /usr/src/ (powstanie katalog np.: /usr/src/linux-2.6.6)
  3. Ściągamy loop-AES-v2.1b ( http://loop-aes.sourceforge.net/)
  4. Rozpakowujemy do /usr/src/ (powstanie katalog: /usr/src/loop-AES-v2.1b)
  5. Ściągamy util-linux-2.12a ( http://www.kernel.org/pub/linux/utils/util-linux/ )
  6. Rozpakowujemy do /usr/src/ (powstanie katalog: /usr/src/util-linux-2.12a)
  7. Przechodzimy do katalogu z kernelem: # cd /usr/src/linux-2.6.6
  8. 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
  9. 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
  10. Kompilacja: # make clean dep bzImage modules
  11. Instalacja modułów: # make modules_install
  12. Instalacja kernela: # make install (w wersjach 2.4.x trzeba samemu skopiować nowego kernela do katalogu /boot itd.)
  13. Przechodzimy do katalogu ze źródłami loop-AES: # cd /usr/src/loop-AES-v2.1b
  14. Wydajemy kolejno polecenia:
    # make clean
    # make
  15. Przechodzimy do katalogu ze źródłami utils-linux: # cd /usr/src/util-linux-2.12a
  16. Nakładamy patcha: # patch -p1 <../loop-AES-v2.1b/util-linux-2.12a.diff
  17. 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
  18. 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.

  1. 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.
  1. 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

W sieci:

Kategorie:Bezpieczeństwo, Linux Tagi:
  1. Brak komentarzy
  1. Brak jeszcze trackbacków

*