Interface stable du fournisseur OMAPI

Introduction

L'Open Mobile API (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 du 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 dans l'interface existante actuelle. Aucune modification n'est requise pour les modules d'application et de framework existants utilisant 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 et le provisionnement de clés à distance sur les éléments sécurisés. Pour les activer, les HAL (composants du fournisseur) de ces fonctionnalités doivent communiquer avec l'élément sécurisé via l'interface stable du fournisseur OMAPI.

Architecture de conception

Architecture de conception
Figure 1 : Architecture de conception

Les OEM qui intègrent un élément sécurisé et des fonctionnalités Android Ready SE dans 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 à l'élément 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 SE). Les modules HAL ne disposaient pas d'identifiants uniques tels que des noms de package ou des certificats de signature. Dans Android 13, le service OMAPI Vendor Stable permet aux modules HAL d'accéder à l'élément sécurisé. Les fournisseurs d'éléments sécurisés peuvent définir un UUID (identifiant unique universel) de 16 octets. Pour appliquer cette règle d'accès aux modules HAL, les fournisseurs SE doivent mapper cet UUID d'identifiant unique de 16 octets à l'UID du module HAL dans leur fichier XML de configuration de mappage d'UUID de fournisseur.

Le service OMAPI Vendor Stable complète l'UUID avec FF si nécessaire pour le porter à 20 octets, conformément à la section 6.1, page DeviceAppID-REF-DO : 66 et définit des règles d'accès dans des é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 UUID du fournisseur est formé avec le préfixe prédéfini hal_uuid_map_ et complété par la valeur de la propriété système ro.boot.product.hardware.sku.

    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/. Une description détaillée du fichier de configuration du mappage UUID du fournisseur est disponible ici.

Implémentation

Les modifications suivantes sont nécessaires pour activer la fonctionnalité de service OMAPI Vendor Stable sur une version 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 UID et 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 Secure Element 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. Grâce à ce mappage, les fournisseurs autorisent les modules HAL à accéder à l'élément 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.

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

    allow hal_module_label secure_element_service:service_manager find

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

Validez que le service OMAPI Vendor Stable a bien été implémenté en exécutant les tests VTS OMAPI.

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases