TrueCrypt + Prey; jak pogodzić?

salad_fingers
salad_fingers

Wstęp



pokaż spoiler jak dla kogoś "TR", to można tę sekcję "DR"

TrueCrypta, mam nadzieję, nikomu nie muszę przedstawiać. Szyfrowanie pojedynczych archiwów, partycji czy całych dysków w dobie permanentnej inwigilacji to niemal konieczność (a dla niektórych nawet nie "niemal").
W połączeniu z regularnymi backupami (oczywiście na szyfrowanych dyskach) otrzymujemy świetne bezpieczeństwo danych, ale nadal pozostaje problem bezpieczeństwa sprzętu. Twórcy narzędzia Prey przychodzą z pomocą, dając szerokie możliwości śledzenia zagubionego laptopa (czy tableta, smartfonu). W telegraficznym skrócie: zgubiony/skradziony komputer można (o ile oczywiście znalazca/złodziej podłączy maszynę do internetu - a Prey sam z siebie próbuje nawiązać połączenia z widocznymi sieciami bezprzewodowymi) zdalnie monitorować namierzając jego lokalizację po IP/punktach WiFi/GPS, robić "nowemu właścicielowi" zdjęcia kamerką czy screenshoty albo komunikować się z nim.
Problem pojawia się, gdy chcemy z obu tych funkcjonalności skorzystać naraz. Bo jeśli uczciwy znalazca nie może zalogować się do systemu, nie może dostać naszej wiadomości; natomiast złodziej, który napotyka się jedynie na Prey'a ma dostęp do wszystkich naszych wrażliwych danych.




Metoda



Zasadnicza koncepcja mojego rozwiązania polega na zainstalowaniu dwóch systemów (w moim przypadku Windows 7 i Ubuntu 12.04) w taki sposób, żeby pierwszy był zaszyfrowany z możliwością pominięcia autentykacji i uruchomienia drugiego, nad którym po cichu czuwa Prey. Dodatkowo, starałem się by połączenie było jak najprostsze (tj. żeby potencjalny znalazca miał jak najkrótszą drogę do zalogowania się do Ubuntu) - finalnie nie pojawiają się żadne ekrany wyboru systemu, ba: ktoś patrzący z boku nie ma nawet świadomości, że komputer zawiera dwa systemy operacyjne (oczywiście dopóki nie dobierze się bezpośrednio do zawartości dysku twardego).

pokaż spoiler Podam tylko schemat konstrukcji; nie chciałem robić tutaj tutorialu, a opisać swój pomysł na tyle czytelnie, by można było go łatwo skopiować (chętnym mogę rozwinąć szczegóły).


Moja maszyna zawiera 5 partycji:
* partycja systemowa, Windows 7 (wraz z bootloaderem!),
* partycja NTFS pod Windowsa (lubię instalować programy osobno),
* partycja NTFS pod Windowsa (magazyn plików),
* partycja główna Ubuntu (system operacyjny oraz bootloader),
* partycja /home/ Ubuntu (ale nie trzeba jej robić).

pokaż spoiler Minimalnie potrzebne są dwie partycje: na Windę i Ubuntu.


Jak wiadomo, Windows 7 podczas instalacji tworzy sobie przed zadaną partycją tzw. partycję rozruchową, na której umieszcza bootloader i narzędzia odzyskiwania, a której zaszyfrowanie TrueCryptem jest niemożliwe. Ja jednak z niej zrezygnowałem, by bootloader umieścić na zaszyfrowanej partycji systemowej (ma to bardzo dużą zaletę, którą przedstawię dalej). Dlatego też sugerowałbym zacząć od nowej instalacji Windowsa, bo o wiele prościej jest zainstalować go bez tej partycji, niż usuwać ją na już istniejącym systemie.

pokaż spoiler Jest to możliwe, ale zgadnijcie, na czym rozsypałem poprzednią instalację

Partycja Windowsa jest w całości zaszyfrowana przy użyciu TC metodą dla komputerów z wieloma systemami operacyjnymi. Jest to proces odrobinę bardziej skomplikowany niż zwykle, ale jak się przeczyta jakiś tutorial i uważa na każdym kroku, to nie powinno być problemów.
Przy okazji małe pytanie do ekspertów: czy ważne jest, by przed rozpoczęciem szyfrowania Ubuntu był już zainstalowany? Ja wolałem mieć i wszystko śmiga, zastanawia mnie jedynie, czy można drugiego OSa doinstalować potem.
Po zaszyfrowaniu należy, w ustawieniach ("System Encryption Settings") zezwolić na pamiętanie wprowadzonego hasła i na pominięcie autentykacji; można też wyłączyć pokazywanie defaultowego ekranu startowego TrueCrypta, a zamiast tego wyświetlić swój własny komunikat. Ja podałem "Press ESC to start..." (czemu - dalej).
Następne dwie partycje są również zaszyfrowane; co ważne, używając identycznego hasła co systemowa. Jest to o tyle istotne, że pozwala na automatyczne ładowanie tych partycji ze startem systemu, a więc można zrobić zupełnie gładkie połączenie (z perspektywy użytkownika nie widać żadnej różnicy względem czystego systemu). W TC nazywa się to "System Favorite Volumes".

Uwaga: w takiej sytuacji, po zaszyfrowaniu dysku i uruchomieniu zobaczymy następujący układ partycji: C (Windows), D ("surowa" partycja, zaszyfrowana - więc zawierająca pozornie losowe bity; Windows zasugerowałby jej sformatowanie), E (jak D), F (zamontowana przez TC zawartość D - możliwy odczyt i zapis), G (zamontowana E) - a więc niepotrzebny bałagan. Można sobie z tym poradzić usuwając litery dysków przypisane do partycji D i E, dzięki czemu TrueCrypt będzie mógł następnym razem zamontować pod te litery właściwe wolumeny.

Partycje Ubuntu są u mnie bardzo małe, na ok. 500GB dysku przypisałem im ok. 10GB, ale mają mi służyć tylko okazjonalnie (no i do Prey'a). Bardzo istotne jest, by przy instalacji drugiego systemu umieścić jego bootloader w odpowiednim miejscu (tj. w moim przypadku na czwartej partycji). Gdy zaszyfrujemy pierwszą partycję TrueCryptem, na sektorze rozruchowym dysku twardego (MBR) wpisany zostanie jego bootloader, który - po wpisaniu hasła - załaduje loader Windowsa, a po pominięciu autoryzacji znajdzie zapisany dalej loader Ubuntu. Gdybyśmy przy instalacji drugiego systemu nie wybrali lokalizacji jego bootloadera, zostałby nadpisany loader TC (w MBR), a więc utracony zostałby dostęp do zaszyfrowanego systemu (w takich sytuacjach ratujemy się TrueCryptowym Rescue Diskiem).

pokaż spoiler Istotne jest też to, by logowanie do Ubuntu nie było zabezpieczane żadnym hasłem - ale to raczej oczywiste ;)

W Ubuntu jest jeszcze jedna ważna rzecz do zrobienia: konfiguracja loadera GRUB. Normalnie po pominięciu autentykacji TrueCrypta pojawiłby się (w opisywanej konfiguracji) menedżer rozruchu Ubuntu, dając różne opcje uruchamiania systemu. Ja postanowiłem go jednak nie wyświetlać (z obawy o trudność uruchomienia dla "osoby trzeciej"). W tym celu w konfiguracji GRUB'a należy ustawić GRUB_TIMEOUT na zero.




Jak to wygląda ostatecznie?



W spojlerach techniczne szczegóły, niewidoczne dla końcowego użytkownika.

Po włączeniu komputera

pokaż spoiler BIOS ładuje z MBR bootloader TrueCrypta, który wyświetla jedynie

komunikat: "Press ESC to start...".

pokaż spoiler Poza tym maszyna jest pozornie nieresponsywna, wprowadzanie znaków nie powoduje żadnej reakcji.

Podanie poprawnego hasła powoduje

pokaż spoiler odszyfrowanie bootloadera Windowsa z partycji systemowej, zamontowanie dwóch dodatkowych partycji i

start systemu.

Podanie błędnego hasła nie daje żadnego efektu (resetuje pole do wprowadzania).

Pominięcie autentykacji przez wciśnięcie Escape powoduje

pokaż spoiler w sytuacji klasycznej wyświetlenie boot managera TC (który pozwala na wybór systemu do załadowania w przypadku bardziej rozbudowanych konfiguracji). W naszym przypadku menedżer ten znajdzie na dysku tylko jeden bootloader: należący do Ubuntu, tj. GRUB (windowsowy jest zaszyfrowany, bo nie mamy partycji rozruchowej!); a skoro nie ma z czego wybierać, odpali go bezpośrednio. Ten natomiast skonfigurowaliśmy, by uruchamiał swój docelowy system również bezpośrednio. W efekcie dostajemy więc eleganckie łańcuchowe

uruchomienie Ubuntu.

Jak widać, dzieje się to bez żadnych widocznych szwów - "końcowy użytkownik", widząc komputer (o ile go włączy) nie reagujący na żaden klawisz i komunikat "Press ESC", prawdopodobnie wciśnie ten klawisz (chyba, że jest profesjonalnym złodziejem i od razu zrobi format - ale na tak fatalistyczne scenariusze raczej się nie przygotujemy), a następny obraz, jaki zobaczy, to ekran startowy Ubuntu. A potem, o ile ma dostęp do internetu, dostanie od nas sygnał :)
Więcej w celu odzyskania maszyny nie zrobimy - a to wszystko przy gwarancji bezpieczeństwa danych znajdujących się na HDD!