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 modules de framework avaient accès à cette interface. En le convertissant en une interface stable auprès du fournisseur, les modules HAL sont également capables de 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 structure existants utilisant cette interface.

Dans le cadre du programme Android Ready SE, nous proposons des fonctionnalités de sécurité Android de base telles que Keymaster, Keymint, Identity Credentials et Remote Key Provisioning sur Secure Elements. Leur activation nécessite que les HAL (composants du fournisseur) de ces fonctionnalités communiquent 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 intégrant les fonctionnalités Secure Element et 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 à Secure Element étaient définies par le nom du package ou ses hachages de signature (référence de l'application de l'appareil) et AID (référence de l'application SE). Les modules HAL n'avaient pas d'identifiants uniques comme les noms de packages ou les certificats de signature. Désormais dans Android 13, le service OMAPI Vendor Stable permet aux modules HAL d'accéder à l'élément sécurisé. Les fournisseurs SE peuvent définir un identifiant unique UUID de 16 octets. Pour appliquer cette règle d'accès aux modules HAL, les fournisseurs SE doivent mapper cet identifiant unique de 16 octets UUID à l'UID du module HAL dans la configuration XML de mappage de l'UUID de leur fournisseur.

Le service stable du fournisseur OMAPI complète l'UUID avec FF si nécessaire pour le rendre à 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 en utilisant cet UUID de 20 octets comme référence d'application de périphérique.

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 de mappage UUID du fournisseur est disponible ici .

Mise en œuvre

Les modifications suivantes sont requises pour activer la fonctionnalité OMAPI Vendor Stable Service sur une version cible.

Élément sécurisé

Élément sécurisé

Activez l' indicateur de service secure_element_vintf_enabled à l'aide de la superposition de ressources dans les dossiers spécifiques au périphérique.

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

Définissez l’UID et le XML de mappage 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 en utilisant les UUID comme références d’application de périphérique. 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 à Secure Element. Les tests OMAPI VTS peuvent être utilisés comme implémentations de référence pour activer le service OMAPI Vendor Stable dans les modules HAL.

Mettre à jour la politique de sécurité du module HAL : ajoutez une règle de politique de sécurité pour le module HAL afin de permettre à leur 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 l'étiquette 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 été implémenté avec succès en exécutant des tests OMAPI VTS .

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases