Untuk memastikan integritas sistem mobil, Android Automotive melindungi data yang masuk di tingkat berikut:

Gambar 1. Arsitektur Layanan Sistem
- Aplikasi. Sistem memverifikasi bahwa aplikasi memiliki izin untuk berkomunikasi dengan subsistem Mobil.
- API yang ditentukan dengan baik. API generik tidak menerima blob data arbitrer (API harus ditentukan dengan baik).
- Layanan Mobil. Update hanya diizinkan melalui OTA (atau USB), dengan enkripsi disk penuh dan booting terverifikasi. Tidak dapat di-sideload.
- HAL Kendaraan. Memverifikasi bahwa pesan tertentu diizinkan.
Aplikasi dan API
Android Automotive dibuat di Android dan berinteraksi langsung dengan banyak subsistem penting keselamatan. Selain itu, kendaraan yang berbeda mungkin memiliki antarmuka yang berbeda dengan fungsi yang berbeda yang diekspos ke Android. Agar fungsi ini aman dan efisien, fungsi tersebut diisolasi di lapisan abstraksi, terpisah dari Android lainnya. Hanya API yang ditentukan dengan baik dengan pemformatan ketat pada pesan yang dikirim melalui jaringan dalam kendaraan yang dapat berkomunikasi dengan HAL Kendaraan. Hal ini memberikan antarmuka yang dapat diprediksi bagi developer Android dan memberikan interaksi yang aman dengan seluruh kendaraan.
Pesan HAL kendaraan difilter di dua tingkat:
- Tingkat aplikasi. Aplikasi non-sistem dapat mengakses HAL kendaraan melalui layanan mobil dengan izin yang tepat.
- Tingkat HAL kendaraan. Memungkinkan lapisan perlindungan dan jaminan tambahan bahwa pesan yang dikirim ke subsistem kendaraan berasal dari sumber yang sah. Juga dapat digunakan untuk menilai pesan batas, mencegah aplikasi berbahaya membanjiri bus CAN dan berpotensi mengganggu subsistem kendaraan.
HAL Kendaraan
HAL Kendaraan adalah lapisan yang lebih rendah yang berinteraksi dengan kendaraan, berkomunikasi dengan jaringan dalam kendaraan dan hardware kendaraan lainnya melalui panggilan kontrol input/output (ioctl) driver.
HAL kendaraan adalah satu-satunya komponen di Android Automotive yang terhubung ke sistem IVI, baik melalui koneksi MicroController/pemroses aplikasi langsung atau dibatasi melalui VMCU. Akses ke HAL Kendaraan harus dibatasi untuk aplikasi sistem yang menggunakan aturan SELinux dan izin yang sesuai di antarmuka kernel.
Kebijakan SELinux
Android Automotive memperluas SELinux untuk memfilter akses driver, termasuk panggilan buka, tutup, baca, tulis, dan ioctl. Menggunakan pemfilteran ioctl (beserta fungsi SELinux lainnya) membatasi jenis pesan CAN yang diizinkan dan diterima oleh HAL Kendaraan, sehingga mengurangi platform serangan secara drastis. Untuk mengetahui detail tentang SELinux, lihat Security-Enhanced Linux di Android.
Selain itu, kasus penggunaan otomotif mencakup jenis data sensitif baru yang harus diisolasi dan dikontrol. Data sensitif memiliki izin terpisah; kemampuan lain seperti kontrol HVAC dan penyesuaian jendela hanya boleh diberikan ke aplikasi sistem. Contoh kebijakan SELinux khusus Otomotif:
<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” />
Grup izin CAR_MONITORING
dibuat untuk izin terkait otomotif.
Kecepatan saat ini dapat dianggap sebagai informasi sensitif. Oleh karena itu, izin
CAR_SPEED
dibuat dengan tingkat perlindungan berbahaya. Tingkat ini berarti
informasi bersifat pribadi dan sensitif. Izin CAR_VENDOR_EXTENSION
dibuat
dengan izin tingkat sistem atau tanda tangan, yang digunakan untuk aplikasi sistem atau aplikasi yang ditandatangani yang
diberi izin ini secara eksplisit.
Pemblokiran aplikasi dan aktivitas
Untuk mengurangi gangguan mengemudi, Android Automotive menyediakan kontrol tambahan (daftar yang diizinkan) untuk memastikan aplikasi yang di-sideload tidak dapat digunakan saat kendaraan sedang bergerak. Aplikasi ini masih dapat berjalan saat kendaraan diparkir atau berhenti.
Daftar yang diizinkan menentukan aplikasi yang dapat digunakan saat kendaraan sedang bergerak. Hanya aplikasi sistem yang tepercaya yang dapat memperbarui daftar yang diizinkan. Meskipun update dapat terjadi melalui jaringan, update tidak boleh dianggap andal.