Stan urządzenia

Stan urządzenia wskazuje, jak swobodnie można przesyłać oprogramowanie na urządzenie i czy wymuszona jest weryfikacja. Stany urządzenia to LOCKED i UNLOCKED . Urządzenia LOCKED uniemożliwiają wgranie nowego oprogramowania na urządzenie, natomiast urządzenia UNLOCKED umożliwiają modyfikację.

Po włączeniu urządzenia program ładujący najpierw sprawdza, czy urządzenie jest LOCKED , czy UNLOCKED . Jeśli urządzenie jest UNLOCKED , program ładujący wyświetla użytkownikowi ostrzeżenie, a następnie kontynuuje uruchamianie, nawet jeśli załadowany system operacyjny nie jest podpisany przez zaufany katalog główny.

Jeśli urządzenie jest LOCKED , program ładujący wykonuje kroki opisane w sekcji Weryfikowanie rozruchu , aby zweryfikować oprogramowanie urządzenia. LOCKED urządzenia uruchamiają się tylko wtedy, gdy załadowany system operacyjny jest prawidłowo podpisany przez katalog główny zaufania. Aby uzyskać więcej informacji, zobacz Przebieg rozruchu .

Zmiana stanu urządzenia

Aby zmienić stan urządzenia , użyj fastboot flashing [unlock | lock] polecenie. Aby chronić dane użytkownika, wszystkie zmiany stanu czyścią partycje danych i proszą użytkownika o potwierdzenie przed usunięciem danych.

Przejście UNLOCKED do LOCKED jest przewidywane, gdy użytkownik kupi używane urządzenie deweloperskie. W wyniku zablokowania urządzenia użytkownik powinien mieć pewność, że znajduje się ono w stanie określonym przez producenta urządzenia, o ile nie ma ostrzeżenia. Przejście LOCKED na UNLOCKED jest oczekiwane, gdy programista chce wyłączyć weryfikację na urządzeniu w celach programistycznych.

Korzeń zaufania

Root zaufania to klucz kryptograficzny używany do podpisywania kopii systemu Android przechowywanej na urządzeniu. Prywatna część root zaufania znana jest tylko producentowi urządzenia i służy do podpisywania każdej wersji Androida przeznaczonej do dystrybucji. Publiczna część źródła zaufania jest osadzona w urządzeniu i przechowywana w miejscu uniemożliwiającym manipulowanie nią (zazwyczaj pamięć tylko do odczytu).

Po załadowaniu Androida program ładujący korzysta z katalogu głównego zaufania w celu sprawdzenia autentyczności. Aby uzyskać więcej informacji na temat tego procesu, zobacz Weryfikowanie rozruchu . Urządzenia mogą mieć wiele programów ładujących i dlatego w użyciu może być używanych wiele kluczy kryptograficznych.

Konfigurowalny przez użytkownika katalog główny zaufania

Urządzenia mogą opcjonalnie umożliwiać użytkownikowi skonfigurowanie katalogu głównego zaufania (na przykład klucza publicznego). Urządzenia mogą używać tego konfigurowanego przez użytkownika katalogu głównego zaufania na potrzeby zweryfikowanego rozruchu zamiast wbudowanego katalogu głównego zaufania. Pozwala to użytkownikowi instalować i używać niestandardowych wersji Androida bez poświęcania ulepszeń bezpieczeństwa Verified Boot.

Jeśli zaimplementowano ustawiany przez użytkownika katalog główny zaufania, należy to zrobić w taki sposób, aby:

  • Do ustawienia/wyczyszczenia ustawianego przez użytkownika głównego źródła zaufania wymagane jest potwierdzenie fizyczne.
  • Konfigurowalny przez użytkownika katalog główny zaufania może ustawić tylko użytkownik końcowy. Nie można tego ustawić fabrycznie ani w żadnym punkcie pośrednim, zanim użytkownik końcowy nie otrzyma urządzenia.
  • Konfigurowalny przez użytkownika katalog główny zaufania jest przechowywany w magazynie umożliwiającym zabezpieczenie przed manipulacją. Wykrywanie manipulacji oznacza, że ​​można wykryć, czy system Android nie naruszył danych, na przykład nie nadpisał ich ani nie zmienił.
  • Jeśli ustawiony jest katalog główny zaufania ustawiany przez użytkownika, urządzenie powinno umożliwiać uruchomienie wersji systemu Android podpisanej za pomocą wbudowanego katalogu głównego zaufania lub ustawianego przez użytkownika katalogu głównego zaufania.
  • Za każdym razem, gdy urządzenie uruchamia się przy użyciu konfigurowanego przez użytkownika katalogu głównego zaufania, użytkownik powinien zostać powiadomiony, że urządzenie ładuje niestandardową wersję Androida. Na przykład ekrany ostrzegawcze, patrz LOCKED urządzenia z niestandardowym zestawem kluczy .

Jednym ze sposobów wdrożenia ustawianego przez użytkownika katalogu głównego zaufania jest posiadanie partycji wirtualnej, którą można sflashować lub wyczyścić tylko wtedy, gdy urządzenie jest w stanie UNLOCKED . Urządzenia Google Pixel 2 korzystają z tego podejścia, a partycja wirtualna nosi nazwę avb_custom_key . Format danych na tej partycji jest wynikiem polecenia avbtool extract_public_key . Oto przykład ustawienia ustawianego przez użytkownika katalogu głównego zaufania:

avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin

Ustawiany przez użytkownika katalog główny zaufania można wyczyścić, wydając:

fastboot erase avb_custom_key