一种针对嵌入式系统代码攻击的快速恢复方法与流程

文档序号:16417825发布日期:2018-12-28 18:53阅读:180来源:国知局
一种针对嵌入式系统代码攻击的快速恢复方法与流程

本发明提供一种针对嵌入式系统代码攻击的快速恢复方法,该方法应用于嵌入式系统安全防护和异常恢复过程之中,可以提高嵌入式系统的鲁棒性。属于嵌入式系统信息安全技术领域。



背景技术:

嵌入式设备在日常生活中得到了越来越多的应用,更多的嵌入式终端和更广泛的线上互联使得嵌入式系统安全成为设计者必须面对的问题。以硬件木马植入、芯片反向分析以及电路功耗、电压分析为代表的硬件攻击方式,将嵌入式系统物理设备作为攻击目标,往往需要攻击者直接参与被攻击嵌入式设备的研制或可以近距离接触到被攻击设备,这在一定程度上限制了硬件攻击方式的危害。针对于嵌入式系统的软件攻击方式实施起来更加简单,攻击者无需直接接触嵌入式系统设备,它主要通过网络下载或者系统总线截取的方式实现恶意代码的注入、指令重放、数据或代码篡改以及缓冲区的溢出,最终导致嵌入式系统崩溃或关键信息的泄露。软件攻击方式的主要思想就是破坏嵌入式程序代码的正确执行。

嵌入式系统在计算能力、存储规模和系统功耗方面有着比较严格的限制,无法像传统计算机一样分配出部分系统资源专门用于入侵代码和恶意程序的检测与保护。嵌入式系统软件代码的完整性检查可以验证嵌入式软件在存储、传输和运行过程中是否遭受了恶意的篡改和破坏。在嵌入式处理器内部集成用于代码完整性检查的专用硬件是嵌入式软件异常检测的典型方法。这种方法通常需要在嵌入式处理器内部设置可信区,并申请足够大的可信存储空间,提前将程序代码指令导入到处理器内部的可信存储区中,并在运行时以指令为粒度进行比对。这种检测方法将软件代码的检查过程交由硬件完成,确保安全性的同时加快了处理速度,但是大幅增加了嵌入式处理器芯片内部的存储开销。

嵌入式系统在检测到软件代码受到恶意篡改和破坏后的处理方式和处理速度,关系到嵌入式设备的实时性和可靠性。大部分商用嵌入式处理器带有无效指令异常恢复机制,可以在指令执行之前检查得到错误并恢复PC值到发生错误的指令,但是这种机制无法鉴别可执行的恶意代码。常见的针对嵌入式系统代码异常的恢复方法是进程重载或系统复位,这种处理方法需要在每次恢复过程中重新生成进程或者重新加载程序映像,繁琐的初始化过程使其无法实现对嵌入式系统的快速恢复;增加了系统对速度较慢片外闪存的访问次数,降低了系统性能;对于运行到不同阶段发生的系统恢复,恢复后的系统需要回到初始状态重新运行一遍出错前的所有程序,造成恢复至出错位置的时间出现较大差异,无法对代码攻击后的恢复时间进行有效的估计。

综上所述,当前针对嵌入式系统代码攻击的检测和快速恢复方法还存在着以下一些问题:

(1)对于硬件辅助的嵌入式系统代码攻击检测方法,逐指令对比的方式影响了系统性能,同时嵌入式处理器芯片内部可信存储空间需要大量的片上存储资源,造成紧张的嵌入式硬件资源的浪费;

(2)常见的系统恢复方法使用进程重载或系统复位的方式实现,恢复过程需要多次读写速度较慢片外闪存进行初始化,限制了恢复速度,降低了系统恢复性能;

(3)常见的系统恢复方法通过固定的备份节点实现所有阶段程序的恢复,这一节点通常被设置为嵌入式系统的引导加载程序,恢复后的系统需要回到初始状态重新运行一遍出错前的所有程序,无法实现备份、恢复节点的动态更新,难以实现对代码恢复时间的估计。



技术实现要素:

1.发明目的

