OMAPI供應商穩定接口,OMAPI供應商穩定接口

介紹

開放行動 API (OMAPI) 是用於與裝置的安全元件進行通訊的標準 API。在 Android 13 之前,只有應用程式和框架模組可以存取此介面。透過將其轉換為供應商穩定的接口,HAL 模組還能夠透過 OMAPI 服務與安全元件進行通訊。

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

作為Android Ready SE 計劃的一部分,我們正在 Secure Elements 上提供 Keymaster、Keymint、身分憑證和遠端金鑰配置等核心 Android 安全功能。啟用這些功能需要這些功能的 HAL(供應商元件)透過 OMAPI 供應商穩定介面與安全元件進行通訊。

設計架構

設計架構
圖1 :設計架構

將 Secure Element 和 Android Ready SE 功能整合到其裝置中的 OEM 需要啟用此接口,因為預設情況下該接口處於停用狀態。在此更新之前,安全元素存取規則是透過套件名稱或其簽章雜湊(裝置應用程式引用)和 AID(SE 應用程式引用)定義的。 HAL 模組沒有唯一標識符,例如套件名稱或簽名證書。現在在 Android 13 中,OMAPI 供應商穩定服務允許 HAL 模組存取安全元件。 SE供應商可以定義一個16位元組的唯一識別碼UUID。若要將此存取規則套用於 HAL 模組,SE 供應商需要在其供應商 UUID 對應配置 XML 中將此 16 位元組唯一識別碼 UUID 對應到 HAL 模組 UID。

如有必要,OMAPI 供應商穩定服務會以 FF 填入 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 供應商穩定服務功能,需要進行下列變更。

安全元素

安全元素

使用裝置特定資料夾下的資源覆寫啟用服務標誌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