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.