hakin9 6 2004 przechowywanie danych demo

background image

www.hakin9.org

14

Hakin9 Nr 6/2004

Po

ds

ta

w

y

www.hakin9.org

15

Hakin9 Nr 6/2004

Przechowywanie poufnych danych

W

yobraźmy sobie następującą sytu-
ację: dostajemy nową pracę w fir-
mie zajmującej się projektowaniem

urządzeń elektronicznych i ich oprogramo-
wania. Przy podpisywaniu umowy nie obej-
dzie się bez złożenia podpisu pod dokumen-
tem o nazwie confidentiality agreement, wedle
którego wszystkie informacje, jakie otrzymuje-
my od firmy, bez względu na medium, są po-
ufne i podlegają ścisłej ochronie przed wycie-
kiem do osób nieupoważnionych. Ostatni, dłu-
gi akapit mówi co nam grozi, jeśli z naszej wi-
ny dojdzie do takiego wycieku.

Jednak aby pracować, potrzebujemy od

czasu do czasu zabrać ze sobą dokumenta-
cję czy kod źródłowy; używamy do tego celu
swojego laptopa. Co się stanie, jeśli go zgubi-
my albo ktoś nam go ukradnie i znajdzie na je-
go dysku katalog z dokumentami naszpikowa-
nymi słowami poufne? Rozsądnie jest zabez-
pieczyć się przed taką ewentualnością – zasta-
nówmy się więc, jak można to zrobić.

Szyfrowanie

pojedynczych plików

Jeśli poufnych plików mamy niewiele, zaś ich
rozmiar i ilość nie stanowią tajemnicy, możemy

Przechowywanie poufnych

danych w GNU/Linuksie

Piotr Tyburski

Jedyną gwarancją

bezpieczeństwa ważnych

informacji jest stosowanie

zaawansowanych algorytmów

kryptograficznych. Linuksowe

narzędzia umożliwiają

szyfrowanie pojedynczych

plików, wybranych katalogów

czy nawet całych partycji.

Przyjrzyjmy się metodom

szyfrowania poufnych danych.

wykorzystać pakiet gpg (Gnu Privacy Guard),
będący nowszym i publikowanym na licencji
GPL odpowiednikiem słynnego PGP (Pretty
Good Privacy
). Oferuje on możliwość szyfro-
wania zarówno asymetrycznego (z kluczem
publicznym), jak i symetrycznego (patrz Ram-
ka Szyfrowanie symetryczne i asymetryczne).

Zacznijmy od takiej sytuacji: mamy ważną

specyfikację nowego projektu zapisaną w pliku
o nazwie DD32X.pdf. Chcemy ukryć jej treść
przed niepowołanym dostępem. Wydajmy za-
tem następujące polecenie:

$ gpg --output cyph1.1 --symmetric \
--cipher-algo TWOFISH DD32X.pdf

gpg zadaje nam pytanie o hasło, które będzie
zabezpieczać nasze dane, a następnie prosi

Z artykułu nauczysz się...

• jak za pomocą darmowych narzędzi zapewnić

kryptograficzną ochronę poufnych danych.

Powinieneś wiedzieć...

• powinieneś umieć korzystać z systemu Linux.

background image

www.hakin9.org

14

Hakin9 Nr 6/2004

Po

ds

ta

w

y

www.hakin9.org

15

Hakin9 Nr 6/2004

Przechowywanie poufnych danych

o jego potwierdzenie. Hasło powinno
być skomplikowane i jednocześnie
łatwe do zapamiętania (patrz Ram-
ka Hasła z dużą entropią).

Przyjrzyjmy się wydanemu przez

nas poleceniu. Kazaliśmy gpg za-
szyfrować plik DD32X.pdf

korzy-

stając z szyfrowania symetryczne-
go (

--symmetric

), używając do tego

algorytmu TWOFISH (

--cipher-algo

TWOFISH

). Bez podania tej ostatniej

opcji wykorzystany zostałby algo-
rytm domyślny, czyli CAST5. Pli-
kiem wyjściowym miał być cyph1.1
(

--output cyph1.1

). Warto zauważyć,

że gdyby plik o takiej nazwie już ist-
niał, program zapytałby, czy chcemy
go nadpisać. Żeby być konsekwent-
nym, należy teraz możliwie bez-
piecznie skasować wersję jawną.

Zwykłe usunięcie pliku, na przy-

kład przez wydanie polecenia

rm DD32X.pdf

, nie jest bezpieczne.

Powoduje jedynie, że informacja
o pliku zostaje usunięta ze struktur
opisujących zawartość systemu pli-
ków, lecz sama treść pliku pozosta-
je na dysku (to tak, jakbyśmy usu-
nęli rozdział książki ze spisu treści,
lecz zapomnieli wyrwać z niej odpo-
wiednie kartki). W efekcie odpowied-
nio zdeterminowany intruz może
ukraść nasz dysk, a następnie przej-
rzeć jego niezajęty obszar i tam zna-
leźć resztki ważnego pliku (przypo-
mnijmy sobie choćby niedawną afe-
rę z dyskiem minister Jakubowskiej,
z którego w taki właśnie sposób od-
zyskano istotne informacje).

Aby zabezpieczyć się przed taką

ewentualnością, powinniśmy nadpi-
sać zawartość pliku. W tym celu wy-
damy polecenie:

$ shred -n 35 -z -u DD32X.pdf

Spowoduje to trzydziestopięcio-
krotne nadpisanie pliku śmieciami
(

-n 35

), następnie zerami (

-z

), a na-

stępnie jego usunięcie (

-u

).

Niestety, metoda ta nie jest sku-

teczna dla systemów plików z jour-
nalingiem (ext3, ReiserFS, xfs, jfs).
Journaling wiąże się bowiem z za-
pisywaniem w osobnym miejscu
(w tak zwanym dzienniku – ang. jour-
nal
) dodatkowych informacji o zmia-
nach wprowadzanych w systemie pli-
ków (w systemie ext3 są to nie tylko
informacje o strukturze systemu, ale
nawet same dane). Jest to wykorzy-
stywane w razie problemów z odtwo-
rzeniem spójności systemu plików.
W tej sytuacji nie mamy gwarancji,
że wypełnienie pliku losowym cią-
giem powoduje całkowite usunięte
jego poprzedniej treści – systemy pli-
ków z journalingiem nie umożliwiają
całkowitego usuwania danych. Mimo
tych problemów korzystanie z pole-
cenia shred na pewno jest bezpiecz-
niejsze niż zwykłe usuwanie plików
przy użyciu rm.

Kiedy po pewnym czasie zechce-

my odszyfrować nasz plik, wydamy
polecenie:

$ gpg --output DD32X.pdf \
--decrypt cyph1.1

Szybki start – szyfrujemy pojedynczy plik

Aby zaszyfrować pojedynczy plik, na przykład DD32X.pdf, wydajemy polecenie:

$ gpg --output cyph1.1 --symmetric --cipher-algo TWOFISH DD32X.pdf

Zaszyfrowana wersja pliku zostaje umieszczona w pliku cyph1.1. Teraz możemy skaso-
wać jawną wersję pliku. Zróbmy to bezpiecznie:

$ shred -n 35 -z -u DD32X.pdf

Kiedy zechcemy odszyfrować plik, wystarczy wydać polecenie:

$ gpg --output DD32X.pdf --decrypt cyph1.1

Powyższy przykład zakłada, że mamy zainstalowany pakiet gpg lub korzystamy
z Hakin9 Live.

Szybki start – tworzymy zaszyfrowany katalog

Aby stworzyć zaszyfrowany katalog, wydajemy polecenie:

# encfs ~/.crypto ~/secret

Powoduje to utworzenie zaszyfrowanego katalogu ~/.crypto. Jego wersja rozszyfrowa-
na widoczna jest w katalogu ~/.secret (to w tym katalogu powinniśmy umieszczać pliki,
które chcemy chronić). Kiedy dostęp do zaszyfrowanego katalogu nie jest nam już po-
trzebny, odmontowujemy go poleceniem:

# fusermount -u ~/secret

Powyższy przykład zakłada, że mamy zainstalowany pakiet EncFS lub korzystamy
z Hakin9 Live.

Szybki start – tworzymy szyfrowany system plików

Aby stworzyć szyfrowany system plików o wielkości 100 megabajtów, wydajemy po-
lecenia:

$ dd if=/dev/urandom of=crypto.raw bs=1k count=100000
# losetup -e aes-256 /dev/loop0 crypto.raw
# mkfs.ext3 /dev/loop0
# losetup -d /dev/loop0

Powyższe polecenia powodują utworzenie szyfrowanego systemu plików w pliku cryp-
to.raw
. Kiedy zechcemy w przyszłości korzystać z tego systemu plików, musimy pod-
montować go poleceniem:

# mount -t ext3 crypto.raw /mnt/crypt -oencryption=aes-256

System plików zostanie zamontowany do katalogu /mnt/crypt.

Przykład zakłada, że mamy odpowiednio skonfigurowane jądro i uaktualniony pa-

kiet util-linux (dokładny opis w odpowiednim HOWTO – patrz Ramka W Sieci) lub ko-
rzystamy z Hakin9 Live.


Wyszukiwarka

Podobne podstrony:
hakin9 6 2004 wykrywanie sniffingu demo
hakin9 5 2004 demaskowanie nadawcy demo
hakin9 5 2004 szelkod python demo
hakin9 6 2004 testy penetracyjne demo
hakin9 5 2004 skanowanie portow demo
hakin9 5 2004 rozpoznawanie honeypotow demo
hakin9 6 2004 cisco ios demo
hakin9 5 2004 ddos obrona demo
hakin9 5 2004 atak jabber demo
hakin9 6 2004 inzynieria odwrotna demo
hakin9 6 2004 wykrywanie sniffingu demo

więcej podobnych podstron