środa, 6 kwietnia 2011

TrueCrypt

TrueCrypt — prawdziwe szyfrowanie
12 maja 2007, lipiec

Super opis
http://dyski.cdrinfo.pl/artykuly/truecrypt5/index.php



We wcześniejszym tekście opisywałem program Cryptsetup, który pozwalał nam na sprawne zaszyfrowanie naszych danych. Ktoś może zapytać: “Więc po co tracić czas i opisywać to samo, tylko wykonane w innym programie?”. Moja odpowiedź brzmi: “Po to, żeby użytkownik miał alternatywę i sam mógł zdecydować, którego programu chciałby użyć.” Ponadto TrueCrypt jest zdecydowanie łatwiejszy w użyciu, o czym przekonasz się w trakcie pracy z tym programem. Jeżeli jesteś zainteresowany odkrywaniem wspaniałych możliwości tego programu, zapraszam do lektury!

Autor: Marcin Lipiec

Krótkie przedstawienie funkcji programu

TrueCrypt jest darmowym programem, który szyfruje informacje “w locie” (ang. on-the-fly). W chwili pisania tekstu najnowsza wersja jest oznaczona numerkiem 4.3. Za pomocą TrueCrypt możesz zaszyfrować cały dysk, oddzielną partycję lub stworzyć szyfrowany folder. TrueCrypt nie tylko szyfruje całe zawartości plików, ale również ich nazwy i nazwy folderów w których się znajdują. Nie jest możliwe jest także odczytanie rozmiaru zaszyfrowanego folderu/dysku/partycji. W tym tekście pokażę jak zaszyfrować dowolny folder, znajdujący się na Twojej partycji. TrueCrypt dostępny jest zarówno na Windowsa i Linuksa.

Zalety TrueCrypt:

* tworzy zaszyfrowany wirtualny dysk i montuje go jak prawdziwy,
* szyfruje cały dysk, wybraną partycje/katalog a nawet USB,
* szyfrowanie następuje automatycznie, w locie i jest niewidzialne dla użytkownika,
* nie ma możliwości odczytania rozmiaru zaszyfrowanej partycji/katalogu,
* wykorzystuje m.in. takie algorytmy jak: AES-256, Serpent, Twofish,
* umożliwia stworzenie ukrytego wolumenu,
* tworzone wolumeny w żaden sposób nie różnią się od zwykłych danych,
* łatwy w obsłudze,
* wirtualne dyski tworzone przez TrueCrypt są całkowicie niezależne od systemu operacyjnego,
* klucze identyfikacyjne mogą być przechowywane na pendrivie.
* i wiele więcej…

Zabezpieczenie szyfrowanych danych może odbywać się na trzy sposoby:

* za pomocą wybranego przez Ciebie hasła,
* za pomocą specjalnego klucza,
* jednocześnie z użyciem hasła i klucza.

Ale co to jest ten klucz? Kluczem może być dowolny plik z Twojego dysku twardego np.: *.avi, *.mpg czy *.txt lub cały folder zawierający kilka plików. Uwaga! Lepiej być ostrożnym w używaniu jako klucza pliku tekstowego, ponieważ jeżeli zmienisz jego zawartość, zmieni się klucz, tym samym nie będziesz w stanie odszyfrować swoich danych. Co się stanie jak zgubisz klucz? Już nigdy nie odzyskasz swoich danych. Dlatego nie polecam wykorzystywania do identyfikacji tylko samego klucza. Najlepszą metodą jest użycie i klucza i hasła. W takim przypadku, gdy na przykład zgubimy klucz, mamy możliwość jego zmiany po wprowadzeniu odpowiedniego hasła i odwrotnie, jeżeli zapomnimy hasło, mamy możliwość jego zmiany po wskazaniu odpowiedniego klucza. Oczywiście żadne rozwiązanie nie jest idealne, ponieważ zawsze istnieje ryzyko, że zapomnisz hasło i zgubisz klucz.
Krótkie porównanie TrueCrypt i DM-Crypt

