Izolacja układu pojazdu

Aby zapewnić integralność systemu samochodu, Android Automotive chroni przychodzące dane na następujących poziomach:

Elementy systemu EVS

Rysunek 1. Architektura usług systemowych

  • Aplikacje. System sprawdza, czy aplikacja ma uprawnienia do komunikacji z podsystemami samochodu.
  • Dobrze zdefiniowane interfejsy API. Ogólne interfejsy API nie akceptują dowolnych obiektów blob danych (interfejsy API muszą być dobrze zdefiniowane).
  • Serwis samochodowy. Aktualizacje dozwolone tylko przez OTA (lub USB), z szyfrowaniem całego dysku i zweryfikowanym rozruchem. Nie można go załadować z boku.
  • Pojazd HAL. Sprawdza, czy określone wiadomości są dozwolone.

Aplikacje i interfejsy API

Android Automotive jest zbudowany na systemie Android i bezpośrednio współpracuje z wieloma podsystemami o krytycznym znaczeniu dla bezpieczeństwa. Ponadto różne pojazdy mogą mieć różne interfejsy z różnymi funkcjami dostępnymi dla systemu Android. Aby te funkcjonalności były bezpieczne i usprawnione, są one izolowane w warstwie abstrakcyjnej, oddzielonej od reszty Androida. Tylko dobrze zdefiniowane interfejsy API ze ścisłym formatowaniem komunikatów wysyłanych przez sieci pokładowe mogą komunikować się z HAL pojazdu. Zapewnia to przewidywalny interfejs dla programistów Androida i zapewnia bezpieczną interakcję z resztą pojazdu.

Komunikaty HAL pojazdu są filtrowane na dwóch poziomach:

  • Poziom aplikacji. Aplikacje niesystemowe mogą uzyskiwać dostęp do HAL pojazdu za pośrednictwem serwisu samochodowego z odpowiednimi uprawnieniami.
  • Poziom HAL pojazdu. Zapewnia dodatkową warstwę ochrony i pewność, że komunikaty wysyłane do podsystemów pojazdu pochodzą z legalnego źródła. Można go również używać do oceniania komunikatów ograniczających, zapobiegając zalewaniu magistrali CAN przez złośliwe aplikacje i potencjalnemu zakłócaniu podsystemów pojazdu.

Pojazd HAL

HAL pojazdu to niższa warstwa, która współdziała z pojazdem, komunikując się z sieciami pokładowymi i innym sprzętem pojazdu za pośrednictwem wywołań sterujących wejściami/wyjściami kierowcy (ioctl).

HAL pojazdu to jedyny komponent systemu Android Automotive podłączony do systemu IVI albo poprzez bezpośrednie połączenie procesora aplikacji/mikrokontrolera, albo bramkę przez VMCU. Dostęp do Vehicle HAL powinien być ograniczony do aplikacji systemowych korzystających z reguł SELinux i odpowiednich uprawnień na interfejsach jądra.

Zasady SELinuksa

Android Automotive rozszerza SELinux o filtrowanie dostępu sterowników, w tym wywołań otwierania, zamykania, odczytu, zapisu i ioctl. Korzystanie z filtrowania ioctl (wraz z innymi funkcjami SELinux) ogranicza typ komunikatów CAN dozwolonych i akceptowanych przez HAL pojazdu, drastycznie zmniejszając powierzchnię ataku. Aby uzyskać szczegółowe informacje na temat SELinuksa, zobacz Linux ze zwiększonymi zabezpieczeniami w systemie Android .

Ponadto przypadki użycia w branży motoryzacyjnej obejmują nowe rodzaje wrażliwych danych, które należy izolować i kontrolować. Wrażliwe dane mają osobne uprawnienia; inne możliwości, takie jak sterowanie HVAC i regulacja okien, powinny być udostępniane wyłącznie aplikacjom systemowym. Przykład polityki SELinux specyficznej dla motoryzacji:

<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 dla uprawnień związanych z motoryzacją. Aktualna prędkość może być traktowana jako informacja wrażliwa. Dlatego utworzono uprawnienia CAR_SPEED z poziomem ochrony niebezpiecznym . Ten poziom oznacza, że ​​informacje są prywatne i wrażliwe. 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 wyraźnie przyznano to uprawnienie.

Blokowanie aplikacji i aktywności

Aby ograniczyć rozproszenie uwagi podczas jazdy, Android Automotive zapewnia dodatkowe elementy sterujące (listę dozwolonych), które uniemożliwiają korzystanie z aplikacji pobranych z boku, gdy pojazd jest w ruchu. Te aplikacje mogą nadal działać, gdy pojazd jest zaparkowany lub zatrzymany.

Lista dozwolonych zawiera aplikacje, z których można korzystać, gdy pojazd jest w ruchu. Tylko zaufane aplikacje systemowe mogą aktualizować listę dozwolonych. Chociaż aktualizacje mogą odbywać się za pośrednictwem sieci, aktualizacji nie należy uważać za wiarygodne.