Introducción
La API de Open Mobile (OMAPI) es una API estándar que se usa para comunicarse con el Elemento seguro de un dispositivo. Antes de Android 13, solo las aplicaciones y los módulos del framework tenían acceso a esta interfaz. Si los conviertes en una interfaz estable de proveedor, los módulos HAL también pueden comunicarse con los elementos seguros a través del servicio OMAPI.
Se agregó una nueva entrada de acceso a OMAPI para los módulos HAL sin modificar ninguna API en la interfaz existente actual. No se requieren modificaciones en los módulos existentes de la aplicación y del framework que usan esta interfaz.
Como parte del programa Android Ready SE, estamos haciendo que las funciones de seguridad principales de Android, como Keymaster, KeyMint, las credenciales de identidad y el aprovisionamiento remoto de claves, estén disponibles en elementos seguros. Para habilitar estas funciones, se requieren HALs (componentes del proveedor) que se comuniquen con el elemento seguro a través de la interfaz estable del proveedor de OMAPI.
Diseña la arquitectura

Los OEM que integran un elemento seguro y funciones de SE compatible con Android en sus dispositivos deben habilitar esta interfaz, ya que está inhabilitada de forma predeterminada. Antes de esta actualización, las reglas de acceso al elemento seguro se definían por nombre de paquete o sus hashes de firma (referencia de la aplicación del dispositivo) y AID (referencia de la aplicación del SE). Los módulos HAL no tenían identificadores únicos, como nombres de paquetes o certificados de firma. Ahora, en Android 13, el servicio estable para proveedores de OMAPI permite que los módulos HAL accedan al elemento seguro. Los proveedores de SE pueden definir un UUID de identificador único de 16 bytes. Para aplicar esta regla de acceso a los módulos HAL, los proveedores de SE deben asignar este UUID de identificador único de 16 bytes al UID del módulo HAL en su XML de configuración de asignación de UUID del proveedor.
El servicio estable del proveedor de OMAPI agrega FF al UUID si es necesario para que tenga 20 bytes, según la sección 6.1, página DeviceAppID-REF-DO: 66, y define reglas de acceso en elementos seguros con este UUID de 20 bytes como referencia de la aplicación del dispositivo.
El nombre del archivo de asignación de UUID del proveedor se forma con el prefijo predefinido
hal_uuid_map_
y se le agrega el valor de la propiedad del sistema
ro.boot.product.hardware.sku
.
hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml
El servicio estable del proveedor de OMAPI busca este archivo en las carpetas /odm/etc/
, /vendor/etc/
y /etc/
. Aquí puedes encontrar una descripción detallada del archivo de configuración de la asignación del UUID del proveedor.
Implementación
Se requieren los siguientes cambios para habilitar la función de servicio estable para proveedores de OMAPI en una compilación de destino.
SecureElement
SecureElement
Habilita la marca de servicio
secure_element_vintf_enabled
con la superposición de recursos en las carpetas específicas del dispositivo.
<bool name="secure_element_vintf_enabled">true</bool>
Define el XML de asignación de UID y UUID para tu servicio.
<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>
Aprovisiona los AR de Secure Element para el servicio HAL con UUID como referencias de aplicaciones del dispositivo. Agrega una entrada de asignación en la configuración de asignación donde puedas asignar este UUID a los UID de los módulos de HAL. Con esta asignación, los proveedores permiten que los módulos HAL accedan al Elemento seguro. Las pruebas de VTS de OMAPI se pueden usar como implementaciones de referencia para habilitar el servicio estable de proveedor de OMAPI en los módulos HAL.
Actualiza la sepolicy del módulo HAL: Agrega una regla de sepolicy para que el módulo HAL permita que su dominio acceda al servicio estable de proveedor de OMAPI.
allow hal_module_label secure_element_service:service_manager find
Conéctate al servicio estable de proveedor de OMAPI: Desde los módulos HAL, usa la etiqueta de servicio de proveedor de OMAPI
android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default
para conectarte al servicio.
Validación
Ejecuta las pruebas de VTS de OMAPI para validar que el servicio estable del proveedor de OMAPI se haya implementado correctamente.
run vts -m VtsHalOmapiSeServiceV1_TargetTest run vts -m VtsHalOmapiSeAccessControlTestCases