W tym artykule objaśniono funkcję bezpiecznego rozruchu i sposób rozszerzenia go na system Linux, w szczególności RHEL7. Ponadto przedstawiono „rozruch zaufanego jądra” systemu Linux i implikacje dotyczące zastosowań przestrzeni użytkownika.
Funkcja bezpiecznego rozruchu została zaprojektowana, aby zapobiegać wczytaniu do systemu operacyjnego rootkitów instalowanych podczas rozruchu w pamięci przy użyciu mechanizmów, takich jak pamięć ROM i MBR, które przejmują kontrolę nad systemem i ukrywają się przed zabezpieczeniami przed złośliwym oprogramowaniem. Z biegiem czasu problem ten urósł i istotnie przyczynia się do utraty/uszkodzenia i kradzieży danych. Złośliwe oprogramowanie może znaleźć się między systemem BIOS a modułem ładowania systemu operacyjnego. Może także znaleźć się między modułem ładowania systemu operacyjnego a systemem operacyjnym.
UEFI to nowy standard interfejsu sprzętowego/programowego dla nowoczesnych platform serwera z bogatym zestawem modułowości UI i interfejsów standardowych. Umożliwia on niezależnym dostawcom sprzętu opracowanie sterowników urządzeń UEFI, które płynnie współpracują z środowiskiem przed rozruchem, które jest bardziej elastyczne niż starsza wersja środowiska BIOS. Poziom adopcji UEFI przez różne systemy operacyjne i platformy stale rośnie, a wiele najważniejszych wersji klienckich i serwerowych systemów operacyjnych zapewnia jego obsługę.
Kierowany przez firmę Microsoft organ zajmujący się standardami UEFI określił sposób blokowania instalacji rootkitów złośliwego oprogramowania podczas rozruchu przy użyciu mechanizmów ładowania i wykonywania plików binarnych, które są niezmodyfikowane i znane platformie. Ten mechanizm jest nazywany bezpiecznym rozruchem — artykuł Sposób firmy Microsoft na bezpieczny rozruch zawiera informacje firmy Microsoft. Podobnie inni dostawcy systemów operacyjnych wdrożyli różne sposoby uzyskiwania bezpiecznego rozruchu.
Zabezpieczone platformy UEFI wczytują tylko pliki binarne oprogramowania, takie jak opcjonalne sterowniki ROM, moduły ładowania rozruchu, moduły ładowania systemu operacyjnego, które są niezmodyfikowane i zaufane przez platformę. Specyfikacja UEFI zawiera szczegółowy opis mechanizmu bezpiecznego rozruchu.
Specyfikacja UEFI definiuje infrastrukturę wymaganą do bezpiecznego rozruchu. Przedstawiamy krótkie wprowadzenie do terminologii dotyczącej bezpiecznego rozruchu dla potrzeb osób, które chcą poznać temat bardziej szczegółowo.
Funkcja bezpiecznego rozruchu nie chroni systemu podczas pracy i jego danych. Funkcja bezpiecznego rozruchu zatrzymuje rozruch systemu operacyjnego, jeśli jakikolwiek element nie zostanie uwierzytelniony podczas procesu rozruchu, co zapobiega uruchomieniu ukrytego złośliwego oprogramowania przez systemy.
Te słowa kluczowe są podstawą funkcji bezpiecznego rozruchu. Specyfikacja UEFI zawiera więcej informacji na temat tych słów kluczowych. Specyfikacje te zawierają szczegółowe informacje o sposobie podpisywania plików binarnych; w szczególności patrz sekcja 28.
Zmienne uwierzytelnione: UEFI zawiera usługę nazywaną zmiennymi uwierzytelnionymi, która sprawia, że tylko moduł certyfikowany lub moduł kodu uwierzytelnionego może zapisać dane, tj. tylko moduł kodu posiadający certyfikat klucza może zapisać dane. Jednak każdy podmiot może odczytać te zmienne.
Klucz platformy (PK): klucz platformy ustanawia zaufany związek między właścicielem platformy a oprogramowaniem wewnętrznym zainstalowanym w pamięci NVM przez producenta platformy.
KEK: klucz wymiany danych ustanawia zaufanie między systemami operacyjnymi a oprogramowaniem wewnętrznym platformy. Klucze KEK są instalowane na platformie przez system operacyjny i/lub elementy zewnętrzne, które chcą komunikować się z oprogramowaniem wewnętrznym platformy.
DB: autoryzowana baza danych, która przechowuje klucze publiczne i certyfikaty modułu kodu, który jest autoryzowany do współpracy z oprogramowaniem wewnętrznym platformy.
DBX: baza danych czarnej listy. Każdy kod modułu zgodny z tymi certyfikatami będzie mógł uruchomić ładowanie.
Podpis: podpis jest generowany przez klucz prywatny i skrót pliku binarnego, który zostanie podpisany.
Certyfikat: certyfikat Authenticode zawiera klucz publiczny odpowiadający kluczowi prywatnemu, który służy do podpisywania obrazu.
Następnie oprogramowanie wewnętrzne platformy UEFI wczytuje sterowniki zewnętrzne, moduły opcjonalne ROM i moduły ładujące systemu operacyjnego, które zostały podpisane przez organ uwierzytelniający, w tym przypadku firmę Microsoft. Każdy dostawca sprzętu może zapisać sterowniki w systemie UEFI BIOS i uzyskać podpis Microsoft do uruchomienia na platformie UEFI. Producenci OEM instalują część publiczną klucza na platformie DB, a usługa protokołu modułu ładowania UEFI weryfikuje podpis pliku binarnego w autoryzowanej bazie danych przed uruchomieniem na platformie. Ten łańcuch uwierzytelniania ciągnie się od UEFI do modułu ładowania systemu operacyjnego i systemu operacyjnego.
Podsumowując, UEFI umożliwia uruchamianie modułów ładowania systemu operacyjnego, które są podpisywane i których klucz jest obecny w bazie danych. Ten mechanizm umożliwia modułowi ładowania systemu operacyjnego lub opcjonalnym modułów ROM wykonywanie tylko wtedy, gdy są autoryzowane i nie zostały zmodyfikowane przez żaden podmiot.
Rysunek 1: Oprogramowanie wewnętrzne platformy UEFI