Isolasi sistem kendaraan

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

Komponen Sistem EVS

Gambar 1. Arsitektur Layanan Sistem

  • Aplikasi. Sistem memverifikasi bahwa aplikasi memiliki izin untuk berbicara dengan subsistem Mobil.
  • API yang terdefinisi dengan baik. API Generik tidak menerima gumpalan data sewenang-wenang (API harus didefinisikan dengan baik).
  • Layanan Mobil. Pembaruan hanya diperbolehkan melalui OTA (atau USB), dengan enkripsi disk penuh dan boot terverifikasi. Tidak dapat di-sideload.
  • Kendaraan HAL. Memverifikasi pesan tertentu diizinkan.

Aplikasi dan API

Android Automotive dibuat di Android dan berinteraksi langsung dengan berbagai subsistem yang penting bagi keselamatan. Selain itu, kendaraan yang berbeda mungkin memiliki antarmuka berbeda dengan fungsi berbeda yang dihadirkan pada Android. Untuk membuat fungsi ini aman dan efisien, fungsi tersebut diisolasi dalam lapisan abstraksi, terpisah dari Android lainnya. Hanya API yang terdefinisi dengan baik dengan format ketat pada pesan yang dikirim melalui jaringan dalam kendaraan yang dapat berkomunikasi dengan HAL Kendaraan. Ini memberikan antarmuka yang dapat diprediksi untuk pengembang Android dan memberikan interaksi yang aman dengan seluruh kendaraan.

Pesan HAL kendaraan disaring pada dua tingkat:

  • Tingkat aplikasi. Aplikasi non-sistem dapat mengakses HAL kendaraan melalui layanan mobil dengan izin yang sesuai.
  • Tingkat HAL kendaraan. Memungkinkan lapisan perlindungan tambahan dan jaminan bahwa pesan yang dikirim ke subsistem kendaraan berasal dari sumber yang sah. Dapat juga digunakan untuk menilai batas pesan, mencegah aplikasi jahat membanjiri bus CAN dan berpotensi mengganggu subsistem kendaraan.

Kendaraan HAL

Kendaraan HAL adalah lapisan bawah yang berinteraksi dengan kendaraan, berkomunikasi dengan jaringan di dalam kendaraan dan perangkat keras kendaraan lainnya melalui panggilan kontrol input/output pengemudi (ioctl).

HAL kendaraan adalah satu-satunya komponen di Android Automotive yang terhubung ke sistem IVI, baik melalui prosesor aplikasi langsung/koneksi MikroKontroler atau dipagari melalui VMCU. Akses ke HAL Kendaraan harus dibatasi pada aplikasi sistem yang menggunakan aturan SELinux dan izin yang sesuai pada antarmuka kernel.

kebijakan SELinux

Android Automotive memperluas SELinux untuk memfilter akses driver termasuk panggilan buka, tutup, baca, tulis, dan ioctl. Menggunakan pemfilteran ioctl (bersama dengan fungsi SELinux lainnya) membatasi jenis pesan CAN yang diizinkan dan diterima oleh HAL Kendaraan, sehingga secara drastis mengurangi permukaan serangan. Untuk detail tentang SELinux, lihat Linux dengan Keamanan yang Ditingkatkan di Android .

Selain itu, kasus penggunaan otomotif mencakup jenis data sensitif baru yang harus diisolasi dan dikendalikan. Data sensitif memiliki izin terpisah; kemampuan lain seperti kontrol HVAC dan penyesuaian jendela harus diberikan hanya pada 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 bertanda tangan yang secara eksplisit diberikan izin ini.

Pemblokiran aplikasi dan aktivitas

Untuk mengurangi gangguan mengemudi, Android Automotive menyediakan kontrol tambahan (daftar yang diizinkan) untuk memastikan aplikasi yang dipindahkan tidak dapat digunakan saat kendaraan sedang bergerak. Aplikasi ini tetap dapat berjalan ketika kendaraan diparkir atau dihentikan.

Daftar yang diizinkan menentukan aplikasi yang dapat digunakan saat kendaraan bergerak. Hanya aplikasi sistem tepercaya yang dapat memperbarui daftar yang diizinkan. Meskipun pembaruan dapat dilakukan melalui jaringan, pembaruan tidak boleh dianggap dapat diandalkan.