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 del servicio del sistema

  • Apps. El sistema verifica que una app tenga permiso para comunicarse con los subsistemas del automóvil.
  • APIs bien definidas Las APIs genéricas no aceptan fragmentos de datos arbitrarios (las APIs deben estar bien definidas).
  • Servicio de automóviles. Las actualizaciones solo se permiten a través de OTA (o USB), con encriptación en todo el disco y inicio verificado. No se puede transferir.
  • HAL de vehículo. Verifica que se permitan mensajes específicos.

Apps y APIs

Android Automotive se compiló en Android y, además, interactúa directamente con varios subsistemas que son fundamentales para la seguridad. Además, los diferentes vehículos pueden tener interfaces diferentes con diferentes funciones expuestas a Android. Para que estas funciones sean seguras y eficientes, se aíslan en una capa de abstracción, separada del resto de Android. Solo las APIs bien definidas con un formato estricto en los mensajes que se envían a través de redes en el vehículo pueden comunicarse con el sistema HAL del vehículo. Esto proporciona una interfaz predecible para los desarrolladores de Android y una interacción segura con el resto del vehículo.

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

  • Nivel de la app Las apps que no son del sistema pueden acceder al sistema HAL del vehículo a través del servicio de vehículos con los permisos adecuados.
  • Nivel de HAL del vehículo. Permite una capa adicional de protección y seguridad para garantizar que los mensajes enviados a los subsistemas del vehículo provengan de una fuente legítima. También se puede usar para limitar la velocidad de los mensajes, lo que evita que las apps maliciosas inunden el bus CAN y, posiblemente, interfieran con los subsistemas del vehículo.

HAL de vehículo

El sistema HAL del vehículo es una capa inferior que interactúa con el vehículo y se comunica con las redes y otros hardware del vehículo a través de llamadas de control de entrada y salida del controlador (ioctl).

El sistema 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 procesador de apps o del microcontrolador, o bien a través de un VMCU. El acceso al HAL de vehículos debe restringirse a las apps del sistema que usan reglas de SELinux y permisos adecuados en las interfaces del kernel.

Políticas de SELinux

Android Automotive extiende SELinux para filtrar el acceso del controlador, incluidas las llamadas de apertura, cierre, lectura, escritura y ioctl. El uso del filtrado ioctl (junto con otras funciones de SELinux) limita el tipo de mensajes CAN que permite y acepta el HAL del vehículo, lo que reduce drásticamente la superficie de ataque. Para obtener detalles sobre SELinux, consulta Security-Enhanced Linux en Android.

Además, los casos de uso de la industria automotriz incluyen nuevos tipos de datos sensibles que deben aislarse y controlarse. Los datos sensibles tienen permisos independientes. Otras funciones, como los controles de HVAC y el ajuste de ventanas, solo deben otorgarse a las apps del sistema. Ejemplo de una política de SELinux específica para la industria automotriz:

<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 industria automotriz. La velocidad actual se puede considerar información sensible. 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 sensible. El permiso CAR_VENDOR_EXTENSION se creó con el permiso a nivel del sistema o de la firma, que se usa para apps del sistema o apps firmadas a las que se les otorga este permiso de forma explícita.

Bloqueo de apps y actividades

Para reducir la conducción distraída, Android Automotive proporciona controles adicionales (una lista de entidades permitidas) para garantizar que no se puedan usar las apps transferidas cuando el vehículo está en movimiento. Estas apps pueden seguir ejecutándose cuando un vehículo está estacionado o detenido.

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