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

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