OpenWrt - Encrypted filesystems
Szyfrowany system plików w OpenWrtOstatnia zmiana: 2013-02-28 20:53
1. Przygotowanie nośnika
2. Instalacja oprogramowania
3. Przygotowanie partycji
4. Tworzenie systemu plików
5. Odmontowanie partycji
6. Praca z zaszyfrowaną partycją
6.1. Podłączenie dysku
6.2. Odłączenie dysku
7. Zakończenie
Zdarza się potrzeba posiadania szyfrowanego systemu plików. Co na nim trzymamy to już indywidualna sprawa: być może np. lista haseł bankowych, do serwisów internetowych itd. OpenWrt, podobnie jak w innye systemy linuksowe umożliwia stworzenie i obsługę takich systemów plików. Wydajność routerów pozwala na miarę bezproblemowe korzystanie z szyfrowanych partycji. W tym przykładzie zostanie wykorzystany LUKS - Linux Unified Key Setup, który może być używany systemy Windows. Porównanie poszczególnych programów do szyfrowania można znaleźć np. w Wikipedii.
W sieci znajduje się bardzo dużo przepisów i porad dotyczących sposobów odpowiedniego przygotowania dysków i zabezpieczenia danych. Omówione są także poszczególne algorytmy, ich zalety i wady, więc w razie wątpliwości - należy posłużyć się mocą.
Przygotowanie nośnika
Konieczny będzie zewnętrzny nośnik, na którym zostanie umieszczony szyfrowany system plików. Może to być pendrive, dysk USB czy karta SD. Zakładamy że całość zostanie wykonana na pierwszej partycji (sda1) nośnika. Partycja nie może być zamontowane w systemie.Niezbędnym elementem jest wyczyszczenie zawartości tej partycji. Można wykonać to na co najmniej na kilka sposobów - w systemach linuksowych często wykorzystywany jest program shred. W OpenWrt można posłużyć się po prostu nadpisaniem partycji losowymi danymi:
# dd if=/dev/urandom of=/dev/sda1
# dd if=/dev/zero of=/dev/sda1
Instalacja oprogramowania
# opkg update
# opkg install kmod-crypto-aes kmod-crypto-misc kmod-crypto-xts kmod-crypto-iv
# opkg install cryptsetup
Przygotowanie partycji
Przed wykonaniem jakichkolwiek czynności należy załadować jeden z modułów w celu obsługi określonego algorytmu:
# insmod sha256_generic
Zakładamy teraz partycję LUKS. Wykonuje się to przez polecenie:
# cryptsetup -v -c aes-cbc-essiv:sha256 -s 256 -y luksFormat /dev/sda1
NIST zaleca stosowanie XTS-AES, jest on szybszy (co przy stosunkowo słabej mocy routerów może mieć znaczenie), ale też w mniejszym stopniu sprawdzony. Jeżeli chcemy użyć tego algorytmu to polecenie przyjmie następującą postać:
# cryptsetup -v -c aes-xts-plain -y luksFormat /dev/sda1
WARNING!
========
This will overwrite data on /dev/sda1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.
Tworzenie systemu plików
"Otwieramy" partycję:
# cryptsetup luksOpen /dev/sda1 tajne
# ls /dev/mapper/*
/dev/mapper/control /dev/mapper/tajne
# mkfs.ext2 -m0 /dev/mapper/tajne
# mount -t ext2 /dev/mapper/tajne /mnt/dysk
Odmontowanie partycji
Po zakończeniu pracy należy partycję odmontować:
# umount /dev/mapper/tajne
# cryptsetup luksClose tajne
Praca z zaszyfrowaną partycją
Podłączenie dysku
# cryptsetup luksOpen /dev/sda1 tajne
# mkdir -p /tmp/tajne
# mount /dev/mapper/tajne /tmp/tajne
Odłączenie dysku
# sync
# umount /dev/mapper/tajne
# cryptsetup luksClose tajne
Zakończenie
Tak przygotowany dysk jest kompatybilny w nowszymi wydaniami dystrybucji Linuksa - po podłączeniu nośnika w większości przypadków nastąpi pytanie o hasło i będzie można zamontować daną partycję.