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

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