Szyfrowanie i ukrywanie danych na dysku - truecrypt howto

Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8606
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Szyfrowanie i ukrywanie danych na dysku - truecrypt howto

Post autor: mario_7 »

Poradnik autorstwa użytkownika frytek
Pierwotnie znajdował się pod adresem viewtopic.php?t=43845

============================================

Program truecrypt pozwala nam na zaszyfrowanie danych w taki sposób, aby odczytanie ich bez posiadania hasła lub klucza było niemożliwe lub przynajmniej bardzo trudne do uzyskania w rozsądnym czasie. Pozwala również ukryć dane na dysku aby nie można było udowodnić ich istnienia.

Nie jestem fachowcem od kryptografii, ale dla porządku przytoczę najpierw parę faktów do wzięcia pod uwagę przed przystąpieniem do szyfrowania:

1. Algorytmy szyfrujące stosowane w truecrypt - mimo, że są silne - teoretycznie mogą być złamane.

Chociaż program ma otwarty kod, który sprawdzało wielu ludzi, nie należy mu ufać absolutnie do końca. Najlepiej założyć, że, w pewnych warunkach, Ciemnej Stronie Mocy, pragnącej poznać nasze dane, po prostu nie opłaci się inwestować większych sum (lub czasu) w deszyfrację. Ale jeśli bardzo się narazisz i motywacja Ciemnej Strony Mocy będzie silna, takie pieniądze się znajdą!
Pamiętaj też, że siła szyfrowania bardzo zależy od twojego hasła. Zalecane są hasła o długości co najmniej 8 znaków, z dużymi i małymi literami, cyframi i znakami specjalnymi (!@#$%^ itd.). Złamanie szyfru zabezpieczonego imieniem lub hasłem ze słownika (np. "doniczka") zajmie fachowcom mniej czasu, niż tobie przeczytanie tego artykułu ze zrozumieniem.

2. W Wikipedii natrafiłem na opis programu szyfrującego, którego kariera skończyła się po tym, jak udowodniono, że bez znajomości hasła można udowodnić w zaszyfrowanym wolumenie istnienie plików oznakowanych "znakiem wodnym" (jako przykład tak oznakowanych plików podano filmy z hollywood; patrz hasło "watermarking attack" w Wikipedii).
To znaczy, nie można było dostać się do tych plików, ale dawało się niezbicie wykazać (przed sądem?), że one tam w środku są. Zgodnie z moją najlepszą wiedzą, sytuacja ta nie dotyczy jednak algorytmów szyfrujących truecrypt (grudzień 2006). Niemniej jednak któregoś dnia taki stan rzeczy może się zmienić. Weź to pod uwagę i bądź na bieżąco.

3. Szyfrowanie wybranych plików nie gwarantuje, że ich zawartość w stanie niezaszyfrowanym nie trafi do swapa, pliku core, plików tymczasowych itp. - jeśli będziesz je np. otwierał w edytorze. W związku z tym, jeśli jesteś paranoikiem, poszukaj raczej opisu zaszyfrowania całego systemu. Taki artykuł jest np. tutaj: Encrypted Filesystem Howto (i być może go przetłumaczę - jeśli będzie zainteresowanie).

4. Dane zaszyfrowane w żaden sposób nie są chronione przed skasowaniem!
Szyfrując partycję przed oddaniem komputera do serwisu, aby "zabezpieczyć dane przed wścibskim serwisantem" wcale nie polepszasz swojej sytuacji: weź pod uwagę, że jakiś program diagnostyczny użyty przez serwisanta może rozpoznać zaszyfrowaną partycję jako "uszkodzoną" i zalecić jej "wyleczenie", co doprowadzi do utraty danych. Poza tym, jeden z wariantów pracy programu truecrypt polega na mapowaniu - jako dysku/katalogu - pojedynczego, dużego pliku-kontenera, w którego środku umieszczane są twoje właściwe, zaszyfrowane dokumenty. Wtedy przypadkowe skasowanie pliku-kontenera usunie, za jednym zamachem, wszystkie zaszyfrowane pliki w nim zawarte! A sam wiesz, jak łatwo jest omyłkowo skasować jeden plik...

5. Szyfrowanie plików może znacznie utrudnić lub w ogóle uniemożliwić pracę narzędzi naprawczych, przez co twoje szyfrowane pliki są teoretycznie bardziej zagrożone awarią (np. dysku), niż gdyby były w stanie jawnym. Zauważ jak łatwo może się uszkodzić na dysku jeden sektor. Jeśli będzie to akurat np. sektor z nagłówka pliku-kontenera, wszystkie pliki ze środka mogą być nie do odzyskania!.

6. Jeśli zapomnisz hasła lub zgubisz plik-klucz NIE ODZYSKASZ DANYCH. To całkiem realne! Weź to pod uwagę i dlatego przynajmniej na początek nie ćwicz na istotnych plikach.

Zostałeś ostrzeżony, więc zabieramy się do pracy. :)


Na początek udajemy się na stronę http://www.truecrypt.org i pobieramy pakiet dla naszej dystrybucji. Rozpakowujemy plik i instalujemy poprzez

Kod: Zaznacz cały

sudo dpkg -i truecrypt_4.2a-0_i386.deb
Potem nadajemy uprawnienia, umożliwiające uruchamianie programu przez użytkownika bez praw roota:

Kod: Zaznacz cały

sudo chmod a+s `which truecrypt`
Od tego momentu możemy już używać programu z konta użytkownika.
(Uwaga: jeśli otrzymasz błąd

Kod: Zaznacz cały

truecrypt: Running with effective user id 0 (set-euid root) is not supported.
czyli problemy z odpaleniem truecrypt z uprawnieniami roota, to spróbuj wpisać:

Kod: Zaznacz cały

 chmod u-s `which truecrypt` 
(u mnie ten sposób działa na Feisty) lub zajrzyj tutaj: http://gentoo-wiki.com/HOWTO_Truecrypt# ... ormal_user
Za ten link dziękuję Theali'emu :))

Najpierw przygotowujemy sobie katalog, w którym będziemy montować zaszyfrowany wolumen:

Kod: Zaznacz cały

mkdir /media/sejf
Następnie tworzymy wolumen. Mamy możliwość albo utworzenia pliku-kontenera, albo zaszyfrowania całej partycji lub dysku. Wykonujemy polecenie

Kod: Zaznacz cały

truecrypt -c 
(Uwaga: Ten opis nie dotyczy obsługi truecrypt'a w trybie graficznym, który pojawił się w nowych wersjach Ubuntu. Tryb graficzny ma kreatora, który powinien być łatwy w stosowaniu. Kreator jednak z jakiegoś powodu nie pozwala, przynajmniej u mnie, na użycie systemu plików innego niż FAT. A system FAT ma ograniczenia: np. nie pozwala na stworzenie pojedynczego pliku większego niż 2 GB, co wyklucza np. bawienie się maszynkami wirtualnymi o dyskach większych niż 2 GB. W związku z tym, chcąc użyć w szyfrowanym wolumenie systemu plików ext2, musimy skorzystać z opcji, uruchamiającej truecrypt w trybie tekstowym, czyli dopisać parametr "-t" w linii polecenia podanej powyżej, i w każdej następnej. Wolumen utworzony w trybie tekstowym można potem oczywiście użytkować w trybie graficznym.)
Skrypt spyta najpierw, czy tworzymy wolumen normalny, czy ukryty. Wybieramy opcję "normal" (wolumeny ukryte zostaną omówione dalej), po czym podajemy ścieżkę. Aby zaszyfrować dysk piszemy np. /dev/hdb, partycję: /dev/hdb1, plik: /home/user/sejf.tc.

Oczywiście podane tu przykłady numeracji partycji zastępujemy własnymi. I oczywiście wybieramy partycję pustą! Zakładanie partycji szyfrowanej to nie konwersja: wszelkie dane na niej są po drodze kasowane!

Kolejne pytanie dotyczy systemu plików w wolumenie. Jeśli chcemy systemu FAT, wybieramy go, jeśli systemu plików linuksowych, chwilowo wybieramy "none". Należy pamiętać, że system FAT gwarantuje nam możliwość swobodnego deszyfrowania i używania wolumenu również w systemie Windows, ale jednocześnie stwarza nam rozmaite problemy co do maksymalnego rozmiaru pliku oraz z uprawnieniami do plików. Dlatego lepiej jest wykorzystać jakiś linuksowy system plików, np. ext2. Czyli wybieramy na razie "none".

Następnie podajemy rozmiar kontenera, oraz algorytmy szyfrujące - naciskając enter zatwierdzamy wybór domyślny. Następnie należy określić hasło - starając się, aby było odpowiednio długie, trudne do złamania/odgadnięcia, a jednocześnie łatwe do zapamiętania. W kolejnym kroku generację klucza w postaci pliku możemy pominąć. Ostatni etap to dostarczenie komputerowi dawki liczb losowych, co wykonujemy albo ruszając myszą, albo klepiąc bez sensu w klawiaturę.

Wolumen został utworzony. W kolejnym kroku utworzymy na nim system plików (jeśli wybrałeś FAT, pomiń ten krok). W tym celu montujemy wstępnie wolumen i podajemy hasło:

Kod: Zaznacz cały

truecrypt /home/user/sejf.tc
Uwaga: W nowym, graficznym Truecrypcie pierwsze montowanie należy przeprowadzić rozwijając opcje okienka i zaznaczyć "Nie montuj systemu plików" (Do not mount filesystem). Jest to odpowiednik polecenia powyżej. Kolejne montowania odbywają się już bez tej opcji.

Teraz tworzymy na naszym wolumenie system plików:

Kod: Zaznacz cały

mkfs.ext2 /dev/mapper/truecrypt0
Jeśli operacja zakończyła się powodzeniem, odmontowujemy wolumen

Kod: Zaznacz cały

 truecrypt -d 
po czym montujemy go ponownie - do pracy:

Kod: Zaznacz cały

truecrypt  /home/user/sejf.tc /media/sejf
Jeśli wszystko się udało, możemy obejrzeć, czy kontener jest zamontowany w systemie. komenda

Kod: Zaznacz cały

mount 
powinna pokazać nam coś w stylu:
/dev/mapper/truecrypt0 on /media/sejf type ext2 (rw)
Od tego momentu, cokolwiek zapisujemy w /media/sejf jest w locie szyfrowane, a przy odczycie - deszyfrowanie. Dzieje się to w sposób przezroczysty i przy praktycznie niewidocznym spowolnieniu systemu. Dane z naszego przykładu są naprawdę zapisywane w pliku /home/user/sejf.tc, więc należy go odtąd otoczyć odpowiednią opieką.

Operacja montowania i demontowania wolumenu szyfrowanego będzie możliwa do wykonania z konta użytkownika. Jeśli jednak poprzednie montowania przeprowadzaliśmy przez
sudo truecrypt
, należy najpierw sprawdzić i ewentualnie nadać odpowiednie prawa do zapisu/wykonywania katalogowi /media/sejf - w przeciwnym razie zapis będzie niemożliwy. Uprawnienia do zapisu potrafią się zmienić, jeśli mapowanie skończyło się niepowodzeniem, i trzeba je wtedy przywracać. (Ale przy pracy bez błędów wszystko jest OK.)

Po zakończeniu pracy z wolumenem, odmontowujemy go przez

Kod: Zaznacz cały

truecrypt -d
i od tej pory pozostaje on zamknięty dla osób nie znających hasła.

Komendę montującą można sobie podpiąć do aktywatora gnome, zaznaczając w opcjach wykonywanie w terminalu, aby było gdzie wpisywać hasło.

===========
Szyfrowany wolumen ukryty

Szyfrowanie to nie wszystko. Może się bowiem zdarzyć, że Ciemna Strona Mocy zmusi nas do podania hasła. Da się przecież zobaczyć, że w naszym systemie zainstalowany jest truecrypt i że obecna jest też "martwa partycja" lub plik-kontener - i co wtedy? Gdybyśmy odmówili podania hasła można by nam zadać kłopotliwe pytania albo wręcz postawić zarzut "utrudniania śledztwa".

(Chociaż plik-kontener nie musi posiadać rozszerzenia tc - możemy go nazwać dowolnie np. "swap" albo "popsuty.avi").

Dlatego autorzy truecrypt zalecają postępowanie zwane "wiarygodnym zaprzeczaniem" (plausible deniability). Czyli będziemy zaprzeczać, ale tak, żeby nikt nie mógł się do nas przyczepić.

Idea jest taka: jeśli tworzymy wolumen, truecrypt zawsze wypełnia jego niezajętą część mieszanką przypadkowych danych. Truecrypt potrafi wśród tych losowych danych umieścić drugi, ukryty wolumen, zagnieżdżony w pierwszym, otwierany zupełnie różnym hasłem. Taki zagnieżdżony wolumen, jeśli nie otwarty, nie różni się niczym od "mieszanki przypadkowych danych". I to jest najważniejsze. Oznacza to bowiem, że nie można udowodnić jego istnienia, bo wygląda jak "puste miejsce" na wolumenie zewnętrznym!

W praktyce można więc postąpić tak: utworzyć wolumen zewnętrzny. Skopiować na niego trochę pseudo-tajnych danych (np. trochę wywrotowych tekstów anarchistycznych z Internetu), a w pustej części tego wolumenu umieścić drugi wolumen - z prawdziwymi, tajnymi danymi. Komenda montownia takiego wewnętrznego, ukrytego wolumenu wygląda tak samo, jak zewnętrznego; w naszym przykładzie

Kod: Zaznacz cały

truecrypt  /home/user/sejf.tc /media/sejf
Jednak o tym, który wolumen z dwóch zostanie otwarty, decyduje tylko i wyłącznie hasło, które podamy. Jeśli podamy hasło wolumenu zewnętrznego i otworzymy go, wolumen wewnętrzny, ukryty, będzie tylko "pustym miejscem". Możemy wówczas śmiało twierdzić, że wolumen zewnętrzny to wszystko, co mamy do pokazania, i nikt nie jest w stanie podważyć naszych słów. Proszę bardzo - hasło podałem, wolumen otworzyłem - trzymam na nim kolekcję dowcipów politycznych.

Wykonanie tego planu jest proste: Najpierw tworzymy wolumen zewnętrzny, metodą jak wyżej, i zakładamy w nim system plików. Potem uruchamiamy tworzenie jeszcze raz, podając tę samą ścieżkę do pliku sejf.tc, ale tym razem wybierając opcję "hidden" i wskazując nieco mniejszy rozmiar, a potem podając inne hasło.

O ile mniejszy ma być wolumen ukryty ustalamy doświadczalnie: truecrypt nie zaakceptuje zbyt dużego.

Podczas użytkowania powstaje jednak taki problem, że gdybyśmy wrzucali kolejne pliki w "puste miejsce" wolumenu zewnętrznego, to w którymś momencie nadpisalibyśmy wolumen ukryty, nieodwracalnie go uszkadzając. Z tego powodu należy postąpić tak: utworzyć wolumen zewnętrzny, założyć na nim system plików ext2, odmontować go, a potem analogicznie utworzyć w tym samym kontenerze wolumen wewnętrzny/ukryty, i również wyposażyć go w system plików. Następnie, po jego odmontowaniu, przeprowadzić montowanie komendą

Kod: Zaznacz cały

truecrypt  -P /home/user/sejf.tc /media/sejf
to znaczy z opcją -P. W takim przypadku program zapyta o oba hasła, a następnie podmontuje wolumen zewnętrzny tak, aby wolumen wewnętrzny był chroniony przed nadpisaniem. W tym trybie możemy teraz wrzucić nasze pseudo-tajne pliki do wolumenu zewnętrznego. Gdyby naszych pseudo-tajnych danych uzbierało się za dużo, truecrypt zablokuje zapis. (Efekt gwarantowany, jeśli spróbujemy wrzucić tam jeden duży plik; nie znam się na strukturze systemu plików, ale zauważyłem, że wolumen zewnętrzny akceptuje sumarycznie więcej bajtów w plikach małych, niż np. w jednym dużym). Jeśli truecrypt zablokuje zapis, przy odmontowywaniu pokaże też ostrzeżenie "Write to the hidden volume has been prevented!". Należy wówczas przeprowadzić powtórne montowanie z opcją -P i wrzucać mniejszą porcję danych.

Jeśli zapis plików pseudo-tajnych się powiedzie, najbezpieczniej jest nie logować się więcej do wolumenu zewnętrznego - w końcu jest tylko pozorowany - i pracować wyłącznie na ukrytym, a jeśli już zajdzie taka potrzeba, bezwarunkowo używać opcji -P.

Nie dotyczy to oczywiście sytuacji, gdy montujemy wolumen zewnętrzny pod okiem Ciemnej Strony Mocy: wtedy oczywiście nie możemy pozwolić sobie na żadne działanie, które mogłoby być przesłanką, że puste miejsce zawiera cokolwiek innego, niż losowe ciągi zer i jedynek, więc nie stosujemy opcji -P i podajemy hasło wolumenu zewnętrznego, przyznając się niechętnie, że jesteśmy po prostu anarchistami, i stąd ta cała zabawa w szyfry...

=======
Szczegóły działania programu podane są w manualu oraz pliku .pdf zainstalowanym w systemie (/usr/share/truecrypt/doc), który jednocześnie opisuje spsób obsługi wersji programu truecrypt pod Windows.
ODPOWIEDZ

Wróć do „Software-Inne”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 64 gości