W rzeczywistości trudno stwierdzić, który z tych programów jest lepszy. Po żmudnym przeglądzie opisu opcji i rozważaniach stwierdziłem, że połączenie obu tych programów byłoby najlepszym rozwiązaniem. Oba programy pozwalają na stworzenie tzw. “kontenera” — kontener jest to szyfrowany plik, który działa tak jak katalog, więc możesz umieszczać w nim swoje pliki (przydatne rozwiązanie na przykład wtedy, gdy nie chcesz szyfrować całej partycji). Świetną zaletą obu programów jest również możliwość szyfrowania danych w czasie nagrywania ich na płytę CD lub DVD. Przy zmianie jądra Linuksa na nowszą wersję, będziesz musiał ponownie instalować moduł TrueCrypt, w przeciwieństwie do DM-Crypta. Z drugiej strony — w TrueCrypt możemy wykorzystać jednocześnie kilka algorytmów do szyfrowania! Działa on również na Windows, więc jeśli korzystasz z obu systemów, TrueCrypt będzie zdecydowanie lepszym wyborem. Jeżeli chcecie znaleźć bardzo szczegółowe informacje, zapraszam na stronę http://czytelnia.ubuntu.pl/index.php/2007/04/03/szyfrowane-systemy-plikow/. Znajdziesz tam świetny opis tych i innych programów.
Jak wybrać ten najlepszy klucz?

Osobiście nie polecam wybierania jako klucza plików czy folderów z naszego dysku. Najlepszą, więc metodą będzie użycie specjalnego generatora wbudowanego w TrueCrypt. RNG — Random Number Generator, bo taką nosi on nazwę, tworzy nam losowe dane o maksymalnej długości 320 bajtów i zapisuje je do wskazanego przez nas pliku. Jak odbywa się generowanie losowych danych? Jeżeli chodzi o Linuksa, RNG wykorzystuje dotego /dev/random lub /dev/urandom, czyli szumy powstałe przy używaniu urządzeń podłączonych do naszego komputera takie jak klawiatura czy myszka.
Jak działa TrueCrypt?

Cały proces szyfrowania jest zupełnie niewidzialny. W momencie kopiowania danego pliku na szyfrowany dysk, jego niewielkie kawałki (jeśli jest on zbyt duży np. film) kopiowane są najpierw do pamięci RAM a dopiero później zapisywane są w docelowym miejscu. Odszyfrowanie odbywa się na tej samej zasadzie, najpierw plik częściami kopiowany jest do pamięci RAM, następnie przekazywany jest użytkownikowi. TrueCrypt nigdy nie zapisuje nie zaszyfrowanych danych na dysku, zawsze dane szyfrowane są najpierw w RAM. Jest to bardzo wygodne rozwiązanie i zabezpiecza nas przed przypadkowym przechwyceniem plików.
Pobieramy TruceCrypt

Nowe wersje programu TrueCrypt znajdziesz zawsze na http://www.truecrypt.org. Aby TrueCrypt mógł działać poprawnie potrzebujemy także narzędzia jakim jest dmsetup. Dmsetup jest narzędziem, które umożliwia pracę z logicznymi dyskami zmapowanymi za pomocą sterownika device-mapper. Najnowszą wersję dmsetupa znajdziesz na http://sources.redhat.com/dm/. Gdy już masz wszystko pobrane, najpierw instalujemy narzędzie dmsetup:

tar zxvf device-mapper.twoja_wersja
cd device-mapper.twoja_wersja
./configure
make
make install

Jeżeli wszystko poszło bez problemów, instalujemy TrueCrypt:

tar zxvf truecrypt-twoja_wersja
cd truecrypt-twoja_wersja

Wchodzimy do katalogu Linux i instalujemy:

cd linux
./build.sh

Checking build requirements...
Building kernel module... Done.
Building truecrypt... Done.

Skrypt najpierw sprawdzi czy nasz system spełnia wymagania, może również zapytać nas o podanie paru informacji jeśli nie jest w stanie sam określić położenia określonych plików. Uwaga! Jeśli chcesz poprawnie zainstalować TrueCrypt, musisz mieć jądro 2.6.5 lub nowsze.

Następnie uruchamiamy:

./install.sh

Checking installation requirements...
Testing truecrypt... Done.

Install binaries to [/usr/bin]: wciskamy [Enter]
Install man page to [/usr/share/man]: wciskamy [Enter]
Install user guide and kernel module to [/usr/share/truecrypt]: [Enter]
Allow non-admin users to run TrueCrypt [y/N]:
jeżeli chcesz aby oprócz root'a
inni użytkownicy mogli także
korzystać z TrueCrypt wybierz y, jeśli nie N

Installing kernel module... Done.
Installing truecrypt to /usr/bin... Done.
Installing man page to /usr/share/man/man1... Done.
Installing user guide to /usr/share/truecrypt/doc... Done.
installing backup kernel module to /usr/share/truecrypt/kernel... Done.

Jeżeli wszystko przebiegło tak jak powyżej, możesz przejść dalej.
Generujemy klucz

Aby wygenerować klucz, wydajemy komendę:

truecrypt --keyfile-create key.txt możesz wybrać
inną nazwę klucza, rozszerzenie jest także dowolne

Is your mouse connected directly to computer where TrueCrypt is running?:
wpisz "Y", zostaniesz poproszony
o poruszanie myszką :)

Jeżeli wszystko poszło ok, dostaniesz komunikat: Keyfile created.
Tworzenie wirtualnego wolumenu

Aby utworzyć nowy wolumen, musimy zastanowić się nad jego nazwą oraz nad jego typem. Do wyboru mamy dwa typy: normalny(normal) i ukryty(hidden). Typ ukryty różni się od normalnego tym, że jest po prostu ukryty (także dane są rozmieszczane w inny sposób — więcej informacji znajdziesz na stronie TrueCrypt).

W konsoli wpisujemy:

truecrypt -c domowy.txt - tworzymy wolumen o nazwie domowy.txt,
uwaga rozszerzenie jakie wybierzesz jest zupełnie dowolne,
ja wybrałem *.txt, ponieważ dla napastnika trudniej
będzie odgadnąć, że ten plik to wolumen

Volume type:
1) Normal
2) Hidden
Select [1]: wybieramy jedynkę

Filesystem:
1) FAT
2) None
Select [1]: wybieramy dwójkę, ponieważ stworzymy
inny system plików na wolumenie
niż FAT, domyślnie FAT

Enter volume size (bytes - size/sizeK/sizeM/sizeG): 10M -
wybieramy wielkość
wolumenu, ja wpisałem 10 Mega

Hash algorithm:
1) RIPEMD-160
2) SHA-1
3) Whirlpool
Select [1]: wybieramy hash, ja polecam SHA-1,
domyślnie RIPEMD-160

Encryption algorithm:
1 ) AES
2 ) Blowfish
3 ) CAST5
4 ) Serpent
5 ) Triple DES
6 ) Twofish
7 ) AES-Twofish
8 ) AES-Twofish-Serpent
9 ) Serpent-AES
10 ) Serpent-Twofish-AES
11 ) Twofish-Serpent
Select [1]: wybieramy algorytm, domyślnie wybrany AES

Enter password for new volume 'domowy.txt':
wciskamy [Enter] jeżeli chcemy
aby hasła nie było
Re-enter password: ponownie wciskamy tylko [Enter]

Enter keyfile path [none]: tutaj wpisujemy ścieżkę do klucza,
jeżeli klucza nie mamy, zostawiamy puste
Enter keyfile path [finish]: zostajemy ponownie zapytani o ścieżkę
do klucza, w przypadku kiedy mamy kilka kluczy
podajemy następną ścieżkę, jeżeli wpisaliśmy
już wszystkie klucze, zostawiamy puste i [Enter]

TrueCrypt will now collect random data.

Is your mouse connected directly to computer where TrueCrypt is running?:
wciskamy "Y" jeżeli mamy podłączoną
myszkę do komputera, na potrzebny artykułu wpisz
"n" tak dla ciekawości, żeby
zobaczyć co się stanie

Please type at least 320 randomly chosen characters and then press Enter:

zostajemy poproszeni o wpisanie przynajmniej
320 przypadkowych znaków, jeżeli wpiszemy ich za
mało, program poinformuje nas ile
znaków jeszcze zostało do wpisania

Teraz zacznie się tworzenie wolumenu, czas trwania zależy od Twojego procesora i wielkości wolumenu jaką wpisałeś. Po zakończeniu otrzymasz komunikat: Volume created. W katalogu administratora powinien znajdować się plik “domowy.txt”. Możesz go otworzyć w edytorze tekstu, gratuluję jeżeli uda Ci się coś z niego odczytać.
Mapowanie wolumenu i tworzenie odpowiedniego systemu plików

Ponieważ w trakcie tworzenia wolumenu nie wybraliśmy jego dokładnego systemu plików, musimy teraz utworzyć system plików na wolumenie, ponieważ TrueCrypt do montowania używa linuksowego narzędzia mount, które wymaga podania typu plików.

Wpisujemy:

truecrypt /root/domowy.txt -k /root/key.txt
Enter password for '/root/domowy.txt':
jeżeli wcześniej nie podaliśmy
hasła do wolumenu to wciskamy tylko[Enter]

Ok. Aby sprawdzić czy mapowanie się udało wpisz: truecrypt -vl wyświetli informację o zmapowanych urządzeniach. Jeżeli nie wyświetli się żadna informacja, to znaczy, że coś poszło nie tak.

Teraz tworzymy system plików: mkfs.ext3 /dev/mapper/truecrypt0 — możesz wybrać dowolny system plików
System plików został stworzony.
Montowanie utworzonych wolumenów

Teraz, gdy już mamy utworzony system plików na wolumenie i jest on zmapowany, możemy go podmontować pod wybrany przez nas katalog.

W tym celu wykonujemy polecenia:

truecrypt -d /dev/mapper/truecrypt0
odmapowuje wolumen
mkdir szyfrowane -
tworzymy katalog szyfrowane, to właśnie pod niego będziemy podmontowywać
truecrypt /root/domowy.txt -k /root/key.txt /root/szyfrowane
podmontowuje wolumen pod szyfrowane katalogi

Gotowe! Od tej pory wszystkie dane zapisywane w katalogu “szyfrowane” będą szyfrowane.

A co zrobić kiedy chciałbyś zaszyfrować istniejący już katalog? Metoda ta jest trochę “łopatologiczna”. Po prostu przenieś chwilowo zawartość katalogu, który chcesz zaszyfrować, w inne miejsce, następnie podmontuj wolumen pod ten katalog i przywróć zawartość katalogu(skopiuj jego zawartość z powrotem). Pamiętaj, abyś w takiej sytuacji nadał odpowiedni rozmiar wirtualnemu wolumenowi, w przeciwnym przypadku nie pomieści on wszystkich danych. Rozmiar wolumenu powinien być nieco większy od rozmiaru katalogu.
Automatyczne montowanie po restarcie

Jak już pewnie się domyśliłeś, po restarcie komputera musisz ponownie zamontować wirtualny wolumen. Przyznam się, że jest prosty sposób, aby to zrobić. Przeglądając forum na stronie domowej projektu TrueCrypt natknąłem się na dwa sposoby:

* umieszczamy wpis w /etc/init.d lub w /etc/rc.d,
* tworzymy w katalogu domowym użytkownika plik .profile i odpowiednio go edytujemy.

My zajmiemy się sposobem drugim. Dlaczego? Przyczyna jest prosta. Załóżmy, że zabezpieczyłeś wirtualny wolumen nie tylko kluczem, ale i hasłem albo tylko hasłem. W takim wypadku wywołując program przez skrypty startowe zawarte w folderze init.d czy rc.d musiałbyś wywołać program z parametrem -p i podać hasło, co nie jest najmądrzejszym rozwiązaniem. W takiej sytuacji niepowołany użytkownik mógłby je przypadkowo odczytać.

Być może w Twoim katalogu domowym istnieje już plik .profile, jeśli nie:

touch .profile - tworzy pusty plik .profile

I dodaj do niego linijkę: truecrypt /root/domowy.txt -k /root/key.txt /root/szyfrowane
Zapisz zmiany i wyjdź z edytora. Teraz za każdym razem kiedy się zalogujesz truecrypt zapyta Cię o hasło (którego nie masz, ponieważ w tym przykładzie jesteśmy identyfikowani za pomocą klucza, więc wciskasz tylko [Enter]) i wirtualny wolumen zostaje zamontowany.
Czy mogę przechowywać klucz na pendrivie?

Tak, taka opcja jest możliwa i uwierz mi, nie jest to trudne. Pierwszą rzeczą jaką będziemy musieli wykonać jest automatyczne montowanie pendriva podczas startu systemu.Aby tego dokonać musimy edytować plik /etc/fstab. W tym celu w katalogu /mnt tworzymy katalog pendrive:

mkdir /mnt/pendrive

Musisz zorientować się pod jaką partycją masz pendrive. Włóż pendrive w USB i wykonaj polecenie dmesg > wynik.txt. Na końcu tego pliku powinieneś zobaczyć linijkę podobną to tej:


usb 1-1: configuration #1 chosen from 1 choice
uba: uba1

Jak widzisz, u mnie pendrive ukrywa się pod partycją /dev/uba1. U Ciebie może to być /dev/sda*.
Teraz należy zmodyfikować plik /etc/fstab. Dodajemy w nim linijkę:

/dev/uba1 /mnt/pendrive auto defaults 0 0

Wpisz: mount /mnt/pendrive.

Następnie przenosimy klucz na pendrive i edytujemy plik .profile zmieniając ścieżkę do klucza na /mnt/pendrive. Gotowe!
Teraz system sam montuje wirtualny wolumin po restarcie. Jakie są wady automatycznego montowania? Załóżmy, że masz młodsze (ciekawskie) rodzeństwo i nie chcesz, aby miało dostęp do niektórych części twojego systemu (bez względu czy pracujesz na Windowsie czy Linuksie). Jeżeli używasz autoryzacji tylko za pomocą klucza, a klucz masz zapisany gdzieś na dysku, po włączeniu komputera dane są już odszyfrowane. “Ale przecież ja przechowuję mój klucz na pendrivie”. A co będzie jeśli zapomnisz wyciągnąć pendriva po pracy?
Podsumowanie

W przyszłości projektanci TrueCrypt planują poszerzyć jego możliwości:

* zbudowanie wersji dla Mac OS,
* dodanie zewnętrznego modułu autoryzacji (będzie możliwość odszyfrowywania danych przez Internet),
* zbudowanie oficjalnego GUI (Graphical User Interface) dla TrueCrypt,
* i wiele więcej…

A czy istnieją jakieś nieoficjalne graficzne nakładki na TrueCrypt? Owszem, istnieją. Polecam zapoznanie się ze stroną http://code.google.com/p/truecryptgui/wiki/CurrentStatus. W celu zaczerpnięcia większej wiedzy zapraszam również na forum TrueCrypt.

Brak komentarzy:

Prześlij komentarz