การแยกระบบยานพาหนะ

Android Automotive ปกป้องข้อมูลขาเข้าในระดับต่อไปนี้เพื่อตรวจสอบความสมบูรณ์ของระบบรถยนต์

ส่วนประกอบของระบบ EVS

รูปที่ 1 สถาปัตยกรรมบริการของระบบ

  • แอป ระบบยืนยันว่าแอปมีสิทธิ์พูดคุยกับรถยนต์ ระบบย่อย
  • API ที่กำหนดมาอย่างดี API ทั่วไปไม่ยอมรับ BLOB ข้อมูลที่กำหนดเอง (API ต้อง กำหนดได้เป็นอย่างดี)
  • บริการรถยนต์ อนุญาตให้อัปเดตผ่าน OTA (หรือ USB) ที่ใช้ Full-Disk เท่านั้น การเข้ารหัสและการเปิดเครื่องที่ได้รับการยืนยัน ไซด์โหลดไม่ได้
  • HAL ของยานพาหนะ ยืนยันข้อความที่ระบุ

แอปและ API

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

ระบบจะกรองข้อความ HAL ของยานพาหนะเป็น 2 ระดับดังนี้

  • ระดับแอป แอปที่ไม่ใช่ระบบสามารถเข้าถึง HAL ของยานพาหนะผ่านรถยนต์ได้ บริการที่มีสิทธิ์ที่เหมาะสม
  • ระดับ HAL ของยานพาหนะ ช่วยเพิ่มการปกป้องและความมั่นใจขึ้นอีกขั้น ข้อความที่ส่งไปยังระบบย่อยของรถยนต์มาจากแหล่งที่มาที่ถูกต้องตามกฎหมาย ใช้ได้เช่นกัน ในการจำกัดอัตราข้อความ เพื่อป้องกันไม่ให้แอปที่เป็นอันตรายทำให้รถบัส CAN จำนวนมหาศาลและ ซึ่งอาจรบกวนระบบย่อยของยานพาหนะ

HAL ของยานพาหนะ

HAL ของยานพาหนะคือชั้นล่างที่โต้ตอบกับยานพาหนะ ซึ่งสื่อสารกับรถในยานพาหนะ เครือข่ายและฮาร์ดแวร์สำหรับยานพาหนะอื่นๆ ผ่านการเรียกใช้การควบคุมอินพุต/เอาต์พุตของไดรเวอร์ (ioctl)

HAL ของยานพาหนะเป็นองค์ประกอบเดียวใน Android Automotive ที่เชื่อมต่อกับระบบ IVI ไม่ว่าจะเป็น ผ่านการเชื่อมต่อโปรเซสเซอร์แอป/MicroController โดยตรง หรือกั้นด้วย VMCU สิทธิ์เข้าถึง ควรจำกัด HAL ของยานพาหนะไว้เฉพาะแอประบบที่ใช้กฎ SELinux และสิทธิ์ที่เหมาะสม บนอินเทอร์เฟซเคอร์เนล

นโยบาย SELinux

Android Automotive ขยาย SELinux เพื่อกรองการเข้าถึงคนขับรวมถึงการเปิด ปิด อ่าน เขียน และ ioctl การใช้การกรอง Ioctl (พร้อมด้วยฟังก์ชัน SELinux อื่นๆ) จะจำกัดประเภทของ ข้อความ CAN ได้รับอนุญาตและยอมรับโดย HAL ของยานพาหนะ ซึ่งช่วยลดพื้นที่ในการโจมตีได้อย่างมาก สำหรับ ดูรายละเอียดเกี่ยวกับ SELinux โปรดดู Linux ที่เพิ่มประสิทธิภาพด้านความปลอดภัยใน Android

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

รายการที่อนุญาตจะระบุแอปที่ใช้ได้เมื่อยานพาหนะเคลื่อนที่ เฉพาะที่เชื่อถือ แอปของระบบจะสามารถอัปเดตรายการที่อนุญาตได้ แม้ว่าการอัปเดตอาจเกิดขึ้นผ่านเครือข่าย แต่การอัปเดตไม่ควร เชื่อถือได้