Interface estável do fornecedor OMAPI,Interface estável do fornecedor OMAPI

Introdução

Open Mobile API (OMAPI) é uma API padrão usada para se comunicar com o elemento seguro de um dispositivo. Antes do Android 13, apenas aplicativos e módulos do framework tinham acesso a essa interface. Ao convertê-lo em uma interface estável do fornecedor, os módulos HAL também são capazes de se comunicar com os elementos seguros por meio do serviço OMAPI.

Uma nova entrada de acesso ao OMAPI foi adicionada para os módulos HAL sem modificar nenhuma API na interface atual existente. Não há modificações necessárias para aplicativos existentes e módulos de estrutura usando esta interface.

Como parte do programa Android Ready SE, estamos disponibilizando os principais recursos de segurança do Android, como Keymaster, Keymint, Identity Credentials e Remote Key Provisioning, no Secure Elements. Habilitar isso requer HALs (componentes do fornecedor) desses recursos para se comunicar com o elemento seguro por meio da interface estável do fornecedor OMAPI.

arquitetura de design

Arquitetura de design
Figura 1 : Arquitetura do projeto

Os OEMs que integram um Secure Element e os recursos do Android Ready SE em seus dispositivos precisam ativar essa interface, pois ela está desativada por padrão. Antes desta atualização, as regras de acesso do Secure Element eram definidas pelo nome do pacote ou seus hashes de assinatura (referência do aplicativo do dispositivo) e AID (referência do aplicativo SE). Os módulos HAL não tinham identificadores exclusivos, como nomes de pacotes ou certificados de assinatura. Agora no Android 13, o OMAPI Vendor Stable Service permite que os módulos HAL acessem o Secure Element. Os fornecedores SE podem definir um identificador único UUID de 16 bytes. Para aplicar esta regra de acesso aos módulos HAL, os fornecedores SE são obrigados a mapear este UUID de identificador exclusivo de 16 bytes para o UID do módulo HAL em seu XML de configuração de mapeamento UUID do fornecedor.

O OMAPI Vendor Stable Service preenche o UUID com FF se necessário para torná-lo 20 bytes, conforme a seção 6.1, página DeviceAppID-REF-DO: 66 e define regras de acesso em elementos seguros usando este UUID de 20 bytes como referência de aplicativo do dispositivo.

O nome do arquivo de mapeamento UUID do fornecedor é formado com o prefixo predefinido hal_uuid_map_ e anexado com o valor da propriedade do sistema ro.boot.product.hardware.sku

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

O serviço OMAPI Vendor Stable procura esse arquivo nas pastas /odm/etc/ , /vendor/etc/ e /etc/ . A descrição detalhada do arquivo de configuração de mapeamento UUID do fornecedor está disponível aqui .

Implementação

As alterações a seguir são necessárias para habilitar o recurso OMAPI Vendor Stable Service em uma compilação de destino.

SecureElement

SecureElement

Ative o sinalizador de serviço secure_element_vintf_enabled usando a sobreposição de recursos nas pastas específicas do dispositivo.

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

Defina o xml de mapeamento UID e UUID para seu serviço.

<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>

Provisione os ARs de Elemento Seguro para o serviço HAL usando UUIDs como referências de aplicativo de dispositivo. Adicione uma entrada de mapeamento na configuração de mapeamento onde você pode mapear este UUID para o(s) UID(s) do(s) módulo(s) HAL. Com este mapeamento, os fornecedores estão permitindo que os módulos HAL acessem o Secure Element. Os testes OMAPI VTS podem ser usados ​​como implementações de referência para habilitar o OMAPI Vendor Stable Service em módulos HAL.

Atualize a política de segurança do módulo HAL: adicione a regra de política de segurança para o módulo HAL para permitir que seu domínio acesse o serviço estável do fornecedor OMAPI.

    allow hal_module_label secure_element_service:service_manager find

Conecte-se ao serviço estável do fornecedor OMAPI: Nos módulos HAL, use o rótulo de serviço do fornecedor OMAPI android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default para se conectar ao serviço.

Validação

Valide se o OMAPI Vendor Stable Service foi implementado com sucesso executando testes OMAPI VTS .

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases