固件安全升级方法、装置、车载系统和车辆与流程

文档序号:17547987发布日期:2019-04-30 17:58阅读:378来源:国知局
固件安全升级方法、装置、车载系统和车辆与流程
本发明属于信息安全
技术领域
,具体涉及一种固件安全升级方法、装置、车载系统和车辆。
背景技术
:固件就是写入erom或eeprom中的程序,是设备内部保存的“驱动程序”。通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作。固件升级是指对设备的内嵌固件进行升级,可以完善设备功能、增强稳定性、修补漏洞。现有技术中,设备中用于固件升级的接口都存在被攻击者恶意利用的风险。攻击者可能劫持固件升级的通道,将自制的固件升级包刷写进去,由此控制设备的相应模块乃至在can总线中控制整台设备,实现例如盗取设备控制权、盗取数据等目的。因此,对于例如智能汽车等对于安全性要求极高的场合,固件升级的安全性显得非常重要,应避免智能汽车的控制器通过非法固件升级的方式被盗取。为了保证设备的固件升级的安全性,通常能够在固件升级包刷写流程中确保原始固件升级包不被篡改,但不能监控设备中后续实际运行的固件升级包是否是刷写到设备中的原始固件升级包,不能针对固件升级包版本进行安全性校验,即,攻击者可能绕开升级通道的安全限制,在设备中刷写自制的固件升级包并运行,存在安全隐患。此外,对于通过物理接口接入总线刷写固件升级包的情况,例如通过obd口接入总线刷写固件升级包,可以绕过了大部分安全检测机制,刷写攻击者自制的固件升级包。如果攻击者恶意通过上述方法刷写固件,而设备内尚无相应的检测机制和报警机制,用户无法察觉。技术实现要素:为了解决上述固件升级安全性低的技术问题,本发明提出了一种固件安全升级方法、装置、车载系统和车辆。一方面,本发明一实施例提出一种固件安全升级方法,包括如下步骤:对接收的固件升级包进行解密和签名校验;基于所述固件升级包向相应的待升级设备发送固件刷写指令;基于接收的所述设备发送的刷写成功指令,向所述设备发送安全校验指令;接收所述设备基于所述安全校验指令发送的应答指令并验证;当所述应答指令为预设应答指令时,发送升级成功的消息以完成固件升级。进一步,所述固件升级包中预先内置有针对安全校验指令生成相应应答指令的应答算法,其中固件升级包的不同版本对应相同的安全校验指令和不同的应答指令,且所述固件升级包的不同版本与其安全校验指令及应答指令存在唯一对应关系。进一步,所述接收的固件升级包进行解密和签名校验步骤中,当所述签名校验成功后,记录固件升级包的版本号。进一步,在所述应答指令验证步骤中,如果所述设备发送的应答指令与预先存储的所接收的固件升级包中预置的应答算法中的预设应答指令相同,则确定固件安全升级;如果所述设备发送的应答指令与预先存储的所接收的固件升级包中预置的应答算法中的预设应答指令不同,则确定固件升级异常。进一步,在固件升级包刷写过程中,对所述设备进行安全检测,以确保固件升级过程中的安全性。进一步,当所述应答指令与所述预设应答指令不一致时,发送异常告警。另一方面,本发明另一实施例提出一种固件安全升级装置,所述固件安全升级装置包括固件升级包获取模块、固件刷写指令发送模块、安全校验指令发送模块、应答指令接收模块和判断模块,其中,固件升级包获取模块对接收的固件升级包进行解密和签名校验;固件刷写指令发送模块基于所述固件升级包向相应的待升级设备发送固件刷写指令;安全校验指令发送模块基于接收的所述设备发送的刷写成功指令,向所述设备发送安全校验指令;应答指令接收模块接收所述设备基于所述安全校验指令发送的应答指令;判断模块在所述应答指令为预设应答指令时发送升级成功的消息以完成固件升级。再一方面,本发明再一实施例提出一种固件安全升级方法,包括以下步骤:接收对待升级设备的固件刷写指令,进入监听模式;监听到待升级设备的固件升级包刷写成功指令后,向所述设备发送安全校验指令;接收所述设备基于所述安全校验指令发送的应答指令并验证;当所述应答指令为预设应答指令时,发送升级成功的消息以完成固件升级。进一步,所述固件升级包中预先内置有针对安全校验指令生成相应应答指令的应答算法,其中固件升级包的不同版本对应相同的安全校验指令和不同的应答指令,且所述固件升级包的不同版本与其安全校验指令及应答指令存在唯一对应关系。进一步,接收所述设备发送的应答指令的同时,接收所述固件升级包的版本号。进一步,在所述应答指令验证步骤中,如果所述设备发送的应答指令与预先存储的所述固件升级包中预置的应答算法中的预设应答指令相同,则确定固件安全升级;如果所述设备发送的应答指令与预先存储的所述固件升级包中预置的应答算法中的预设应答指令不同,则确定固件升级异常。进一步,当所述应答指令与所述预设应答指令不一致时,发送异常告警。又一方面,本发明又一实施例提出一种固件安全升级装置,其特征在于,所述固件安全升级装置包括监听模块、安全校验指令发送模块、应答指令接收模块和判断模块,其中,监听模块,接收对待升级设备的固件刷写指令,进入监听模式;安全校验指令发送模块,在监听模块监听到所述设备的刷写成功指令后,向所述设备发送安全校验指令;应答指令接收模块,接收所述设备基于所述安全校验指令发送的应答指令;判断模块,当所述应答指令为预设应答指令时,发送升级成功的消息以完成固件升级。本发明另一实施例还提出一种车载系统,所述车载系统内置有如上所述的固件安全升级装置的至少一个。本发明另一实施例还提出一种车辆,所述车辆包括如上所述的车载系统。本发明的有益效果:本发明实施例提出的固件安全升级方法、装置、车载系统和车辆,适用于空中升级(ota)和obd接口升级,通过预先将预设的应答算法打包在固件升级包中,在设备完成固件刷写后,发送安全验证校验指令,以通过校验所述应答算法生成的应答指令进行安全验证,从而实现通过检查发布的固件和升级后运行的固件的一致性,解决绕开升级通道的安全限制而非法写入固件包的安全问题。附图说明图1是本发明实施例1提出的一种固件安全升级方法的流程图;图2是应用本发明实施例1的固件安全升级方法的系统原理图;图3是本发明实施例2提出的一种固件安全升级装置的方框图;图4是本发明实施例3提出的一种固件安全升级方法的流程图;图5是应用本发明实施例3的固件安全升级方法的系统原理图;图6是本发明实施例4提出的一种固件安全升级装置的方框图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。但本领域技术人员知晓,本发明并不局限于附图和以下实施例。实施例1:本发明实施例提出了一种固件安全升级方法,用于对设备进行固件升级,尤其适用于采用ota(over-the-air)方式进行远程固件升级的情形,所述设备可以是汽车,如图1所示,包括如下步骤:s11,对接收的固件升级包进行解密和签名校验;所述固件升级包在打包过程中,对固件升级包进行加密和添加数字签名,以确保固件升级包本身的安全性。其中,所述加密算法和签名算法可以是现有技术中任意可实现算法,本发明对此不做限制。当接收到固件升级包后,执行解密算法和签名校验,其中所述解密算法和加密算法相对应,签名校验过程与所述签名过程相对应。进一步的,所述固件升级包中预先内置有针对安全校验指令生成相应应答指令的应答算法,在对固件升级包进行打包的过程中,预先写入针对安全校验指令生成相应应答指令的应答算法的逻辑实现程序,以进行后续的安全校验。其中所述固件升级包的不同版本对应相同的安全校验指令和不同的应答指令,且所述固件升级包的不同版本与其安全校验指令及应答指令存在唯一对应关系。例如,所述应答算法针对不同的固件升级包的版本,响应于相同的安全校验指令a或b,具有不同的应答指令,如表1所示:固件升级包的版本安全校验指令应答指令v1.0abv2.0acv3.0adv1.0bxv2.0byv3.0bz表1即,响应于相同的安全校验指令a,固件升级包的版本v1.0的应答指令为b,固件升级包的版本v2.0的应答指令为c,固件升级包的版本v3.0的应答指令为d;响应于相同的安全校验指令b,固件升级包的版本v1.0的应答指令为x,固件升级包的版本v2.0的应答指令为y,固件升级包的版本v3.0的应答指令为z。因此,固件升级包的不同版本v1.0、v2.0、v3.0与其安全校验指令及应答指令存在表1所示的唯一对应关系。基于上述应答算法,在步骤s11中,当所述签名校验成功后,记录固件升级包的版本号,从而能够根据所记录的固件升级包的版本号,使用上述与固件升级包的版本相关的应答算法,得到预设应答指令,在本实施例中即为表1中与固件升级包的版本和安全校验指令关联的应答指令,以便于在后续步骤s15中与设备发送的应答指令进行比较。s12,基于所述固件升级包向相应的待升级设备发送固件刷写指令;当所述解密和签名校验过程成功后,获的所述固件升级包,基于该固件升级包向相应的待升级设备发送固件刷写指令,以启动固件刷写流程。所述待升级设备根据刷写协议使用固件升级包进行固件刷写,将固件升级包加载至对应的存储模块中,并将固件的版本信息更新为固件升级包的版本。在固件升级包刷写过程中,对所述设备进行安全检测,以确保固件升级过程中的安全性。检测内容包括设备内网中是否有劫持和/或篡改的干扰数据包、被刷写的器件是否处于正常的工况、以及所述设备是否存在异常的网络连接,例如攻击者的连接。如果存在上述情况之一,则可停止刷写当前版本的固件升级包,并恢复之前的固件版本。在完成固件刷写后,所述设备发送刷写成功指令。s13,基于接收的所述设备发送的刷写成功指令,向所述设备发送安全校验指令;所述设备接收到安全校验指令,使用已刷写的固件升级包中的预置应答算法,针对已刷写的固件升级包的版本,发送相应的应答指令。s14,接收所述设备基于所述安全校验指令发送的应答指令并验证;s15,当所述应答指令为预设应答指令时,发送升级成功的消息以完成固件升级。具体的,在接收到所述设备发送的应答指令后,将所述设备发送的应答指令与预先存储的所接收的固件升级包中预置的应答算法中的预设应答指令进行比较。在本实施例中,所述预设应答指令为上述与固件升级包的版本和安全校验指令关联的应答指令。如果所述设备发送的应答指令是所述设备根据已所刷写的固件升级包中预设的应答算法生成的,则所述设备发送的应答指令与预先存储的所接收的固件升级包中预置的应答算法中的预设应答指令相同,则确定固件安全升级;如果所述设备发送的应答指令与预先存储的所接收的固件升级包中预置的应答算法中的预设应答指令不同,则表明相应固件所刷写的固件升级包存在安全风险,确定固件升级异常并进行记录,并通过网络发送安全告警,同时禁止采用ota方式对设备进行操作,直到由风险解除流程进行解锁。例如,在所述设备完成了固件升级包v1.0的刷写后,将一个安全校验指令a发送给所述设备,所述设备生成应答指令h,并将应答指令h进行回传。根据预先存储的所接收的固件升级包中预置的应答算法,与安全校验指令a对应的固件升级包v1.0的应答指令为b,则所述预设应答指令为b。接收所述设备基于所述安全校验指令a发送的应答指令h后,将所述设备发送的应答指令h与预先存储的所接收的固件升级包v1.0中预置的应答算法中的预设应答指令b进行比较。如果h=b,则确定固件安全升级;如果h≠b,确定固件升级异常并进行记录,并通过网络发送安全告警,同时禁止采用ota方式对设备进行操作,直到由风险解除流程进行解锁。以下,以采用ota方式对车辆进行远程固件升级为例,对本发明实施例1的固件安全升级方法进行说明。如图2所示,其固件安全升级系统包括空中升级的ota服务器、车内的安全芯片模块esu和待刷写升级的电子单元ecu,所述ota服务器中存储有挑战响应的tag的挑战端算法即,本发明实施例1中的应答算法,所述车内安全芯片模块esu执行本发明实施例1所述的固件安全升级方法的步骤。当有多个的安全校验指令时,所述应答算法可如表1所示。在本示例中,所述挑战端算法仅有一个安全校验指令aaa,例如,对于v1.1版本的固件,当接收到安全校验指令aaa时,反馈应答指令bbb。第一步,ota服务器将所述挑战端算法发送给所述车内的安全芯片模块esu,所述车内的安全芯片模块esu预先存储所述挑战端算法。第二步,在空中升级的ota服务器中具有或生成用于升级的固件包,即本发明实施例1中的固件升级包,在升级的固件包中预置所述挑战端算法。由于本示例中的挑战端算法仅有一个安全校验指令aaa,所以在升级的固件包中预置所述挑战端算法具体为在升级的固件包中打入一个hardcode的挑战相应tag,例如,对于v1.1版本的固件,当接收到安全校验指令aaa时,反馈应答指令bbb。第三步,车内的安全芯片模块esu获取升级的固件包,将其下载到车内的安全芯片模块esu,进行解密和签名校验。如果校验通过,则车内的安全芯片模块esu记录所述升级的固件包的版本号,例如v1.1,并发送固件刷写指令。第四步,车内的安全芯片模块esu或其他刷写控制部件根据刷写协议使用所述升级的固件包对待刷写升级的电子单元ecu进行固件刷写。固件刷写成功后,电子单元ecu运行新固件。第五步,车内的安全芯片模块esu根据记录的所述升级的固件包的版本号v1.1,发起挑战端算法,向所述电子单元ecu发送安全校验指令aaa(期待反馈预设应答指令bbb)。第六步,所述电子单元ecu接收到车内的安全芯片模块esu发送的安全校验指令aaa后,向安全芯片模块esu发送应答指令。如果所述电子单元ecu向车内的安全芯片模块esu发送应答指令为预设应答指令bbb时,则所述车内的安全芯片模块esu确定应答正常,所述电子单元ecu的固件升级成功。如果所述电子单元ecu向安全芯片模块esu发送应答指令不同于预设应答指令bbb时,则所述车内的安全芯片模块esu确定应答异常,所述电子单元ecu所刷写的固件包存在安全风险,确定固件升级异常并进行记录,所述安全芯片模块esu通过网络向车辆和/或ota服务器发送安全告警,同时禁止采用ota方式对车辆进行操作。实施例2:本发明实施例提出了一种固件安全升级装置,用于对设备进行固件升级,尤其适用于采用ota(over-the-air)方式进行远程固件升级的情形,所述设备可以是汽车,如图3所示,包括固件升级包获取模块、固件刷写指令发送模块、安全校验指令发送模块、应答指令接收模块和判断模块。固件升级包获取模块,对接收的固件升级包进行解密和签名校验。所述固件升级包在打包过程中,对固件升级包进行加密和添加数字签名,以确保固件升级包本身的安全性。其中,所述加密算法和签名算法可以是现有技术中任意可实现算法,本发明对此不做限制。当接收到固件升级包后,执行解密算法和签名校验,其中所述解密算法和加密算法相对应,签名校验过程与所述签名过程相对应。进一步的,所述固件升级包中预先内置有针对安全校验指令生成相应应答指令的应答算法,在对固件升级包进行打包的过程中,预先写入针对安全校验指令生成相应应答指令的应答算法的逻辑实现程序,以进行后续的安全校验。其中所述固件升级包的不同版本对应相同的安全校验指令和不同的应答指令,且所述固件升级包的不同版本与其安全校验指令及应答指令存在唯一对应关系。例如,所述应答算法针对不同的固件升级包的版本,响应于相同的安全校验指令a或b,具有不同的应答指令,如表1所示。即,响应于相同的安全校验指令a,固件升级包的版本v1.0的应答指令为b,固件升级包的版本v2.0的应答指令为c,固件升级包的版本v3.0的应答指令为d;响应于相同的安全校验指令b,固件升级包的版本v1.0的应答指令为x,固件升级包的版本v2.0的应答指令为y,固件升级包的版本v3.0的应答指令为z。因此,固件升级包的不同版本v1.0、v2.0、v3.0与其安全校验指令及应答指令存在表1所示的唯一对应关系。基于上述应答算法,当所述签名校验成功后,固件升级包获取模块记录固件升级包的版本号,以便能够得到判断模块使用的预设应答指令。根据所记录的固件升级包的版本号,使用上述与固件升级包的版本相关的应答算法,即可得到所述预设应答指令,在本实施例中即为表1中与固件升级包的版本和安全校验指令关联的应答指令。固件刷写指令发送模块,基于所述固件升级包向相应的待升级设备发送固件刷写指令。当所述解密和签名校验过程成功后,获的所述固件升级包,基于该固件升级包向相应的待升级设备发送固件刷写指令,以启动固件刷写流程。所述待升级设备根据刷写协议使用固件升级包进行固件刷写,将固件升级包加载至对应的存储模块中,并将固件的版本信息更新为固件升级包的版本。在固件升级包刷写过程中,固件刷写指令发送模块对所述设备进行安全检测,以确定固件升级过程中的安全性。检测内容包括设备内网中是否有劫持和/或篡改的干扰数据包、被刷写的固件是否处于正常的工况、以及所述设备是否存在异常的网络连接,例如攻击者的连接。如果存在上述情况之一,则可停止刷写当前版本的固件升级包,并恢复之前的固件版本。在完成固件刷写后,所述设备发送刷写成功指令。安全校验指令发送模块,基于接收的所述设备发送的刷写成功指令,向所述设备发送安全校验指令。所述设备接收到安全校验指令,使用已刷写的固件升级包中的预置应答算法,针对已刷写的固件升级包的版本,发送相应的应答指令。应答指令接收模块,接收所述设备基于所述安全校验指令发送的应答指令。判断模块,当所述应答指令为预设应答指令时,发送升级成功的消息以完成固件升级。具体的,在接收到所述设备发送的应答指令后,判断模块将所述设备发送的应答指令与预先存储的所接收的固件升级包中预置的应答算法中的预设应答指令进行比较。在本实施例中,所述预设应答指令为上述与固件升级包的版本和安全校验指令关联的应答指令。如果所述设备发送的应答指令是所述设备根据已所刷写的固件升级包中预设的应答算法生成的,则所述设备发送的应答指令与预先存储的所接收的固件升级包中预置的应答算法中的预设应答指令相同,则判断模块确定固件安全升级;如果所述设备发送的应答指令与预先存储的所接收的固件升级包中预置的应答算法中的预设应答指令不同,则表明相应固件所刷写的固件升级包存在安全风险,判断模块确定固件升级异常并进行记录,并通过网络发送安全告警,同时禁止采用ota方式对设备进行操作,直到由风险解除流程进行解锁。例如,在所述设备完成了固件升级包v1.0的刷写后,将一个安全校验指令a发送给所述设备,所述设备生成应答指令h,并将应答指令h进行回传。根据预先存储的所接收的固件升级包中预置的应答算法,与安全校验指令a对应的固件升级包v1.0的应答指令为b,则所述预设应答指令为b。判断模块接收所述设备基于所述安全校验指令a发送的应答指令h后,将所述设备发送的应答指令h与预先存储的所接收的固件升级包v1.0中预置的应答算法中的预设应答指令b进行比较。如果h=b,则确定固件安全升级;如果h≠b,确定固件升级异常并进行记录,并通过网络发送安全告警,同时禁止采用ota方式对设备进行操作,直到由风险解除流程进行解锁。实施例3:本发明实施例提出了一种固件安全升级方法,用于对设备进行固件升级,尤其适用于采用obd接口方式进行固件升级的情形,如图4所示,包括如下步骤:s21,接收对待升级设备的固件刷写指令,进入监听模式。具体的,监听can总线或设备所在局域网中的刷写指令,在监听到对待升级设备的固件刷写指令后,进入监听模式,以监听固件的刷写进度。在线诊断仪接收固件升级包,使用秘钥和数字证书,对接收的固件升级包进行解密和签名校验,并根据刷写协议使用固件升级包进行固件刷写,将固件升级包加载至对应的存储模块中,并将固件的版本信息更新为固件升级包的版本号。其中,所述固件升级包在打包过程中,对固件升级包进行加密和添加数字签名,以确保固件升级包本身的安全性。其中,所述加密算法和签名算法可以是现有技术中任意可实现算法,本发明对此不做限制。当接收到固件升级包后,执行解密算法和签名校验,其中所述解密算法和加密算法相对应,签名校验过程与所述签名过程相对应。进一步的,所述固件升级包中预先内置有针对安全校验指令生成相应应答指令的应答算法,在对固件升级包进行打包的过程中,预先写入针对安全校验指令生成相应应答指令的应答算法的逻辑实现程序,以进行后续的安全校验。其中所述固件升级包的不同版本对应相同的安全校验指令和不同的应答指令,且所述固件升级包的不同版本与其安全校验指令及应答指令存在唯一对应关系。例如,所述应答算法针对不同的固件升级包的版本,响应于相同的安全校验指令a或b,具有不同的应答指令,如表1所示。即,响应于相同的安全校验指令a,固件升级包的版本v1.0的应答指令为b,固件升级包的版本v2.0的应答指令为c,固件升级包的版本v3.0的应答指令为d;响应于相同的安全校验指令b,固件升级包的版本v1.0的应答指令为x,固件升级包的版本v2.0的应答指令为y,固件升级包的版本v3.0的应答指令为z。因此,固件升级包的不同版本v1.0、v2.0、v3.0与其安全校验指令及应答指令存在表1所示的唯一对应关系。s22,监听到所述设备的刷写成功指令后,向所述设备发送安全校验指令。基于与固件升级包的版本相关的上述应答算法,所述设备接收到安全校验指令,需要回传应答指令以及所述固件升级包的版本号。正常情况下,所述设备使用已刷写的固件升级包中的预置应答算法,针对已刷写的固件升级包的版本,发送相应的应答指令。s23,接收所述设备基于所述安全校验指令发送的应答指令并验证。在本实施例中,基于与固件升级包的版本相关的上述应答算法,在接收所述设备发送的应答指令的同时,接收所述固件升级包的版本号,从而能够根据所接收的固件升级包的版本号,使用上述与固件升级包的版本相关的应答算法,得到预设应答指令,即,表1中与固件升级包的版本和安全校验指令关联的应答指令,以便于在后续步骤s24中与设备发送的应答指令进行比较。s24,当所述应答指令为预设应答指令时,发送升级成功的消息以完成固件升级。具体的,在接收到所述设备发送的应答指令后,将所述设备发送的应答指令与预先存储的所述固件升级包中预置的应答算法中的预设应答指令进行比较。在本实施例中,所述预设应答指令为上述与固件升级包的版本和安全校验指令关联的应答指令。如果所述设备发送的应答指令是所述设备根据已所刷写的固件升级包中预设的应答算法生成的,则所述设备发送的应答指令与预先存储的所述固件升级包中预置的应答算法中的预设应答指令相同,则确定固件安全升级;如果所述设备发送的应答指令与预先存储的所述固件升级包中预置的应答算法中的预设应答指令不同,则表明相应固件所刷写的固件升级包存在安全风险,确定固件升级异常并进行记录,并通过网络发送安全告警,同时禁止采用obd方式对设备进行操作,直到由风险解除流程进行解锁。例如,在所述设备完成了固件升级包v1.0的刷写后,将一个安全校验指令a发送给所述设备,所述设备生成应答指令h,并将应答指令h和固件升级包的版本号v1.0进行回传。根据预先存储的所述固件升级包中预置的应答算法,与安全校验指令a对应的固件升级包v1.0的应答指令为b,则所述预设应答指令为b。接收所述设备基于所述安全校验指令a发送的应答指令h和固件升级包的版本号v1.0后,将所述设备发送的应答指令h与预先存储的所述固件升级包v1.0中预置的应答算法中的预设应答指令b进行比较。如果h=b,则确定固件安全升级;如果h≠b,确定固件升级异常并进行记录,并通过网络发送安全告警,同时禁止采用obd方式对设备进行操作,直到由风险解除流程进行解锁。以下,以采用obd接口方式对车辆固件升级为例,对本发明实施例3的固件安全升级方法进行说明。如图5所示,其固件安全升级系统包括固件生成服务器、诊断仪、车内的安全芯片模块esu和待刷写升级的电子单元ecu,所述固件生成服务器中存储有挑战响应的tag的挑战端算法即,本发明实施例3中的应答算法,所述车内安全芯片模块esu执行本发明实施例3所述的固件安全升级方法的步骤。当有多个的安全校验指令时,所述应答算法可如表1所示。在本示例中,所述挑战端算法仅有一个安全校验指令aaa,例如,对于v1.1版本的固件,当接收到安全校验指令aaa时,反馈应答指令bbb。第一步,固件生成服务器将所述挑战端算法发送给所述车内的安全芯片模块esu,所述车内的安全芯片模块esu预先存储所述挑战端算法。第二步,在固件生成服务器中生成用于升级的固件包,即本发明实施例1中的固件升级包,在升级的固件包中预置所述挑战端算法。由于本示例中的挑战端算法仅有一个安全校验指令aaa,所以在升级的固件包中预置所述挑战端算法具体为在升级的固件包中打入一个hardcode的挑战相应tag,例如,对于v1.1版本的固件,当接收到安全校验指令aaa时,反馈应答指令bbb。第三步,所述诊断仪从固件生成服务器获取升级的固件包,例如v1.1版本的固件包。所述诊断仪以物理方式接入车辆的obd接口,对电子元件ecu进行固件升级刷写。第四步,所述诊断仪根据刷写协议使用所述升级的固件包对待刷写升级的电子单元ecu进行固件刷写。固件刷写成功后,电子单元ecu运行新固件。第五步,所述车内的安全芯片模块esu监听can总线或车辆所在局域网中的刷写指令,在监听到对待刷写升级的电子单元ecu的固件刷写指令后,进入监听模式,以监听固件的刷写进度。当所述车内的安全芯片模块esu监听到所述电子单元ecu完成了升级的固件包的刷写后,向所述电子单元ecu发起挑战端算法,向所述电子单元ecu发送安全校验指令aaa。第六步,所述电子单元ecu接收到车内的安全芯片模块esu发送的安全校验指令aaa后,向安全芯片模块esu发送应答指令以及所述升级的固件包的版本号v1.1。所述车内的安全芯片模块esu根据所述电子单元ecu发送的固件包的版本号v1.1,利用预先存储的所述挑战端算法,得到期待反馈的预设应答指令bbb。如果所述电子单元ecu向车内的安全芯片模块esu发送应答指令为预设应答指令bbb时,则所述车内的安全芯片模块esu确定应答正常,所述电子单元ecu的固件升级成功。如果所述电子单元ecu向安全芯片模块esu发送应答指令不同于预设应答指令bbb时,则所述车内的安全芯片模块esu确定应答异常,所述电子单元ecu所刷写的固件包存在安全风险,确定固件升级异常并进行记录,所述安全芯片模块esu通过网络向车辆和/或固件生成服务器发送安全告警,同时禁止采用ota方式对车辆进行操作。实施例4:本发明实施例提出了一种固件安全升级装置,用于对设备进行固件升级,尤其适用于采用obd接口方式进行固件升级的情形,所述设备可以是汽车,如图6所示,包括监听模块、安全校验指令发送模块、应答指令接收模块和判断模块。其中,监听模块,接收对待升级设备的固件刷写指令,进入监听模式。具体的,监听can总线或设备所在局域网中的刷写指令,在监听到对待升级设备的固件刷写指令后,进入监听模式,以监听固件的刷写进度。在线诊断仪接收固件升级包,使用秘钥和数字证书,对接收的固件升级包进行解密和签名校验,并根据刷写协议使用固件升级包进行固件刷写,将固件升级包加载至对应的存储模块中,并将固件的版本信息更新为固件升级包的版本号。其中,所述固件升级包在打包过程中,对固件升级包进行加密和添加数字签名,以确保固件升级包本身的安全性。其中,所述加密算法和签名算法可以是现有技术中任意可实现算法,本发明对此不做限制。当接收到固件升级包后,执行解密算法和签名校验,其中所述解密算法和加密算法相对应,签名校验过程与所述签名过程相对应。进一步的,所述固件升级包中预先内置有针对安全校验指令生成相应应答指令的应答算法,在对固件升级包进行打包的过程中,预先写入针对安全校验指令生成相应应答指令的应答算法的逻辑实现程序,以进行后续的安全校验。其中所述固件升级包的不同版本对应相同的安全校验指令和不同的应答指令,且所述固件升级包的不同版本与其安全校验指令及应答指令存在唯一对应关系。例如,所述应答算法针对不同的固件升级包的版本,响应于相同的安全校验指令a或b,具有不同的应答指令,如表1所示。即,响应于相同的安全校验指令a,固件升级包的版本v1.0的应答指令为b,固件升级包的版本v2.0的应答指令为c,固件升级包的版本v3.0的应答指令为d;响应于相同的安全校验指令b,固件升级包的版本v1.0的应答指令为x,固件升级包的版本v2.0的应答指令为y,固件升级包的版本v3.0的应答指令为z。因此,固件升级包的不同版本v1.0、v2.0、v3.0与其安全校验指令及应答指令存在表1所示的唯一对应关系。在监听模块监听到所述设备的刷写成功指令后,安全校验指令发送模块向所述设备发送安全校验指令。基于与固件升级包的版本相关的上述应答算法,所述设备接收到安全校验指令,需要回传应答指令以及所述固件升级包的版本号。正常情况下,所述设备使用已刷写的固件升级包中的预置应答算法,针对已刷写的固件升级包的版本,发送相应的应答指令。应答指令接收模块,接收所述设备基于所述安全校验指令发送的应答指令。在本实施例中,基于与固件升级包的版本相关的上述应答算法,应答指令接收模块在接收所述设备发送的应答指令的同时,接收所述固件升级包的版本号,以便能够得到判断模块使用的预设应答指令。根据所接收的固件升级包的版本号,使用上述与固件升级包的版本相关的应答算法,即可得到预设应答指令,即,表1中与固件升级包的版本和安全校验指令关联的应答指令。判断模块,当所述应答指令为预设应答指令时,发送升级成功的消息以完成固件升级。具体的,在接收到所述设备发送的应答指令后,判断模块将所述设备发送的应答指令与预先存储的所述固件升级包中预置的应答算法中的预设应答指令进行比较。在本实施例中,所述预设应答指令为上述与固件升级包的版本和安全校验指令关联的应答指令。如果所述设备发送的应答指令是所述设备根据已所刷写的固件升级包中预设的应答算法生成的,则所述设备发送的应答指令与预先存储的所述固件升级包中预置的应答算法中的预设应答指令相同,则判断模块确定固件安全升级;如果所述设备发送的应答指令与预先存储的所述固件升级包中预置的应答算法中的预设应答指令不同,则表明相应固件所刷写的固件升级包存在安全风险,判断模块确定固件升级异常并进行记录,并通过网络发送安全告警,同时禁止采用obd方式对设备进行操作,直到由风险解除流程进行解锁。例如,在所述设备完成了固件升级包v1.0的刷写后,将一个安全校验指令a发送给所述设备,所述设备生成应答指令h,并将应答指令h和固件升级包的版本号v1.0进行回传。根据预先存储的所述固件升级包中预置的应答算法,与安全校验指令a对应的固件升级包v1.0的应答指令为b,则所述预设应答指令为b。判断模块接收所述设备基于所述安全校验指令a发送的应答指令h和固件升级包的版本号v1.0后,将所述设备发送的应答指令h与预先存储的所述固件升级包v1.0中预置的应答算法中的预设应答指令b进行比较。如果h=b,则确定固件安全升级;如果h≠b,确定固件升级异常并进行记录,并通过网络发送安全告警,同时禁止采用obd方式对设备进行操作,直到由风险解除流程进行解锁。本发明实施例还提出一种车载系统,所述车载系统内置有本发明实施例2所述的基于ota远程升级的固件安全升级装置和/或本发明实施例4所述的基于obd接口方式进行升级的固件安全升级装置,所述固件安全升级装置控制车辆进行固件升级,确保固件安全升级。本发明实施例还提出一种车辆,所述车辆包括如上所述的车载系统,从而使得所述车辆具有固件安全升级的功能。本发明实施例还提出一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。本发明实施例还提出一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。本领域技术人员可以理解,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或它们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。以上,对本发明的实施方式进行了说明。但是,本发明不限定于上述实施方式。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1