概述

在车联网的众多节点中,车机(head unit)可以说是最重要的一个节点,是云-车-人之间的信息枢纽,也是作为车联网信息安全的重中之重。针对车机所采用操作系统则越来越多地采用开源的Android系统来进行定制。

车机Android系统的架构

架构图示意如下:

图1:Android系统架构图

Android系统定制

Android是一个开源操作系统,在应用于车机系统的时候,为了系统的性能、体验和安全性等因素,主机厂通常对其进行深层次的定制,形成具有自己特色的车机系统。

定制工作通常包含以下四个层面:

  • 驱动层定制
  • Native层服务定制
  • Framework层服务定制
  • APK层应用定制

即,对Android架构中的各个层级进行定制时,将不需要的服务模块进行删除,增加具有自身特色需求的服务或应用,并且还需要针对配置文件进行对应的修改。

安全注意事项

对Android系统进行定制的时候,一定会考虑定制系统的安全性,下面介绍一部分注意事项供参考:

1.准备阶段

(1)准备最新的补丁程序。

(2)在代码树构建初期,尽可能移除不必要的应用程序和服务。

例如:

 

 

 

 

 

 

 

2.开发阶段

(1)打开编译器警告配置。用GCC编译工具举例如下:

  • -wall-wextra:打开所有警告以帮助确保底层代码是安全的。
  • -wconversion/-Wsign-conversion:进行unsigned/sign转换时发出警告。
  • -wformat-security:警告使用表示可能存在安全问题的格式函数。
  • -werror:将所有警告转换为错误。

(2)编译器的安全设置。用GCC编译工具举例如下:

  • fstack-protector:fstack保护器。
  • fortify_source:强化资源。
  • wformat-security:格式安全。

(3)启用以下内存地址保护功能:

  • ASLR(Address space layout randomization):地址空间布局随机化,是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。
  • 栈保护程序内核特性:用来检测栈是否遭到溢出攻击。
  • glibc指针保护。

(4)SOC GPS和陀螺仪:应受到MAC规则的保护,只允许访问Android资源管理。

(5)SOC BT和WIFI:应受到MAC规则的保护,只允许访问Android资源管理。

(6)应使用MAC规则保护SOC UART访问,以便仅允许访问CAN模块。

(7)应提供发布版本的静态代码分析报告。

例如:应在静态分析工具中验证Cert C和Cert Java规则。

3.上线阶段

(1)将root特权进程限制在最小权限。

(2)启动DEP(Data Execution Prevention数据执行预防),DEP是一组在存储器上运行额外检查的硬件和软件技术,有助于防止恶意程序码在系统上运行。

(3)禁用ADB,ADB应在生产后禁用。

(4)Android应用程序管理器只允许启动经车厂批准的应用程序。

(5)应支持关键代码和数据组件运行时的实时监视。

(6)应在运行期间监控以下组件的完整性(以下简称关键组件),举例如下:

  • SELinux策略
  • 内核代码中的DAC用户分离模块

(7)针对每个发布版本,推荐采用第三方产品来扫描已知公共漏洞(CVE)。

关于安全强化手段

为了强化设备系统的安全能力,Google在增强Android系统的安全性以外,还采用了安全计算环境TEE(Trusted Execution Environment)来强化业务的高安全需求。概要来说,主要为以下四方面:

  • 验证设备(Attestation):通过安全计算环境TEE来安全地验证该设备是否被服务商认可,从而才能进一步为这个认可设备提供服务。
  • 全盘加密(Protection):通过安全计算环境TEE中保管的密钥,来对设备上保存的数据进行全盘加密。
  • 生物信息的隐私保护(Privacy):全流程保护设备主人的个人隐私信息,确保在设备的安全计算环境TEE以外(包括Android系统)都无法获取这些隐私信息的明文。全流程包括生物信息(如指纹和人脸)的采集、存储、信息对比等各个易被攻击的环节。
  • 高安全业务的操作鉴权(Authentication):在Android Pay业务流程中,基于安全计算环境TEE实现了操作者的鉴权处理。

 

在以上安全强化手段的背后,除了需要安全计算环境TEE以外,更需要基础的密码学技术。

下一回,我们就来谈谈国密与其他密码学算法的区别,敬请关注。