Stabilny interfejs dostawcy OMAPI

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 frameworku. 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 API w bieżącym istniejącym interfejsie. Nie są wymagane żadne modyfikacje w przypadku istniejących modułów aplikacji i frameworka korzystających z tego interfejsu.

W ramach programu Android Ready SE udostępniamy w Secure Elements podstawowe funkcje zabezpieczeń systemu Android, takie jak Keymaster, Keymint, poświadczenia tożsamości i zdalne udostępnianie kluczy. Włączenie tych funkcji wymaga, aby warstwy HAL (komponenty dostawcy) tych funkcji komunikowały się z bezpiecznym elementem za pośrednictwem stabilnego interfejsu dostawcy OMAPI.

Projektuj architekturę

Architektura projektowa
Rysunek 1 : Architektura projektu

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 bezpiecznego elementu były definiowane na podstawie nazwy pakietu lub skrótu jego podpisu (odniesienie do aplikacji urządzenia) i 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 Service 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 UID modułu HAL w pliku XML konfiguracji mapowania UUID dostawcy.

Usługa OMAPI Vendor Stable Service uzupełnia identyfikator UUID za pomocą FF, jeśli to konieczne, aby uzyskać 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 utworzona z predefiniowanego przedrostka hal_uuid_map_ i dołączona 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ę OMAPI Vendor Stable Service w kompilacji docelowej, wymagane są następujące zmiany.

Bezpieczny element

Bezpieczny element

Włącz flagę usługi secure_element_vintf_enabled przy użyciu nakładki zasobów w folderach specyficznych dla urządzenia.

    <bool name="secure_element_vintf_enabled">true</bool>

Zdefiniuj UID i XML mapowania 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 bezpieczne elementy AR 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 zmapować ten UUID na UID modułu HAL. Dzięki temu mapowaniu dostawcy umożliwiają modułom HAL dostęp do bezpiecznego elementu. Testy OMAPI VTS można wykorzystać jako implementacje referencyjne umożliwiające włączenie usługi OMAPI Vendor Stable Service 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

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