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

מבוא

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

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

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

תכנון ארכיטקטורה

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

יצרני ציוד מקורי שילבו רכיב מאובטח ותכונות Android Ready SE ב מכשירים צריכים להפעיל את הממשק הזה כי הוא מושבת כברירת מחדל. לפני העדכון הזה של כללי הגישה לרכיב מאובטח הוגדרו לפי חבילה שם או גיבובי חתימה (הפניה לאפליקציות מכשיר) ו-AID (הפנייה לבקשת SE). למודולים של HAL לא היו מזהים ייחודיים כמו שמות חבילות או אישורי חתימה. עכשיו ב-Android 13, OMAPI השירות היציב של הספק מאפשר למודולים של HAL לגשת לרכיב המאובטח. ספקי SE יכולים להגדיר UUID ייחודי של 16 בייטים. כדי להחיל את כלל הגישה הזה על מודולים של HAL, ספקי SE נדרשים למפות UUID ייחודי של 16 בייטים למודול HAL בספק שלהם XML של הגדרת המיפוי UUID.

השירות היציב של ספק OMAPI מתקן את ה-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 של הספק מחפש את הקובץ הזה בקטע /odm/etc/, /vendor/etc/ וגם /etc/ תיקיות. תיאור מפורט של הגדרת המיפוי UUID של הספק הקובץ זמין כאן.

הטמעה

השינויים הבאים נדרשים כדי להפעיל את יציבות הספק OMAPI תכונת שירות ב-build יעד.

רכיב מאובטח

רכיב מאובטח

הפעלת דגל השירות 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 המאובטחים של שירות ה-HAL באמצעות מזהי UUID, בתור הפניות לאפליקציות במכשירים שונים. הוספת רשומת מיפוי למיפוי הגדרה שלפיה אפשר למפות את ה-UUID הזה למזהי UID של מודול HAL. עכשיו אפשר ספקי מיפוי מאפשרים למודולים של HAL לגשת לרכיב Secure Element. בדיקות 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