Interfaccia stabile del fornitore OMAPI

introduzione

Open Mobile API (OMAPI) è un'API standard utilizzata per comunicare con Secure Element 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'attuale interfaccia esistente. Non sono necessarie modifiche per le applicazioni esistenti e i moduli framework che utilizzano questa interfaccia.

Nell'ambito del programma Android Ready SE stiamo rendendo disponibili su Secure Elements funzionalità di sicurezza Android fondamentali come Keymaster, Keymint, credenziali di identità e provisioning di chiavi remote. L'abilitazione di questi richiede che gli HAL (componenti del fornitore) di queste funzionalità comunichino con Secure Element tramite l'interfaccia stabile del fornitore OMAPI.

Architettura di progettazione

Architettura di progettazione
Figura 1 : Architettura del progetto

Gli OEM che integrano le funzionalità Secure Element e Android Ready SE nei propri dispositivi devono abilitare questa interfaccia poiché è disabilitata per impostazione predefinita. Prima di questo aggiornamento le regole di accesso a Secure Element erano definite dal nome del pacchetto o dai relativi hash della firma (riferimento dell'applicazione del dispositivo) e AID (riferimento dell'applicazione SE). I moduli HAL non avevano identificatori univoci come nomi di pacchetti o certificati di firma. Ora in Android 13, il servizio OMAPI Vendor Stable consente ai moduli HAL di accedere a Secure Element. I fornitori SE possono definire un identificatore univoco UUID di 16 byte. Per applicare questa regola di accesso ai moduli HAL, i fornitori SE sono tenuti a mappare questo UUID identificatore univoco di 16 byte all'UID del modulo HAL nel XML di configurazione della mappatura UUID del fornitore.

Il servizio stabile del fornitore OMAPI completa l'UUID con FF, se necessario, per renderlo di 20 byte, come da sezione 6.1, pagina DeviceAppID-REF-DO: 66 e definisce le regole di accesso negli elementi sicuri utilizzando questo UUID da 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 aggiunto al 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 ricerca questo file nelle cartelle /odm/etc/ , /vendor/etc/ e /etc/ . La descrizione dettagliata del file di configurazione della mappatura UUID del fornitore è disponibile qui .

Implementazione

Sono necessarie le seguenti modifiche per abilitare la funzionalità OMAPI Vendor Stable Service su una build di destinazione.

Elemento sicuro

Elemento sicuro

Abilita il flag di servizio secure_element_vintf_enabled utilizzando la sovrapposizione delle risorse nelle cartelle specifiche del dispositivo.

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

Definisci l'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>

Fornire gli AR Secure Element per il servizio HAL utilizzando gli UUID come riferimenti all'applicazione del dispositivo. Aggiungere una voce di mappatura nella configurazione di mappatura in cui è possibile mappare questo UUID agli UID del modulo HAL. Con questa mappatura i fornitori consentono ai moduli HAL di accedere a Secure Element. I test OMAPI VTS possono essere utilizzati come implementazioni di riferimento per abilitare il servizio OMAPI Vendor Stable nei moduli HAL.

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

    allow hal_module_label secure_element_service:service_manager find

Connetti 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 connettersi al servizio.

Validazione

Convalidare che il servizio stabile del fornitore OMAPI sia stato implementato con successo eseguendo test OMAPI VTS .

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases