מבוא
Open Mobile API (OMAPI) הוא ממשק API סטנדרטי המשמש לתקשורת עם Secure Element של המכשיר. לפני Android 13, רק לאפליקציות ולמודולים של מסגרת העבודה הייתה גישה לממשק הזה. המרתו לממשק יציב של ספק מאפשרת למודול ה-HAL לתקשר עם הרכיבים המאובטחים גם דרך שירות OMAPI.
הוספנו רשומת גישה חדשה ל-OMAPI עבור המודולים של HAL, בלי לשנות ממשקי API בממשק הקיים. אין צורך לבצע שינויים במודולים הקיימים של האפליקציה והמסגרת באמצעות הממשק הזה.
כחלק מתוכנית Android Ready SE, אנחנו מאפשרים להשתמש בתכונות אבטחה מרכזיות של Android, כמו Keymaster, Keymint, Identity Credentials ו-Remote Key Provisioning, ב-Secure Elements. כדי להפעיל את התכונות האלה, צריך HALs (רכיבי ספק) של התכונות האלה כדי לתקשר עם הרכיב המאובטח דרך ממשק OMAPI היציב של הספק.
ארכיטקטורת עיצוב

יצרני ציוד מקורי (OEM) שמשלבים במכשירים שלהם רכיב מאובטח ותכונות של Android Ready SE צריכים להפעיל את הממשק הזה, כי הוא מושבת כברירת מחדל. לפני העדכון הזה, כללי הגישה לרכיב מאובטח הוגדרו לפי שם החבילה או לפי גיבוב החתימות שלה (הפניה לאפליקציה במכשיר) ו-AID (הפניה לאפליקציה ברכיב מאובטח). למודולים של HAL לא היו מזהים ייחודיים כמו שמות חבילות או אישורי חתימות. עכשיו ב-Android 13, השירות היציב של הספק (Vendor Stable Service) של OMAPI מאפשר למודולים של HAL לגשת לרכיב המאובטח. ספקי SE יכולים להגדיר מזהה ייחודי (UUID) באורך 16 בייטים. כדי להחיל את כלל הגישה הזה על מודולי HAL, ספקי SE נדרשים למפות את המזהה הייחודי (UUID) באורך 16 בייטים הזה ל-UID של מודול HAL בקובץ ה-XML של הגדרת המיפוי של UUID של הספק.
שירות OMAPI Vendor Stable ממלא את ה-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 ב-build היעד, צריך לבצע את השינויים הבאים.
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>
הקצאת ה-AR של Secure Element לשירות HAL באמצעות מזהי UUID כמידע על האפליקציה במכשיר. מוסיפים רשומת מיפוי בתצורת המיפוי, שבה אפשר למפות את ה-UUID הזה למזהי UID של מודול HAL. בעזרת המיפוי הזה, ספקים מאפשרים למודולים של HAL לגשת לרכיב המאובטח. אפשר להשתמש בבדיקות VTS של OMAPI כטמעות עזרה להפעלת השירות היציב של OMAPI Vendor במודולים של 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 בוצעה בהצלחה, מריצים את בדיקות ה-VTS של OMAPI.
run vts -m VtsHalOmapiSeServiceV1_TargetTest run vts -m VtsHalOmapiSeAccessControlTestCases