Wstęp
Open Mobile API (OMAPI) to standardowy interfejs API używany do komunikacji z bezpiecznym elementem urządzenia. Przed Androidem 13 dostęp do tego interfejsu miały tylko aplikacje i moduły frameworka. Konwertując go na stabilny interfejs dostawcy, moduły HAL mogą również komunikować się z bezpiecznymi elementami za pośrednictwem usługi OMAPI.
Dodano nowy wpis dostępu do OMAPI dla modułów HAL bez modyfikowania jakichkolwiek interfejsów API w obecnie istniejącym interfejsie. Nie są wymagane żadne modyfikacje istniejących modułów aplikacji i ram korzystających z tego interfejsu.
W ramach programu Android Ready SE udostępniamy w Secure Elements podstawowe funkcje bezpieczeństwa Androida, takie jak Keymaster, Keymint, Identity Credentials i Remote Key Provisioning. Włączenie tych funkcji wymaga, aby HAL (komponenty dostawcy) tych funkcji komunikowały się z bezpiecznym elementem za pośrednictwem stabilnego interfejsu dostawcy OMAPI.
Zaprojektuj architekturę

Producenci OEM integrujący funkcje Secure Element i 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 Secure Element były definiowane na podstawie nazwy pakietu lub skrótów jego sygnatur (odniesienie do aplikacji urządzenia) oraz AID (odniesienie do aplikacji SE). Moduły HAL nie miały unikalnych identyfikatorów, takich jak nazwy pakietów czy certyfikaty podpisów. Teraz w systemie Android 13 usługa OMAPI Vendor Stable umożliwia modułom HAL dostęp do bezpiecznego elementu. 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 kodzie XML konfiguracji mapowania UUID dostawcy.
Stabilna usługa dostawcy OMAPI uzupełnia identyfikator UUID FF, jeśli to konieczne, aby miał 20 bajtów, zgodnie z sekcją 6.1, DeviceAppID-REF-DO strona: 66 i definiuje reguły dostępu w bezpiecznych elementach, używając tego 20-bajtowego identyfikatora UUID jako odniesienia do aplikacji urządzenia.
Nazwa pliku mapowania UUID dostawcy jest tworzona z predefiniowanym przedrostkiem hal_uuid_map_
i dołączana do 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 konfiguracyjnego mapowania UUID dostawcy jest dostępny tutaj .
Realizacja
Aby włączyć funkcję stabilnej usługi OMAPI Vendor w kompilacji docelowej, wymagane są następujące zmiany.
Bezpieczny element
Bezpieczny element Włącz flagę usługi secure_element_vintf_enabled
, używając nakładki zasobów w folderach określonych na urządzeniu.
<bool name="secure_element_vintf_enabled">true</bool>
Zdefiniuj kod 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>
Udostępnij AR elementu bezpiecznego dla usługi HAL, używając identyfikatorów UUID jako odniesień do aplikacji urządzenia. Dodaj wpis mapowania w konfiguracji mapowania, w którym możesz zamapować ten identyfikator UUID na identyfikatory UID modułu HAL. Dzięki temu dostawcy mapowania umożliwiają modułom HAL dostęp do bezpiecznego elementu. Testy OMAPI VTS mogą być używane jako implementacje referencyjne do włączania stabilnej usługi dostawcy OMAPI w modułach HAL.
Zaktualizuj sepolicy modułu HAL: Dodaj regułę sepolicy dla modułu HAL, aby zezwolić ich domenie na dostęp do stabilnej usługi dostawcy OMAPI.
allow hal_module_label secure_element_service:service_manager find
Połącz się ze stabilną usługą dostawcy OMAPI: z modułów HAL użyj etykiety usługi dostawcy OMAPI android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default
, aby połączyć się z usługą.
Walidacja
Sprawdź, czy usługa OMAPI Vendor Stable Service została pomyślnie wdrożona, uruchamiając testy OMAPI VTS .
run vts -m VtsHalOmapiSeServiceV1_TargetTest run vts -m VtsHalOmapiSeAccessControlTestCases