Изоляция систем автомобиля

Чтобы обеспечить целостность систем автомобиля, Android Automotive защищает входящие данные на следующих уровнях:

Компоненты системы EVS

Рисунок 1. Архитектура системных сервисов

  • Программы. Система проверяет, имеет ли приложение разрешение на взаимодействие с подсистемами автомобиля.
  • Четко определенные API. Универсальные API не принимают произвольные блоки данных (API должны быть четко определены).
  • Автосервис. Обновления разрешены только через OTA (или USB) с полным шифрованием диска и проверенной загрузкой. Невозможно загрузить сбоку.
  • Автомобиль ХАЛ. Проверяет, разрешены ли определенные сообщения.

Приложения и API

Android Automotive построен на базе Android и напрямую взаимодействует с многочисленными подсистемами, критически важными для безопасности. Кроме того, разные автомобили могут иметь разные интерфейсы с разными функциями, доступными для Android. Чтобы сделать эти функции безопасными и оптимизированными, они изолированы на уровне абстракции, отдельно от остальной части Android. Только четко определенные API со строгим форматированием сообщений, отправляемых через автомобильные сети, могут взаимодействовать с HAL транспортного средства. Это обеспечивает предсказуемый интерфейс для разработчиков Android и обеспечивает безопасное взаимодействие с остальными частями автомобиля.

Сообщения HAL транспортного средства фильтруются на двух уровнях:

  • Уровень приложения. Несистемные приложения могут получить доступ к HAL автомобиля через автосервис при наличии соответствующих разрешений.
  • Уровень HAL автомобиля. Обеспечивает дополнительный уровень защиты и гарантирует, что сообщения, отправляемые в подсистемы автомобиля, происходят из законного источника. Также может использоваться для ограничения скорости сообщений, предотвращая переполнение CAN-шины вредоносными приложениями и потенциальное вмешательство в подсистемы автомобиля.

Автомобиль ХАЛ

HAL транспортного средства — это нижний уровень, который взаимодействует с транспортным средством, взаимодействуя с бортовыми сетями и другим автомобильным оборудованием посредством вызовов управления вводом/выводом водителя (ioctl).

HAL транспортного средства — единственный компонент в Android Automotive, подключенный к системе IVI либо через прямое соединение процессора приложения/микроконтроллера, либо через шлюз VMCU. Доступ к HAL транспортного средства должен быть ограничен системными приложениями с использованием правил SELinux и соответствующих разрешений на интерфейсах ядра.

Политики SELinux

Android Automotive расширяет возможности SELinux для фильтрации доступа к драйверам, включая вызовы открытия, закрытия, чтения, записи и ioctl. Использование фильтрации ioctl (наряду с другими функциями SELinux) ограничивает тип сообщений CAN, разрешенных и принимаемых HAL транспортного средства, резко сокращая поверхность атаки. Подробную информацию о SELinux см. в разделе Linux с усиленной безопасностью в Android .

Кроме того, сценарии использования в автомобилестроении включают новые типы конфиденциальных данных, которые необходимо изолировать и контролировать. Конфиденциальные данные имеют отдельные разрешения; другие возможности, такие как управление системой отопления, вентиляции и кондиционирования и регулировка окон, следует предоставлять только системным приложениям. Пример политики SELinux, специфичной для автомобильной промышленности:

<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 была создана для разрешений, связанных с автомобилестроением. Текущую скорость можно рассматривать как конфиденциальную информацию. Поэтому разрешения CAR_SPEED были созданы с уровнем защиты опасного . Этот уровень означает, что информация является конфиденциальной и конфиденциальной. Разрешение CAR_VENDOR_EXTENSION было создано с разрешением на уровне системы или подписи, которое используется для системных приложений или подписанных приложений, которым явно предоставлено это разрешение.

Блокировка приложений и активности

Чтобы уменьшить отвлечение внимания от вождения, Android Automotive предоставляет дополнительные элементы управления (список разрешений), гарантирующие невозможность использования загруженных приложений во время движения автомобиля. Эти приложения по-прежнему могут работать, когда автомобиль припаркован или остановлен.

В белом списке указаны приложения, которые можно использовать во время движения автомобиля. Только доверенные системные приложения могут обновлять белый список. Хотя обновления могут происходить по сети, обновления не следует считать надежными.