针对上述问题,本发明提供一种针对嵌入式系统代码攻击的快速恢复方法。本方法将嵌入式代码划分成多个程序基本块,以程序基本块为比对粒度,以程序基本块运行信息的压缩散列值为比对特征参数进行嵌入式程序代码的安全检测,大幅减少了比对次数,有效节约了用于存储的片上硬件资源。对于代码受到攻击后的恢复,设置快速恢复粒度调节阈值,根据当前程序基本块的异常次数采取不同粒度的快速恢复策略,可以大幅降低对嵌入式系统速度瓶颈的片外闪存的访问次数,实现系统备份、恢复节点的动态更新,可以有效估计快速恢复时间,实现受到代码受到攻击后的快速恢复。

2.技术方案

具体来说,本发明提供了一种针对嵌入式系统代码攻击的快速恢复方法,该方法包括以下步骤:

步骤1,用户源程序编译、链接生成目标代码;

步骤2,以目标代码中的跳转指令为边界,将目标代码分割成程序基本块;

步骤3,对每一程序基本块中的目标代码进行压缩计算,得到各个程序基本块的压缩散列值,作为预提取的用户程序运行过程中的特征参数;

步骤4,将预提取到的用户程序运行过程中的特征参数写入处理器内部的特征参数存储单元;

步骤5,复位嵌入式系统进行初始化,系统从片外闪存运行Bootloader引导程序,将用户程序代码从片外闪存拷贝至片外随机存取存储器,并跳转至用户程序起始地址(第一个程序基本块起始地址)处运行;

步骤6,记录当前程序基本块起始地址信息并从将当前程序基本块异常次数清零;

步骤7,执行当前程序基本块代码;

步骤8,使用专门开发的处理器内部的特征参数计算单元(已另申请专利)动态计算当前程序基本块代码的特征参数,并与处理器内部特征参数存储单元中预提取的当前程序基本块特征参数进行比对校验;

步骤9,若比对结果一致,则将当前处理器各寄存器值和运行内存空间中的数据备份至备份内存空间中,并跳转到下一程序基本块起始地址,然后执行步骤6;若比对不一致,则执行步骤10;

步骤10,若当前异常次数小于用户预设的恢复粒度调节阈值,则将备份内存空间中的数据恢复到处理器各寄存器和运行内存空间中,当前程序基本块异常次数加1,并重新跳转到当前程序基本块起始地址,然后执行步骤7;若当前异常次数不小于用户预设的恢复粒度调节阈值,则执行步骤5,直到用户程序运行完毕。

其中,在步骤1中所述的“用户源程序编译、链接生成目标代码”的过程中,为了最大限度的减少程序基本块运行过程中运行内存备份、恢复的时间复杂度,需要在链接脚本中固定代码段、数据段和堆栈段的地址,并严格限制各程序段的长度。

其中,在步骤3中所述的“对每一程序基本块中的目标代码进行压缩计算”的过程中,考虑到每一程序基本块代码中指令数量不同,采用以任意长度序列为输入,以固定长度为输出的单向散列函数实现对程序基本块目标代码的压缩计算。

其中,在步骤8中所述的“动态计算当前程序基本块代码的特征参数”,需要采用与步骤3中所述代码程序基本块压缩计算相同的实现算法,并通过在处理器内部设计的特征参数校验模块实现算法的快速硬件计算,进而完成预提取的特征参数与动态计算的特征参数的比对校验;为减小硬件实现代价,加快硬件处理速度,步骤3和步骤8中程序基本块目标代码的压缩计算采用易于硬件化的轻量级杂凑算法。

其中,在步骤10中所述的“恢复粒度调节阈值”,是用来调节嵌入式系统恢复起点的,对于新出现的程序基本块代码异常,尝试以程序基本块为粒度进行快速恢复,如果通过几次以程序基本块为粒度的快速恢复仍然无法恢复到程序的预期状态,则可认定在步骤5从片外闪存将用户程序代码拷贝至片外随机存取存储器过程中用户程序代码受到了异常篡改,单纯从片外随机存取存储器中的代码无法实现度对嵌入式系统的恢复,需要执行步骤5重新从片外闪存加载用户程序代码。

通过以上步骤,本发明提供的一种针对嵌入式系统代码攻击的快速恢复方法可以实现对嵌入式系统代码攻击的有效检测,可以对检测到的代码攻击实现嵌入式系统的快速恢复。

