Aislamiento del sistema del vehículo

Para garantizar la integridad del sistema del automóvil, Android Automotive protege los datos entrantes en estos niveles:

Componentes del sistema EVS

Figura 1. Arquitectura de servicio del sistema

  • Aplicaciones El sistema verifica que una aplicación tenga permiso para comunicarse con los subsistemas del automóvil.
  • API bien definidas . Las API genéricas no aceptan blobs de datos arbitrarios (las API deben estar bien definidas).
  • Servicio de coche . Actualizaciones permitidas solo a través de OTA (o USB), con cifrado de disco completo y arranque verificado. No se puede cargar lateralmente.
  • Vehículo HAL . Verifica que se permitan mensajes específicos.

Aplicaciones y API

Android Automotive se basa en Android e interactúa directamente con numerosos subsistemas críticos para la seguridad. Además, diferentes vehículos pueden tener diferentes interfaces con diferentes funcionalidades expuestas a Android. Para que estas funcionalidades sean seguras y optimizadas, están aisladas en una capa de abstracción, separadas del resto de Android. Solo las API bien definidas con un formato estricto en los mensajes enviados a través de las redes del vehículo pueden comunicarse con el HAL del vehículo. Esto proporciona una interfaz predecible para los desarrolladores de Android y proporciona una interacción segura con el resto del vehículo.

Los mensajes HAL del vehículo se filtran en dos niveles:

  • Nivel de aplicación . Las aplicaciones que no pertenecen al sistema pueden acceder a la HAL del vehículo a través del servicio de automóviles con los permisos adecuados.
  • Nivel HAL del vehículo . Permite una capa adicional de protección y garantía de que los mensajes enviados a los subsistemas del vehículo se originan en una fuente legítima. También se puede usar para limitar la velocidad de los mensajes, evitando que las aplicaciones maliciosas inunden el bus CAN y puedan interferir con los subsistemas del vehículo.

HAL del vehículo

Vehicle HAL es una capa inferior que interactúa con el vehículo, comunicándose con las redes del vehículo y otro hardware vehicular a través de llamadas de control de entrada/salida del conductor (ioctl).

El HAL del vehículo es el único componente de Android Automotive conectado al sistema IVI, ya sea a través de una conexión directa del microcontrolador/procesador de aplicaciones o mediante una VMCU. El acceso a la HAL del vehículo debe estar restringido a las aplicaciones del sistema que utilizan las reglas de SELinux y los permisos adecuados en las interfaces del kernel.

Políticas de SELinux

Android Automotive amplía SELinux para filtrar el acceso del conductor, incluidas las llamadas abiertas, cerradas, de lectura, escritura e ioctl. El uso del filtrado ioctl (junto con otras funciones de SELinux) limita el tipo de mensajes CAN permitidos y aceptados por la HAL del vehículo, lo que reduce drásticamente la superficie de ataque. Para obtener detalles sobre SELinux, consulte Linux con seguridad mejorada en Android .

Además, los casos de uso automotriz incluyen nuevos tipos de datos confidenciales que deben aislarse y controlarse. Los datos confidenciales tienen permisos separados; otras capacidades, como los controles de HVAC y el ajuste de ventanas, deben otorgarse solo a las aplicaciones del sistema. Ejemplo de una política de SELinux específica para automóviles:

<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” />

El grupo de permisos CAR_MONITORING se creó para los permisos relacionados con la automoción. La velocidad actual puede considerarse información confidencial. Por lo tanto, los permisos CAR_SPEED se crearon con un nivel de protección de peligroso . Este nivel significa que la información es privada y confidencial. El permiso CAR_VENDOR_EXTENSION se creó con el permiso de nivel de sistema o de firma, que se usa para aplicaciones del sistema o aplicaciones firmadas a las que se les otorga explícitamente este permiso.

Bloqueo de aplicaciones y actividades

Para reducir las distracciones al conducir, Android Automotive proporciona controles adicionales (una lista blanca) para garantizar que las aplicaciones cargadas localmente no se puedan usar cuando el vehículo está en movimiento. Estas aplicaciones aún pueden ejecutarse cuando un vehículo está estacionado o detenido.

La lista blanca especifica las aplicaciones que se pueden usar cuando el vehículo está en movimiento. Solo las aplicaciones del sistema de confianza pueden actualizar la lista blanca. Si bien las actualizaciones pueden ocurrir a través de la red, las actualizaciones no deben considerarse confiables.