应用程序完整性校验方法及设备与流程

文档序号:18886374发布日期:2019-10-15 20:59阅读:754来源:国知局
应用程序完整性校验方法及设备与流程

本发明实施例涉及程序校验技术领域,尤其涉及一种应用程序完整性校验方法及设备。



背景技术:

电子控制单元(electroniccontrolunit,ecu)上电时首先执行bootloader,然后跳转到应用程序。为保证ecu中应用程序的安全可靠运行,需要在跳转到应用程序前对ecu内的程序做完整性检查。

现有技术中检查ecu程序完整性一般是在bootloader中对整个程序区进行检查,通过判断程序区的特征值与预设的特征值是否一致,确定应用程序的完整性。

然而,上述检验方式的校验时间随整个程序区的大小而变化,若程序区较大则会出现校验时间很长的问题,导致ecu在上电时不能及时响应用户命令。



技术实现要素:

本发明实施例提供一种应用程序完整性校验方法及设备,以提高ecu上电时的响应速度,提升用户体验

第一方面,本发明实施例提供一种应用程序完整性校验方法,包括:

对待校验应用程序所在的应用程序区内的关键程序进行完整性校验,得到所述关键程序的特征值;

根据所述关键程序的特征值,判断所述关键程序是否完整;

若所述关键程序完整,则执行所述待校验应用程序。

在一种可能的设计中,所述关键程序包含对所述应用程序区进行校验的第一代码;所述若所述关键程序完整,则执行所述待校验应用程序之后,还包括:

在所述待校验应用程序的周期性调度任务中,根据所述第一代码对所述待校验应用程序进行完整性校验,得到所述待校验应用程序的特征值;

根据所述待校验应用程序的特征值,判断所述待校验应用程序是否完整;

若所述待校验应用程序不完整,则将电子控制单元ecu进行复位。

在一种可能的设计中,所述在所述待校验应用程序的周期性调度任务中,根据所述第一代码对所述待校验应用程序进行完整性校验,得到所述待校验应用程序的特征值,包括:

所述在所述待校验应用程序的周期性调度任务中,通过分段处理,根据所述第一代码对所述待校验应用程序进行完整性校验。

在一种可能的设计中,所述在所述待校验应用程序的周期性调度任务中,通过分段处理,根据所述第一代码对所述待校验应用程序进行完整性校验,得到所述待校验应用程序的特征值,包括:

按照预设规则将所述待校验程序划分为多段子程序;

在所述待校验应用程序的周期性调度任务中的第一周期内,根据所述第一代码对所述多段子程序中的第一子程序进行校验,得到第一特征值;

在所述待校验应用程序的周期性调度任务中的第二周期内,根据所述第一代码与所述第一特征值,对所述多段子程序中的第二子程序进行校验,得到第二特征值;

在所述待校验应用程序的周期性调度任务中的第三周期内,根据所述第一代码与所述第二特征值,对所述多段子程序中的第三子程序进行校验,得到第三特征值;

以此类推,直至将所述多段子程序均校验完毕,得到所述待校验应用程序的特征值。

在一种可能的设计中,所述根据所述待校验应用程序的特征值,判断所述待校验应用程序是否完整之后,还包括:

若所述待校验应用程序完整,则继续执行所述待校验应用程序。

在一种可能的设计中,所述对待校验应用程序所在的应用程序区内的关键程序进行完整性校验之前,还包括:

判断执行引导程序时是否存在刷写指令;

若不存在刷写指令,则对待校验应用程序所在的应用程序区内的关键程序进行完整性校验。

在一种可能的设计中,所述根据所述关键程序的特征值,判断所述关键程序是否完整,包括:

判断所述关键程序区的特征值与预设特征值是否一致;

若所述关键程序区的特征值与预设特征值一致,则所述关键程序完整。

第二方面,本发明实施例提供一种应用程序完整性校验设备,包括:

第一校验模块,用于对待校验应用程序所在的应用程序区内的关键程序进行完整性校验,得到所述关键程序的特征值;所述关键程序包含对所述应用程序区进行校验的第一代码;

第一判断模块,用于根据所述关键程序的特征值,判断所述关键程序是否完整;

第一执行模块,用于若所述关键程序完整,则执行所述待校验应用程序。

第三方面,本发明实施例提供一种应用程序完整性校验设备,包括:至少一个处理器和存储器;

所述存储器存储计算机执行指令;

所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的方法。

第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的方法。

本实施例提供的应用程序完整性校验方法及设备,该方法通过对待校验应用程序所在的应用程序区内的关键程序进行完整性校验,得到所述关键程序的特征值;根据所述关键程序的特征值,判断所述关键程序是否完整;若所述关键程序完整,则执行所述待校验应用程序。能够通过仅对应用程序中的重要程序进行校验,缩短校验时间,使ecu快速启动,以提高对用户输入指令的响应速度,进而提升用户体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的ecu存储区的分区示意图;

图2为本发明又一实施例提供的应用程序完整性校验方法的流程示意图;

图3为本发明又一实施例提供的应用程序完整性校验方法的流程示意图;

图4为本发明又一实施例提供的应用程序完整性校验方法的流程示意图;

图5为本发明又一实施例提供的应用程序完整性校验设备的结构示意图;

图6为本发明又一实施例提供的应用程序完整性校验设备的结构示意图;

图7为本发明又一实施例提供的应用程序完整性校验设备的硬件结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明一实施例提供的ecu存储区的分区示意图。如图1所示,ecu存储区至少包括引导程序(bootloader)区、应用程序区和校验和存储区。在ecu上电时,首先执行存储于bootloader程序区的bootloader程序对硬件设备进行初始化,建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用应用程序准备好正确的环境,然后执行存储于应用程序区内的应用程序。为保证应用程序的安全性,在执行应用程序之前,先要对应用程序进行完整性校验,检测应用程序是否出现错误或被人篡改。该校验过程可以由终端设备,例如ecu本身的处理器执行,还可以通过后台服务器执行,本申请对此不作限定。

在具体实现过程中,bootloader执行完毕,终端设备或服务器对应用程序区内的应用程序进行校验和计算,得到该应用程序的校验和,并将该计算得到的校验和与存储在校验和存储区内的预存校验和进行比较,如果一致,则表明应用程序完整,然后执行应用程序。若不一致,则不能执行应用程序,需要对应用程序进行刷新等操作。

由此可见,ecu上电的时间包括计算应用程序区应用程序的校验和的时间。ecu上电响应用户命令的快慢与该计算校验和的时间相关,也就是说如果应用程序区内应用程序很大,则需要花费很长时间进行校验和的计算,于是ecu上电时就不能对用户命令进行及时的响应。基于此,本发明实施例提供一种应用程序完整性校验方法,以提高应用程序完整性校验的效率,缩短ecu上电时对用户命令的响应时间。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图2为本发明又一实施例提供的应用程序完整性校验方法的流程示意图。如图2所示,该方法包括:

201、对待校验应用程序所在的应用程序区内的关键程序进行完整性校验,得到所述关键程序的特征值。

实际应用中,本实施例的执行主体可以为终端设备或服务器,终端设备可以为任意一种ecu,例如发动机ecu,液压ecu等。

本实施例中,所述关键程序是应用程序区中应用程序中的部分应用程序。是用来完成ecu基本功能的程序。应用程序中除关键程序外的所有程序为非关键程序,该非关键程序为完成ecu附加功能的程序。例如,对于发动机ecu来说,该关键程序至少包括发动机启动程序,非关键程序可以是空调开关、环境温度等信号采集的程序。对于推土机或者挖掘机内的液压ecu来说,关键程序至少包括控制完成前进、后退、抓取等基本功能的程序,非关键程序可以为控制座椅调整等附加功能的程序。

202、根据所述关键程序的特征值,判断所述关键程序是否完整。

可选地,所述特征值可以为签名或者校验和。得到该特征值可以通过多种算法来完成。例如可以采用crc算法、哈希算法或者md5算法,本申请对此不做限定。

具体的,判断所述关键程序区的特征值与预设特征值是否一致。

若所述关键程序区的特征值与预设特征值一致,则所述关键程序完整。

可以理解,进行完整性校验得到该特征值的算法需要与获得预设特征值的算法相一致,才能够进行正确的比对。

203、若所述关键程序完整,则执行所述待校验应用程序。

实际应用中,关键程序如果被检测完整,则ecu可以控制对应的硬件设备完成基本功能。因此可以执行应用程序。例如发动机可以执行正常的启动策略,液压装置可以做出前进后退等基本动作。

本实施例提供的应用程序完整性校验方法,通过对待校验应用程序所在的应用程序区内的关键程序进行完整性校验,得到所述关键程序的特征值;根据所述关键程序的特征值,判断所述关键程序是否完整;若所述关键程序完整,则执行所述待校验应用程序。能够通过仅对应用程序中的重要程序进行校验,缩短校验时间,使ecu快速启动,以提高对用户输入指令的响应速度,进而提升用户体验。

考虑到,即使应用程序中非关键程序控制的附加功能比较次要,但是如果非关键程序存在问题,还是会造成一定程度的影响。图3为本发明又一实施例提供的应用程序完整性校验方法的流程示意图。在上述实施例的基础上,本实施例对非关键程序的校验进行了详细说明。如图3所示,该方法包括:

301、对待校验应用程序所在的应用程序区内的关键程序进行完整性校验,得到所述关键程序的特征值。

