Interface stable du fournisseur OMAPI

Introduction

L'API Open Mobile (OMAPI) est une API standard utilisée pour communiquer avec l'élément sécurisé d'un appareil. Avant Android 13, seules les applications et les modules de framework avaient accès à cette interface. En le convertissant en interface stable du fournisseur, les modules HAL peuvent également communiquer avec les éléments sécurisés via le service OMAPI.

Une nouvelle entrée d'accès à OMAPI a été ajoutée pour les modules HAL sans modifier aucune API de l'interface existante. Aucune modification n'est requise pour les modules d'application et de framework existants qui utilisent cette interface.

Dans le cadre du programme Android Ready SE, nous mettons à disposition des fonctionnalités de sécurité Android de base telles que Keymaster, Keymint, les identifiants d'identité et le provisionnement de clés à distance sur les composants sécurisés. Pour les activer, les HAL (composants du fournisseur) de ces fonctionnalités doivent communiquer avec le composant sécurisé via l'interface stable du fournisseur OMAPI.

Architecture de la conception

Architecture de la conception
Figure 1: Architecture de la conception

Les OEM qui intègrent un composant sécurisé et des fonctionnalités Android Ready SE à leurs appareils doivent activer cette interface, car elle est désactivée par défaut. Avant cette mise à jour, les règles d'accès au composant sécurisé étaient définies par le nom du package ou ses hachages de signature (référence de l'application de l'appareil) et l'AID (référence de l'application du composant sécurisé). Les modules HAL ne disposaient pas d'identifiants uniques tels que des noms de package ou des certificats de signature. Désormais, dans Android 13, le service stable du fournisseur OMAPI permet aux modules HAL d'accéder au composant sécurisé. Les fournisseurs de SE peuvent définir un UUID d'identifiant unique de 16 octets. Pour appliquer cette règle d'accès aux modules HAL, les fournisseurs de SE doivent mapper cet UUID à 16 octets sur l'UID du module HAL dans leur fichier XML de configuration de mappage d'UUID du fournisseur.

Le service stable du fournisseur OMAPI remplit l'UUID avec FF si nécessaire pour le faire passer à 20 octets, conformément à la section 6.1, page DeviceAppID-REF-DO: 66, et définit des règles d'accès dans les éléments sécurisés à l'aide de cet UUID de 20 octets comme référence d'application de l'appareil.

Le nom du fichier de mappage de l'UUID du fournisseur est formé avec le préfixe prédéfini hal_uuid_map_ et la valeur de la propriété système ro.boot.product.hardware.sku est ajoutée à la fin.

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

Le service OMAPI Vendor Stable recherche ce fichier dans les dossiers /odm/etc/, /vendor/etc/ et /etc/. Vous trouverez une description détaillée du fichier de configuration de mappage des UUID du fournisseur sur cette page.

Implémentation

Les modifications suivantes sont requises pour activer la fonctionnalité de service stable du fournisseur OMAPI sur un build cible.

SecureElement

SecureElement

Activez l'indicateur de service secure_element_vintf_enabled à l'aide de la superposition de ressources dans les dossiers spécifiques à l'appareil.

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

Définissez le fichier XML de mappage des UID et des UUID pour votre service.

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

Provisionnez les AR de composant sécurisé pour le service HAL à l'aide d'UUID en tant que références d'application de l'appareil. Ajoutez une entrée de mappage dans la configuration de mappage, où vous pouvez mapper cet UUID aux UID du module HAL. Avec ce mappage, les fournisseurs autorisent les modules HAL à accéder au composant sécurisé. Les tests VTS OMAPI peuvent être utilisés comme implémentations de référence pour activer le service stable du fournisseur OMAPI dans les modules HAL.

Mise à jour de la stratégie de sécurité du module HAL: ajoutez une règle de stratégie de sécurité pour le module HAL afin d'autoriser son domaine à accéder au service stable du fournisseur OMAPI.

    allow hal_module_label secure_element_service:service_manager find

Se connecter au service stable du fournisseur OMAPI: à partir des modules HAL, utilisez le libellé de service du fournisseur OMAPI android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default pour vous connecter au service.

Validation

Vérifiez que le service stable du fournisseur OMAPI a bien été implémenté en exécutant des tests OMAPI VTS.

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases