Bitlocker jest jedną z najciekawszych funkcjonalności wprowadzonych w Windows Vista. W przeciwieństwie do wielu innych nowości w systemie, Bitlocker nie jest mniej lub bardziej wyszukanym udoskonaleniem czegoś, co już wszyscy widzieli wcześniej, ale innowacją w pełnym znaczeniu tego słowa. Jak przy każdej nowince w branży IT, potencjalnym użytkownikom nasuwają się dwa pytania: o co tak naprawdę w tym chodzi i co można na tym zyskać. Odpowiedź na te pytania nie jest trudna, a niniejszy artykuł powinien jej uważnemu czytelnikowi dostarczyć.
| O co chodzi | |
| Dla kogo | |
| Wymagania | |
| TPM | |
| Uwierzytelnianie dla ubogich | |
| Start systemu | |
| Dyski | |
| Inne dyski | |
| Działanie | |
| Przeczytaj pozostałe części artykułu |
W największym skrócie, Bitlocker scharakteryzować można jako metodę kryptograficznej ochrony (szyfrowania) dysków twardych. Dysk chroniony Bitlockerem, po włożeniu do innego komputera jest całkowicie niedostępny do czasu podania 48 cyfr składających się na klucz. Mimo pojawiających się odruchowo oporów przed takim rozwiązaniem, podane w dalszej części artykułu informacje powinny przekonać nawet bardzo ostrożnego sceptyka.
Bitlocker jest funkcjonalnością, która niezależnie od ogólnych i uniwersalnych założeń, w praktyce daje korzyść przede wszystkim użytkownikom komputerów przenośnych. Bardzo szczegółowy proces badania kłopotów z Bitlockerem zaowocował opracowaniem tylko jednego scenariusza, w którym szyfrowanie danych mogłoby być problemem. W praktyce, przeciwwskazaniem do użycia takiej metody ochrony danych jest wyłącznie środowisko, w którym chronione dyski są podłączane do systemów starszych niż Windows Vista. Zaszyfrowane dane po prostu nie będą wtedy dostępne.
Dotychczasowe doświadczenie z podobnymi rozwiązaniami pozwala jednak przypuszczać, że niedługo pojawią się sterowniki obsługujące zaszyfrowane dyski tak w starszych wersjach Windows jak i w Linuxie. Prawdopodobnie dość szybko opracowane zostaną wersje tylko do odczytu, a na wersje wspierające zapis trzeba jeszcze poczekać. Oczywiście, dostęp do takiego dysku wymagać będzie podania 48 cyfr klucza. Pojawienie się rozwiązań dających dostęp do zaszyfrowanych danych bez podania klucza raczej nie jest realne, mimo że dla wielu podobnych "najsilniejszych" i "najbezpieczniejszych" metod ochrony, sposoby ich obejścia były opracowywane całkiem szybko.
Wracając do postawionego powyżej pytania "dla kogo?", odpowiedzieć można, że dla posiadaczy komputerów przenośnych. W praktyce dla wszystkich posiadaczy, jednak należy zdać sobie sprawę, że sposób, w jaki Bitlocker pokaże się użytkownikowi zależy dość mocno tak od sprzętu, jak i od założonych standardów ochrony. Jeżeli istnieje jakiś notebook, na którym ma pracować Windows Vista – niewłączenie Bitlockera powinno mieć naprawdę solidne uzasadnienie.
Jak przy każdej nowej funkcjonalności, także i w przypadku mechanizmów Bitlocker, należy zdać sobie sprawę, że nie ma nic za darmo. Koszty związane z Bitlockerem podzielić można na kilka kategorii. Pierwszym kosztem jest koszt systemu operacyjnego. Windows Vista nie jest systemem darmowym i prawdopodobnie wszyscy zdają sobie z tego sprawę. Co więcej, Bitlocker dostępny jest jedynie w bardziej rozbudowanych (czyli niestety droższych) wersjach.
Drugim aspektem są wymagania sprzętowe. Bitlocker szyfruje i rozszyfrowuje każdy zapisany na dysk sektor. Od dokumentów, poprzez aplikacje aż po plik wymiany. To nie może dziać się bez użycia procesora, a algorytmy kryptograficzne wymagają zazwyczaj niemałej złożoności obliczeniowej. Bitlocker obciąża procesor bardzo nieznacznie, ale należy zdawać sobie sprawę, że jednak obciąża.
Ostatnim (i tak naprawdę najważniejszym) wymaganiem dla Bitlockera jest wyposażenie sprzętu w moduł kryptograficzny zgodny ze specyfikacją TPM v 1.2. Brzmi to strasznie poważnie, ale po pierwsze - bardzo dużo komputerów przenośnych ma już ten moduł (na przykład IBM chwali się wyposażeniem w TPM prawie 20mln laptopów), a po drugie – można poradzić sobie i bez TPM, okaleczając jednak Bitlockera w sposób odbierający mu cały urok.
Wzmianka o TPM zdecydowanie wymaga rozwinięcia, bo tak naprawdę to dzięki niemu Bitlocker ma szanse stać się bardzo popularnym mechanizmem. TPM jest skrótem od Trusted Platform Module i został opracowany przez Trusted Computing Group (http://www.trustedcomputinggroup.org). Założeniem było wbudowanie mechanizmów kryptograficznych w sprzęt w taki sposób, żeby nikt nie był w stanie "grzebać" w kluczach czy algorytmach. Dokładnie ta sama idea przyświecała twórcom kart procesorowych i dla uproszczenia można o TPM myśleć właśnie jako o takiej karcie wbudowanej w płytę główną.
W chwili obecnej moduły TPM produkowane są przez kilka firm, jednak w swoje płyty główne wbudowują je praktycznie wszyscy liczący się producenci sprzętu. Poza typowymi funkcjami kryptograficznymi (między innymi obsługa RSA, SHA-1, HMAC i AES oraz generowanie liczb losowych) TPM jest w stanie utworzyć sumę kontrolną dla wykonywanego przez procesor kodu. Oznacza to, że istnieje prosta metoda "zapytania" TPM czy aplikacja nie została zmodyfikowana i czy nie różni się od zapamiętanej wersji wzorcowej. Zapytanie takie może dotyczyć nie tylko aplikacji typu *.exe, ale dowolnego fragmentu kodu, takiego, jak choćby BIOS płyty, BIOS karty graficznej, Master Boot Record czy Windows Boot Manager będący w systemie Windows Vista następcą NTLDR. Warto zauważyć, że TPM potwierdza również własną tożsamość, przez co zastąpienie go innym natychmiast zostanie wykryte.
W chwili obecnej funkcjonalności oferowane przez TPM nie są jeszcze szeroko wykorzystywane, ale ich możliwości są ogromne. Szansa sprawdzenia, czy kod na pewno nie został zmodyfikowany, może być niezwykle użyteczna choćby w takich zastosowaniach, jak wykrywanie szkodliwego oprogramowania czy kontrola oryginalności aplikacji. W przypadku Bitlockera, kontrola wykonywanego kodu dotyczy najwcześniejszych etapów pracy komputera i startu systemu. Cały proces startu komputera jest rejestrowany przez TPM, a wyliczona suma kontrolna ma kluczowe znaczenie w dalszej pracy systemu. Łatwo domyślić się, że nawet najdrobniejsze zmiany w środowisku (upgrade BIOSu, zmiana karty, dołożenie dysku itp.) sprawią, że TPM nie potwierdzi oryginalności procesu uruchamiania systemu. Bitlocker został jednak zaprojektowany ze świadomością, że sytuacje takie mogą mieć miejsce i w praktyce nie sprawiają one żadnych problemów z dostępem do zaszyfrowanych danych.
Należy pamiętać, że potwierdzenie przez TPM oryginalności kodu startowego nie polega na porównaniu ze wzorcem. TPM żadnego takiego wzorca nie ma i nie jest w stanie poinformować, czy kod jest dobry czy zły. Jedyne co TPM zrobić może, to obliczyć sumę kontrolną i podać ją każdemu zainteresowanemu. Do czego suma ta posłuży, zależy wyłącznie od intencji twórców rozwiązania. Pozornie najprostszym działaniem byłoby porównanie takiej sumy z zapisaną gdzieś prawidłową wartością. Takie podejście stałoby się jednak błyskawicznie obiektem ataków i "ulepszacze" pozwalające ominąć Bitlockera pojawiłyby się prawdopodobnie już kilka tygodni po premierze systemu.
Zamiast tego, każdą daną (nazywaną SRK) otrzymaną od TPM system uzna jako poprawną i użyje jej do rozszyfrowania zapisanego na dysku klucza VEK, o którym w dalszej części artykułu znajdzie się jeszcze parę słów. Efekt jest prosty – jeżeli TPM wyliczył poprawną wartość SRK (czyli kod jest taki jaki być powinien), mamy klucz VEK, a to już prawie gwarancja sukcesu. Jeżeli TPM policzył coś innego, klucz VEK po rozszyfrowaniu do niczego się nie nadaje, a Vista uprzejmym komunikatem zwróci użytkownikowi uwagę, że to co podał TPM nie przypomina oczekiwanego wyniku.
Taka metoda uwierzytelniania jest powszechna w wielu innych rozwiązaniach. Wymienić tu można choćby ochronę plików Office hasłem, ochronę plików ZIP czy mechanizmy DRM dla mediów. Sprawdzanie poprawności hasła przez porównanie ze wzorcem byłoby proste do oszukania. Wystarczyłoby podmienić wzorzec albo zmodyfikować algorytm porównywania. W uwierzytelnianiu dla ubogich każde hasło jest dobre i każde z pełną ufnością zostanie użyte do rozszyfrowania informacji. Potem wystarczy sprawdzić tylko czy wynik ma jakikolwiek sens.
Dzięki TPM wiadomo już, że system uruchamia się w swoim naturalnym otoczeniu, z niezmodyfikowanymi plikami startowymi i w tym samym komputerze. Dla wykonywanego kodu obliczona została suma kontrolna. Suma kontrolna została użyta do rozszyfrowania VEK i wynik wyszedł sensowny. System ma VEK czyli Volume Encryption Key i to właśnie jest klucz, którym odszyfrować można całą zabezpieczoną partycję. Sterownik dostaje klucz i w niewidoczny dla użytkownika sposób rozszyfrowuje każdy odczytany z partycji sektor. System startuje normalnie i w końcu wyświetla standardowe okienko logowania. Jeżeli użytkownik zna hasło – po prostu rozpoczyna pracę jak co dzień.
W przypadku, kiedy dysk dostanie się w ręce złodzieja lub szpiega – najwygodniej jest zainstalować nowy system z nowym hasłem lub przełożyć dysk do innego komputera i po prostu przegrać pliki dokumentów. Można również użyć sprytnej płyty CD, zmieniającej hasło administratora. W przypadku, gdy dysk zabezpieczony jest Bitlockerem – tak się nie da! Złodziej ma zaszyfrowany kluczem VEK dysk, ale klucz ten też jest zaszyfrowany przy użyciu SRK. Jedyną metodą odszyfrowania VEK jest podanie poprawnego SRK. A ten klucz może zostać wyliczony jedynie przez TPM. Sytuacja jest z punktu widzenia szpiega beznadziejna, ponieważ nic innego, niż oryginalny TPM, nie policzy tej sumy. Podsłuchanie czy podejrzenie sumy SRK też nie jest możliwe, ponieważ wymagałoby zmiany w kodzie startowym, a zmiana taka nie pozostanie niezauważona przez TPM.
Podsumowując można stwierdzić, że chroniony mechanizmami Bitlocker system albo uruchomi się normalnie i wyświetli standardową prośbę o Ctrl+Alt+Del, albo nie obliczy klucza niezbędnego do rozszyfrowania dysku. Ani jeden ani drugi przypadek nie da złodziejowi żadnego dostępu do danych.
Uważny czytelnik powinien podczas dotychczasowej lektury zadać sobie pytanie "a gdzie zapisane są te wszystkie rzeczy, których używa się zanim zostanie obliczony VEK?" I słusznie. Zanim sterownik otrzyma poprawny VEK, jeden program musi skomunikować się z TPM żeby otrzymać SRK, drugi musi odczytać zaszyfrowany VEK z dysku (tego zaszyfrowanego), trzeci musi rozszyfrować VEK przy pomocy SRK. Gdzieś te programy i zaszyfrowany VEK trzeba zapisać. Na zaszyfrowanej partycji? W jej niezaszyfrowanym fragmencie? W MBR?
Microsoft, tworząc system Windows Vista, wybrał wariant mało elegancki, za to na pewno prosty, niezawodny i zgodny z przyjętymi dotąd zwyczajami. Dane potrzebne systemowi do chwili wyliczenia VEK przechowywane są na jednej partycji (Boot Partition), a cała reszta systemu na drugiej (Windows Partition), która jest zaszyfrowana. Dzięki temu wyliczenie VEK odbyć się może bez użycia zaszyfrowanego dysku, a jak VEK już jest znany – dostęp do partycji Windows nie stanowi problemu. Sytuacja jest jasna i znana wcześniej a dwie partycje na dysku nie są niczym niezwykłym. Partycja boot nie powinna zawierać żadnych istotnych danych i w efekcie okazuje się, że może być całkiem niewielka. Microsoft zaleca przeznaczenie na nią 1.5GB, jednak testy pokazują, że można uzyskać działający system przy partycji 50MB, a w dogodnych warunkach nawet znacznie mniejszej. Eksperymenty z rozmiarem partycji są interesujące, jednak w warunkach innych niż laboratoryjne należy trzymać się zalecanego 1.5GB, ponieważ ewentualne kłopoty mogłyby być dość dotkliwe.
W sytuacji, kiedy od początku planowane jest użycie Windows Vista, założenie partycji boot i partycji Windows nie jest dużym kłopotem. Można to bez trudu zrobić z poziomu programu instalacyjnego w czasie instalacji systemu. Kłopot pojawia się jednak w dwóch przypadkach: jeżeli komputer ma już partycję na której są dane lub jeżeli partycja została założona przez dostawcę sprzętu. W obu przypadkach partycja taka zajmuje zazwyczaj cały dysk i ani rozwiązanie polegające na kopiowaniu, partycjonowaniu, formatowaniu i ponownym kopiowaniu, ani rozwiązania firm trzecich nie są najlepszym pomysłem. Z prostej instalacji systemu robi się czasochłonna operacja polegająca na przegrywaniu danych tam i z powrotem. Na szczęście Microsoft po raz kolejny okazał się firmą przyjazną administratorom i zostawił im jakąś nadzieję.
Jeżeli na dysku już istnieje partycja z danymi i nie ma wolnego miejsca na partycję boot – partycję z danymi należy zmniejszyć na przykład o 1.5GB. Uzyskane w ten sposób miejsce idealnie nada się na założenie potrzebnej partycji. Do zmniejszania partycji służy polecenie SHRINK systemowego programu DISKPART. To nie pomyłka. Microsoft, w systemie Windows Vista faktycznie pozwala na zmniejszanie i powiększanie partycji zawierających dane.
Możliwości zmiany rozmiaru partycji w czasie instalacji są ciekawe, jednak wyobrażenie sobie dostawy tysiąca komputerów przenośnych, w których są już partycje założone tylko po to, żeby każdą z nich zmniejszyć, nie jest myślą szczególnie miłą. Microsoft i tu zadziałał skutecznie, wymuszając na producentach sprzętu zakładanie partycji boot i partycji systemowej. Wszystkie, mogące pracować z Bitlockerem, komputery będą miały dwie gotowe do użycia partycje i nic nie trzeba będzie na nich zmieniać.
Aby administratorowi systemu Windows Vista nie żyło się zbyt łatwo, wprowadzono ograniczenie stosowania Bitlockera wyłącznie do partycji systemowej. Jedna duża partycja na wszystkie dane jest rozwiązaniem nierzadko spotykanym, jednak nie każdy musi takie rozwiązanie lubić. Można założyć, że wszystkie ważne dane znajdą się na partycji systemowej, ale to nie jest rozwiązanie, które może porwać swoim wewnętrznym pięknem. Interfejs użytkownika systemu Bitlocker nie pozwala na zaszyfrowanie partycji innej niż systemowa, jednak narzędzia wykorzystujące wiersz poleceń umożliwiają to bez kłopotów. Co ciekawe, taki zaszyfrowany dysk pojawi się w graficznym interfejsie Bitlocker i udostępni standardowe opcje ani słowem nie komentując, że parę chwil wcześniej udawał, że takiego dysku zaszyfrować w ogóle się nie da. Szyfrując niesystemowe dyski z linii poleceń należy mieć świadomość, że w chwili obecnej (listopad 2006) Microsoft deklaruje, że takie rozwiązanie nie będzie oficjalnie wspierane. Nie zmienia to jednak faktu, że tak skonfigurowany Bitlocker bardzo dobrze działa.
Wiedząc już, jak mają być ułożone partycje, skąd bierze się klucz i do czego można go użyć, warto bliżej poznać sam sposób działania mechanizmów Bitlocker. Tak, jak wspomniano powyżej, szyfrowany jest każdy sektor dysku. Żeby nie przeszkadzało to w pracy systemu, wskazane jest, żeby żadna aplikacja nie była w stanie zauważyć różnicy pomiędzy działaniem na dysku zaszyfrowanym a niezaszyfrowanym. Z tego powodu sterownik FVE umieszczony jest bardzo nisko w strukturze systemu. W praktyce, pomiędzy dyskiem a FVE znajduje się wyłącznie Volume Manager i sterowniki dysku (w tym sterowniki RAID). FVE dostaje dane, gdy tylko zostaną one odczytane i od razu je deszyfruje. Każdy inny element systemu operuje już wyłącznie na danych rozszyfrowanych. Na danych rozszyfrowanych operują w szczególności mechanizmy takie, jak defragmentacja, cache, shadow copy czy systemowa kompresja NTFS. Oznacza to, że cały proces ochrony danych jest całkowicie niezauważalny. Samo szyfrowanie i rozszyfrowanie danych jest ciekawym zagadnieniem z obszaru matematyki i kryptografii i zostanie pokrótce wyjaśnione w dalszej części artykułu.
W czasie przyglądania się Bitlockerowi, warto zwrócić uwagę na to jak przebiega operacja zaszyfrowania i rozszyfrowania całego dysku. Jest to zupełnie inne zagadnienie, niż działanie na pojedynczych sektorach w trakcie normalnej pracy. Pojedynczy sektor jest rozszyfrowywany natychmiast po żądaniu jego odczytania i szyfrowany tuż przed zapisem. System w czasie pracy, z oczywistych powodów, żądania zapisu i odczytu wysyła w ogromnej ilości i operacje kryptograficzne wykonywane są tylko na tych sektorach, których dotyczą operacje.
W przypadku, kiedy dysk nie jest chroniony, a administrator zechce ochronę włączyć, konieczne jest przeprowadzenie operacji szyfrowania dla całego dysku. Generowany jest klucz VEK, uruchamia się sterownik FVE i sektor po sektorze dysk jest odczytywany, szyfrowany i zapisywany. Dla współczesnych realiów, czyli szybkiego laptopa ocenionego przez Windows Vista na 4.8-4.9 i dla dysku 100GB, proces ten zajmuje kilka godzin intensywnej pracy. Ponieważ aplikacje nie są świadome, że w systemie działa Bitlocker, trwające szyfrowanie dysku w żaden sposób nie przeszkadza w ich działaniu. Co więcej, w czasie szyfrowania komputer można restartować, a samą operacje dowolnie wstrzymywać i wznawiać. Tak GUI, jak i wiersz poleceń Bitlockera dokładnie informują o postępie całego procesu.
Szyfrowanie partycji obejmuje każdy jej sektor niezależnie od tego, czy jest on w danej chwili używany czy oznaczony jako wolny. Jedną z zalet takiego podejścia jest nadpisanie danych w nieużywanych przez pliki sektorach. Podejście takie pozwala lepiej chronić informacje, ponieważ fakt, że fragment partycji jest w danym momencie nieużywany w żaden sposób nie oznacza, że nie pozostały w nim żadne ważne informacje.
Pewną ciekawostką jest fakt, że sekwencja odczyt – szyfrowanie – zapis, w przypadku nieużywanych sektorów skracana jest do operacji: wypełnienie bufora – szyfrowanie – zapis. Oznacza to, że nieużywane sektory, po zaszyfrowaniu zawierają informację inną niż zawierały oryginalnie. Analogicznie do możliwości zaszyfrowania całego dysku - dopuszczalne jest również jego rozszyfrowanie. Może to być czasem potrzebne i Windows Vista w żaden sposób takiej operacji nie zabrania. Aby przyspieszyć rozszyfrowanie, nieużywane sektory w ogóle nie są z dysku czytane ani niczym nadpisywane. Twórcy Bitlockera wyszli z założenia, że skoro są nieużywane, to z punktu widzenia użytkownika, nie jest specjalnie istotne, co się w nich znajduje. W efekcie, tak zaszyfrowanie jak i rozszyfrowanie dysku sprawia, że w nieużywanych sektorach dane są modyfikowane.
Powyższe rozważania na temat nieużywanych sektorów pochodzą z Microsoft, bezpośrednio od programistów zaangażowanych w tworzenie Bitlockera. Samodzielne testy pokazały jednak, że sektory nieużywane traktowane są dokładnie tak samo jak używane. Być może to wina dostępnej w listopadzie 2006 wersji beta, jednak zdrowy rozsądek podpowiada, że jednakowe traktowanie sektorów ma większy sens, podczas gdy koszty takiego podejścia są stosunkowo niewielkie. Podsumowując rozważania na temat wnętrza Bitlockera, zapamiętać należałoby w zasadzie tylko jedną, za to niezwykle ważną informację: użycie tego zabezpieczenia pozostaje całkowicie niewidoczne dla aplikacji. W praktyce oznacza to, że trudno podać jakiekolwiek przeciwwskazania dla zastosowania tak wygodnej i skutecznej metody ochrony informacji.
| • |
![]() | Grzegorz Tworek (Konsultant ISCG, MVP) |