对提取的固件数据进行校验的方法、装置以及电子设备制造方法及图纸

技术编号:37605318 阅读:11 留言:0更新日期:2023-05-18 11:57
本申请提供了一种对提取的固件数据进行校验的方法、装置以及电子设备,其中,该方法包括:向待测芯片发送读指令,其中,读指令用于提取固件数据;在提取固件数据过程中,对传输的通信数据进行第一校验,得到固件提取结果,其中,第一校验用于确定固件数据的正确性;对固件提取结果进行第二校验,得出固件数据的完整性评分,其中,第二校验用于确定固件数据的完整性。通过本申请,解决了相关技术中存在缺少对固件数据提取过程以及固件提取结果进行有效校验的手段,无法判断提取到的固件数据是否真实可靠的问题。真实可靠的问题。真实可靠的问题。

【技术实现步骤摘要】
对提取的固件数据进行校验的方法、装置以及电子设备


[0001]本专利技术涉及硬件安全测试
,尤其涉及一种对提取的固件数据进行校验的方法、装置以及电子设备。

技术介绍

[0002]固件提取,是对智能网联汽车进行渗透测试的必要手段。通常会通过打开设备并连接到单片微型计算机(Microcontroller Unit,MCU)或闪存芯片来手动从设备中提取固件数据。
[0003]读取嵌入式MCU固件数据的常用的方法有:使用MCU芯片供应商提供的固件烧写工具,利用工具中的“验证”功能对MCU内置存储区域进行回读校验,操作人员在固件烧写工具的回读操作过程中,保存数据内容。使用MCU芯片调试器,在MCU程序运行时读取芯片内存。使用上述方法,操作人员大多需要凭借经验判断固件提取过程是否发生错误,判断获取到的数据是否真实可靠。除此之外,由于现有的固件提取工具与方法并没有对固件本身的正确性进行校验,或仅通过固定格式的数字签名、哈希校验码等方式对固件完整性进行校验,将固件内容当作无语义的字节流,这种方式不能保证固件在提取、烧录后能够被MCU正确加载并运行。
[0004]因此,现有技术存在缺少对固件数据提取过程以及固件提取结果进行有效校验的手段,无法判断提取到的固件数据是否真实可靠的问题。

技术实现思路

