Para garantizar la integridad del sistema del vehículo, Android Automotive protege los datos entrantes en los siguientes niveles:
Figura 1: Arquitectura de servicios del sistema
- Apps. El sistema verifica que una app tenga permiso para comunicarse con el vehículo. subsistemas individuales.
- APIs bien definidas. Las APIs genéricas no aceptan BLOB de datos arbitrarios (las APIs deben estar bien definidos).
- Servicio de automóviles. Las actualizaciones se permiten solo mediante OTA (o USB), con disco completo la encriptación y el inicio verificado. No se puede transferir.
- HAL del vehículo. Verifica que se permitan mensajes específicos.
Apps y APIs
Android Automotive se basa en Android e interactúa directamente con muchas apps de seguridad subsistemas individuales. Además, distintos vehículos pueden tener distintas interfaces con distintas funcionalidades expuestas a Android. Para que estas funcionalidades sean seguras y estén optimizadas, se aisladas en una capa de abstracción, separada del resto de Android. Solo APIs bien definidas con un formato estricto en los mensajes enviados a través de redes del vehículo pueden comunicarse con este HAL. Esta ofrece una interfaz predecible para desarrolladores de Android y permite una interacción segura con el resto del vehículo.
Los mensajes de la HAL del vehículo se filtran en dos niveles:
- Nivel de la app. Las apps que no son del sistema pueden acceder a la HAL del vehículo desde el vehículo con los permisos adecuados.
- Nivel de HAL del vehículo. Permiten agregar una capa adicional de protección y seguridad. que los mensajes enviados a los subsistemas de vehículos se originen de una fuente legítima. También se puede usar para limitar la frecuencia de los mensajes, lo que evita que las apps maliciosas inunden el bus CAN de manera que interfieran en los subsistemas del vehículo.
HAL del vehículo
La HAL del vehículo es una capa inferior que interactúa con el vehículo y se comunica con él y otros hardware vehiculares mediante llamadas de control de entrada y salida del controlador (ioctl).
La 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 con el procesador de la app o el microcontrolador, o mediante una VMCU. Acceso a la La HAL del vehículo debe restringirse a apps del sistema con reglas de SELinux y los permisos adecuados en interfaces de kernel.
Políticas de SELinux
Android Automotive extiende SELinux para filtrar el acceso de los conductores, por ejemplo, abrir, cerrar, leer, escribir y llamadas con ioctl. El uso de filtros ioctl (junto con otras funcionalidades de SELinux) limita el tipo de La HAL del vehículo permite y acepta los mensajes de CAN, lo que reduce drásticamente la superficie de ataque. Para 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 capacidades, como los controles de HVAC y el ajuste de ventana solo debe otorgarse a las apps del sistema. Ejemplo de una solución específica de la industria automotriz Política de 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” />
Se creó el grupo de permisos CAR_MONITORING
para los permisos relacionados con la industria automotriz.
La velocidad actual puede considerarse información sensible. Por lo tanto, CAR_SPEED
permisos se crearon con un nivel de protección peligroso. Este nivel significa que
información es privada y sensible. Se creó el permiso CAR_VENDOR_EXTENSION
con el permiso a nivel del sistema o la firma, que se usa para las apps del sistema o las apps firmadas que
tienen este permiso de forma explícita.
Bloqueo de apps y actividades
Para reducir las distracciones al conducir, Android Automotive proporciona controles adicionales (una lista de entidades permitidas) para lo siguiente: garantizar que las apps transferidas no se puedan usar cuando el vehículo esté en movimiento. Estas apps aún pueden se ejecuta 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 de confianza las apps del sistema pueden actualizar la lista de entidades permitidas. Aunque las actualizaciones pueden ocurrir a través de la red, las actualizaciones no deben considerarse confiables.