ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
ตัวเลือกสำหรับนักพัฒนาแอปที่ปลอดภัย
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ตามเอกสารนิยามความเข้ากันได้ของ 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 (ไม่บังคับ) ตรวจสอบว่าคุณเห็นขั้นตอนที่ต้องการในบริการแบ็กเอนด์
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Secure developer options\n\nPer the [Android Compatibility Definition Document](/docs/compatibility/cdd),\nOEMs must provide a way to enable app development. However, providing mobile-like\ndeveloper options within cars leaves those cars vulnerable to attack. Access to developer\noptions can now be gated by an OEM using an authenticated cryptographic token mechanism.\nSpecifically, an OEM can:\n\n- Set desired default restrictions before the first boot.\n- Securely authorize developers, with crypto tokens if preferred.\n- Apply restriction changes once a developer is both authenticated and authorized.\n\nThis article describes a reference implementation consisting of a debugging restriction\ncontroller app and a remote token issuer endpoint.\n\nTerminology\n-----------\n\nIn addition to [Terminology](/docs/automotive/start/terms),\nthese terms are used in this article:\n\n- JSON Web Signature (JWS), defined in RFC 7515\n- National Institute of Standards and Technology (NIST)\n\nDesign\n------\n\nOEMs can authorize developers with JSON Web Signature (JWS) tokens (RFC7515). In the\nreference implementation, access tokens are issued by OEMs and consumed by the restriction\ncontroller app. Access tokens are designed to resist replay attacks and forged tokens.\n\n**Figure 1.** Design\n\nIntegration and configuration\n-----------------------------\n\nOEMs must specify the desired default restrictions on the first boot. This is done with\nseveral static resource overlays to override the defaults in the AOSP framework.\n\nThe default restrictions for the headless system user can be configured with the\n`config_defaultFirstUserRestrictions` string in\n`frameworks/base/core/res/res/values/config.xml`, for example: \n\n```scdoc\n\u003c!-- User restrictions set when the first user is created.\n Note: Also update appropriate overlay files. --\u003e\n \u003cstring-array translatable=\"false\" name=\"config_defaultFirstUserRestrictions\"\u003e\n \u003citem\u003eno_debugging_features\u003c/item\u003e\n \u003c/string-array\u003e\n```\n\nThe default restrictions for drivers, passengers, and guests can be configured in\n`frameworks/base/core/res/res/xml/config_user_types.xml`. An OEM can overlay\\|\nthese strings to set the default restrictions on each type of user respectively, for example: \n\n```carbon\n\u003cuser-types\u003e\n \u003cfull-type name=\"android.os.usertype.full.SECONDARY\" \u003e\n \u003cdefault-restrictions no_debugging_features=\"true\"/\u003e\n \u003c/full-type\u003e\n \u003cfull-type name=\"android.os.usertype.full.GUEST\" \u003e\n \u003cdefault-restrictions no_debugging_features=\"true\"/\u003e\n \u003c/full-type\u003e\n\u003c/user-types\u003e\n```\n\nA reference implementation is provided at the following location in AOSP: \n\n```carbon\npackages/apps/Car/DebuggingRestrictionController\n```\n\nTesting\n-------\n\nGoogle recommends that OEMs start with the reference implementation and build out from there.\n\n1. After configuring the desired restrictions in the overlay files, compile AAOS and validate the defined flows. Use the reference app and local JWS enabled service to verify your access settings.\n2. Configure the system to use your JWS enabled cloud service (optional). Verify you're observing the desired flow on your backend service."]]