[0005]本申请提供了一种对提取的固件数据进行校验的方法、装置以及电子设备,以至少解决相关技术中存在缺少对固件数据提取过程以及固件提取结果进行有效校验的手段,无法判断提取到的固件数据是否真实可靠的问题。
[0006]根据本申请实施例的一个方面,提供了一种对提取的固件数据进行校验的方法,该方法包括:
[0007]向待测芯片发送读指令,其中,所述读指令用于提取固件数据;
[0008]在提取所述固件数据过程中,对传输的通信数据进行第一校验,得到固件提取结果,其中,所述第一校验用于确定所述固件数据的正确性;
[0009]对所述固件提取结果进行第二校验,得出所述固件数据的完整性评分,其中,所述第二校验用于确定所述固件数据的完整性。
[0010]根据本申请实施例的另一个方面,还提供了一种对提取的固件数据进行校验的装置,该装置包括:
[0011]发送模块,用于向待测芯片发送读指令,其中,所述读指令用于提取固件数据;
[0012]第一校验模块,用于在提取所述固件数据过程中,对传输的通信数据进行第一校验,得到固件提取结果,其中,所述第一校验用于确定所述固件数据的正确性;
[0013]第二校验模块,用于对所述固件提取结果进行第二校验,得出所述固件数据的完
整性评分,其中,所述第二校验用于确定所述固件数据的完整性。
[0014]可选地,该装置还包括:
[0015]确定模块,用于确定待测芯片调试接口所采用的协议;
[0016]识别模块,用于基于所述协议,识别所述待测芯片的芯片参数;
[0017]输出模块,用于输出所述芯片参数。
[0018]可选地,第一校验模块包括:
[0019]识别单元,用于识别所述通信数据;
[0020]第一记录单元,用于如果所述通信数据为数据包,则记录所述数据包对应的读取成功地址和所述固件数据;
[0021]解码单元,用于如果所述通信数据为错误代码,则对所述错误代码进行解码,得到错误类型;
[0022]第一判断单元,用于判断所述错误类型是否允许恢复;
[0023]第一发送单元,用于如果允许恢复,则重新向所述待测芯片发送所述读指令;
[0024]第二记录单元,用于如果不允许恢复,则记录所述错误代码对应的读取失败地址;
[0025]作为单元,用于当读取完所有数据区域时,将所述读取成功地址、所述固件数据以及所述读取失败地址作为所述固件提取结果。
[0026]可选地,第二校验模块包括:
[0027]第一计算单元,用于计算所述固件提取结果中数据区域的第一预设哈希值,并将所述第一预设哈希值与第一目标值进行比较,得出第一校验评分;
[0028]第二计算单元,用于计算所述固件提取结果中数据区域的第二预设哈希值,并将所述第二预设哈希值与第二目标值进行比较,得出第二校验评分;
[0029]第一得出单元,用于对所述固件提取结果的所述固件数据进行静态分析,得出第三校验评分;
[0030]第二得出单元,用于虚拟化运行固件程序,并分析虚拟化运行过程,得出第四校验评分;
[0031]第三得出单元,用于对所述固件数据进行熵值分析,得出第五校验评分;
[0032]第四得出单元,用于根据自定义的所述固件提取结果与计分权值的对应关系,得出第六校验评分;
[0033]得到单元,用于根据所述第一校验评分、所述第二校验评分、所述第三校验评分、所述第四校验评分、所述第五校验评分以及所述第六校验评分,得到所述固件数据的完整性评分。
[0034]可选地,第一得出单元包括:
[0035]第一获取子模块,用于获取所述固件数据中的中断向量表,其中,所述中断向量表包含第一预设数量个函数指针;
[0036]第一判断子模块,用于分别判断所述函数指针是否指向预设内存区域;
[0037]确定子模块,用于在指向所述预设内存区域的情况下,如果所述预设内存区域包含可用的预设函数序言,并且在所述预设内存区域的预设距离内存在内存区域能够构成栈帧函数,则确定所述函数指针可用;
[0038]第一得到子模块,用于根据可用的函数指针个数和所述第一预设数量,得到所述
第三校验评分。
[0039]可选地,第二得出单元包括:
[0040]提取子模块,用于提取所述中断向量表中复位函数指针;
[0041]执行子模块,用于从所述复位函数指针指向的代码区域开始,执行汇编语句;
[0042]第二判断子模块,用于判断所述虚拟化运行过程是否满足预设条件,如果满足,则结束执行所述汇编语句,并判定完整性校验通过;
[0043]判定子模块,用于如果在所述虚拟化运行过程满足预设条件之前,所述虚拟化运行过程满足预设错误条件,则结束执行所述汇编语句,并判定完整性校验不通过;
[0044]生成子模块,用于根据完整性校验通过结果,生成所述第四校验评分。
[0045]可选地,第三得出单元包括:
[0046]第二得到子模块,用于对所述固件数据按预设块大小进行分块,得到第二预设数量个数据块;
[0047]第三得到子模块,用于基于所述数据块,得到浮点数序列,其中,所述浮点数序列包含第二预设数量个浮点数;
[0048]第二获取子模块,用于获取所述浮点数的上阈值和下阈值;
[0049]第三获取子模块,用于获取所述浮点数序列中介于所述上阈值和所述下阈值之间的第一浮点数数量;
[0050]第四获取子模块,用于获取所述浮点数序列中高于所述下阈值的第二浮点数数量;
[0051]第四得到子模块,用于根据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对提取的固件数据进行校验的方法,其特征在于,所述方法包括:向待测芯片发送读指令,其中,所述读指令用于提取固件数据;在提取所述固件数据过程中,对传输的通信数据进行第一校验,得到固件提取结果,其中,所述第一校验用于确定所述固件数据的正确性;对所述固件提取结果进行第二校验,得出所述固件数据的完整性评分,其中,所述第二校验用于确定所述固件数据的完整性。2.根据权利要求1所述的方法,其特征在于,对传输的通信数据进行第一校验,得到固件提取结果,包括:识别所述通信数据;如果所述通信数据为数据包,则记录所述数据包对应的读取成功地址和所述固件数据;如果所述通信数据为错误代码,则对所述错误代码进行解码,得到错误类型;判断所述错误类型是否允许恢复;如果允许恢复,则重新向所述待测芯片发送所述读指令;如果不允许恢复,则记录所述错误代码对应的读取失败地址;当读取完所有数据区域时,将所述读取成功地址、所述固件数据以及所述读取失败地址作为所述固件提取结果。3.根据权利要求1所述的方法,其特征在于,所述对所述固件提取结果进行第二校验,得出所述固件数据的完整性评分,包括:计算所述固件提取结果中数据区域的第一预设哈希值,并将所述第一预设哈希值与第一目标值进行比较,得出第一校验评分;计算所述固件提取结果中数据区域的第二预设哈希值,并将所述第二预设哈希值与第二目标值进行比较,得出第二校验评分;对所述固件提取结果的所述固件数据进行静态分析,得出第三校验评分;虚拟化运行固件程序,并分析虚拟化运行过程,得出第四校验评分;对所述固件数据进行熵值分析,得出第五校验评分;根据自定义的所述固件提取结果与计分权值的对应关系,得出第六校验评分;根据所述第一校验评分、所述第二校验评分、所述第三校验评分、所述第四校验评分、所述第五校验评分以及所述第六校验评分,得到所述固件数据的完整性评分。4.根据权利要求3所述的方法,其特征在于,所述对所述固件提取结果的固件数据进行静态分析,得出第三校验评分,包括:获取所述固件数据中的中断向量表,其中,所述中断向量表包含第一预设数量个函数指针;分别判断所述函数指针是否指向预设内存区域;在指向所述预设内存区域的情况下,如果所述预设内存区域包含可用的预设函数序言,并且在所述预设内存区域的预设距离内存在内存区域能够构成栈帧函数,则确定所述函数指针可用;根据可用的函数指针个数和所述第一预设数量,得到所述第三校验评分。5.根据权利要求4所述的方法,其特征在于,所述虚拟化运行固件,并分析虚拟化运行
过程,得出第四校验评分,包括:提取所述中断向量表中复位函数指针;从所述复位函数指针指向的...

【专利技术属性】
技术研发人员:张浩然李皓王童罗承刚刘永星刘鹏
申请(专利权)人:国汽北京智能网联汽车研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1