บทนำ
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
ออกแบบสถาปัตยกรรม

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