Introduzione
Open Mobile API (OMAPI) è un'API standard utilizzata per comunicare con l'elemento di sicurezza di un dispositivo. Prima di Android 13, solo le applicazioni e i moduli del framework avevano accesso a questa interfaccia. Se la converti in un'interfaccia stabile del fornitore, i moduli HAL sono in grado di comunicare anche con gli elementi di sicurezza tramite il servizio OMAPI.
È stata aggiunta una nuova voce di accesso a OMAPI per i moduli HAL senza dover modificare alcuna API nell'interfaccia esistente. Non sono necessarie modifiche ai moduli di applicazioni e framework esistenti che utilizzano questa interfaccia.
Nell'ambito del programma Android Ready SE, stiamo rendendo disponibili su Secure Elements le funzionalità di sicurezza di Android principali, come Keymaster, Keymint, Identity Credentials e il provisioning delle chiavi da remoto. Per attivarle, è necessario che gli HAL (componenti del fornitore) di queste funzionalità comunichino con il Secure Element tramite l'interfaccia stabile del fornitore OMAPI.
Architettura del design

Gli OEM che integrano un Secure Element e funzionalità Android Ready SE nei propri dispositivi devono attivare questa interfaccia perché è disattivata per impostazione predefinita. Prima di questo aggiornamento, le regole di accesso all'elemento sicuro erano definite in base al nome del pacchetto o agli hash della firma (riferimento all'applicazione del dispositivo) e all'AID (riferimento all'applicazione dell'elemento sicuro). 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 identificatore univoco di 16 byte. Per applicare questa regola di accesso ai moduli HAL, i fornitori di SE devono mappare questo UUID identificativo univoco di 16 byte all'UID del modulo HAL nel file 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, DeviceAppID-REF-DO pagina: 66 e definisce le regole di accesso negli elementi protetti 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 OMAPI Vendor Stable cerca questo file nelle
cartelle /odm/etc/
, /vendor/etc/
e /etc/
. La descrizione dettagliata del file di configurazione della mappatura degli UUID del fornitore è disponibile qui.
Implementazione
Per attivare la funzionalità del 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 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 delle AR del Secure Element per il servizio HAL utilizzando gli UUID come riferimenti alle applicazioni del dispositivo. Aggiungi una voce di mappatura nella configurazione della mappatura in cui puoi mappare questo UUID agli UID del modulo HAL. Con questa mappatura, i fornitori consentono ai moduli HAL di accedere al Secure Element. I test VTS OMAPI possono essere utilizzati come implementazioni di riferimento per attivare il servizio stabile del fornitore OMAPI nei moduli HAL.
Aggiorna il file sepolicy del modulo HAL: aggiungi la 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
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