302、根据所述关键程序的特征值,判断所述关键程序是否完整。

303、若所述关键程序完整,则执行所述待校验应用程序。

本实施例中步骤301至步骤303与上述实施例中步骤201至步骤203相类似,此处不再赘述。

304、所述关键程序包含对所述应用程序区进行校验的第一代码;在所述待校验应用程序的周期性调度任务中,根据所述第一代码对所述待校验应用程序进行完整性校验,得到所述待校验应用程序的特征值。

本实施例中,所述周期性调度任务是指ecu进行初始化后,会周期性执行信号采集或者信号处理的任务。以发动机ecu为例,发动机启动后,可以以10ms的周期,采集油门踏板的开度,还可以以10ms的周期控制配油量,修正配油参数,还可以以100ms的周期采集某个故障灯的开关量。

实际应用中,在对关键程序进行校验时,需要对后续在待校验应用程序的周期性调度任务中的进一步完整性校验所采用的算法代码进行完整性校验,即对所述第一代码进行校验。以保证在周期性调度任务中的进一步校验的准确性。

考虑到周期性调度任务的周期比较短,因此可以将待校验应用程序进行分段,在每个周期内校验一段代码。

在一种具体实现方式中,所述在所述待校验应用程序的周期性调度任务中,通过分段处理,根据所述第一代码对所述待校验应用程序进行完整性校验,可以包括:

3041、按照预设规则将所述待校验程序划分为多段子程序。

具体的,可以将待校验程序按照预设长度进行划分,例如将待校验程序划分为16k大小。

3042、在所述待校验应用程序的周期性调度任务中的第一周期内,根据所述第一代码对所述多段子程序中的第一子程序进行校验,得到第一特征值。

3043、在所述待校验应用程序的周期性调度任务中的第二周期内,根据所述第一代码与所述第一特征值,对所述多段子程序中的第二子程序进行校验,得到第二特征值。

3044、在所述待校验应用程序的周期性调度任务中的第三周期内,根据所述第一代码与所述第二特征值,对所述多段子程序中的第三子程序进行校验,得到第三特征值。

3045、以此类推,直至将所述多段子程序均校验完毕,得到所述待校验应用程序的特征值。

在另一种具体实现方式中,所述在所述待校验应用程序的周期性调度任务中,通过分段处理,根据所述第一代码对所述待校验应用程序进行完整性校验,可以包括:

3046、按照预设规则将所述待校验程序划分为多段子程序。

3047、在所述待校验应用程序的周期性调度任务中的第一周期内,根据所述第一代码对所述多段子程序中的第一子程序进行校验,得到第一特征值。

3048、在所述待校验应用程序的周期性调度任务中的第二周期内,根据所述第一代码对所述多段子程序中的第二子程序进行校验,得到第二特征值。

3049、以此类推,直至将所述多段子程序均校验完毕,得到所述待校验应用程序的多个特征值,并根据该多个特征值计算待校验应用程序的特征值。

305、根据所述待校验应用程序的特征值,判断所述待校验应用程序是否完整。

可选地,所述特征值可以为签名或者校验和。得到该特征值可以通过多种算法来完成。例如可以采用crc算法、哈希算法或者md5算法,本申请对比不做限定。

具体的,判断所述待校验应用程序的特征值与预设特征值是否一致。

若所述待校验应用程序的特征值与预设特征值一致,则所述关键程序完整。

可以理解,进行完整性校验得到该特征值的算法需要与获得预设特征值的算法相一致,才能够进行正确的比对。

306、若所述待校验应用程序不完整,则将电子控制单元ecu进行复位。

307、若所述待校验应用程序完整,则继续执行所述待校验应用程序。

本实施例提供的应用程序完整性校验方法,通过在周期性任务调度中,完成对待校验应用程序的完整性校验,能够保证整个应用程序的完整与安全。

考虑到应用程序升级或故障需要进行刷新,图4为本发明又一实施例提供的应用程序完整性校验方法的流程示意图。在上述实施例的基础上,例如在图1所示的实施例的基础上,本实施例对刷新指令进行了监测,如图4所示,该方法包括:

401、判断执行引导程序时是否存在刷写指令。

402、若不存在刷写指令,则对待校验应用程序所在的应用程序区内的关键程序进行完整性校验,得到所述关键程序的特征值;所述关键程序包含对所述应用程序区进行校验的第一代码。

403、根据所述关键程序的特征值,判断所述关键程序是否完整。

具体的,判断所述关键程序区的特征值与预设特征值是否一致。

若所述关键程序区的特征值与预设特征值一致,则所述关键程序完整。

404、若所述关键程序完整,则执行所述待校验应用程序。

405、若所述关键程序不完整,则停留在bootloader中。

