ตามเอกสารนิยามความเข้ากันได้ของ Android OEM ต้องมีวิธีเปิดใช้การพัฒนาแอป อย่างไรก็ตาม การให้ตัวเลือกสำหรับนักพัฒนาแอปในรถซึ่งคล้ายกับในอุปกรณ์เคลื่อนที่จะทำให้รถเหล่านั้นเสี่ยงต่อการถูกโจมตี ตอนนี้ OEM สามารถจำกัดการเข้าถึงตัวเลือกสำหรับนักพัฒนาแอปได้โดยใช้กลไกโทเค็นการเข้ารหัสที่ตรวจสอบสิทธิ์ โดยเฉพาะอย่างยิ่ง OEM จะทําสิ่งต่อไปนี้ได้
- ตั้งค่าข้อจำกัดเริ่มต้นที่ต้องการก่อนการบูตครั้งแรก
- ให้สิทธิ์นักพัฒนาแอปอย่างปลอดภัยด้วยโทเค็นคริปโต (หากต้องการ)
- ใช้การเปลี่ยนแปลงข้อจำกัดเมื่อนักพัฒนาแอปได้รับการตรวจสอบสิทธิ์และให้สิทธิ์แล้ว
บทความนี้อธิบายการใช้งานอ้างอิงที่มีข้อจํากัดการแก้ไขข้อบกพร่องของแอปตัวควบคุมและปลายทางผู้ออกโทเค็นระยะไกล
คำศัพท์
นอกจากคําศัพท์แล้ว บทความนี้ยังใช้คําต่อไปนี้
- JSON Web Signature (JWS) ซึ่งระบุไว้ใน RFC 7515
- สถาบันมาตรฐานและเทคโนโลยีแห่งชาติ (NIST)
การออกแบบ
OEM สามารถให้สิทธิ์นักพัฒนาแอปด้วยโทเค็น JSON Web Signature (JWS) (RFC7515) ในการใช้งานตามข้อมูลอ้างอิง โทเค็นการเข้าถึงจะออกโดย OEM และแอปตัวควบคุมข้อจำกัดจะใช้โทเค็นดังกล่าว โทเค็นการเข้าถึงออกแบบมาเพื่อต้านทานการโจมตีด้วยการเล่นซ้ำและโทเค็นปลอม
รูปที่ 1 การออกแบบ
การผสานรวมและการกําหนดค่า
OEM ต้องระบุข้อจำกัดเริ่มต้นที่ต้องการในการบูตครั้งแรก ซึ่งทำได้ด้วยการวางซ้อนทรัพยากรแบบคงที่หลายรายการเพื่อลบล้างค่าเริ่มต้นในเฟรมเวิร์ก AOSP
คุณกำหนดค่าข้อจำกัดเริ่มต้นสำหรับผู้ใช้ระบบแบบไม่มีส่วนหัวได้ด้วยสตริง config_defaultFirstUserRestrictions
ใน frameworks/base/core/res/res/values/config.xml
ดังนี้
<!-- User restrictions set when the first user is created. Note: Also update appropriate overlay files. --> <string-array translatable="false" name="config_defaultFirstUserRestrictions"> <item>no_debugging_features</item> </string-array>
คุณกำหนดค่าข้อจำกัดเริ่มต้นสำหรับผู้ขับขี่ ผู้โดยสาร และผู้มาเยือนได้ใน frameworks/base/core/res/res/xml/config_user_types.xml
OEM สามารถวางซ้อนสตริงเหล่านี้เพื่อกำหนดข้อจำกัดเริ่มต้นสำหรับผู้ใช้แต่ละประเภทตามลำดับได้ ตัวอย่างเช่น
<user-types> <full-type name="android.os.usertype.full.SECONDARY" > <default-restrictions no_debugging_features="true"/> </full-type> <full-type name="android.os.usertype.full.GUEST" > <default-restrictions no_debugging_features="true"/> </full-type> </user-types>
การใช้งานอ้างอิงมีอยู่ในตำแหน่งต่อไปนี้ใน AOSP
packages/apps/Car/DebuggingRestrictionController
การทดสอบ
Google ขอแนะนำให้ OEM เริ่มต้นด้วยการติดตั้งใช้งานตามข้อมูลอ้างอิง แล้วค่อยพัฒนาต่อ
- หลังจากกําหนดค่าข้อจํากัดที่ต้องการในไฟล์การวางซ้อนแล้ว ให้คอมไพล์ AAOS และตรวจสอบโฟลว์ที่กําหนด ใช้แอปอ้างอิงและบริการที่เปิดใช้ JWS ในเครื่องเพื่อยืนยันการตั้งค่าการเข้าถึง
- กำหนดค่าระบบให้ใช้บริการระบบคลาวด์ที่เปิดใช้ JWS (ไม่บังคับ) ตรวจสอบว่าคุณเห็นขั้นตอนที่ต้องการในบริการแบ็กเอนด์