Interfaccia stabile del fornitore OMAPI

Introduzione

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

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

Nell'ambito del programma Android Ready SE stiamo rendendo disponibili funzionalità di sicurezza Android di base come Keymaster, KeyMint, Identity Credentials e Remote Key Provisioning su Secure Elements. L'attivazione di queste funzionalità richiede che le HAL (componenti del fornitore) comunichino con l'elemento sicuro tramite l'interfaccia stabile del fornitore OMAPI.

Progettare l'architettura

Design Architecture
Figura 1: architettura di progettazione

Gli OEM che integrano un Secure Element e le funzionalità Android Ready SE nei loro dispositivi devono abilitare questa interfaccia, poiché è disattivata per impostazione predefinita. Prima di questo aggiornamento, le regole di accesso all'elemento sicuro erano definite dal nome del pacchetto o dai relativi hash delle firme (riferimento all'applicazione del dispositivo) e dall'AID (riferimento all'applicazione SE). I moduli HAL non avevano identificatori univoci come nomi di pacchetti o certificati di firma. Ora in Android 13, il servizio stabile del fornitore OMAPI consente ai moduli HAL di accedere all'elemento sicuro. I fornitori di SE possono definire un UUID (Unique Identifier) univoco 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 riempie l'UUID con FF, 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 dell'applicazione del dispositivo.

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

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

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

Implementazione

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

SecureElement

SecureElement

Attiva il flag di 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 di 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 alle applicazioni del dispositivo. Aggiungi una voce di mapping nella configurazione di mapping in cui puoi mappare questo UUID agli UID del modulo 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'attivazione del servizio stabile del fornitore OMAPI nei moduli HAL.

Aggiorna sepolicy del modulo HAL: aggiungi la regola sepolicy per il modulo HAL per consentire al suo 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 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