OMAPI ספק יציב ממשק

מבוא

Open Mobile API (OMAPI) הוא API סטנדרטי המשמש לתקשורת עם ה-Secure Element של המכשיר. לפני אנדרואיד 13, רק לאפליקציות ולמודולי מסגרת הייתה גישה לממשק הזה. על ידי המרתו לממשק יציב של הספק, מודולי HAL מסוגלים גם לתקשר עם האלמנטים המאובטחים באמצעות שירות OMAPI.

ערך גישה חדש ל-OMAPI נוסף עבור מודולי HAL מבלי לשנות ממשק API בממשק הנוכחי הנוכחי. אין צורך בשינויים עבור מודולי יישומים ומסגרת קיימים המשתמשים בממשק זה.

כחלק מתוכנית Android Ready SE, אנו הופכים תכונות אבטחה ליבה של Android כמו Keymaster, Keymint, אישורי זהות והקצאת מפתח מרחוק לזמינים ב-Secure Elements. הפעלת אלה מחייבת HAL (רכיבי ספקים) של תכונות אלה כדי לתקשר עם ה-Secure Element באמצעות הממשק היציב של ספק OMAPI.

אדריכלות עיצוב

עיצוב אדריכלות
איור 1 : ארכיטקטורת עיצוב

יצרני OEM המשלבים תכונות Secure Element ו-Android Ready SE במכשירים שלהם צריכים להפעיל את הממשק הזה מכיוון שהוא מושבת כברירת מחדל. לפני עדכון זה כללי הגישה של Secure Element הוגדרו לפי שם החבילה או ה-hash החתימה שלה (הפניה ליישום מכשיר) ו-AID (הפניה ליישום SE). למודולי HAL לא היו מזהים ייחודיים כמו שמות חבילות או תעודות חתימה. כעת באנדרואיד 13, שירות הספק היציב של OMAPI מאפשר למודולי HAL גישה ל-Secure Element. ספקי SE יכולים להגדיר UUID מזהה ייחודי של 16 בתים. כדי להחיל כלל גישה זה על מודולי HAL, ספקי SE נדרשים למפות את המזהה הייחודי UUID של 16 בתים ל-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>

הגדר את ה-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>

ספק את Secure Element ARs עבור שירות HAL תוך שימוש ב-UUID כאסמכתאות של יישומי מכשיר. הוסף ערך מיפוי בתצורת המיפוי שבו תוכל למפות את ה-UUID הזה ל-UID של מודול HAL. עם מיפוי זה ספקים מאפשרים למודולי HAL גישה ל-Secure Element. ניתן להשתמש בבדיקות OMAPI VTS כיישומי התייחסות להפעלת השירות היציב של ספק OMAPI במודולי HAL.

עדכן HAL sepolicy: הוסף כלל 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