一种硬件支持嵌入式系统程序指令标记的保护方法与流程

文档序号:11951577阅读:300来源:国知局

本发明涉及一种硬件支持嵌入式系统程序指令标记的保护方法。它利用指令起止地址的拼接作为干扰信息,干扰信息与指令一起作为杂凑算法的输入,然后把杂凑算法的输出,即散列值作为指令标记的一部分,可防止针对指令标记的杂凑算法破解攻击。属于嵌入式系统安全技术领域。



背景技术:

随着电子科学与计算机技术的发展,越来越多的嵌入式设备进入了人们的生活中,逐渐在诸多领域发挥重要的系统自动控制及数据存储的作用。同时越来越多的应用及更为方便的网络接入,使嵌入式平台面临着越来越多的安全挑战。嵌入式系统在运算能力、内存、功耗等方面有着严格的资源约束限制。采用通用计算机上的病毒扫描和防入侵软件来防御安全攻击,将会带来性能的降低和功耗的增加。因此,嵌入式系统的安全问题比通用系统的安全问题更具有挑战性。

完整性检测可以保证信息在存储和传输的过程中没有遭受非授权方式的篡改或破坏。目前的完整性检测一般都使用杂凑算法。杂凑算法是指把任意长度的输入,通过散列算法变换成固定长度的输出的过程,该输出就是散列值,散列值表示的是数据的特征信息。将杂凑算法计算出的指令的散列值与基本块监控信息中的提前计算的指令的散列值对比,如果对比信息不一致,可以中止程序的运行,或进行系统恢复。

目前,嵌入式监控模型普遍直接对指令基本块用杂凑算法进行校验,事实上,这种做法并不安全,有许多针对杂凑算法的攻击方法,暴力破解和查表法都能破解杂凑算法,其中最有效果的是彩虹表攻击,彩虹表综合了暴力破解和查表法的特点,是一种使用空间换取时间的技术。彩虹表的方式之所以有效是因为对每一个指令都使用完全相同的杂凑算法。如果两个指令相同,那么它们的散列值也一定相同。我们可以通过让每一个杂凑函数不同,即使同一个指令进行两次杂凑,得到的散列值也会不同,从而避免这种攻击。通过给指令加一个随机的干扰信息后缀,然后再进行杂凑。通过增加干扰信息,相同的指令每次杂凑的输入都是完全不一样的字符串了。在检查指令是否正确的时候,我们也还需要这个干扰信息,所以干扰信息一般都是和指令一起保存在数据库里,或者作为指令字符串的一部分。即使干扰信息被攻击者得到,只要干扰信息是随机的,查表法、彩虹表攻击都会失效。因为攻击者无法事先知道干扰信息是什么,也就没有办法预先计算出彩虹表。



技术实现要素:

1、目的:

本发明的目的是提供一种硬件支持嵌入式系统程序指令标记的保护方法,它使用散列值作为指令是否完整且没有被篡改的依据,同时对通过散列值逆向得到指令的杂凑算法的攻击进行了预防。

2、技术方案:

本发明设计一种硬件支持嵌入式系统程序指令标记的保护方法,它利用指令起止地址的拼接作为干扰信息,干扰信息与指令一起作为杂凑算法的输入,然后把杂凑算法的输出,即散列值作为指令标记的一部分。在指令运行时候,将指令起止地址重新按原来的方式组合成干扰信息,干扰信息和指令一起使用杂凑算法的硬件化电路再次计算一个散列值,然后这个散列值会和指令标记中的散列值进行比较,相同则表明指令完整且没有被篡改,不同则表明指令发生了改变。

本发明一种硬件支持嵌入式系统程序指令标记的保护方法,该方法具体步骤包括:

步骤1,读入指令基本块文件;其中,指令基本块文件指的是由多个指令基本块组成的文件,每个指令基本块中包括指令起止地址和指令两部分;

步骤2,确定安全指令长度;其中,安全指令长度会根据杂凑算法的复杂程度和具体的安全需求综合确定;

步骤3,对每一个指令基本块,将指令的长度与安全指令长度比较,如果指令的长度小于安全指令长度,则进行步骤4,否则进行步骤5并记录对应的指令的拼接次数为0;其中,拼接次数指的是指令起止地址与指令起止地址拼接的次数;

步骤4,用指令起止地址组合成干扰信息,干扰信息的长度和指令的长度相加应该满足大于安全指令长度的要求,再将指令和干扰信息按顺序拼接到一起组合成新的包含干扰信息的“指令”;其中,指令起止地址的组合方式是指令起止地址自身的拼接,拼接次数记为n,其中,拼接次数n选取为满足要求的最小的拼接次数;

步骤5,以拼接后的指令作为杂凑算法的输入,得到输出静态散列值;其中,该静态散列值指的是指令执行之前计算得到的散列值,与下文中在指令执行时候计算得到的动态散列值相对应;

步骤6,将相对应的指令起止地址,指令起止地址的拼接次数和静态散列值保存下来作为指令标记;

步骤7,在安全嵌入式处理器运行时,安全嵌入式处理器的缓存中包含有指令和指令起止地址信息;对应前述缓存中的指令起止地址在指令标记中搜索出拼接次数和静态散列值;

步骤8,按照步骤4的方式将指令、指令起止地址根据拼接次数进行拼接,得到经过拼接后的指令,拼接次数为0的指令不用拼接;

步骤9,以经过步骤8过程后的指令作为杂凑算法的硬件化电路的输入,输出与指令标记中对应的静态散列值进行比较,其中,杂凑算法的硬件化电路的输出称为动态散列值;

步骤10,如果动态散列值和静态散列值相同,则表明指令完整且没有被篡改,如果动态散列值和静态散列值不同,表明指令发生了改变。

通过以上步骤,完成了对硬件支持嵌入式系统程序指令标记的保护,加重了攻击者在使用杂凑算法的攻击方法攻击硬件支持嵌入式系统程序指令标记时候的计算负担,从而提高了硬件支持嵌入式系统程序指令标记的安全性,解决了由于硬件支持嵌入式系统程序指令标记容易暴露所引发的安全问题。

3、优点及功效:

这种硬件支持嵌入式系统程序指令标记的保护方法具有以下几个优点:

(1)本专利通过对指令增加后缀,由于每一个指令的指令起止地址都不同,等效于改变了杂凑算法的结构,攻击者需要对每一个指令重新计算一个彩虹表进行攻击,加重了攻击者的计算负担,提高了监控模型的安全性。

(2)本专利使用的干扰信息是指令起止地址,不需要另外生成随机干扰信息,并且在静态模型中不需要额外增加空间保存这些干扰信息,从而在提高安全性的同时相当于节省了存储空间。

(3)本专利中干扰信息的添加是以指令和干扰信息的长度达到安全指令长度为目标的,因此对于长度较长的指令,在程序执行时候计算动态散列值的过程所消耗的计算时间会更加合理。

附图说明

图1是本发明所述的保护方法流程图。

具体实施方式

本发明利用指令起止地址的拼接作为干扰信息,干扰信息与指令一起作为杂凑算法的输入,然后把杂凑算法的输出,即散列值作为指令标记的一部分。在指令运行时候,将指令起止地址重新按原来的方式组合成干扰信息,干扰信息和指令一起使用杂凑算法的硬件化电路再次计算一个散列值,然后这个散列值会和指令标记中的散列值进行比较,相同则表明指令完整且没有被篡改,不同则表明指令发生了改变。

本发明一种硬件支持嵌入式系统程序指令标记的保护方法,见图1所示,其具体实施步骤如下:

步骤1,读入指令基本块文件。其中,指令基本块文件指的是由多个指令基本块组成的文件,每个指令基本块中包括指令起止地址和指令两部分;

步骤2,确定安全指令长度。其中,安全指令长度会根据杂凑算法的复杂程度和具体的安全需求综合确定;

步骤3,对每一个指令基本块,将指令的长度与安全指令长度比较,如果指令的长度小于安全指令长度,则进行步骤4,否则进行步骤5并记录对应的指令的拼接次数为0。其中,拼接次数指的是指令起止地址与指令起止地址拼接的次数;

步骤4,用指令起止地址组合成干扰信息,干扰信息的长度和指令的长度相加应该满足大于安全指令长度的要求,再将指令和干扰信息按顺序拼接到一起组合成新的包含干扰信息的“指令”。其中,指令起止地址的组合方式是指令起止地址自身的拼接,拼接次数记为n,其中,拼接次数n选取为满足要求的最小的拼接次数;

步骤5,以拼接后的指令作为杂凑算法的输入,得到输出静态散列值,其中,静态散列值指的是指令执行之前计算得到的散列值,与下文中在指令执行时候计算得到的动态散列值相对应;

步骤6,将相对应的指令起止地址,指令起止地址的拼接次数和静态散列值保存下来作为指令标记;

步骤7,在安全嵌入式处理器运行时,安全嵌入式处理器的缓存中包含有指令和指令起止地址信息。对应前述缓存中的指令起止地址在指令标记中搜索出拼接次数和静态散列值;

步骤8,按照步骤4的方式将指令、指令起止地址根据拼接次数进行拼接,得到经过拼接后的指令,拼接次数为0的指令不用拼接;

步骤9,以经过步骤8过程后的指令作为杂凑算法的硬件化电路的输入,输出与指令标记中对应的静态散列值进行比较,其中,杂凑算法的硬件化电路的输出称为动态散列值;

步骤10,如果动态散列值和静态散列值相同,则表明指令完整且没有被篡改。如果动态散列值和静态散列值不同,表明指令发生了改变。

通过以上步骤,完成了对硬件支持嵌入式系统程序指令标记的保护,加重了攻击者在使用杂凑算法的攻击方法攻击硬件支持嵌入式系统程序指令标记时候的计算负担,从而提高了硬件支持嵌入式系统程序指令标记的安全性,解决了由于硬件支持嵌入式系统程序指令标记容易暴露所引发的安全问题。

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