Aby zapewnić integralność systemu samochodowego, Android Automotive chroni dane przychodzące na tych poziomach:

Rysunek 1. Architektura usługi systemowej
- Aplikacje. System sprawdza, czy aplikacja ma uprawnienia do komunikacji z podsystemami Car.
- Dobrze zdefiniowane interfejsy API. Interfejsy API ogólne nie akceptują dowolnych danych blob (interfejsy API muszą być dobrze zdefiniowane).
- Serwis samochodowy. Aktualizacje są dozwolone tylko przez OTA (lub USB) z pełnym szyfrowaniem dysku i weryfikowanym rozruchem. Nie można zainstalować aplikacji spoza sklepu.
- Interfejs HAL pojazdu. Sprawdzanie, czy określone wiadomości są dozwolone.
Aplikacje i interfejsy API
Android Automotive jest oparty na Androidzie i współdziała bezpośrednio z licznymi podsystemami mającymi kluczowe znaczenie dla bezpieczeństwa. Ponadto różne pojazdy mogą mieć różne interfejsy z różnymi funkcjami dostępnymi w Androidzie. Aby te funkcje były bezpieczne i skuteczne, są one izolowane w poziomie abstrakcji, oddzielonym od reszty Androida. Z HAL pojazdu mogą korzystać tylko dobrze zdefiniowane interfejsy API, które ściśle formatują wiadomości wysyłane przez sieci w pojazdach. Zapewnia to przewidywalny interfejs dla deweloperów Androida i zapewnia bezpieczną interakcję z pozostałymi elementami pojazdu.
Wiadomości interfejsu HAL pojazdu są filtrowane na 2 poziomach:
- Na poziomie aplikacji. Aplikacje niesystemowe mogą uzyskać dostęp do HAL pojazdu za pomocą usługi samochodowej z odpowiednimi uprawnieniami.
- Poziom interfejsu HAL pojazdu. Zapewnia dodatkową warstwę ochrony i zapewnia, że wiadomości wysyłane do podsystemów pojazdu pochodzą z uprawnionego źródła. Można go też używać do ograniczania liczby wiadomości, aby uniemożliwić złośliwym aplikacjom zalewanie magistrali CAN i potencjalne zakłócanie pracy podsystemów pojazdu.
Interfejs HAL pojazdu
HAL pojazdu to niższa warstwa, która współdziała z pojazdem, komunikując się z sieciami w pojazdach i innym sprzętem w pojazdach za pomocą wywołań sterowania wejściem/wyjściem sterownika (ioctl).
HAL pojazdu to jedyny komponent w Androidzie Automotive, który jest połączony z systemem IVI bezpośrednio przez procesor aplikacji lub mikrokontroler albo przez VMCU. Dostęp do interfejsu HAL pojazdu powinien być ograniczony do aplikacji systemowych korzystających z reguł SELinux i odpowiednich uprawnień w interfejsach jądra.
Zasady SELinux
Android Automotive rozszerza SELinux, aby filtrować dostęp do sterownika, w tym wywołania open, close, read, write i ioctl. Filtrowanie ioctl (wraz z innymi funkcjami SELinux) ogranicza typ wiadomości CAN dozwolonych i akceptowanych przez HAL pojazdu, co znacznie zmniejsza powierzchnię ataku. Więcej informacji o SELinux znajdziesz w artykule SELinux – bezpieczeństwo w systemie Linux na Androidzie.
Dodatkowo zastosowania w samochodach obejmują nowe typy danych wrażliwych, które należy izolować i kontrolować. Dane wrażliwe mają osobne uprawnienia. Inne funkcje, takie jak sterowanie HVAC i dostosowywanie okien, powinny być dostępne tylko dla aplikacji systemowych. Przykład zasad SELinux dla pojazdów:
<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” />
Grupa uprawnień CAR_MONITORING
została utworzona na potrzeby uprawnień związanych z motoryzacją.
Obecna prędkość może być uważana za informację poufną. Dlatego uprawnienia CAR_SPEED
zostały utworzone z poziomem ochrony niebezpieczny. Ten poziom oznacza, że informacje są prywatne i poufne. Uprawnienie CAR_VENDOR_EXTENSION
zostało utworzone z uprawnieniem na poziomie systemu lub podpisu, które jest używane w przypadku aplikacji systemowych lub podpisanych aplikacji, którym to uprawnienie zostało wyraźnie przyznane.
Blokowanie aplikacji i działalności
Aby zmniejszyć rozproszenie uwagi podczas jazdy, Android Automotive zapewnia dodatkowe opcje (listę dozwolonych), które uniemożliwiają korzystanie z aplikacji zainstalowanych z poza sklepu, gdy pojazd jest w ruchu. Te aplikacje mogą działać, gdy pojazd jest zaparkowany lub zatrzymany.
Lista dozwolonych aplikacji określa aplikacje, których można używać, gdy pojazd jest w ruchu. Tylko zaufane aplikacje systemowe mogą aktualizować listę dozwolonych. Aktualizacje mogą być przesyłane przez sieć, ale nie są one wiarygodne.