3.优点及功效

本发明的有益功效在于:

本发明提供的是一种针对嵌入式系统代码攻击的快速恢复方法。本方法以嵌入式程序基本块为粒度,以程序基本块运行信息的压缩散列值为比对特征参数进行安全检测,减少了比对次数,节约了处理器片上存储硬件资源,通过硬件实现的片上特征参数计算校验模块,可以准确快速的发现嵌入式代码中的异常。当检测到代码受到异常攻击后,该方法可以通过预设的快速恢复粒度调节阈值对恢复过程进行控制,采取不同粒度的快速恢复策略,减少了嵌入式系统对片外闪存的访问次数,加快了恢复速度,同时还可以实现系统备份、恢复节点的动态更新,可以有效估计快速恢复时间。

(1)对硬件辅助的嵌入式系统代码攻击的检测方法进行了优化,采用了将程序代码划分成程序基本块,使用程序基本块代码轻量级杂凑值进行比对校验的方法,大幅的减少了代码完整性检测次数,提高了检测速度,节约了紧张的嵌入式系统硬件资源;

(2)将程序代码按程序基本块划分的思想应用到程序代码异常的快速恢复中,对于新发现的程序基本块异常,从片外高速随机存取存储器进行以程序基本块为粒度的快速恢复,无需多次读取速度较慢的片外闪存加载系统,大幅加快了异常程序代码的修复速度,实现了程序代码异常的快速恢复;

(3)以程序基本块为粒度的快速恢复方法实现了程序备份、恢复节点的动态更新,程序基本块的备份和恢复节点会随着程序的正确运行向前移动,用户可以对异常处理和恢复速度进行有效估计;

附图说明

图1是本发明所述方法的操作流程图。

图2是本发明所述的实施例硬件结构框图。

图3是本发明所述的实施例软件流程图。

图2、图3中的代号说明如下:

Flash是片外闪存,挂载在嵌入式系统总线上,其特点是存储内容掉电非易失,读写访问速度较慢;RAM是片外随机存取存储器,挂载在嵌入式系统总线上,其特点是存储的内容掉电后丢失,读写访问速度较快;Custom Processor是经过定制修改后的处理器,支持处理器内部预提取特征参数存储、特征参数硬件动态计算、特征参数校验等功能(已另申请专利)。

具体实施方式

下面结合附图对本发明进行详细的描述,但不作为对本发明的限定。

本发明一种针对嵌入式系统代码攻击的快速恢复方法,如图1所示,该方法包括具体实施步骤如下:

步骤1,将用户源程序代码通过编译、链接生成目标代码,为了减少程序基本块运行过程中运行内存的备份、恢复时间,需要在链接脚本中固定代码段、数据段和堆栈段的地址,并严格限制各程序段的长度;

步骤2,以目标代码中的跳转指令为边界,将目标代码划分成若干个程序基本块;

步骤3,采用轻量级杂凑算法对每一程序基本块中的目标代码进行压缩计算,得到各个程序基本块的压缩散列值,作为程序运行过程中的特征参数;

步骤4,将预提取出来的用户程序运行过程中的特征参数写入处理器内部的特征参数存储单元;

步骤5,对嵌入式系统复位进行初始化,从片外闪存运行Bootloader引导程序,将用户程序代码拷贝至片外随机存取存储器,并跳转至用户程序起始地址(第一个程序基本块起始地址)处运行;

步骤6,记录当前程序基本块起始地址信息并将当前程序基本块异常次数清零;

步骤7,执行当前程序基本块程序代码;

步骤8,使用专门开发的处理器内部的特征参数计算单元动态计算当前程序基本块代码的特征参数,并与处理器内部特征参数存储单元中预存的当前程序基本块特征参数进行比对校验。所述的程序基本块代码特征参数的动态计算需要采用与步骤3中所述程序基本块代码压缩计算相同的实现算法,并通过在处理器内部设计的特征参数校验模块实现算法的快速硬件计算,进而完成预提取的特征参数与硬件动态计算的特征参数的比对校验。步骤3和步骤8中程序基本块目标代码的压缩计算采用易于硬件化的轻量级杂凑算法实现;

