Izolacja systemu w pojeździe

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

Elementy systemu EVS

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.