การรักษาความปลอดภัยตัวเลือกนักพัฒนา

ตาม เอกสารข้อกำหนดความเข้ากันได้ของ Android OEM จะต้องจัดเตรียมวิธีการเปิดใช้งานการพัฒนาแอปพลิเคชัน อย่างไรก็ตาม การให้ตัวเลือกนักพัฒนาที่เหมือนมือถือภายในรถยนต์ทำให้รถเหล่านั้นเสี่ยงต่อการถูกโจมตี ขณะนี้ OEM สามารถเข้าถึงตัวเลือกของนักพัฒนาซอฟต์แวร์ได้โดยใช้กลไกโทเค็นการเข้ารหัสที่รับรองความถูกต้องแล้ว โดยเฉพาะอย่างยิ่ง OEM สามารถ:

  • ตั้งค่าข้อจำกัดเริ่มต้นที่ต้องการก่อนการบู๊ตครั้งแรก
  • อนุญาตนักพัฒนาอย่างปลอดภัยด้วยโทเค็น crypto หากต้องการ
  • ใช้การเปลี่ยนแปลงข้อจำกัดเมื่อนักพัฒนาซอฟต์แวร์ได้รับการตรวจสอบสิทธิ์และได้รับอนุญาตแล้ว

บทความนี้อธิบายการใช้งานอ้างอิงที่ประกอบด้วยแอปพลิเคชันตัวควบคุมข้อจำกัดการดีบักและปลายทางผู้ออกโทเค็นระยะไกล

คำศัพท์

นอกจาก คำศัพท์ แล้ว คำเหล่านี้ยังใช้ในบทความนี้:

  • JSON Web Signature (JWS) กำหนดไว้ใน RFC 7515
  • สถาบันมาตรฐานและเทคโนโลยีแห่งชาติ (NIST)

ออกแบบ

OEM สามารถอนุญาตนักพัฒนาด้วยโทเค็น JSON Web Signature (JWS) (RFC7515) ในการใช้งานอ้างอิง โทเค็นการเข้าถึงจะออกโดย OEM และใช้งานโดยแอปตัวควบคุมข้อจำกัด โทเค็นการเข้าถึงได้รับการออกแบบมาเพื่อต่อต้านการโจมตีซ้ำและโทเค็นที่ปลอมแปลง

รูปที่ 1 การออกแบบ

การบูรณาการและการกำหนดค่า

OEM ต้องระบุข้อจำกัดเริ่มต้นที่ต้องการในการบู๊ตครั้งแรก สิ่งนี้ทำได้ด้วยการซ้อนทับทรัพยากรแบบคงที่หลายรายการเพื่อแทนที่ค่าเริ่มต้นในกรอบงาน AOSP

ข้อจำกัดดีฟอลต์สำหรับผู้ใช้ระบบ headless สามารถกำหนดค่าด้วยสตริง 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 ของคุณ (ทางเลือก) ตรวจสอบว่าคุณกำลังสังเกตโฟลว์ที่ต้องการในบริการแบ็กเอนด์ของคุณ