رابط پایدار فروشنده OMAPI

مقدمه

Open Mobile API (OMAPI) یک API استاندارد است که برای برقراری ارتباط با عنصر امن دستگاه استفاده می شود. قبل از اندروید 13، تنها اپلیکیشن ها و ماژول های فریم ورک به این رابط دسترسی داشتند. با تبدیل آن به یک رابط پایدار فروشنده، ماژول های HAL همچنین می توانند از طریق سرویس OMAPI با عناصر امن ارتباط برقرار کنند.

یک ورودی دسترسی جدید به OMAPI برای ماژول های HAL بدون تغییر هیچ API در رابط فعلی فعلی اضافه شد. هیچ تغییری برای ماژول های برنامه و چارچوب موجود با استفاده از این رابط مورد نیاز نیست.

به‌عنوان بخشی از برنامه Android Ready SE، ویژگی‌های اصلی امنیتی اندروید مانند Keymaster، Keymint، Identity Credentials، و Remote Key Provisioning را در Secure Elements در دسترس قرار می‌دهیم. فعال کردن این ویژگی‌ها به HAL‌ها (مولفه‌های فروشنده) این ویژگی‌ها برای ارتباط با عنصر امن از طریق رابط پایدار فروشنده OMAPI نیاز دارد.

معماری طراحی

معماری طراحی
شکل 1 : معماری طراحی

OEM هایی که ویژگی های Secure Element و Android Ready SE را در دستگاه های خود ادغام می کنند، باید این رابط را فعال کنند زیرا به طور پیش فرض غیرفعال است. قبل از این به‌روزرسانی، قوانین دسترسی به عنصر امن با نام بسته یا هش امضای آن (مرجع برنامه دستگاه) و AID (مرجع برنامه کاربردی SE) تعریف می‌شد. ماژول‌های HAL دارای شناسه‌های منحصربه‌فرد مانند نام بسته یا گواهی امضا نیستند. اکنون در Android 13، سرویس OMAPI Vendor Stable به ماژول های HAL اجازه دسترسی به Secure Element را می دهد. فروشندگان SE می توانند یک UUID شناسه منحصر به فرد 16 بایتی تعریف کنند. برای اعمال این قانون دسترسی به ماژول های HAL، فروشندگان SE باید این UUID شناسه منحصر به فرد 16 بایتی را به UID ماژول HAL در پیکربندی XML نگاشت UUID فروشنده خود نگاشت کنند.

OMAPI Vendor Stable Service UUID را در صورت لزوم با FF اضافه می کند تا 20 بایت شود، طبق بخش 6.1، صفحه DeviceAppID-REF-DO: 66 و قوانین دسترسی را در عناصر امن با استفاده از این UUID 20 بایتی به عنوان مرجع برنامه دستگاه تعریف می کند.

نام فایل نگاشت 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 در یک ساخت هدف، تغییرات زیر لازم است.

SecureElement

SecureElement

پرچم سرویس secure_element_vintf_enabled را با استفاده از پوشش منابع در پوشه‌های خاص دستگاه فعال کنید.

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

UID و UUID mapping 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>

ARهای عنصر امن را برای سرویس HAL با استفاده از UUID به عنوان مرجع برنامه کاربردی دستگاه فراهم کنید. یک ورودی نگاشت را در پیکربندی نگاشت اضافه کنید تا بتوانید این UUID را به UID(های) ماژول HAL نگاشت کنید. با این نقشه برداری، فروشندگان به ماژول های HAL اجازه دسترسی به Secure Element را می دهند. تست‌های OMAPI VTS را می‌توان به عنوان پیاده‌سازی مرجع برای فعال کردن سرویس پایدار OMAPI Vendor در ماژول‌های HAL استفاده کرد.

به روز رسانی سیاست ماژول HAL: قانون sepolicy را برای ماژول HAL اضافه کنید تا دامنه آنها به سرویس پایدار فروشنده OMAPI دسترسی پیدا کند.

    allow hal_module_label secure_element_service:service_manager find

اتصال به سرویس پایدار فروشنده OMAPI: از ماژول های HAL از برچسب سرویس فروشنده OMAPI android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default برای اتصال به سرویس استفاده کنید.

اعتبار سنجی

تأیید کنید که سرویس پایدار فروشنده OMAPI با اجرای آزمایش‌های OMAPI VTS با موفقیت پیاده‌سازی شده است.

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases