Interface estável do fornecedor OMAPI

Introdução

Abrir a API Mobile (OMAPI) é uma API padrão usada para se comunicar com o servidor Secure Elemento. Antes do Android 13, apenas aplicativos e módulos de framework tinham acesso a essa interface. Ao fazer a conversão para uma interface estável do fornecedor, Os módulos HAL também são capazes de se comunicar com os elementos de segurança pelo serviço OMAPI.

Uma nova entrada de acesso à OMAPI foi adicionada aos módulos HAL sem modificar as APIs da interface atual. Não há modificações necessárias para módulos de aplicativo e framework usando essa interface.

Como parte do programa Android Ready SE estamos criando recursos de segurança essenciais para o Android, como Keymaster, Keymint, Credenciais de identidade e provisionamento de chaves remotas disponíveis no Secure Elementos. A ativação desses recursos exige HALs (componentes do fornecedor) se comuniquem com o elemento de segurança por meio do fornecedor OMAPI interface estável.

Arquitetura de design

Arquitetura de design
Figura 1: arquitetura de design

OEMs que integram um elemento de segurança e recursos do Android Ready SE nos seus Os dispositivos precisam ativar essa interface, já que ela está desativada por padrão. Antes desta atualização, as regras de acesso do Elemento de segurança eram definidas pelo pacote nome ou os hashes de assinatura dele (referência de aplicativos 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, a OMAPI O Serviço estável do fornecedor permite que os módulos da HAL acessem o Elemento de segurança. Os fornecedores de SE podem definir um UUID de identificador exclusivo de 16 bytes. Para aplicar essa regra de acesso aos módulos HAL, os fornecedores do SE são obrigados a mapear esse UUID de identificador exclusivo de 16 bytes para o UID do módulo HAL no fornecedor XML de configuração de mapeamento de UUID.

O serviço estável do fornecedor OMAPI preenche o UUID com FF, se necessário para ter 20 bytes, conforme a seção 6,1, página DeviceAppID-REF-DO: 66 e define regras de acesso em modo seguro. usando esse UUID de 20 bytes como referência de aplicativo de dispositivo.

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

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

O serviço estável do fornecedor OMAPI pesquisa esse arquivo em /odm/etc/, /vendor/etc/ e /etc/ pastas. Descrição detalhada da configuração de mapeamento de UUID do fornecedor arquivo está disponível aqui.

Implementação

As seguintes mudanças são necessárias para ativar a versão estável do fornecedor OMAPI Recurso de serviço em um build de destino.

Elemento seguro

SecureElement (link em inglês)

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

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

Defina o XML de mapeamento de UID e UUID do 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 de segurança para o serviço da HAL usando UUIDs como referências de aplicativos do dispositivo. Adicionar uma entrada de mapeamento ao mapeamento config em que é possível mapear esse UUID para os UIDs do módulo HAL. Com este os fornecedores de mapeamento estão permitindo que os módulos da HAL acessem o Elemento de segurança. Testes OMAPI VTS podem ser usadas como implementações de referência para ativar o fornecedor OMAPI Serviço estável em módulos HAL.

Atualização do módulo HAL: sepolicy: adicione regra sepolicy ao módulo HAL para permitir para acessar o serviço estável do fornecedor OMAPI.

    allow hal_module_label secure_element_service:service_manager find

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

Validação

Valide se o serviço estável do fornecedor OMAPI foi implementado executando Testes OMAPI VTS.

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases