Interfaz estable de proveedor de OMAPI

Introducción

Open Mobile API (OMAPI) es una API estándar que se utiliza para comunicarse con el elemento seguro de un dispositivo. Antes de Android 13, solo las aplicaciones y los módulos del marco tenían acceso a esta interfaz. Al convertirlo en una interfaz estable del proveedor, los módulos HAL también son capaces de 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 para los módulos de marco y aplicación existentes que utilizan esta interfaz.

Como parte del programa Android Ready SE, estamos poniendo a disposición funciones de seguridad básicas de Android como Keymaster, Keymint, credenciales de identidad y aprovisionamiento remoto de claves en Secure Elements. Habilitarlos requiere que los HAL (componentes del proveedor) de estas funciones se comuniquen con el elemento seguro a través de la interfaz estable del proveedor OMAPI.

Arquitectura de diseño

Arquitectura de diseño
Figura 1 : Arquitectura de diseño

Los OEM que integran funciones Secure Element y Android Ready SE en sus dispositivos deben habilitar esta interfaz, ya que está deshabilitada de forma predeterminada. Antes de esta actualización, las reglas de acceso a Secure Element se definían por el nombre del paquete o sus hashes de firma (referencia de la aplicación del dispositivo) y AID (referencia de la aplicación 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 del proveedor OMAPI permite que los módulos HAL accedan al elemento seguro. Los proveedores de SE pueden definir un identificador único UUID 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 el XML de configuración de asignación de UUID de su proveedor.

El servicio estable del proveedor OMAPI rellena el UUID con FF 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 utilizando este UUID de 20 bytes como referencia de la aplicación del dispositivo.

El nombre del archivo de asignación UUID del proveedor se forma con el prefijo predefinido hal_uuid_map_ y se le añade 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 OMAPI Vendor Stable busca este archivo en las carpetas /odm/etc/ , /vendor/etc/ y /etc/ . La descripción detallada del archivo de configuración de mapeo UUID del proveedor está disponible aquí .

Implementación

Se requieren los siguientes cambios para habilitar la función OMAPI Vendor Stable Service en una compilación de destino.

Elemento seguro

Elemento seguro

Habilite el indicador de servicio secure_element_vintf_enabled usando la superposición de recursos en carpetas específicas del dispositivo.

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

Defina el xml de asignación de UID y UUID para su 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>

Aprovisione los AR de Secure Element para el servicio HAL utilizando UUID como referencias de aplicaciones de dispositivos. Agregue una entrada de asignación en la configuración de asignación donde pueda asignar este UUID a los UID del módulo HAL. Con este mapeo, los proveedores permiten que los módulos HAL accedan a Secure Element. Las pruebas OMAPI VTS se pueden utilizar como implementaciones de referencia para habilitar el servicio estable de proveedores OMAPI en módulos HAL.

Actualizar la política de seguridad del módulo HAL: agregue una regla de política de seguridad para el módulo HAL para permitir que su dominio acceda al servicio estable del proveedor OMAPI.

    allow hal_module_label secure_element_service:service_manager find

Conéctese al servicio estable del proveedor OMAPI: desde los módulos HAL, use la etiqueta de servicio del proveedor OMAPI android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default para conectarse al servicio.

Validación

Valide que el servicio estable de proveedores de OMAPI se haya implementado correctamente ejecutando pruebas de OMAPI VTS .

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases