Przechowywanie poufnych danych w GNU/Linuksie
Tutorial jest uzupe�nieniem Artyku�u Przechowywanie poufnych danych w
GNU/Linuksie (Hakin9 01/2005). Zak�adamy, �e opisane �wiczenia b�d� przeprowadzone przy u�yciu do��czonej do
pisma dystrybucji Hakin9 Live.
Uwaga! Nie zalecamy szyfrowania prawdziwych cennych danych w systemie Hakin9
Live – grozi to ich utrat� po ponownym uruchomieniu
komputera.
Cel: po wykonaniu opisanych �wicze� Czytelnik:
b�dzie potrafi�, pos�uguj�c si� si� pakietem GnuPG, szyfrowa� symetrycznie i asymetrycznie pojedyncze pliki,
b�dzie potrafi� stworzy� i u�ytkowa� szyfrowany katalog za pomoc� narz�dzia EncFS,
b�dzie umia� stworzy� i zamontowa� szyfrowan� partycj� (rzeczywist� lub wirtualn�) przy wykorzystaniu narz�dzia cryptoloop.
Symetryczne szyfrowanie plik�w – pakiet GnuPG
W pierwszym �wiczeniu u�yjemy pakietu GnuPG do zaszyfrowania
pojedynczego pliku. W naszym przypadku b�dzie to plik HK1204.pdf.
[01] W tutorialu wykorzystamy algorytm AES (ma najlepszy stosunek
wydajno�ci do jako�ci). Zaczynamy wi�c od za�adowania modu�u j�dra odpowiedzialnego za jego obs�ug�:
$ su -
# modprobe aes
# exit
[02] Tworzymy katalog /home/haking/encrypted, w kt�rym b�dziemy trzyma� nasze zaszyfrowane dane:
$ mkdir ~/encrypted
Zapisujemy w nim plik HK1204.pdf.
[03] Czas na szyfrowanie. Wydajmy poni�sze polecenie:
$ gpg --output ~/encrypted/cyph1 --symmetric --cipher-algo AES192 ~/encrypted/HK2104.pdf
Powy�sza komenda nakazuje symetryczne zaszyfrowanie pliku HK2104.pdf do pliku wyj�ciowego ~/encrypted/cyph1 przy u�yciu algorytmu AES ze 192-bitowym kluczem. Wszystkie ostrze�enia i b��dy s� dla nas nieistotne – ignorujemy je.
[04] Do zaszyfrowania konieczne jest podanie has�a. Pomy�lmy wi�c chwil� nad zdaniem, kt�re nie ma wi�kszego sensu, ale daje si� �atwo
zapami�ta� - na przyk�ad Wieczorami z krasnalami slon na trabie rumbe rabie. Taka jego zabawa, 666. I takie te� ustalimy has�o.
[05] Plik zosta� zaszyfrowany. Teraz trzeba bezpiecznie pozby�
si� orygina�u:
$ shred -n 35 -z -u ~/encrypted/HK2104.pdf
[06] Aby odszyfrowa� plik i odzyska� dane skorzystamy z nast�puj�cej komendy:
$ gpg --output HK2104.pdf --decrypt ~/encrypted/cyph1
Szyfrowane katalogi – EncFS
[07] Przed skorzystaniem z mo�liwo�ci programu EncFS nale�y stworzy� dwa katalogi. Jeden (u nas ~/.crypto) b�dzie
przechowywa� nasze dane w postaci zaszyfrowanej (nie b�dziemy z niego korzysta� bezpo�rednio), natomiast w drugim (~/secret) b�d�
one montowane i deszyfrowane w locie przy ka�dym ��daniu dost�pu. Montowanie mo�e oczywi�cie odby� si� tylko po podaniu prawid�owego
has�a.
$ mkdir ~/.crypto
$ mkdir ~/secret
[08] Kolejnym krokiem jest uaktywnienie mechanizmu EncFS:
$ su -; insmod fuse; exit
$ encfs ~/.crypto ~/secret
Po wci�ni�ciu klawisza [Enter] zostaniemy poproszeni o wyb�r
trybu konfiguracji. Decydujemy si� tutaj na Prekonfigurowany tryb
dla paranoik�w
Czas na ustalenie has�a do naszego archiwum. Po jego podaniu i potwierdzeniu
nasz wirtualny system plik�w jest gotowy do u�ytku.
[09] Kopiujemy do niego kilka plik�w (echo, ls, telnet):
$ cp /bin/echo /bin/ls /bin/telnet ~/secret/
Sprawdzamy, co znajduje si� w katalogach ~/secret oraz ~/.crypto:
$ ls ~/secret
$ ls ~/.crypto
Jak wida�, w pierwszym s� nasze pliki, a w drugim ich zaszyfrowana wersja. Teraz, aby nikt nie m�g� przeczyta� ich zawarto�ci,
mo�emy odmontowa� wirtualny system plik�w poleceniem:
$fusermount -u ~/crypto
Uda�o si�! Nasze dane s� bezpieczne.
[10] Teraz spr�bujmy podmontowa� je jeszcze raz – z
dodatkowym zabezpieczeniem, kt�re powoduje automatyczne
odmontowanie po okre�lonym czasie bezczynno�ci (10 minut):
$ encfs --idle=10 ~/.crypto ~/secret
Nasze pliki s� zn�w dost�pne w katalogu ~/secret. Je�li odczekamy 10 minut przekonamy si�, �e zostanie on
automatycznie odmontowany.
Szyfrowany system plik�w – cryptoloop
Pozosta�o jeszcze jedno narz�dzie, kt�re pomo�e nam zabezpieczy� poufne
pliki. Jest to wbudowany w j�dro Linux cryptoloop
[14] Zak�adaj�c, �e nie mamy dost�pnej wolnej partycji (tak w�a�nie jest w
przypadku Hakin9 Live),wykorzystamy wygodn� cech� mechanizmu zwrotnego – loopback – umo�liwiaj�c� wykorzystanie jako systemu plik�w
zwyk�ego pliku. Przygotujmy go zatem:
$ dd if=/dev/urandom of=~/crypto.raw bs=1k count=10000
Spowoduje to utworzenie pliku o rozmiarze 10 megabajt�w, wype�nionego
przypadkowymi warto�ciami (�mieciami).
[15] Nast�pn� czynno�ci� jest powi�zanie stworzonego pliku pliku z wolnym
urz�dzeniem loop oraz zaszyfrowanie go wybran� przez nas metod�:
$ su -
# losetup -e aes-192 /dev/loop0 /home/haking/crypto.raw
System poprosi nas o podanie has�a o minimalnej d�ugo�ci 20 znak�w.
[16] Maj�c ju� przygotowane miejsce, trzeba zrobi� tam troch� porz�dku,
czyli za�o�y� jaki� system plik�w. Na przyk�ad ext2:
# mkfs.ext2 /dev/loop0
[17]Po powy�szej czynno�ci mo�na ju� zwolni� (opcja -d) urz�dzenie
loop0:
# losetup -d /dev/loop0
# exit
[18] Nasz szyfrowany system plik�w ju� jest gotowy do montowania i
u�ywania tak samo, jak ka�dy inny system plik�w. Zamontujmy go
wi�c i zobaczmy, jak dzia�a:
$ mkdir ~/encrypted_disk
$ mount -t ext2 ~/crypto.raw ~/encrypted_disk -oencryption=aes-192
mount, po podaniu prawid�owego has�a, sam ju� powi��e podany plik z pierwszym
wolnym urz�dzeniem loop.
[19] Skopiujmy teraz nasze pliki do bezpiecznego kontenera:
$ cp /bin/echo /bin/ls /bin/telnet ~/encrypted_disk
To wszystko – nasz nowy zaszyfrowany dysk mo�na do woli montowa� i
odmontowywa�. Nikt, kto nie zna has�a dost�pu do niego, nie b�dzie
mia� mo�liwo�ci zajrzenia do �rodka.