OMAPI Vendor Stable Interface

บทนำ

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 การเปิดใช้งานเหล่านี้ต้องการ HAL (ส่วนประกอบผู้ขาย) ของคุณสมบัติเหล่านี้เพื่อสื่อสารกับ Secure Element ผ่านอินเทอร์เฟซที่เสถียรของผู้ขาย OMAPI

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

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

OEM ที่รวมคุณสมบัติ Secure Element และ Android Ready SE ไว้ในอุปกรณ์ของตนจำเป็นต้องเปิดใช้งานอินเทอร์เฟซนี้เนื่องจากถูกปิดใช้งานตามค่าเริ่มต้น ก่อนการอัปเดตนี้ กฎการเข้าถึง Secure Element ถูกกำหนดโดยชื่อแพ็กเกจหรือแฮชลายเซ็น (การอ้างอิงแอปพลิเคชันอุปกรณ์) และ AID (การอ้างอิงแอปพลิเคชัน SE) โมดูล HAL ไม่มีตัวระบุเฉพาะ เช่น ชื่อแพ็คเกจหรือใบรับรองลายเซ็น ตอนนี้ใน Android 13 แล้ว OMAPI Vendor Stable Service ช่วยให้โมดูล HAL เข้าถึง Secure Element ได้ ผู้ขาย 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 Service ในรุ่นเป้าหมาย

SecureElement

SecureElement

เปิดใช้งานการ ตั้งค่าสถานะบริการ secure_element_vintf_enabled โดยใช้การซ้อนทับทรัพยากรภายใต้โฟลเดอร์เฉพาะอุปกรณ์

    <bool name="secure_element_vintf_enabled">true</bool>

กำหนด UID และ UUID mapping xml สำหรับบริการของคุณ

<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 Vendor Stable Service ในโมดูล 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