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

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

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

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

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

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

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

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

บริการ OMAPI Vendor Stable จะเติม FF ต่อท้าย UUID หากจําเป็นเพื่อให้มีความยาว 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 ในบิลด์เป้าหมาย

SecureElement

SecureElement

เปิดใช้Flag บริการ 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 เข้าถึงองค์ประกอบที่ปลอดภัยได้ การทดสอบ 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