OMAPIベンダーの安定したインターフェース

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

序章

Open Mobile API (OMAPI) は、デバイスのセキュア エレメントとの通信に使用される標準 API です。 Android 13 より前は、アプリケーションとフレームワーク モジュールのみがこのインターフェースにアクセスできました。これをベンダーの安定したインターフェイスに変換することで、HAL モジュールは OMAPI サービスを介してセキュア エレメントと通信することもできます。

現在の既存のインターフェイスの API を変更せずに、HAL モジュール用に OMAPI への新しいアクセス エントリが追加されました。このインターフェースを使用する既存のアプリケーションおよびフレームワーク モジュールに必要な変更はありません。

Android Ready SE プログラムの一環として、Keymaster、Keymint、ID クレデンシャル、リモート キー プロビジョニングなどのコア Android セキュリティ機能を Secure Elements で利用できるようにしています。これらを有効にするには、これらの機能の HAL (ベンダー コンポーネント) が OMAPI ベンダー安定インターフェイスを介してセキュア エレメントと通信する必要があります。

設計アーキテクチャ

設計アーキテクチャ
図 1 : 設計アーキテクチャ

セキュア エレメントと Android Ready SE 機能をデバイスに統合する OEM は、このインターフェイスが既定で無効になっているため、有効にする必要があります。この更新の前は、セキュア エレメント アクセス ルールは、パッケージ名またはその署名ハッシュ (デバイス アプリケーション参照) および AID (SE アプリケーション参照) によって定義されていました。 HAL モジュールには、パッケージ名や署名証明書などの一意の識別子がありませんでした。 Android 13 では、OMAPI Vendor Stable Service により、HAL モジュールがセキュア エレメントにアクセスできるようになりました。 SE ベンダーは、16 バイトの一意の識別子 UUID を定義できます。このアクセス ルールを HAL モジュールに適用するには、SE ベンダーは、ベンダー UUID マッピング構成 XML で、この 16 バイトの一意の識別子 UUID を HAL モジュール UID にマップする必要があります。

OMAPI Vendor Stable Service は、セクション6.1 の DeviceAppID-REF-DO ページ: 66に従って、必要に応じて UUID を FF でパディングして 20 バイトにし、この 20 バイトの UUID をデバイス アプリケーション参照として使用してセキュア エレメントでアクセス ルールを定義します。

ベンダー UUID マッピング ファイル名は、定義済みのプレフィックスhal_uuid_map_で形成され、システム プロパティro.boot.product.hardware.skuの値が付加されます。

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

OMAPI Vendor Stable サービスは、このファイルを/odm/etc//vendor/etc/ 、および/etc/フォルダーの下で検索します。ベンダー UUID マッピング構成ファイルの詳細な説明は、ここで入手できます。

実装

ターゲット ビルドで OMAPI Vendor Stable Service 機能を有効にするには、次の変更が必要です。

セキュアエレメント

セキュアエレメント

デバイス固有のフォルダーの下にあるリソース オーバーレイを使用して、サービス フラグsecure_element_vintf_enabledを有効にします。

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

サービスの UID と UUID マッピング xml を定義します。

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

UUID をデバイス アプリケーション参照として使用して、HAL サービス用のセキュア エレメント AR をプロビジョニングします。この UUID を HAL モジュール UID にマップできるマッピング構成にマッピング エントリを追加します。このマッピング ベンダーは、HAL モジュールがセキュア エレメントにアクセスできるようにします。 OMAPI VTS テストは、HAL モジュールで OMAPI Vendor Stable Service を有効にするための参照実装として使用できます。

HAL モジュールの sepolicy の更新: HAL モジュールの sepolicy ルールを追加して、ドメインが OMAPI ベンダーの安定したサービスにアクセスできるようにします。

    allow hal_module_label secure_element_service:service_manager find

OMAPI ベンダー安定サービスへの接続: HAL モジュールから、OMAPI ベンダー サービス ラベルandroid.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/defaultを使用してサービスに接続します。

検証

OMAPI VTS テストを実行して、OMAPI Vendor Stable Service が正常に実装されていることを確認します。

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases