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