Interfejs stabilny dostawcy OMAPI

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 podstawowe funkcje zabezpieczeń Androida, takie jak Keymaster, KeyMint, Identyfikatory tożsamości i zdalne udostępnianie klucza (RKP) w ramach elementów chronionych. Włączenie tych funkcji wymaga komponentów HAL (komponentów dostawcy) umożliwiających komunikację z elementem bezpiecznym za pomocą stabilnego interfejsu OMAPI dostawcy.

Architektura projektu

Architektura projektu
Rysunek 1. Architektura projektu

Producenci OEM integrujący w swoich urządzeniach funkcję 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 zabezpieczeń elementów 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 zabezpieczeń. 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 SE muszą zmapować ten 16-bajtowy 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, strona DeviceAppID-REF-DO: 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 dodanej 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 urządzeniu.

    <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 elementów ARS w Secure Element dla usługi HAL, używając identyfikatorów UUID jako odwołań do aplikacji na urządzeniu. Dodaj w konfiguracji mapowania wpis 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ć domenie 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