الواجهة الثابتة لمورّد OMAPI

مقدّمة

فتح Mobile API (OMAPI) هي واجهة برمجة تطبيقات قياسية تُستخدَم للاتصال ببروتوكول أمان الجهاز العنصر. قبل نظام التشغيل Android 13، كانت التطبيقات ووحدات أُطر العمل فقط هي الوصول إلى هذه الواجهة. عن طريق تحويلها إلى واجهة ثابتة للمورد، كما أن وحدات HAL قادرة أيضًا على الاتصال بالعناصر الآمنة من خلال خدمة OMAPI.

تمت إضافة إدخال وصول جديد إلى OMAPI لوحدات HAL التي لا تحتوي على تعديل أي واجهات برمجة تطبيقات في الواجهة الحالية. لا يوجد التعديلات المطلوبة لوحدات التطبيقات وأُطر العمل الحالية باستخدام هذه الواجهة.

كجزء من برنامج "دمج شريحة العنصر الآمن" من Android نعمل على تطوير ميزات أمان Android الأساسية، مثل Keymaster وKeymint توفُّر بيانات اعتماد الهوية وتوفير مفتاح التحكّم عن بُعد في الخدمة الآمنة العناصر. يتطلب تفعيل هذه الإعدادات HALs (مكونات المورد) من هذه للاتصال بالعنصر الآمن عبر مورِّد OMAPI وواجهة ثابتة.

هندسة التصميم

هندسة التصميم
الشكل 1: بنية التصميم

يدمج المصنّعون الأصليون للأجهزة ميزات العنصر الآمن (Secure Element) وAndroid Ready SE (العنصر الآمن) الجاهز لنظام التشغيل Android في يجب على الأجهزة تفعيل هذه الواجهة بسبب إيقافها تلقائيًا. قبل هذا التحديث، تم تحديد قواعد الوصول إلى "العناصر الآمنة" من خلال الحزمة الاسم أو تجزئات توقيعه (مرجع تطبيق الجهاز) وAID (مرجع طلب SE). عدم توفّر معرّفات فريدة لوحدات HAL مثل أسماء الحزم أو شهادات التوقيع. الآن في Android 13، واجهة برمجة التطبيقات OMAPI تسمح "خدمة المورّد الثابتة" لوحدات HAL بالوصول إلى العنصر الآمن. يمكن لمورّدي شريحة العنصر الآمن تحديد معرّف فريد عالمي فريد (UUID) بحجم 16 بايت. لتطبيق قاعدة الوصول هذه على وحدات HAL، على مورّدي شريحة العنصر الآمن تعيين معرّف UUID الفريد هذا الذي يبلغ 16 بايت إلى المعرّف الفريد لوحدة HAL في المورد ملف XML الخاص بإعداد ربط المعرّف الفريد العالمي (UUID)

تضع الخدمة الثابتة لمورّد OMAPI المعرّف الفريد العالمي (UUID) مع FF إذا لزم الأمر. لجعلها 20 بايت، حسب القسم 6.1، صفحة DeviceAppID-REF-DO: 66 وتحدد قواعد الوصول في الأمان باستخدام رقم التعريف الفريد العالمي 20 بايت هذا كمرجع لتطبيق الجهاز.

يجب إدخال اسم ملف ربط المعرّف الفريد العالمي (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

تفعيل علامة الخدمة secure_element_vintf_enabled باستخدام تراكب الموارد ضمن الخاصة بالجهاز.

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

حدِّد ملف 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>

توفير قيم الواقع المعزّز للعنصر الآمن لخدمة HAL باستخدام معرّفات UUID على النحو التالي: مراجع تطبيقات الأجهزة المختلفة. إضافة إدخال عملية الربط يمكنك من خلاله ربط معرّف UUID هذا بالمعرّفات الفريدة لوحدة HAL. مع هذا يسمح مورِّدو الربط لوحدات HAL بالوصول إلى "عنصر آمن". اختبارات OMAPI VTS يمكن استخدامها كعمليات تنفيذ مرجعية لتمكين مورّد OMAPI خدمة ثابتة في وحدات 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