Android Automotive, araba sisteminin bütünlüğünü sağlamak için gelen verileri şu düzeylerde korur:

Şekil 1. Sistem Hizmeti Mimarisi
- Uygulamalar Sistem, bir uygulamanın Car alt sistemleriyle iletişim kurma iznine sahip olup olmadığını doğrular.
- Net tanımlanmış API'ler. Genel API'ler rastgele veri kümelerini kabul etmez (API'ler iyi tanımlanmış olmalıdır).
- Araç Servisi. Tam disk şifrelemesi ve doğrulanmış önyükleme ile yalnızca OTA (veya USB) üzerinden güncellemelere izin verilir. Yandan yüklenemez.
- Araç HAL'si. Belirli iletilere izin verildiğini doğrular.
Uygulamalar ve API'ler
Android Automotive, Android'e dayalı olarak geliştirilmiştir ve güvenlik açısından kritik öneme sahip birçok alt sistemle doğrudan etkileşim kurar. Ayrıca farklı araçlarda Android'e sunulan farklı işlevlere sahip farklı arayüzler olabilir. Bu işlevlerin güvenli ve sorunsuz çalışması için Android'in geri kalanından ayrı bir soyutlama katmanında izole edilirler. Araç içi ağlar üzerinden gönderilen mesajlarda katı biçimlendirmeye sahip olan yalnızca iyi tanımlanmış API'ler araç HAL'iyle iletişim kurabilir. Bu sayede Android geliştiriciler için tahmin edilebilir bir arayüz ve aracın geri kalanıyla güvenli bir etkileşim sağlanır.
Araç HAL mesajları iki düzeyde filtrelenir:
- Uygulama düzeyi. Sistem dışı uygulamalar, araç hizmeti aracılığıyla uygun izinlerle araç HAL'ine erişebilir.
- Araç HAL düzeyi. Ek bir koruma katmanı sağlar ve araç alt sistemlerine gönderilen mesajların meşru bir kaynaktan geldiğinden emin olmanızı sağlar. Mesajları sıklık sınırına tabi tutmak için de kullanılabilir. Böylece, kötü niyetli uygulamaların CAN otobüsüne aşırı mesaj göndermesi ve araç alt sistemleriyle etkileşime geçmesi önlenebilir.
Araç HAL'si
Araç HAL'i, sürücü giriş/çıkış kontrolü (ioctl) çağrıları aracılığıyla araç içi ağlarla ve diğer araç donanımlarıyla iletişim kurarak araçla etkileşime geçen alt bir katmandır.
Araç HAL'i, Android Automotive'te doğrudan uygulama işlemcisi/mikro denetleyici bağlantısı üzerinden veya VMCU üzerinden IVI sistemine bağlı olan tek bileşendir. Araç HAL'ine erişim, SELinux kuralları ve çekirdek arayüzlerinde uygun izinler kullanılarak sistem uygulamalarıyla sınırlandırılmalıdır.
SELinux politikaları
Android Automotive, SELinux'u açma, kapatma, okuma, yazma ve ioctl çağrıları da dahil olmak üzere sürücü erişimini filtreleyecek şekilde genişletir. ioctl filtrelemenin (diğer SELinux işlevleriyle birlikte) kullanılması, araç HAL'i tarafından izin verilen ve kabul edilen CAN mesajı türünü sınırlandırır ve saldırı yüzeyini önemli ölçüde azaltır. SELinux hakkında ayrıntılı bilgi için Android'de Güvenlik Gelişmiş Linux başlıklı makaleyi inceleyin.
Ayrıca otomotiv kullanım alanları, izole edilmesi ve kontrol edilmesi gereken yeni hassas veri türleri içerir. Hassas veriler için ayrı izinler vardır. Isıtma, havalandırma ve klima kontrolleri ve pencere ayarı gibi diğer özellikler yalnızca sistem uygulamalarına verilmelidir. Otomotiv'e özel bir SELinux politikası örneği:
<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
izin grubu, otomotivle ilgili izinler için oluşturulmuştur.
Mevcut hız hassas bilgi olarak kabul edilebilir. Bu nedenle, CAR_SPEED
izinleri tehlikeli koruma düzeyiyle oluşturuldu. Bu düzey, bilgilerin gizli ve hassas olduğu anlamına gelir. CAR_VENDOR_EXTENSION
izni, sistem veya imza düzeyinde izinle oluşturulmuştur. Bu izin, sistem uygulamaları veya açıkça bu izin verilen imzalı uygulamalar için kullanılır.
Uygulama ve etkinlik engelleme
Android Automotive, dikkat dağıtıcı sürüşleri azaltmak için ek kontroller (izin verilenler listesi) sunar. Bu kontroller, araç hareket halindeyken harici olarak yüklenen uygulamaların kullanılamamasını sağlar. Bu uygulamalar, araç park hâlindeyken veya durduğunda çalışmaya devam edebilir.
İzin verilenler listesi, araç hareket halindeyken kullanılabilecek uygulamaları belirtir. İzin verilenler listesini yalnızca güvenilir sistem uygulamaları güncelleyebilir. Ağ üzerinden güncelleme yapılabilse de güncellemeler güvenilir olarak kabul edilmemelidir.