Interfaz estable del proveedor de OMAPI

Introducción

API de Open Mobile (OMAPI) es una API estándar que se usa para comunicarse con las APIs de Secure Elemento. Antes de Android 13, solo las aplicaciones y los módulos del framework tenían acceso a esta interfaz. Al convertirla en una interfaz estable del proveedor, Los módulos de la 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 cualquier API en la interfaz existente. No hay modificaciones necesarias para los módulos de la aplicación y del framework existentes con esta interfaz.

Como parte del programa Android Ready SE estamos creando funciones de seguridad fundamentales de Android, como Keymaster, Keymint Las credenciales de identidad y el aprovisionamiento de claves remotas están disponibles en Secure Elementos. Para habilitar estas funciones, se requieren HAL (componentes de proveedores) de estas para comunicarse con el Elemento seguro a través del proveedor OMAPI y mantener una interfaz estable.

Arquitectura de diseño

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

OEMs que integran un Elemento seguro y funciones de Android Ready SE en sus Los dispositivos deben habilitar esta interfaz, ya que está inhabilitada de forma predeterminada. Antes de esta actualización, el paquete definía las reglas de acceso para el Elemento seguro. nombre o sus hashes de firma (referencia de aplicación de dispositivo) y AID (referencia de la aplicación de SE). Los módulos HAL no tenían identificadores únicos como nombres de paquetes o certificados de firma. Ahora, en Android 13, la API de OMAPI El servicio estable del proveedor permite que los módulos de 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 para UID del módulo HAL en su proveedor XML de configuración de asignación de UUID.

El servicio estable del proveedor de OMAPI rellena el UUID con FF si es necesario para que sea de 20 bytes, según la sección 6.1 Página DeviceAppID-REF-DO: 66 y define las reglas de acceso en usando este UUID de 20 bytes como referencia de la aplicación del dispositivo.

El nombre del archivo de asignación del UUID del proveedor se forma con el prefijo predefinido hal_uuid_map_ y se le agrega el valor del sistema propiedad 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 /odm/etc/, /vendor/etc/ y /etc/ individuales. Descripción detallada de la configuración de la asignación del UUID del proveedor archivo está disponible aquí.

Implementación

Se requieren los siguientes cambios para habilitar la versión estable del proveedor de OMAPI Función del servicio en una compilación de destino.

Elemento seguro

SecureElement

Habilita la marca de servicio. secure_element_vintf_enabled con la superposición de recursos en y 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 las AR del Elemento seguro para el servicio de HAL mediante UUIDs como referencias de aplicaciones de dispositivos. Agrega una entrada de asignación en la asignación en la que puedes asignar este UUID a los UID del módulo HAL. Con este los proveedores de mapas permiten que los módulos HAL accedan al Elemento seguro. Pruebas de VTS de OMAPI se pueden usar como implementaciones de referencia para habilitar el proveedor de OMAPI El servicio estable en los módulos de HAL

Actualiza la política del módulo de HAL: Agrega una regla de política para permitir el acceso del módulo de HAL. su dominio para acceder al servicio estable del proveedor de OMAPI.

    allow hal_module_label secure_element_service:service_manager find

Conéctate al servicio estable del proveedor OMAPI: Usa el proveedor OMAPI desde los módulos HAL etiqueta de servicio android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default para conectarse al servicio.

Validación

Valide que el servicio estable del proveedor de OMAPI se haya implementada ejecutando Pruebas de VTS de OMAPI.

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases