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

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
run vts -m VtsHalOmapiSeServiceV1_TargetTest
run vts -m VtsHalOmapiSeAccessControlTestCases