本实施例中步骤402至步骤403与上述实施例中步骤201与步骤203相类似,此处不再赘述。

实际应用中,如果需要对应用程序进行升级,可以输入刷写指令对应用程序进行刷写。在bootloader执行完毕后,对应用程序进行校验前,对该刷写指令进行监测,如果存在刷写指令,则不必进行完整性校验以及后续的应用程序执行操作。直接进行应用程序刷写操作。

本实施例提供的应用程序完整性校验方法,通过对刷写指令进行监控,能够简化流程,减少不必要的校验时间。

图5为本发明又一实施例提供的应用程序完整性校验设备的结构示意图。如图5所示,该应用程序完整性校验设备50包括:第一校验模块501、第一判断模块502以及第一执行模块503。

第一校验模块501,用于对待校验应用程序所在的应用程序区内的关键程序进行完整性校验,得到所述关键程序的特征值;所述关键程序包含对所述应用程序区进行校验的第一代码;

第一判断模块502,用于根据所述关键程序的特征值,判断所述关键程序是否完整;

第一执行模块503,用于若所述关键程序完整,则执行所述待校验应用程序。

本发明实施例提供的应用程序完整性校验设备,第一校验模块501通过对待校验应用程序所在的应用程序区内的关键程序进行完整性校验,得到所述关键程序的特征值;所述关键程序包含对所述应用程序区进行校验的第一代码;第一判断模块502,根据所述关键程序的特征值,判断所述关键程序是否完整;第一执行模块503在所述关键程序完整时执行所述待校验应用程序。能够缩短校验时间,使ecu快速启动,以提高对用户输入指令的响应速度,进而提升用户体验。

图6为本发明又一实施例提供的应用程序完整性校验设备的结构示意图。如图6所示,该应用程序完整性校验设备50还包括:第二校验模块504、第二判断模块505。

可选地,所述设备还包括:

第二校验模块504,用于在所述待校验应用程序的周期性调度任务中,根据所述第一代码对所述待校验应用程序进行完整性校验,得到所述待校验应用程序的特征值;

根据所述待校验应用程序的特征值,判断所述待校验应用程序是否完整;

若所述待校验应用程序不完整,则将电子控制单元ecu进行复位。

可选地,所述第二校验模块504具体用于:

所述在所述待校验应用程序的周期性调度任务中,通过分段处理,根据所述第一代码对所述待校验应用程序进行完整性校验。

可选地,所述第二校验模块504具体用于:

按照预设规则将所述待校验程序划分为多段子程序;

在所述待校验应用程序的周期性调度任务中的第一周期内,根据所述第一代码对所述多段子程序中的第一子程序进行校验,得到第一特征值;

在所述待校验应用程序的周期性调度任务中的第二周期内,根据所述第一代码与所述第一特征值,对所述多段子程序中的第二子程序进行校验,得到第二特征值;

在所述待校验应用程序的周期性调度任务中的第三周期内,根据所述第一代码与所述第二特征值,对所述多段子程序中的第三子程序进行校验,得到第三特征值;

以此类推,直至将所述多段子程序均校验完毕,得到所述待校验应用程序的特征值。

可选地,所述第二校验模块504具体用于:

若所述待校验应用程序完整,则继续执行所述待校验应用程序。

可选地,所述设备还包括:

第二判断模块505,用于判断执行引导程序时是否存在刷写指令;

所述第一校验模块501,具体用于若不存在刷写指令,则对待校验应用程序所在的应用程序区内的关键程序进行完整性校验。

可选地,所述第一判断模块502,具体用于:

判断所述关键程序区的特征值与预设特征值是否一致;

若所述关键程序区的特征值与预设特征值一致,则所述关键程序完整。

本发明实施例提供的应用程序完整性校验设备,可用于执行上述的方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

图7为本发明又一实施例提供的应用程序完整性校验设备的硬件结构示意图。如图7所示,本实施例提供的应用程序完整性校验设备70包括:至少一个处理器701和存储器702。其中,处理器701、存储器702通过总线703连接。

在具体实现过程中,至少一个处理器701执行所述存储器702存储的计算机执行指令,使得至少一个处理器701执行如上应用程序完整性校验设备70所执行的应用程序完整性校验方法。

处理器701的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。

在上述的图7所示的实施例中,应理解,处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器。

总线可以是工业标准体系结构(industrystandardarchitecture,isa)总线、外部设备互连(peripheralcomponentinterconnect,pci)总线或扩展工业标准体系结构(extendedindustrystandardarchitecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上应用程序完整性校验设备执行的应用程序完整性校验方法。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上应用程序完整性校验设备执行的应用程序完整性校验方法。

上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。

一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(applicationspecificintegratedcircuits,简称:asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1