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

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