อินเทอร์เฟซแบบเสถียรของผู้ให้บริการ OMAPI

ข้อมูลเบื้องต้น

เปิด Mobile API (OMAPI) คือ API มาตรฐานที่ใช้ในการสื่อสารกับอุปกรณ์ Secure องค์ประกอบ ก่อน Android 13 มีเพียงแอปพลิเคชันและโมดูลเฟรมเวิร์กเท่านั้นที่มี เข้าถึงอินเทอร์เฟซนี้ การแปลงไปเป็นอินเทอร์เฟซที่เสถียรของผู้ให้บริการ โมดูล HAL ยังสามารถสื่อสารกับองค์ประกอบความปลอดภัยได้อีกด้วย ผ่านบริการ OMAPI

มีการเพิ่มรายการเข้าถึง OMAPI ใหม่สำหรับโมดูล HAL ที่ไม่มี แก้ไข API ในอินเทอร์เฟซปัจจุบันที่มีอยู่ ไม่มี การแก้ไขที่จำเป็นสำหรับโมดูลแอปพลิเคชันและโมดูลเฟรมเวิร์กที่มีอยู่ โดยใช้อินเทอร์เฟซนี้

เป็นส่วนหนึ่งของโปรแกรม Android Ready SE เรากำลังสร้างฟีเจอร์ความปลอดภัยหลักของ Android เช่น Keymaster, Keymint ข้อมูลเข้าสู่ระบบข้อมูลประจำตัวและการจัดสรรคีย์ระยะไกลมีให้ใช้งานใน Secure องค์ประกอบ การเปิดใช้ผลิตภัณฑ์เหล่านี้ต้องมี HAL (องค์ประกอบของผู้ให้บริการ) ของ เพื่อสื่อสารกับองค์ประกอบความปลอดภัยผ่านทางผู้ให้บริการ OMAPI ของอินเทอร์เฟซที่เสถียร

สถาปัตยกรรมการออกแบบ

สถาปัตยกรรมการออกแบบ
ภาพที่ 1: สถาปัตยกรรมการออกแบบ

OEM ที่ผสานรวมองค์ประกอบความปลอดภัยและฟีเจอร์ SE ที่รองรับ Android เข้ากับ อุปกรณ์ต้องเปิดใช้อินเทอร์เฟซนี้เนื่องจากมีการปิดใช้โดยค่าเริ่มต้น ก่อนการอัปเดตนี้ กฎการเข้าถึงองค์ประกอบความปลอดภัยได้รับการกำหนดตามแพ็กเกจ ชื่อหรือแฮชลายเซ็น (การอ้างอิงแอปพลิเคชันอุปกรณ์) และ AID (การอ้างอิงแอปพลิเคชัน SE) โมดูล HAL ไม่มีตัวระบุที่ไม่ซ้ำกัน เช่น ชื่อแพ็กเกจหรือใบรับรองลายเซ็น ขณะนี้ใน Android 13 เครื่องมือ OMAPI บริการเสถียรของผู้ให้บริการช่วยให้โมดูล HAL เข้าถึงองค์ประกอบความปลอดภัยได้ ผู้ให้บริการ SE จะกำหนด UUID ของตัวระบุที่ไม่ซ้ำกันได้ 16 ไบต์ หากต้องการใช้กฎการเข้าถึงนี้กับโมดูล HAL ผู้ให้บริการ SE จะต้องแมป UUID ตัวระบุที่ไม่ซ้ำกันขนาด 16 ไบต์นี้ไปยัง UID ของโมดูล HAL ในผู้ให้บริการ XML การกำหนดค่าการแมป UUID

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 ฟีเจอร์บริการในบิลด์เป้าหมาย

องค์ประกอบความปลอดภัย

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 องค์ประกอบความปลอดภัยสำหรับบริการ HAL โดยใช้ UUID เป็น แอปพลิเคชันของอุปกรณ์ เพิ่มรายการการแมปในการแมป กำหนดค่าที่คุณจะแมป UUID นี้กับ UID ของโมดูล HAL ด้วยสิ่งนี้ ผู้ให้บริการการแมปอนุญาตให้โมดูล HAL เข้าถึงองค์ประกอบความปลอดภัย การทดสอบ OMAPI VTS สามารถใช้เป็นการใช้งานข้อมูลอ้างอิงสำหรับการเปิดใช้ผู้ให้บริการ OMAPI บริการที่เสถียรในโมดูล HAL

อัปเดต sepolicy ของโมดูล 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 Vendor Stable Service เรียบร้อยแล้ว ติดตั้งใช้งานโดยการเรียกใช้ การทดสอบ OMAPI VTS

    run vts -m VtsHalOmapiSeServiceV1_TargetTest
    run vts -m VtsHalOmapiSeAccessControlTestCases