مقدّمة
فتح Mobile API (OMAPI) هي واجهة برمجة تطبيقات قياسية تُستخدَم للاتصال ببروتوكول أمان الجهاز العنصر. قبل نظام التشغيل Android 13، كانت التطبيقات ووحدات أُطر العمل فقط هي الوصول إلى هذه الواجهة. عن طريق تحويلها إلى واجهة ثابتة للمورد، كما أن وحدات HAL قادرة أيضًا على الاتصال بالعناصر الآمنة من خلال خدمة OMAPI.
تمت إضافة إدخال وصول جديد إلى OMAPI لوحدات HAL التي لا تحتوي على تعديل أي واجهات برمجة تطبيقات في الواجهة الحالية. لا يوجد التعديلات المطلوبة لوحدات التطبيقات وأُطر العمل الحالية باستخدام هذه الواجهة.
كجزء من برنامج "دمج شريحة العنصر الآمن" من Android نعمل على تطوير ميزات أمان Android الأساسية، مثل Keymaster وKeymint توفُّر بيانات اعتماد الهوية وتوفير مفتاح التحكم عن بُعد على الأجهزة الآمنة العناصر. يتطلب تفعيل هذه الإعدادات HALs (مكونات المورد) من هذه للاتصال بالعنصر الآمن عبر مورِّد OMAPI وواجهة ثابتة.
هندسة التصميم
![هندسة التصميم](https://source.android.google.cn/static/docs/security/images/omapi-design-architecture.png?authuser=9&hl=ar)
يدمج المصنّعون الأصليون للأجهزة ميزات العنصر الآمن (Secure Element) وAndroid Ready SE (العنصر الآمن) الجاهز لنظام التشغيل Android في يجب على الأجهزة تفعيل هذه الواجهة بسبب إيقافها تلقائيًا. قبل هذا التحديث، تم تحديد قواعد الوصول إلى "العناصر الآمنة" من خلال الحزمة الاسم أو تجزئات توقيعه (مرجع تطبيق الجهاز) وAID (مرجع طلب شريحة العنصر الآمن). عدم توفّر معرّفات فريدة لوحدات 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