Szyfrowanie danych
Niedawno pojawił się nowy TrueCrypt (5.0) i po raz pierwszy wypróbowałem ten program na platformie Linuksa. Niestety Truecrypt 5.0 w GNOME w OpenSUSE 10.3 zawieszał mi system podczas próby kopiowania pliku. Komputer nie reagował na żadne komendy. Na moje pytanie dotyczące problemu nikt mi na forum SUSE nie odpowiedział, a deweloperzy do których zgłosiłem problem na razie milczą. Skłoniło mnie to do poszukiwania rozwiązań alternatywnych, dzięki czemu trafiłem na opis LUKSa. Postanowiłem to wypróbować, dlatego że gdzie indziej w sieci znalazłem informację o teście, który pokazał, że jest to rozwiązanie szybsze niż TrueCrypt (chodzi o czas dostępu do szyfrowanych danych). Wszystko zależy od tego, do czego potrzebne jest nam szyfrowanie.
Poniżej opiszę metodę szyfrowania, którą przetestowałem w OpenSUSE 10.3 i wiem że działa. Jest to szyfrowanie pliku, a nie partycji, choć w podobny sposób zaszyfrujemy partycję. Testy przeprowadziłem w oparciu o informacje, którą znalazłem w Internecie.
Aby utworzyć szyfrowany plik, jako użytkownik root wykonujemy następujące kroki:
Krok 1:
Tworzymy szyfrowany plik. W poniższym przykładzie w katalogu /test/szyfrowanie
zostanie utworzony plik SzyfrowanyPlik o rozmiarze 10GB:
dd if=/dev/zero of=SzyfrowanyPlik bs=1M count=10000
WYNIK DZIAŁANIA KOMENDY:
10000+0 przeczytanych recordów
10000+0 zapisanych recordów
skopiowane 10485760000 bajtów (10 GB), 506,957 s, 20,7 MB/s
Rozmiar ustawiamy poprzez wstawienie odpowiedniej wartości w count. Jeżeli to, co wpiszemy w count pomnożymy przez wartość bs (w tym przykładzie 1M), to otrzymamy wielkość pliku.
Krok 2:
Aby korzystać z pliku jako zwykły użytkownik zmieniamy właściciela pliku. Oto przykład, jak można to zrobić:
chown rafal:users SzyfrowanyPlik
Krok 3:
Kojarzymy urządzenie pseudosieci z plikiem komendą:
losetup /dev/loop0 SzyfrowanyPlik
Krok 4:
Wybieramy sposób szyfrowania wykonując komendę:
cryptsetup --verbose --cipher "aes-cbc-essiv:sha256" --key-size 256 --verify-passphrase luksFormat /dev/loop0
WYNIK DZIAŁANIA KOMENDY:
WARNING!
========
This will overwrite data on /dev/loop0 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.
Krok 5:
Formatowanie dysku. Wykonujemy komendy:
cryptsetup luksOpen /dev/loop0 SzyfrowanyPlik
mkfs.ext2 /dev/mapper/SzyfrowanyPlik
OTO WYNIK KOMENDY FORMATOWANIA:
mke2fs 1.40.2 (12-Jul-2007)
Etykieta systemu plików=
Typ OS: Linux
Rozmiar bloku=4096 (log=2)
Rozmiar fragmentu=4096 (log=2)
1281696 i-węzłów, 2559743 bloków
127987 bloków (5.00%) zarezerwowanych dla superużytkownika
Pierwszy blok danych=0
Maksymalna liczba bloków systemu plików=2621440000
79 grup bloków
32768 bloków w grupie, 32768 fragmentów w grupie
16224 i-węzłów w grupie
Kopie zapasowe superbloku zapisane w blokach:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Zapis tablicy i-węzłów: zakończono
Zapis superbloków i podsumowania systemu plików: wykonano
Ten system plików będzie automatycznie sprawdzany co każde 33 montowań
lub co 180 dni, zależnie co nastąpi pierwsze. Można to zmienić poprzez
tune2fs -c lub -i.
Krok 6:
Montujemy plik. Oto przykładowa komenda:
mount /dev/mapper/SzyfrowanyPlik /mnt/szyfrowane
Oczywiście zakładam, że w katalogu mnt istnieje folder szyfrowane i mamy do niego dostęp.
Po stworzeniu szyfrowanego pliku, w momencie zaistnienia potrzeby skorzystania z danych na nim zawartych należy taki dysk zamontować. Poniżej przykład dla OpenSUSE 10.3 i zaszyfrowanego pliku.
W folderze, w którym znajduje się zaszyfrowany plik ( w tym przykładzie “SzyfrowanyPlik”), jako root wykonujemy następujące komendy:
losetup /dev/loop0 SzyfrowanyPlik
cryptsetup luksOpen /dev/loop0 SzyfrowanyPlik
mount /dev/mapper/SzyfrowanyPlik /mnt/szyfrowane/
Po zakończeniu możemy go odmontować poprzez:
umount /mnt/szyfrowane
cryptsetup luksClose /dev/mapper/SzyfrowanyPlik
losetup -d /dev/loop0
Nie wykonywałem żadnych pomiarów prędkości, ale ogólnie mam wrażenie że wszystko działa bardzo szybko, dlatego polecam LUKS jako alternatywę do TrueCrypt.


Tuesday, 18 August, 2009 at 20:17
W celu uaktualnienia informacji zawartych w artykule - zainteresowanym polecam jeszcze metodę loop-AES: http://www.tidnab.nowaruda.net/linux/8/loop-aes-szyfrowany-system-plikow.html