Wprowadzenie
Open Mobile API (OMAPI) to standardowy interfejs API używany do komunikacji z elementem zabezpieczeń urządzenia. Przed Androidem 13 dostęp do tego interfejsu miały tylko aplikacje i moduły frameworka. Po przekonwertowaniu na stabilny interfejs dostawcy moduły HAL mogą też komunikować się z elementami zabezpieczeń za pomocą usługi OMAPI.
Dodano nowy wpis dostępu do OMAPI dla modułów HAL bez modyfikowania interfejsów API w obecnym interfejsie. Nie musisz wprowadzać żadnych zmian w dotychczasowych modułach aplikacji i ramek korzystających z tego interfejsu.
W ramach programu Android Ready SE udostępniamy w urządzeniach z Secure Elements podstawowe funkcje zabezpieczeń Androida, takie jak Keymaster, Keymint, Identyfikatory tożsamości i Zdalne udostępnianie klucza. Włączenie tych funkcji wymaga komponentów HAL (komponentów dostawcy) umożliwiających komunikację z elementem bezpiecznym za pomocą stabilnego interfejsu OMAPI.
Architektura projektu

Producenci OEM integrujący w swoich urządzeniach funkcje Secure Element i Android Ready SE muszą włączyć ten interfejs, ponieważ jest on domyślnie wyłączony. Przed tą aktualizacją reguły dostępu do Secure Element były definiowane na podstawie nazwy pakietu lub jego haszy podpisu (odwołania do aplikacji na urządzeniu) i AID (odwołania do aplikacji SE). Moduł HAL nie miał unikalnych identyfikatorów, takich jak nazwy pakietów czy certyfikaty podpisów. W Androidzie 13 usługa OMAPI Vendor Stable Service umożliwia modułom HAL dostęp do elementu Secure Element. Dostawcy usług SE mogą zdefiniować unikalny identyfikator UUID o długości 16 bajtów. Aby zastosować to regułę dostępu do modułów HAL, dostawcy usług SE muszą zmapować ten 16-bajtowy unikalny identyfikator UUID na identyfikator UID modułu HAL w pliku XML konfiguracji mapowania identyfikatorów UUID.
Usługa OMAPI Vendor Stable Service uzupełnia UUID o FF w razie potrzeby, aby uzyskać 20 bajtów, zgodnie z sekcją 6.1, DeviceAppID-REF-DO page: 66, i określa reguły dostępu w bezpiecznych elementach, używając tego 20-bajtowego UUID jako odwołania do aplikacji urządzenia.
Nazwa pliku mapowania identyfikatorów UUID dostawcy jest tworzona za pomocą zdefiniowanego wstępnie prefiksu
hal_uuid_map_
i dołączonej wartości właściwości systemowej
ro.boot.product.hardware.sku
hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml
Usługa OMAPI Vendor Stable wyszukuje ten plik w folderach /odm/etc/
, /vendor/etc/
i /etc/
. Szczegółowy opis pliku konfiguracji mapowania identyfikatorów UUID dostawcy znajdziesz tutaj.
Implementacja
Aby włączyć funkcję OMAPI Vendor Stable Service w urządzeniu docelowym, musisz wprowadzić te zmiany.
SecureElement
SecureElement
Włącz flagę usługi
secure_element_vintf_enabled
, używając nakładki zasobów w folderach na konkretnych urządzeniach.
<bool name="secure_element_vintf_enabled">true</bool>
Określ plik XML mapowania UID i UUID dla swojej usługi.
<ref_do> <uuid_ref_do> <uids> <uid>0</uid> </uids> <uuid>9f36407ead0639fc966f14dde7970f68</uuid> </uuid_ref_do> <uuid_ref_do> <uids> <uid>1096</uid> <uid>1097</uid> </uids> <uuid>a9b7ba70783b317e9998dc4dd82eb3c5</uuid> </uuid_ref_do> </ref_do>
Przeprowadź aprovisionowanie kart Secure Element AR dla usługi HAL, używając identyfikatorów UUID jako odwołań do aplikacji na urządzeniu. Dodaj wpis mapowania w konfiguracji mapowania, w którym możesz zmapować ten identyfikator UUID z identyfikatorami UID modułu HAL. Dzięki temu dostawcy mapowania zezwalają modułom HAL na dostęp do Secure Element. Testy VTS OMAPI można wykorzystać jako implementacje referencyjne do włączenia stabilnej usługi OMAPI Vendor w modułach HAL.
Zaktualizuj sepolicy modułu HAL: dodaj regułę sepolicy dla modułu HAL, aby umożliwić dostęp do stabilnej usługi dostawcy OMAPI.
allow hal_module_label secure_element_service:service_manager find
Łączenie z usługą stabilną dostawcy OMAPI: w modulech HAL użyj etykiety usługi dostawcy OMAPI (android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default
), aby połączyć się z usługą.
Weryfikacja
Sprawdź, czy usługa OMAPI Vendor Stable Service została zaimplementowana, wykonując testy OMAPI VTS.
run vts -m VtsHalOmapiSeServiceV1_TargetTest run vts -m VtsHalOmapiSeAccessControlTestCases