ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
การแยกระบบของยานพาหนะ
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
Android Automotive จะปกป้องข้อมูลที่เข้ามาในระดับต่อไปนี้เพื่อให้ระบบของรถยนต์มีความสมบูรณ์
รูปที่ 1 สถาปัตยกรรมบริการของระบบ
- แอป ระบบยืนยันว่าแอปมีสิทธิ์สื่อสารกับระบบย่อยของรถยนต์
- API ที่กําหนดไว้อย่างชัดเจน API ทั่วไปไม่ยอมรับข้อมูล Blob ที่กำหนดเอง (API ต้องได้รับการกำหนดไว้อย่างชัดเจน)
- บริการซ่อมรถ อนุญาตให้อัปเดตผ่าน OTA (หรือ USB) เท่านั้น โดยต้องมีการเข้ารหัสทั้งดิสก์และการเปิดเครื่องที่ได้รับการยืนยัน ไม่สามารถโหลดจากแหล่งที่ไม่รู้จัก
- HAL ยานพาหนะ ยืนยันว่าข้อความที่ระบุไว้ได้รับอนุญาต
แอปและ API
Android Automotive สร้างขึ้นจาก Android และโต้ตอบกับระบบย่อยที่สำคัญต่อความปลอดภัยหลายระบบโดยตรง นอกจากนี้ ยานพาหนะแต่ละรุ่นอาจมีอินเทอร์เฟซที่แตกต่างกันซึ่งมีฟังก์ชันการทำงานที่แตกต่างกันซึ่งแสดงใน Android ฟังก์ชันเหล่านี้ได้รับการแยกไว้ในเลเยอร์การแยกแยะออกจากส่วนที่เหลือของ Android เพื่อให้ทำงานได้อย่างปลอดภัยและมีประสิทธิภาพ มีเพียง API ที่ระบุไว้อย่างชัดเจนซึ่งมีการจัดรูปแบบข้อความที่ส่งผ่านเครือข่ายในรถอย่างเข้มงวดเท่านั้นที่จะสื่อสารกับ Vehicle HAL ได้ ซึ่งจะช่วยให้นักพัฒนาแอป Android มีอินเทอร์เฟซที่คาดการณ์ได้และมีการโต้ตอบกับส่วนที่เหลือของยานพาหนะอย่างปลอดภัย
ระบบจะกรองข้อความ HAL ของยานพาหนะ 2 ระดับ ดังนี้
- ระดับแอป แอปที่ไม่ใช่ระบบสามารถเข้าถึง HAL ของยานพาหนะผ่านบริการของรถยนต์ที่มีสิทธิ์ที่เหมาะสม
- ระดับ HAL ของยานพาหนะ เพิ่มการป้องกันอีกชั้นและสร้างความมั่นใจว่าข้อความที่ส่งไปยังระบบย่อยของยานพาหนะมาจากแหล่งที่มาที่ถูกต้อง นอกจากนี้ยังใช้เพื่อจำกัดอัตราการส่งข้อความได้ด้วย ซึ่งจะช่วยป้องกันไม่ให้แอปที่เป็นอันตรายส่งข้อความจำนวนมากไปยัง CAN Bus และอาจรบกวนระบบย่อยของยานพาหนะ
HAL ยานพาหนะ
HAL ของยานพาหนะเป็นเลเยอร์ล่างที่โต้ตอบกับยานพาหนะ โดยสื่อสารกับเครือข่ายในรถและฮาร์ดแวร์อื่นๆ ของยานพาหนะผ่านการเรียกใช้การควบคุมอินพุต/เอาต์พุตของไดรเวอร์ (ioctl)
HAL ของยานพาหนะเป็นคอมโพเนนต์เดียวใน Android Automotive ที่เชื่อมต่อกับระบบ IVI ไม่ว่าจะผ่านการเชื่อมต่อโดยตรงกับโปรเซสเซอร์แอป/ไมโครคอนโทรลเลอร์ หรือผ่าน VMCU การเข้าถึง HAL ของยานพาหนะควรจำกัดไว้สำหรับแอประบบที่ใช้กฎ SELinux และสิทธิ์ที่เหมาะสมในอินเทอร์เฟซเคอร์เนล
นโยบาย SELinux
Android Automotive ขยาย SELinux เพื่อกรองการเข้าถึงของไดรเวอร์ ซึ่งรวมถึงการเรียกใช้เปิด ปิด อ่าน เขียน และ ioctl การใช้การกรอง ioctl (พร้อมกับฟังก์ชันการทำงานอื่นๆ ของ SELinux) จะจำกัดประเภทข้อความ CAN ที่ HAL ของยานพาหนะอนุญาตและยอมรับ ซึ่งจะช่วยลดพื้นที่การโจมตีได้อย่างมาก ดูรายละเอียดเกี่ยวกับ SELinux ได้ที่Security-Enhanced Linux ใน Android
นอกจากนี้ กรณีการใช้งานยานยนต์ยังมีข้อมูลที่ละเอียดอ่อนประเภทใหม่ที่ควรแยกออกและควบคุม ข้อมูลที่มีความละเอียดอ่อนมีสิทธิ์แยกต่างหาก ความสามารถอื่นๆ เช่น การควบคุมระบบปรับอากาศ (HVAC) และการปรับหน้าต่างควรให้เฉพาะแอประบบเท่านั้น ตัวอย่างนโยบาย SELinux สำหรับยานยนต์โดยเฉพาะ
<permission-group
android:name=”android.support.car.permission.CAR_MONITORING />
<permission
android:name=”android.support.car.permission.CAR_MILEAGE”
android:protectionLevel=”signature|privileged” />
<permission
android:name=”android.support.car.permission.CAR_SPEED”
android:permissionGroup=”android.permission-group.LOCATION”
android:protectionLevel=”dangerous” />
<permission
android:name=”android.support.car.permission.CAR_VENDOR_EXTENSION”
android:permissionGroup=”android.support.car.permission.CAR_INFORMATION”
android:protectionLevel=”signature|privileged” />
กลุ่มสิทธิ์ CAR_MONITORING
สร้างไว้สำหรับสิทธิ์ที่เกี่ยวข้องกับยานยนต์
ความเร็วปัจจุบันอาจถือเป็นข้อมูลที่ละเอียดอ่อน ดังนั้น ระบบจึงสร้างสิทธิ์ CAR_SPEED
ที่มีระดับการปกป้องเป็นอันตราย ระดับนี้หมายความว่าข้อมูลเป็นข้อมูลส่วนตัวและละเอียดอ่อน สิทธิ์ CAR_VENDOR_EXTENSION
สร้างขึ้นโดยมีสิทธิ์ระดับระบบหรือระดับลายเซ็น ซึ่งใช้สำหรับแอประบบหรือแอปที่ลงนามซึ่งได้รับสิทธิ์นี้อย่างชัดแจ้ง
การบล็อกแอปและกิจกรรม
Android Automotive มีการควบคุมเพิ่มเติม (รายการที่อนุญาต) เพื่อลดการขับรถขณะเสียสมาธิ เพื่อป้องกันไม่ให้ใช้แอปที่โหลดจากแหล่งที่ไม่รู้จักเมื่อรถกำลังเคลื่อนที่ แอปเหล่านี้จะยังคงทำงานได้เมื่อรถจอดหรือหยุดอยู่
รายการที่อนุญาตจะระบุแอปที่ใช้งานได้เมื่อยานพาหนะกำลังเคลื่อนที่ เฉพาะแอปของระบบที่เชื่อถือเท่านั้นที่จะอัปเดตรายการที่อนุญาตได้ แม้ว่าการอัปเดตอาจเกิดขึ้นผ่านเครือข่าย แต่คุณไม่ควรถือว่าการอัปเดตนั้นเชื่อถือได้
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา 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,["# Vehicle system isolation\n\nTo ensure car system integrity, Android Automotive protects incoming data at these levels:\n\n**Figure 1.** System Service Architecture\n\n- **Apps.** System verifies an app has permission to talk to Car subsystems.\n- **Well-defined APIs.** Generic APIs do not accept arbitrary data blobs (APIs must be well defined).\n- **Car Service.** Updates allowed only through OTA (or USB), with full-disk encryption and verified boot. Can't be sideloaded.\n- **Vehicle HAL.** Verifies specific messages are allowed.\n\n### Apps and APIs\n\nAndroid Automotive is built on Android and interacts directly with numerous safety-critical\nsubsystems. In addition, different vehicles may have different interfaces with different\nfunctionalities exposed to Android. To make these functionalities safe and streamlined, they are\nisolated in an abstraction layer, separate from the rest of Android. Only *well-defined* APIs\nwith strict formatting on messages sent through in-vehicle networks can communicate with the Vehicle\nHAL. This provides a predictable interface for Android developers and provides a secure interaction\nwith the rest of the vehicle.\n\nVehicle HAL messages are filtered at two levels:\n\n- **App level.** Non-system apps can access vehicle HAL through car service with proper permissions.\n- **Vehicle HAL level.** Allows for an additional layer of protection and assurance that messages sent to vehicle subsystems originate from a legitimate source. Can also be used to rate limit messages, preventing malicious apps from flooding the CAN bus and potentially interfering with vehicle subsystems.\n\n### Vehicle HAL\n\nVehicle HAL is a lower layer that interacts with the vehicle, communicating with in-vehicle\nnetworks and other vehicular hardware through driver input/output control (ioctl) calls.\n\nThe vehicle HAL is the only component in Android Automotive connected to the IVI system, either\nthrough direct app processor/MicroController connection or gated through a VMCU. Access to the\nVehicle HAL should be restricted to system apps using SELinux rules and proper permissions\non kernel interfaces.\n\n### SELinux policies\n\nAndroid Automotive extends SELinux to filter driver access including open, close, read, write,\nand ioctl calls. Using ioctl filtering (along with other SELinux functionality) limits the type of\nCAN messages allowed and accepted by the Vehicle HAL, drastically reducing the attack surface. For\ndetails on SELinux, see\n[Security-Enhanced Linux in Android](/security/selinux).\n\nAdditionally, automotive use cases include new types of sensitive data that should be isolated\nand controlled. Sensitive data has separate permissions; other capabilities such as HVAC controls\nand window adjustment should be given only to system apps. Example of an Automotive-specific\nSELinux policy: \n\n```\n\u003cpermission-group\n android:name=”android.support.car.permission.CAR_MONITORING /\u003e\n\n\u003cpermission\n android:name=”android.support.car.permission.CAR_MILEAGE”\n android:protectionLevel=”signature|privileged” /\u003e\n\u003cpermission\n android:name=”android.support.car.permission.CAR_SPEED”\n android:permissionGroup=”android.permission-group.LOCATION”\n android:protectionLevel=”dangerous” /\u003e\n\u003cpermission\n android:name=”android.support.car.permission.CAR_VENDOR_EXTENSION”\n android:permissionGroup=”android.support.car.permission.CAR_INFORMATION”\n android:protectionLevel=”signature|privileged” /\u003e\n```\n\nThe `CAR_MONITORING` permission group was created for automotive-related permissions.\nCurrent speed can be regarded as sensitive information. Therefore, `CAR_SPEED`\npermissions were created with a protection level of *dangerous* . This level means the\ninformation is private and sensitive. The permission `CAR_VENDOR_EXTENSION` was created\nwith the system- or signature-level permission, which is used for system apps or signed apps that\nare explicitly granted this permission.\n\n### App and activity blocking\n\nTo reduce distracted driving, Android Automotive provides additional controls (a allowlist) to\nensure sideloaded apps can't be used when the vehicle is in motion. These apps can still\nrun when a vehicle is parked or stopped.\n\nThe allowlist specifies apps that can be used when the vehicle is moving. Only trusted\nsystem apps can update the allowlist. While updates can occur over the network, updates should not\nbe considered reliable."]]