汽车软件远程升级系统设计
2022-07-29韩德鸿黄祖朋韦锦波
韩德鸿、黄祖朋、韦锦波
(上汽通用五菱汽车股份有限公司,柳州 545007)
0 引言
随着汽车向智能化网联化发展,汽车电子技术已经广泛地应用到了汽车发动机控制、底盘控制、车身控制和故障诊断以及音响、通信和导航等各个方面,汽车的电子化程度也成为衡量一个国家汽车工业水平的重要标志之一。作为汽车电子的核心控制元件——电子控制单元(ECU),其在高端智能网联汽车上的搭载数量达到几十甚至上百个之多。当汽车需要通过ECU 软件升级以进行功能迭代时,传统低效耗时的手工刷写方式已不能满足要求。因此,开发汽车远程升级系统十分必要。
1 汽车远程升级架构
本文基于车载终端架构对汽车远程升级系统进行设计,系统由服务平台、车载升级设备、人机交互设备、车载网络及车载控制单元等组成(图1)。服务平台又称之为云平台,负责固件管理、下载和日志记录等任务。车载升级设备是执行升级的设备,T-Box、车机和网关等车载设备都可以作为执行器使用。人机交互设备可集成在车机上,也可应用到移动客户端(手机等),负责将升级过程直观地呈现给用户,供用户进行动作判断。车载网络,现阶段主要以CAN 为基础,考虑以太网、FlexRay 等通信方式在未来汽车软件升级中的应用。车载控制单元,也就是车载ECU,是各执行器的控制单元,远程升级的对象。
图1 汽车远程升级系统组成
2 功能设计
汽车远程升级功能要求主要包括3 个方面:信息安全、功能安全以及一般功能性要求。信息安全指固件数据和指令在传输、保存和安装过程中,为防止信息泄漏、被恶意攻击等情况所采取的措施。功能安全指软件升级失败、网络中断等意外情况发生时,仍然能保证车辆可以短时间内升级成功或正常行驶。一般功能性要求指的是服务平台和车载控制器等设备的日志记录功能和Bootloader 功能。
2.1 信息安全
汽车远程升级由于采用无线传输技术将车内网络与车外网络进行互联,在整个过程容易受到恶意网络攻击,存在巨大的隐患。可以从以下3 个方面进行信息安全设计。
(1)通信加密:固件在传输的过程中,通过通信加密保证整个固件传输安全,避免固件被截获或遭受中间人攻击导致升级失败。
(2)协议伪装:通信流程伪装,把一种协议伪装成另一种协议,从而防止对升级流程进行攻击。
(3)固件完整性、合法性校验:ECU 软件远程升级时需要配合安全升级机制,通过数字签名和认证机制确保固件的完整性和合法性,对于非法固件禁止进行升级。
(4)设备合法性认证:车载升级设备对更新请求应具备自我检查能力。在对自身分区或向其他设备传输更新文件或更新命令时,应能够及时声明自己的身份和权限,即对设备合法性进行认证。升级过程应能正确验证服务器身份,识别出伪造服务器,或者高风险链接链路。
(1)平台数据存储:通过车载终端或其他方式采集上传到云平台中的数据,会涉及到车主车辆相关的私密数据。为保证云平台存储的用户隐私信息不被泄露,需要设置访问权限,并对数据进行加密存储。
(2)平台数据完整性:保存在云平台的数据应当具备完整性,不被恶意破坏,不应出现因硬件、软件等外部条件造成数据的丢失、错误。
(3)平台数据的可恢复性:用户对存储在云平台的数据进行访问时,需要无差错响应用户的请求。如果遇到安全攻击事件,应能够保证数据的可恢复性,防止因数据丢失造成的巨大损失。
(4)平台数据安全方法:云平台数据安全应采用体系化的信息安全建设,从物理、网络、计算、存储、信息和应用等方面构建信息安全防御体系,并在管理方面将信息安全纳入到考虑范围,以降低数据泄漏等安全风险。
(5)车载终端数据存储:由于固件代码保存在具有永久存储功能的器件中,应考虑其是否支持加密算法,芯片中是否有保护寄存器,以及是否可以通过设置Read-only 等模式对固件存储进行保护。可以增加微处理器或者微处理器内部自带的固件存储单元的固件提取难度,同时减少或禁用ECU 上的JTAG、RS232 和USB 等对外调试接口,减少固件被读取的危险。
(1)APP 安全防护:当前大多数汽车APP 缺乏软件防护和安全保障,通过逆向攻击就可以看到TSP 接口、参数等信息,存放在APP 中的密钥、控制接口等信息均易被获取,因此,应当对移动APP 进行有效的防护。关于密钥的存储,由于大部分手机都没有内置eSE 芯片,可采用软件白盒的方式,通过软件白盒保证数据存储和传输安全。
(2)密钥存储:可能发生白盒攻击。当前主流方式是软件白盒和硬件eSE 芯片方案,将密钥通过预制或动态下发的方式存储在白盒或者eSE 芯片中,这样可以有效防止白盒攻击。数据在传输的过程中也要经过白盒或eSE 芯片加密后进行,保障数据的传输安全。
2.2 功能安全
功能安全是为防止汽车在远程升级过程中,由于意外发生造成车辆无法行驶或短时间内无法恢复的情况发生,可将其视为冗余设计。
在多个节点的情况下,远程升级时需对升级目标进行校验,防止升级错误。此外,升级管控程序需始终保证自身的可运行性,
即使在升级失败的情况下,升级管控程序仍然能够保证升级可重复进行或通过调用相应的接口回滚至原版本。
系统应防止升级过程中意外掉电,掉电恢复后会自动由Boot进入升级管理程序,从掉电处继续完成覆盖的过程。
对于软件本身存在的问题或多次无法升级成功,升级管理程序可调用特定接口,控制系统回滚至上一个版本。
系统具备断网保护机制,在网络中断时记录下载点,在网络状态恢复时从未完成处继续下载。
2.3 一般性功能要求
可按照时间、地区和设备数量等信息动态调整升级策略,即针对某一生产批次、某一地区和一定数量的车辆进行全时段的远程升级设定,具备动态调整能力,适应不同场景下的要求。
各节点除满足上述的信息安全和功能安全外,车载ECU、云平台和APP 还应满足关于自身特殊的要求。
(1)车载ECU。车载ECU 应具备Bootloader 的功能,Bootloader 应置于非易丢失存储区,并受到保护,禁止对其地址区进行任意修改。此外,车载ECU 远程升级时需要配合安全升级机制,通过数字签名和认证机制确保固件的完整性和合法性,对于非法固件禁止进行升级。再者,车载ECU 在接收车载终端传输更新文件或更新命令时,应能够及时校验车载终端身份及权限,即对设备合法性进行认证。
(2)云平台。在软件升级过程中,云平台应能正确验证车载终端身份,识别出伪造终端,或者高风险链接链路。此外,通过车载终端或其他方式采集上传到云平台中的数据,由于会涉及到车主车辆相关的私密数据,云平台需要设置访问权限,并对数据进行加密存储,以保证存储的用户隐私信息不被泄露。保存在云平台的数据还应当具备完整性,不被恶意破坏,不应出现因硬件、软件等外部条件造成数据的丢失、错误。
(3)APP。APP 应当能直观将远程升级过程中相应的安装进度、安装历史等信息直观反馈给用户。此外,APP 具备一般商用APP 的通用特点,如密码找回、注册和重置等。并且,APP 还应能远程管理车载终端中已经下载的固件。
3 汽车远程升级流程
汽车软件远程升级流程的主要步骤如下(图2)。
图2 汽车软件远程升级流程
(1)注册和登录。用户通过手机号在平台(APP)注册,首次登录要进行车辆绑定设置,输入个人信息,如身份证号、车辆VIN 码等,再设置远程升级功能的密码。
(2)固件更新。平台会及时推送新版固件,用户也可自己选择检查更新。若存在新版固件,会提示固件版本信息,包括新版固件版本号、本地固件版本号以及新功能说明等。
(3)下载新版本固件。用户确认新版本固件功能后,选择新版本的固件进行下载,APP 上会显示当前固件的下载进度。下载完成后,系统提示用户是否立刻安装。如下载失败,提示失败原因,可重新下载。
(4)安装固件。用户选择确定并安装后,系统会提醒用户是否满足安装条件,当条件满足时才允许平台发送安装指令;如不满足条件,则会提醒用户采取相应措施,条件满足后可继续选择安装。APP 上会实时反馈安装进度,安装完成后,系统提示用户进行相应操作,完成更新。如安装失败则提示失败原因,可重新进行安装。
4 实验验证
以市场上本司某款纯电动车型为实验平台,对整车控制器VCU 进行远程升级验证。首先,使用INCA 对VCU 进行本地软件的刷写;然后,保持固件的版本一致,在平台上上传升级版本程序并进行下发;最后,使用INCA 的标定功能通过访问VCU 固件版本号,来初步判断远程升级的结果。
实验表明,通过对总线报文进行实时监测,固件数据可以成功刷写进VCU 中。同时,对车辆进行上电和换挡、行车及空调等一系列宏观的功能测试,整车均满足条件需求。因此证明远程升级是成功的。
5 结束语
随着智能互联汽车电子化率的不断增加,汽车ECU 的软件升级成为了一大挑战。本文针对汽车远程升级的流程和应用场景,对汽车远程升级系统进行了详细的分析设计。汽车远程升级系统不仅仅是功能方面的实现,信息安全将是其重要的组成部分。在汽车远程升级的整个过程中,面临着来自各个方向的攻击,升级过程中需要配合安全升级机制,通过数字签名和认证机制确保升级的完整性和合法性。