Interfaccia stabile del fornitore OMAPI

Open Mobile API (OMAPI) è un'API standard utilizzata per comunicare con l'elemento sicuro di un dispositivo. Prima di Android 13, solo le app e i moduli del framework avevano accesso a questa interfaccia. Convertendola in un'interfaccia stabile del fornitore, anche i moduli HAL sono in grado di comunicare con gli elementi sicuri tramite il servizio OMAPI.

È stata aggiunta una voce di accesso a OMAPI per i moduli HAL senza modificare le API nell'interfaccia esistente corrente. Non sono necessarie modifiche per i moduli di applicazione e framework esistenti che utilizzano questa interfaccia.

Nell'ambito del programma Android Ready SE stiamo rendendo disponibili le funzionalità di sicurezza di base di Android, come Keymaster, KeyMint, credenziali di identità e provisioning di chiavi remoto, sugli elementi sicuri. Per abilitare queste funzionalità, è necessario che gli HAL (componenti del fornitore) di queste funzionalità comunichino con l'elemento sicuro tramite l'interfaccia stabile del fornitore OMAPI.

Architettura di progettazione

Architettura di progettazione

Figura 1. Architettura di progettazione.

Gli OEM che integrano un elemento sicuro e le funzionalità Android Ready SE nei propri dispositivi devono abilitare questa interfaccia, perché è disattivata per impostazione predefinita. Prima di questo aggiornamento, le regole di accesso all'elemento sicuro venivano definite in base al nome del pacchetto o agli hash delle firme (riferimento all'applicazione del dispositivo) e all'AID (riferimento all'applicazione SE). I moduli HAL non avevano identificatori univoci come nomi di pacchetti o certificati di firma. In Android 13 e versioni successive, il servizio stabile del fornitore OMAPI consente ai moduli HAL di accedere all'elemento sicuro. I fornitori di SE possono definire un identificatore univoco UUID di 16 byte. Per applicare questa regola di accesso ai moduli HAL, i fornitori di SE devono mappare questo identificatore univoco UUID di 16 byte all'UID del modulo HAL nel file XML di configurazione della mappatura UUID del fornitore.

Il servizio stabile del fornitore OMAPI aggiunge FF all'UUID, se necessario per portarlo a 20 byte, come indicato nella sezione 6.1, pagina DeviceAppID-REF-DO: 66 e definisce le regole di accesso negli elementi sicuri utilizzando questo UUID di 20 byte come riferimento all'applicazione del dispositivo.

Il nome del file di mappatura UUID del fornitore è formato dal prefisso predefinito hal_uuid_map_ e dal valore della proprietà di sistema ro.boot.product.hardware.sku

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

Il servizio stabile del fornitore OMAPI cerca questo file nelle cartelle /odm/etc/, /vendor/etc/ e /etc/. Una descrizione dettagliata del file di configurazione della mappatura UUID del fornitore è disponibile qui.

Implementazione

Per abilitare la funzionalità del servizio stabile del fornitore OMAPI in una build di destinazione, sono necessarie le seguenti modifiche.

SecureElement

SecureElement

Abilita il flag del servizio secure_element_vintf_enabled utilizzando l'overlay delle risorse nelle cartelle specifiche del dispositivo.

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

Definisci il file XML di mappatura UID e UUID per il tuo servizio.

<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>

Esegui il provisioning degli AR dell'elemento sicuro per il servizio HAL utilizzando gli UUID come riferimenti all'applicazione del dispositivo. Aggiungi una voce di mappatura nella configurazione della mappatura in cui puoi mappare questo UUID agli UID dei moduli HAL. Con questa mappatura, i fornitori consentono ai moduli HAL di accedere all'elemento sicuro. I test VTS OMAPI possono essere utilizzati come implementazioni di riferimento per l'abilitazione del servizio stabile del fornitore OMAPI nei moduli HAL.

Aggiorna la sepolicy del modulo HAL: aggiungi una regola sepolicy per il modulo HAL per consentire al relativo dominio di accedere al servizio stabile del fornitore OMAPI.

    allow hal_module_label secure_element_service:service_manager find

Connettiti al servizio stabile del fornitore OMAPI: dai moduli HAL utilizza l'etichetta del servizio del fornitore OMAPI android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default per connetterti al servizio.

Convalida

Verifica che il servizio stabile del fornitore OMAPI sia stato implementato correttamente eseguendo i test VTS OMAPI.

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases