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 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 para los módulos de marcos y aplicaciones existentes que usan esta interfaz.

Como parte del programa Android Ready SE, estamos poniendo a disposición funciones de seguridad básicas de Android como Keymaster, Keymint, Identity Credentials y Remote Key Provisioning en Secure Elements. Habilitarlos requiere HAL (componentes de proveedores) de estas funciones para comunicarse con el elemento seguro a través de la interfaz estable de proveedores de OMAPI.

Arquitectura de diseño

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

Los OEM que integran las funciones Secure Element y Android Ready SE en sus dispositivos deben habilitar esta interfaz, ya que está deshabilitada de manera predeterminada. Antes de esta actualización, las reglas de acceso de 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 de proveedores de 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 de proveedores de OMAPI rellena el UUID con FF si es necesario para que sea de 20 bytes, según la sección 6.1, DeviceAppID-REF-DO página: 66 y define las 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 de UUID del proveedor se forma con el prefijo predefinido hal_uuid_map_ y se agrega con 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 asignación de UUID del proveedor está disponible aquí .

Implementación

Se requieren los siguientes cambios para habilitar la función Servicio estable de proveedor de OMAPI en una compilación de destino.

elemento seguro

elemento seguro

Habilite la marca 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 puede 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 de VTS de OMAPI se pueden usar como implementaciones de referencia para habilitar el servicio estable de proveedores de OMAPI en módulos HAL.

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

    allow hal_module_label secure_element_service:service_manager find

Conéctese al servicio estable del proveedor de OMAPI: desde los módulos HAL, use la etiqueta de servicio del proveedor de 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 con éxito mediante la ejecución de pruebas VTS de OMAPI .

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases