ตัวเลือกสำหรับนักพัฒนาแอปที่ปลอดภัย

ตามเอกสารนิยามความเข้ากันได้ของ 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 เริ่มต้นด้วยการติดตั้งใช้งานตามข้อมูลอ้างอิง แล้วค่อยพัฒนาต่อ

  1. หลังจากกําหนดค่าข้อจํากัดที่ต้องการในไฟล์การวางซ้อนแล้ว ให้คอมไพล์ AAOS และตรวจสอบโฟลว์ที่กําหนด ใช้แอปอ้างอิงและบริการที่เปิดใช้ JWS ในเครื่องเพื่อยืนยันการตั้งค่าการเข้าถึง
  2. กำหนดค่าระบบให้ใช้บริการระบบคลาวด์ที่เปิดใช้ JWS (ไม่บังคับ) ตรวจสอบว่าคุณเห็นขั้นตอนที่ต้องการในบริการแบ็กเอนด์