Wprowadzenie
Open Mobile API (OMAPI) to standardowy interfejs API używany do komunikacji z elementem Secure Element urządzenia. Przed Androidem 13 dostęp do tego interfejsu miały tylko aplikacje i moduły platformy. Po przekształceniu w stabilny interfejs dostawcy moduły HAL mogą też komunikować się z elementami zabezpieczonymi za pomocą usługi OMAPI.
Dodano nowy wpis dostępu do OMAPI dla modułów HAL bez modyfikowania żadnych interfejsów API w obecnym interfejsie. W przypadku istniejących modułów aplikacji i platformy korzystających z tego interfejsu nie trzeba wprowadzać żadnych zmian.
W ramach programu Android Ready SE udostępniamy podstawowe funkcje zabezpieczeń Androida, takie jak Keymaster, KeyMint, dane logowania i zdalne udostępnianie kluczy, na elementach bezpiecznych. Wymaga to, aby interfejsy HAL (komponenty dostawcy) tych funkcji komunikowały się z elementem Secure Element za pomocą stabilnego interfejsu dostawcy OMAPI.
Projektowanie architektury

Producenci OEM, którzy integrują element Secure Element i funkcje Android Ready SE w swoich urządzeniach, muszą włączyć ten interfejs, ponieważ jest on domyślnie wyłączony. Przed tą aktualizacją reguły dostępu do elementu Secure Element były definiowane przez nazwę pakietu lub skróty jego podpisu (odniesienie do aplikacji na urządzeniu) oraz identyfikator AID (odniesienie do aplikacji SE). Moduły HAL nie miały unikalnych identyfikatorów, takich jak nazwy pakietów czy certyfikaty podpisu. W Androidzie 13 stabilna usługa dostawcy OMAPI umożliwia modułom HAL dostęp do elementu Secure Element. Dostawcy SE mogą zdefiniować unikalny identyfikator UUID o długości 16 bajtów. Aby zastosować tę regułę dostępu do modułów HAL, dostawcy SE muszą zmapować ten 16-bajtowy unikalny identyfikator UUID na identyfikator UID modułu HAL w pliku XML konfiguracji mapowania identyfikatorów UUID dostawcy.
Usługa OMAPI Vendor Stable Service w razie potrzeby uzupełnia identyfikator UUID wartością FF, aby uzyskać 20 bajtów, zgodnie z sekcją 6.1, strona DeviceAppID-REF-DO: 66, i definiuje reguły dostępu w elementach bezpiecznych, używając tego 20-bajtowego identyfikatora UUID jako odniesienia do aplikacji na urządzeniu.
Nazwa pliku mapowania identyfikatorów UUID dostawcy składa się z predefiniowanego prefiksu hal_uuid_map_
i 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 szuka tego pliku w folderach /odm/etc/
, /vendor/etc/
i /etc/
. Szczegółowy opis pliku konfiguracji mapowania identyfikatorów UUID dostawców jest dostępny tutaj.
Implementacja
Aby włączyć funkcję OMAPI Vendor Stable Service w kompilacji docelowej, musisz wprowadzić te zmiany:
SecureElement
SecureElement
Włącz flagę usługi
secure_element_vintf_enabled
za pomocą nakładki zasobu w folderach przeznaczonych na konkretne urządzenia.
<bool name="secure_element_vintf_enabled">true</bool>
Określ plik XML mapowania identyfikatora UID i identyfikatora 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>
Zapewnij elementowi Secure Element AR dostęp do usługi HAL, używając identyfikatorów UUID jako odniesień do aplikacji na urządzeniu. Dodaj wpis mapowania w konfiguracji mapowania, w którym możesz zmapować ten identyfikator UUID na identyfikatory UID modułu HAL. Dzięki temu mapowaniu dostawcy umożliwiają modułom HAL dostęp do elementu Secure Element. Testy OMAPI VTS mogą być używane jako implementacje referencyjne do włączania stabilnej usługi OMAPI Vendor w modułach HAL.
Zaktualizuj sepolicy modułu HAL: dodaj regułę sepolicy dla modułu HAL, aby umożliwić jego domenie dostęp do stabilnej usługi dostawcy OMAPI.
allow hal_module_label secure_element_service:service_manager find
Łączenie ze stabilną usługą dostawcy OMAPI: z modułów HAL użyj etykiety usługi dostawcy OMAPIandroid.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default
, aby połączyć się z usługą.
Weryfikacja
Sprawdź, czy stabilna usługa dostawcy OMAPI została prawidłowo zaimplementowana, uruchamiając testy VTS OMAPI.
run vts -m VtsHalOmapiSeServiceV1_TargetTest run vts -m VtsHalOmapiSeAccessControlTestCases