步骤9,若比对结果一致,则将当前处理器各寄存器值和运行内存空间中的数据备份至备份内存空间中,并跳转到下一程序基本块起始地址,然后执行步骤6;若比对不一致,则执行步骤10;

步骤10,若当前程序基本块的异常次数小于用户预设的恢复粒度调节阈值,则将备份内存空间中的数据恢复到处理器各寄存器值和运行内存空间中,当前异常次数加1,并重新跳转到当前程序基本块起始地址,然后执行步骤7;若当前异常次数不小于用户预设的恢复粒度调节阈值,则执行步骤5,直到用户程序运行完毕。所述的“恢复粒度调节阈值”是用来调节嵌入式系统恢复起点的,对于新出现的程序基本块代码异常,尝试以程序基本块为粒度进行快速恢复,如果通过多次以程序基本块为粒度的快速恢复仍然无法恢复到程序的预期状态,则可认定在步骤5从片外闪存将用户程序代码拷贝至片外随机存取存储器过程中用户程序代码受到了异常篡改,单纯从片外随机存取存储器中的代码无法实现度对嵌入式系统的恢复,需要执行步骤5重新从片外闪存加载用户程序代码。

通过以上步骤,本发明提供的一种针对嵌入式系统代码攻击的快速恢复方法可以实现对嵌入式系统代码攻击的有效检测,可以对检测到的代码攻击实现嵌入式系统的快速恢复。

图2和图3分别是本发明的一种实施例的硬件结构框图和软件流程图,下面以OpenRisc处理器平台为例,结合图2和图3列举本发明的针对嵌入式系统代码攻击的快速恢复方法的一种实施例。该实施例中的针对嵌入式系统代码攻击的快速恢复方法包括:

步骤1,使用OpenRisc处理器指令集兼容的编译器和链接器对用户源程序代码进行编译、链接,生成二进制目标代码文件,为了减少后续步骤中程序基本块运行过程中运行内存备份和恢复的时间,需要在链接脚本中固定代码段、数据段和堆栈段的地址,并严格限制各程序段的长度;

步骤2,查询OpenRisc处理器指令集,以指令集中的跳转指令为边界,将目标代码划分成若干个程序基本块;

步骤3,采用易于硬件化的轻量级杂凑算法对每一程序基本块中的目标代码进行压缩计算,得到各个程序基本块的压缩散列值,作为程序运行过程中的特征参数;

步骤4,搭建基于OpenRisc处理器的嵌入式系统硬件平台,并将离线预提取的用户程序运行过程中的特征参数写入处理器内部的特征参数存储单元,如图2所示。本实施例中的硬件最小系统包括定制修改后的OpenRisc处理器、兼容OpenRisc处理器接口的Wishbone标准系统总线、片外Flash和片外RAM。所述的“定制修改后的OpenRisc处理器”包括处理器流水线、处理器状态控制器、程序备份、恢复控制器、特征参数存储单元和特征参数校验模块;

步骤5,对本实施例的OpenRisc处理器平台进行复位初始化,从Flash中运行Bootloader引导程序,将用户程序代码拷贝RAM中,并跳转至RAM中的用户程序起始地址(第一个程序基本块起始地址)处开始运行如图3所示的软件程序;

步骤6,记录当前程序基本块起始地址信息并将当前程序基本块异常次数清零;

步骤7,执行当前程序基本块程序代码;

步骤8,使用定制修改的OpenRisc处理器内部的特征参数校验模块动态计算当前程序基本块代码的特征参数,并与处理器内部特征参数存储单元中预提取的当前程序基本块特征参数进行比对校验。

步骤9,若比对结果一致,则将当前处理器各寄存器值和运行内存空间中的数据备份至备份内存空间中,并跳转到下一程序基本块起始地址,然后执行步骤6;若比对不一致,则执行步骤10;

步骤10,若当前程序基本块的异常次数小于用户预设的恢复粒度调节阈值,则将备份内存空间中的数据恢复到处理器各寄存器值和运行内存空间中,当前异常次数加1,并重新跳转到当前程序基本块起始地址,然后执行步骤7;若当前异常次数不小于用户预设的恢复粒度调节阈值,则执行步骤5,直到用户程序运行完毕。

本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都属于本发明所附的权利要求的保护范围。

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