Paweł Wilk
Trusted Computing
Fakty i mity na temat zaufanej techniki komputerowej
Trusted Computing to nazwa modelu bezpieczeństwa teleinformatycznego, w którym sprzętowe i software'owe mechanizmy tworzą wiarygodne środowisko uruchomieniowe i mechanizmy kontroli programów uruchamianych w tym środowisku. Na odbywającej się w Krakowie konferencji CONFidence 2009 Joanna Rutkowska wyjaśniała na czym polega ten model i jakie są jego słabe punkty. Jej wystąpienie było konsekwencją usterek w implementacjach TC znalezionych przez jej zespół kilka miesięcy wcześniej.
W mechanizmach zaufanej techniki komputerowej chodzi o to, że element sprzętowy zawiera mechanizm odpowiedzialny za sprawdzanie uruchamianych programów i sprzętowych elementów platformy. Oczywiście sam sprzęt zabezpieczający nie wystarczy, należy jeszcze zadbać o to, aby oprogramowanie potrafiło właściwie z niego korzystać. W tym artykule postaramy się przybliżyć temat posiłkując się informacjami podanymi przez autorkę podczas przygotowanej przez nią prezentacji. Należy jednak zaznaczyć, że nie jest to dokładna relacja z jej wystąpienia, choć staraliśmy się, aby omawiane tu kwestie były chronologicznie zgodne z konspektem jej wypowiedzi.
Trusted Platform Module
TPM jest podstawowym, sprzętowym składnikiem TC odpowiedzialnym za sprawdzanie stanu platformy. Dzięki niemu oprogramowanie i inne mechanizmy (jak np. Trusted Execution Technology, TXT) mogą uzyskać wiarygodne informacje o stanie i sprzętowej konfiguracji komputera. Zawiera on także sprzętowy generator liczb pseudolosowych (PRNG) i pozwala na tworzenie, przechowywanie i ochronę kluczy kryptograficznych.
Trusted Platform Module jest urządzeniem pasywnym, co oznacza że nie wykonuje żadnych operacji, jeśli nie otrzyma takiego polecenia – odpowiada on po prostu na pochodzące od oprogramowania żądania.
"Oprogramowanie szyfrujące dysk będzie w stanie odszyfrować dane tylko wtedy, gdy wartości w rejestrach PCR będą dokładnie takie same, jak w chwili tworzenia zabezpieczanego TPM-em klucza"
Rejestry PCR
Moduł TPM wyposażony jest w specjalne 160-bitowe rejestry Platform Credential Registers (PCR) zwane czasem Platform Configuration Registers, które służą do pamiętania stanów sprzętu i oprogramowania. Są one najważniejszą częścią TPM-a, bo właśnie w oparciu o nie moduł ten może wykonywać podstawowe operacje zabezpieczające, takie jak TPM_Seal i TPM_Unseal czy TPM_Quote.
Rejestry te mają ciekawą cechę: nie można po prostu nadpisać przechowywanych w nich wartości. Dozwoloną operacją jest natomiast rozszerzanie (TPM_Extend) ich zawartości. Polega ono na tym, że w rejestrze zapisywana jest wartość będąca rezultatem złączenia już istniejącej wartości z nowo wprowadzoną liczbą i wykonania na tej konkatenacji funkcji SHA-1. Dzięki tej właściwości pojedynczy PCR może być uzupełniany nieskończoną liczbę razy. Z kolei niemożność bezpośredniego przypisania rejestrowi ustalonej wartości sprawia, że oprogramowanie nie wymaże przechowywanej w ten sposób informacji o poprzednio wprowadzonych sumach kontrolnych związanych z istotnymi składnikami platformy.
Operacja TPM_Quote
Dzięki operacji TPM_Quote możliwe jest cyfrowe poświadczanie integralności wyników pochodzących z rejestrów PCR. Funkcja ta przyjmuje indeksy rejestrów (TCPA_PCR_SELECTION), z których powinna skorzystać i opcjonalny zestaw dowolnych danych. Na wyjściu pojawia się zestaw (TCPA_QuoteInfo) wartości rejestrów (PCRData) i wprowadzony zestaw danych (externalData) jeśli go podano – wszystko to podpisane jest kluczem.
Funkcja ta bywa wykorzystywana przez oprogramowanie do cyfrowego poświadczania danych używanych na przykład w komunikacji międzyprocesowej. Zastosowaniem może być na przykład oprogramowanie, które przez sieć raportuje centralnemu serwerowi stan swoich rejestrów odzwierciedlających konkretne wersje używanego firmware'u i komponentów sprzętowych. Firmowy serwer nadzorujący może zweryfikować integralność takich danych sprawdzając podpis cyfrowy i w razie nieautoryzowanej zmiany konfiguracji sprzętu lub oprogramowania odciąć sieciowy dostęp takiej platformie lub powiadomić administratora.
"To, że kupisz nowego laptopa wyposażonego w TXT, VT i TPM-a nie zwiększa automatycznie bezpieczeństwa uruchamianego na nim oprogramowania".
Operacje TPM_Seal i TPM_Unseal
Operacje TPM_Seal i TPM_Unseal pozwalają używać TPM-a jak szkatułki zawierającej cenne drobiazgi. Pierwsza z nich, TPM_Seal to specyficzny szyfrator. Na jego wejście podaje się indeksy rejestrów PCR i dowolny tekst jawny. Funkcja szyfruje wprowadzony tekst używając zapisanego w TPM-ie klucza o podanym identyfikatorze lub klucza głównego (Storage Root Key). Następnie dołącza do niego listę wartości znajdujących się w rejestrach PCR o podanych indeksach. Integralność komunikatu wyjściowego – włączając w to wspomnianą listę – jest zapewniona kryptograficznie. Oczywiście TPM nie przechowuje nigdzie zaszyfrowanych w ten sposób informacji – o to musi zatroszczyć się oprogramowanie. Aplikacja zyskuje natomiast pewność, że zaszyfrowane w ten sposób dane zostaną związane z konfiguracją platformy zapisaną w rejestrach.
TPM_Unseal przyjmuje wcześniej stworzony przez użycie TPM_Seal szyfrogram wraz z listą stanów wybranych rejestrów. Moduł rozszyfruje go pod warunkiem, że wartości podanych rejestrów PCR będą się zgadzały z wartościami bieżącymi. Oczywiście integralność listy wartości jest weryfikowana na samym początku działania. Jeśli konfiguracja platformy zapisana w rejestrach PCR będzie inna niż w momencie wykonywania TPM_Seal, to TPM odmówi wykonania operacji.
Funkcje TPM_Seal i TPM_Unseal mogą przyjmować tzw. łańcuch autoryzujący – posłuży on do odbezpieczania zapamiętanego w TPM-ie klucza służącego do podpisywania.
Z wymienionych operacji może korzystać na przykład oprogramowanie szyfrujące dyski do zabezpieczania swojego klucza i związania go z konfiguracją sprzętu oraz podprogramu ładującego system.
Bezpieczny start
Jedną z korzyści zastosowania Trusted Computingu jest możliwość wykonywania tzw. zaufanego rozruchu (Trusted Boot). Dzięki niemu kolejne etapy uruchamiania komputera, od włączenia zasilania do załadowania OS-u mogą być nadzorowane. Są dwa sposoby takiej kontroli: statyczny i dynamiczny.




