OMAPI 供應商穩定版介面

簡介

Open Mobile API (OMAPI) 是用於與裝置的安全元素通訊的標準 API。在 Android 13 之前,只有應用程式和架構模組可以存取這個介面。將其轉換為供應商穩定介面後,HAL 模組也能透過 OMAPI 服務與安全元素通訊。

我們為 HAL 模組新增了 OMAPI 的存取項目,但不修改目前現有介面中的任何 API。使用此介面的現有應用程式和架構模組不需要進行任何修改。

我們將在 Android Ready SE 計畫中,提供 Keymaster、Keymint、身分憑證和遠端金鑰佈建等核心 Android 安全性功能。啟用這些功能需要這些功能的 HAL (供應商元件),才能透過 OMAPI 供應商穩定介面與安全元件通訊。

設計架構

設計架構
圖 1:設計架構

原始設備製造商 (OEM) 將安全元件和 Android Ready SE 功能整合至裝置時,需要啟用這個介面,因為該介面預設為停用狀態。在這次更新之前,安全元件存取權規則是由套件名稱或其簽名雜湊 (裝置應用程式參照) 和 AID (安全元件應用程式參照) 定義。HAL 模組沒有套件名稱或簽名憑證等專屬 ID。在 Android 13 中,OMAPI 供應商穩定服務可讓 HAL 模組存取安全元件。SE 供應商可以定義 16 個位元組的專屬 ID UUID。如要將此存取規則套用至 HAL 模組,SE 供應商必須在供應商 UUID 對應設定 XML 中,將這組 16 個位元組的 UUID 對應至 HAL 模組 UID。

OMAPI 供應商穩定版服務會視需要使用 FF 填補 UUID,讓 UUID 長度為 20 個位元組,如6.1 節所述,DeviceAppID-REF-DO 頁面:66,並使用這組 20 個位元組的 UUID 做為裝置應用程式參照資料,在安全元素中定義存取規則。

供應商 UUID 對應檔案名稱會使用預先定義的前置字串 hal_uuid_map_ 來組成,並附加系統屬性 ro.boot.product.hardware.sku 的值。

    hal_uuid_map_value_of_ro.boot.product.hardware.sku.xml

OMAPI 供應商穩定版服務會在 /odm/etc//vendor/etc//etc/ 資料夾下搜尋此檔案。如要進一步瞭解供應商 UUID 對應設定檔,請參閱這篇文章

實作

如要在目標版本中啟用 OMAPI 供應商穩定服務功能,必須進行下列變更。

SecureElement

SecureElement

使用裝置專屬資料夾中的資源重疊功能,啟用 service flag 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 供應商穩定服務。

更新 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 供應商穩定服務是否已成功導入。

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases