Bezpieczeństwo przez izolację. Historia Qubes OS
Polka, która w 2006 roku zawstydziła Microsoft, doszła do wniosku, że żadnego systemu nie da się napisać bez błędów. Postanowiła więc zbudować taki, w którym błędy nie mają znaczenia. Dziś Edward Snowden nazywa go najlepszym systemem operacyjnym, jaki istnieje.
W sierpniu 2006 roku na konferencji Black Hat w Las Vegas - jednym z najważniejszych spotkań świata bezpieczeństwa komputerowego - na scenę wyszła młoda badaczka z Warszawy. Joanna Rutkowska pokazała coś, co nazwała Blue Pill, nawiązując do „Matrixa”. Był to prototyp złośliwego oprogramowania, które wykorzystywało sprzętową wirtualizację procesorów, żeby przenieść działający system operacyjny do maszyny wirtualnej - bez restartu i bez wiedzy użytkownika. System dalej działał, tylko już nie był panem samego siebie. Pod nim, niewidoczny, pracował ktoś inny.
Prezentacja odbiła się szerokim echem. Microsoft szykował wtedy premierę Windows Vista, reklamowanego jako najbezpieczniejszy Windows w historii. Rutkowska pokazała, jak obejść jego zabezpieczenia jądra. Nazwisko młodej Polki zaczęło padać w tych samych zdaniach co nazwiska największych badaczy na świecie.
Pesymistka z zawodu
Kolejne lata przyniosły kolejne odkrycia. W 2007 roku Rutkowska założyła w Warszawie firmę Invisible Things Lab. Razem z Rafałem Wojtczukiem pokazywała ataki na najniższe warstwy komputera: na BIOS, na mechanizmy zaufanego rozruchu Intela, na niewidoczny dla systemu tryb pracy procesora. W 2009 roku opisała atak, który nazwała „Evil Maid” - „zła pokojówka”. Scenariusz był prosty: zostawiasz laptop z zaszyfrowanym dyskiem w pokoju hotelowym, ktoś na kilka minut podłącza do niego pendrive i podmienia program startowy. Gdy wrócisz i wpiszesz hasło, zostanie ono przechwycone. Szyfrowanie dysku, na które liczyłeś, przestaje mieć znaczenie.
Po latach szukania dziur w cudzych systemach Rutkowska doszła do wniosku, który zmienił kierunek jej pracy. Każdy system operacyjny ma błędy. Każda przeglądarka, każdy czytnik PDF, każdy sterownik karty sieciowej. Tych błędów nie da się wyeliminować, bo nowoczesne oprogramowanie to dziesiątki milionów linii kodu, pisanych przez tysiące ludzi. Skoro tak, to pytanie nie brzmi: „jak napisać system bez błędów?”, tylko: „jak zbudować system, w którym błąd w jednym miejscu nie oznacza katastrofy wszędzie?”.
Pomysł: nie ufać niczemu
W 2010 roku Invisible Things Lab ogłosiło projekt Qubes OS. 3 września 2012 roku ukazała się wersja 1.0. Projekt nie obiecywał rzeczy niemożliwych. Jego hasło brzmiało skromnie: „rozsądnie bezpieczny system operacyjny”.
Idea jest prosta, choć jej realizacja - bardzo trudna. W zwykłym komputerze wszystko działa w jednym środowisku: przeglądarka, poczta, menedżer haseł, dokumenty firmowe i gra pobrana z internetu. Jeśli którykolwiek z tych programów zostanie zaatakowany, napastnik ma zwykle dostęp do całej reszty. Wystarczy jeden zainfekowany załącznik, by przejąć wszystko.
Qubes odwraca tę logikę. Komputer zostaje podzielony na wiele niezależnych przedziałów - „qube'ów” - z których każdy jest osobną, lekką maszyną wirtualną, uruchamianą przez hipernadzorcę Xen. Możesz mieć osobny qube do pracy, osobny do bankowości, osobny do przeglądania internetu i osobny, całkowicie odcięty od sieci, na klucze szyfrujące i hasła. Nawet karta sieciowa i porty USB działają w odizolowanych przedziałach, bo to właśnie sterowniki sprzętu są jednym z ulubionych celów ataków.
Okna różnych qube'ów wyświetlają się obok siebie na jednym pulpicie, ale każde ma kolorową ramkę. Czerwona może oznaczać „niezaufane”, zielona „praca”, czarna „najbardziej poufne”. Na pierwszy rzut oka widzisz, w jakim świecie właśnie pracujesz.
Co to zmienia w praktyce
Wyobraź sobie, że dostajesz e-mail z załącznikiem od nieznajomego. W zwykłym systemie otwierasz go i masz nadzieję, że nic się nie stanie. W Qubes otwierasz go w „jednorazowym” qube'ie, który powstaje w kilka sekund i znika bez śladu po zamknięciu okna. Jeśli plik zawierał złośliwy kod, zainfekował maszynę, której już nie ma. Twoja poczta, dokumenty i klucze pozostały nietknięte.
Inny przykład: ktoś przysyła Ci PDF, który musisz zachować. Qubes potrafi go „oczyścić”, otwierając w jednorazowym przedziale, przerabiając na zwykłe obrazy stron i składając z powrotem w bezpieczny dokument. Ewentualny złośliwy kod zostaje po drodze, w maszynie, która zaraz przestanie istnieć.
Najważniejsza część systemu - ta, która zarządza całym komputerem i wyświetla pulpit - w ogóle nie ma dostępu do internetu. Nie może więc zostać zaatakowana przez sieć, bo z siecią nie ma kontaktu. Nawet schowek, czyli zwykłe „kopiuj-wklej” między oknami, wymaga świadomego gestu użytkownika, żeby dane nie przeciekały między przedziałami bez Twojej wiedzy.
Jeden komputer, wiele światów
W codziennej pracy Qubes ma jeszcze kilka sprytnych rozwiązań. Programy w większości qube'ów nie są instalowane osobno, tylko pochodzą ze wspólnych „szablonów”. Po każdym restarcie system plików takiego przedziału wraca do czystego stanu z szablonu. Jeśli złośliwe oprogramowanie zdołało się w nim zagnieździć, zwykły restart je usuwa - zostają tylko Twoje dokumenty w katalogu domowym.
Klucze szyfrujące mogą mieszkać w qube'ie bez dostępu do sieci, a program pocztowy w innym przedziale prosi tylko o podpisanie lub odszyfrowanie konkretnej wiadomości. Nawet jeśli poczta zostanie zaatakowana, klucz prywatny nigdy jej nie dotyka. Z Qubes zintegrowany jest też Whonix: przedziały, których cały ruch obowiązkowo przechodzi przez sieć Tor. Program uruchomiony w takim qube'ie nie zna Twojego prawdziwego adresu IP, bo technicznie nie ma do niego dostępu - nawet jeśli zostanie przejęty i spróbuje go zdradzić.
Rekomendacja Snowdena
Qubes nigdy nie był systemem dla wszystkich. Wymaga mocniejszego sprzętu, sporej ilości pamięci i zmiany przyzwyczajeń. Za to szybko zdobył zaufanie tych, dla których bezpieczeństwo nie jest abstrakcją.
Najbardziej znana rekomendacja pochodzi od człowieka, który jak mało kto wie, do czego zdolne są najpotężniejsze służby wywiadowcze świata. Edward Snowden - ten sam, który w 2013 roku ujawnił skalę inwigilacji prowadzonej przez NSA - napisał o Qubes krótko: „Jeśli poważnie traktujesz bezpieczeństwo, Qubes OS jest najlepszym dostępnym dziś systemem. To jest to, czego używam. I jest darmowy”. Freedom of the Press Foundation - organizacja wspierająca dziennikarzy i sygnalistów - oparła na nim stację roboczą SecureDrop, na której redakcje na całym świecie bezpiecznie odbierają materiały od anonimowych źródeł. Właśnie tam, gdzie jeden zainfekowany plik od „informatora” mógłby zdemaskować całą redakcję, izolacja przestaje być teorią.
Joanna Rutkowska w 2018 roku zajęła się innymi projektami, ale Qubes rozwija się dalej jako niezależny, otwarty projekt. Jego głównym deweloperem od lat jest zresztą również Polak - Marek Marczykowski-Górecki.
Granice izolacji
Uczciwie trzeba powiedzieć, czego Qubes nie robi. Nie ochroni Cię, jeśli sam przeniesiesz zainfekowany plik do najbardziej zaufanego przedziału. Nie zastąpi rozsądku. Nie naprawi błędów w procesorze ani w firmware, choć mocno utrudnia ich wykorzystanie. Sama Rutkowska zawsze podkreślała, że jej system jest „rozsądnie”, a nie „całkowicie” bezpieczny.
Ale różnica między „rozsądnie bezpiecznym” a typowym komputerem jest ogromna. W zwykłym systemie jeden błąd wystarczy, by przegrać wszystko. W Qubes napastnik, który przejmie przeglądarkę, ma w rękach przeglądarkę - i nic więcej. Żeby dostać się dalej, musi znaleźć kolejną lukę, tym razem w znacznie mniejszym i dużo lepiej sprawdzonym kodzie hipernadzorcy. To podnosi koszt ataku z dni do miesięcy, a czasem do lat.
Pesymizm, który chroni
W świecie bezpieczeństwa łatwo o obietnice. Producenci przekonują, że ich system jest „niezniszczalny”, a ich zabezpieczenia „nie do złamania”. Qubes powstał z odwrotnego założenia: wszystko kiedyś zawiedzie, więc zaprojektujmy system tak, by porażka jednego elementu nie pociągała za sobą reszty.
To filozofia, którą znają marynarze. Statek dzieli się na wodoszczelne przedziały nie dlatego, że konstruktor spodziewa się dziury w kadłubie. Robi się to dlatego, że kiedyś ona się pojawi - i wtedy od grodzi zależy, czy statek zatonie, czy dopłynie do portu.
Komputer, na którym pracujesz z poufnymi danymi, zasługuje na takie same grodzie.