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

على المصنّعين الأصليّين للأجهزة الذين يدمجون ميزتَي "العنصر الآمن" و"العنصر الآمن المتوافق مع Android" في أجهزتهم تفعيل هذه الواجهة لأنّها تكون غير مفعّلة تلقائيًا. قبل هذا التعديل، كانت قواعد الوصول إلى "العنصر الآمن" محدّدة حسب اسم الحزمة أو تجزئات توقيعها (مرجع تطبيق الجهاز) وAID (مرجع تطبيق "العنصر الآمن"). لم تكن وحدات HAL تتضمّن معرّفات فريدة مثل أسماء الحِزم أو شهادات التوقيع. في الإصدار 13 من نظام التشغيل Android، تسمح خدمة OMAPI Vendor Stable Service لحِزم HAL بالوصول إلى "العنصر الآمن". يمكن لمورّدي الأجهزة الطرفية تحديد معرّف فريد UUID مكوّن من 16 بايت. لتطبيق قاعدة الوصول هذه على وحدات HAL، على مورّدي برامج التشغيل الأساسية ربط معرّف UUID الفريد المكوّن من 16 بايت بمعرّف UID الخاص بوحدة HAL في ملف XML الخاص بإعدادات ربط UUID لدى المورّد.
تضيف خدمة OMAPI Vendor Stable Service البادئة FF إلى معرّف UUID إذا لزم الأمر ليصبح 20 بايت، وفقًا للفقرة 6.1، DeviceAppID-REF-DO page: 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 " في إصدار مستهدف.
SecureElement
SecureElement
فعِّل علامة الخدمة
secure_element_vintf_enabled
باستخدام تراكب الموارد ضمن
المجلدات الخاصة بالأجهزة.
<bool name="secure_element_vintf_enabled">true</bool>
حدِّد ملف xml لتعيين UID وUUID لخدمتك.
<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>
يمكنك توفير عناوين ARP لوحدة العنصر الآمن لخدمة HAL باستخدام أرقام UUID كمراجع لتطبيقات الجهاز. أضِف إدخال تعيين في ملف تكوين التعيين الذي يمكنك من خلاله ربط هذا المعرّف الفريد العالمي(UUID) بمعرّفات وحدات HAL. من خلال هذا الربط،سماح مورّدي HAL لوحدات HAL بالوصول إلى العنصر الآمن يمكن استخدام اختبارات OMAPI VTS كعمليات تنفيذ مرجعية لتفعيل خدمة OMAPI Vendor الثابتة في وحدات HAL.
تعديل سياسة أمان وحدة HAL: أضِف قاعدة سياسة أمان لوحدة HAL للسماح لنطاقك بالوصول إلى الخدمة الثابتة الخاصة بمورّد OMAPI.
allow hal_module_label secure_element_service:service_manager find
الاتصال بخدمة OMAPI الثابتة الخاصة بالمورّد: من وحدات HAL، استخدِم android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default
تصنيف خدمة OMAPI
android.se.omapi.ISecureElementService/defaultandroid.se.omapi.ISecureElementService/default
للاتصال بالخدمة.
التحقُّق
تأكَّد من تنفيذ "خدمة OMAPI Vendor Stable" بنجاح من خلال تنفيذ اختبارات OMAPI VTS.
run vts -m VtsHalOmapiSeServiceV1_TargetTest run vts -m VtsHalOmapiSeAccessControlTestCases