واجهة بائع OMAPI المستقرة

مقدمة

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

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

كجزء من برنامج Android Ready SE، نقوم بتوفير ميزات أمان Android الأساسية مثل Keymaster وKeymint وبيانات اعتماد الهوية وتوفير المفاتيح عن بعد على Secure Elements. يتطلب تمكين ذلك أن تتواصل HALs (مكونات البائع) لهذه الميزات مع Secure Element عبر الواجهة الثابتة لمورد OMAPI.

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

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

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

تقوم خدمة 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 بتعيين 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>

قم بتوفير Secure Element ARs لخدمة HAL باستخدام UUIDs كمراجع لتطبيقات الجهاز. أضف إدخال تعيين في تكوين التعيين حيث يمكنك تعيين UUID هذا إلى UID (معرفات) وحدة HAL. باستخدام هذا التعيين، يسمح البائعون لوحدات HAL بالوصول إلى Secure Element. يمكن استخدام اختبارات OMAPI VTS كتطبيقات مرجعية لتمكين خدمة OMAPI Vendor Stable Service في وحدات HAL.

تحديث سياسة الخصوصية لوحدة HAL: أضف قاعدة الخصوصية لوحدة 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 Vendor Stable Service قد تم تنفيذها بنجاح عن طريق تشغيل اختبارات OMAPI VTS .

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases