一种基于硬件的嵌入式系统机密性保护方法与流程

文档序号:16208119发布日期:2018-12-08 07:22阅读:151来源:国知局
一种基于硬件的嵌入式系统机密性保护方法与流程

本发明提供一种一种基于硬件的嵌入式系统机密性保护方法,它是针对嵌入式系统的机密性保护方法,该方法应用于嵌入式系统中存储的程序、数据加解密和安全防护中,可以提高嵌入式系统的鲁棒性。属于嵌入式系统信息安全技术领域。

背景技术

嵌入式设备在人们日常生活中得到了大量应用,越来越多的嵌入式终端和日益拓展的线上互联使得嵌入式系统的安全受到了广泛的关注。目前常见的针对嵌入式系统的攻击方式包括以硬件木马、芯片反向、侧边带攻击、存储芯片拆焊分析为代表的硬件攻击和以恶意代码注入、缓冲区溢出、数据或代码篡改、指令数据重放为代表的软件攻击。恶意攻击者可以通过物理访问、总线挂载或者非法程序获取到嵌入式系统内部存储或处理的程序代码和数据,造成了用户隐私信息的泄露。近年来,基于返回导向编程和基于跳转导向编程的方法可以利用原有的合法程序指令片段组成新的恶意程序,这种攻击方式可以通过针对嵌入式系统代码和数据完整性的安全检查,严重地威胁嵌入式系统的安全。

针对嵌入式系统的机密性保护,可以有效的阻止恶意攻击者对系统中存储的程序和数据的非法访问和理解,避免程序和数据信息的泄露,防止基于返回导向编程和跳转导向编程方法的攻击。目前嵌入式系统的机密性保护方法主要是通过对系统中存储器的加密来实现,比较常见的方法是使用软件将需要存到外部存储器中的代码和数据加密后进行存储。然而嵌入式系统在计算能力、存储规模和系统功耗方面都有比较严格的限制,分配出部分资源用于数据加密将会造成较大的系统损耗。一些基于硬件实现的嵌入式系统机密性保护方法在系统总线的从设备控制器端或者存储器芯片内集成硬件加解密模块,使用通用的密码算法对写入存储器的代码和数据进行加密操作,对从存储器中读出的代码和数据进行解密操作。然而,密码算法的加密和解密运算比较复杂,硬件实现后会消耗较多的片上资源;对外部存储器的访问和密码计算是串行操作的,需要先从存储器中读出数据然后进行解密,或者先对数据进行加密然后再存入存储器中,这会造成较大的系统性能损耗。除此之外,硬件实现的密码引擎被放置在存储器控制器或存储器芯片内部,对于具有多个存储器的嵌入式系统需要对每个存储器实例化一套密码引擎,进一步造成了系统资源的浪费。

综上所述,当前针对于嵌入式系统的机密性保护方法还存在着以下问题:

(1)使用协处理器或者软件的方式对嵌入式系统的程序代码和数据进行加解密,浪费了嵌入式系统有限的系统资源,导致了较大系统性能的损耗;

(2)常见的基于硬件的机密保护方法需要同时实现硬件加密模块和硬件解密模块,消耗了较多的片上硬件资源;

(3)常见的机密性保护方法对外部存储器的访问和密码计算串行操作,即需要先从存储器中读出数据然后进行解密,或者先对数据进行加密然后再存入存储器中,造成了较大的系统性能损耗;

(4)常见的基于硬件的机密保护方法将硬件加解密逻辑连接在存储器控制器或存储器芯片内,对于具有多个存储器的嵌入式系统需要在控制器或者存储器芯片内逐一实例化密码引擎,造成了系统资源的浪费。



技术实现要素:

1.发明目的

针对上述问题,本发明提供一种基于硬件的嵌入式系统机密性保护方法。本方法在嵌入式处理器芯片内部处理器内核的高速缓存(即cache)和系统总线之间只硬件实现了密码加密逻辑,将物理地址截断并填充加密后与明文或密文进行异或操作,完成对写入外部存储器中的数据进行加密,对从外部存储器中读取的数据进行解密,实现了对嵌入式系统中存储的程序代码和数据的机密性保护。同时,有效的降低了系统的性能损耗和实现代价。

2.技术方案

具体来说,本发明提供了一种基于硬件的嵌入式系统机密性保护方法,该方法包括以下步骤:

步骤1,根据选用的嵌入式处理器,选择对应的编译、链接工具链,将用户源程序经编译、链接生成嵌入式系统目标代码;

步骤2,在上位机对目标代码进行预处理,将目标代码进行加密,并将加密后的目标代码下载到嵌入式系统的非易失存储器中;

步骤3,对嵌入式系统进行上电复位,嵌入式系统开始进行初始化,处理器将自动从非易失存储器中存储的目标代码的系统复位地址处开始执行嵌入式程序;

步骤4,嵌入式处理器进入运行状态,执行后续嵌入式程序,如果指令cache及数据cache中的任意一个发生失靶、或者数据cache向外部存储器进行回写操作,则执行步骤5;否则,则按照步骤4的方法继续执行后续的嵌入式程序,直到程序执行完毕;

步骤5,如果数据cache需要进行对外部存储器的回写操作,或者嵌入式处理器访问数据cache失靶且对应cache行处于脏状态(dirty)时,此时嵌入式处理器需要向外部存储器中写入数据,则执行步骤6;否则,即嵌入式处理器对于指令及数据的读取操作发生cache失靶,或者对于数据的写出操作发生数据cache失靶且需要将写出地址对应的cache行先读入数据cache时,此时嵌入式处理器需要从外部存储器中读出数据,则执行步骤8;

步骤6,以指令cache及数据cache中的一行为粒度,将cache行对应的物理地址进行截断、填充,并使用硬件实现的加密逻辑进行加密生成密码序列(pad),将pad异或cache行的数据产生密文;

步骤7,将产生的密文根据嵌入式处理器计算出的存储地址,写入外部存储器中,然后按照步骤4的方法继续执行后续的嵌入式程序;

步骤8,以指令cache数据cache中的一行为粒度,将cache行对应的物理地址进行截断、填充,并使用硬件实现的加密逻辑进行加密生成pad,与此同时从外部存储器中读取出密文,然后将pad异或读取到的密文,得到嵌入式处理器需要的指令或者数据;

步骤9,将解密后的指令或者数据送入嵌入式处理器,并写入到对应片上cache的一行中,然后按照步骤4的方法继续执行后续的嵌入式程序。

其中,在步骤2中所述的“在上位机对目标代码进行预处理,将目标代码进行加密,并将加密后的目标代码下载到嵌入式系统的非易失存储器中”,其作法如下:将目标代码中的代码段和数据段,按照指令cache和数据cache中的一行为单位,将其存放的物理地址进行截断、填充,然后采用选用的加密算法进行加密生成pad,然后将pad异或对应的cache行产生密文,实现将目标代码进行加密;在生成pad过程中使用的加密算法和密钥,与步骤6、步骤7中使用的加密算法和密钥一致,以确保加密后的目标代码在嵌入式系统运行过程中可以被解密和使用;然后通过嵌入式系统中的jtag(一种国际标准测试协议)接口将加密后的目标代码下载到嵌入式系统中的非易失存储器中;

其中,在步骤3中所述的“非易失存储器中存储的目标代码的系统复位地址”是指嵌入式系统上电后嵌入式处理器读取第一条指令的地址,该地址在嵌入式处理器和嵌入式系统设计完成后是一个固定的地址;

其中,在步骤4中所述的“指令cache或者数据cache中的任意一个发生失靶,或者数据cache向外部存储器进行回写操作”包括以下几种情况:读指令cache失靶;读数据cache失靶,且对应的cache行状态为干净(clean);读数据cache失靶,且对应的cache行状态为dirty;写指令cache失靶,且对应的cache行状态为clean;写指令cache失靶,且对应的cache行状态为dirty;指令控制数据cache进行回写操作;

其中,在步骤6和步骤8中所述的“将cache行对应的物理地址进行截断、填充”的方法是,不同容量的cache所对应的cache中一行数据的字节宽度是不同的,根据一行数据中的字节宽度,截断、舍弃掉该行数据对应物理地址中的无效的较低几位,然后将剩余的有效物理地址进行填充,使其数据宽度满足所选用的加密算法需要的数据宽度;填充的方法可以选用固定的字节进行填充,也可以根据需要生成计数值或者偏移向量进行物理地址的填充;

其中,在步骤6和步骤8中所述的“使用硬件实现的加密逻辑进行加密”的过程中,所使用的硬件实现的加密逻辑是在嵌入式处理器芯片内部硬件实现的密码加密算法引擎,该密码引擎在嵌入式处理器芯片的连接位置是在cache与系统总线之间,当嵌入式系统存在多个外部存储器时也无需将密码引擎实例多份;在对进出外部存储器的代码或数据进行加密和解密时,利用了异或操作三个操作数可任意交换的特性,使用了流密码的方式;因此在硬件实现时,只需要实现所选用密码算法的加密逻辑,而不需要实现解密逻辑电路,减少了实现代价;

其中,在步骤8中所述的“使用硬件实现的加密逻辑进行加密生成pad,与此同时从外部存储器中读取出密文”的过程中,使用硬件加密逻辑进行加密运算和从外部存储器中读取出密文的过程是同步并行进行的,这有效的降低了嵌入式系统在引入机密性保护机制后造成的性能损失。

通过以上步骤,本发明提供的一种基于硬件的嵌入式系统机密性保护方法能以较低的实现代价和性能损失实现对嵌入式系统中存储的程序代码和数据的机密性的保护,能有效的避免了恶意攻击对系统中存储、处理的程序和数据的非法访问和理解,能避免程序和数据信息的泄露,能防止基于返回导向编程和跳转导向编程方法的攻击。

3.优点及功效

本发明的有益功效在于:

本发明提供的是一种基于硬件的嵌入式系统机密性保护方法。本方法通过在嵌入式处理器内核的cache和系统总线之间实现的密码加密逻辑,以cache中的一行数据为粒度,将数据对应的物理地址进行截断、填充后作为pad,与明文或者密文进行异或操作,完成对存入外部存储器中的数据进行加密,对从外部存储器中读取的数据进行解密,实现了对嵌入式系统中存储的程序代码和数据的机密性保护。

(1)机密性保护过程中的密码计算使用专门设计的硬件实现,与基于协处理器或者软件实现方式相比,有效的减少了对嵌入式系统性能的损耗;

(2)使用了基于流密码的加密方法,先通过加密算法生成pad,然后通过pad异或明文和pad异或密文,分别实现了对嵌入式系统中代码、数据的加密和解密操作,而无需用到密码算法的解密逻辑,有效减少了对片上硬件资源的消耗;

(3)通过对物理地址截断、填充后进行加密处理产生pad,pad的产生过程与数据无关,因此可以将加密过程和访存过程并行进行,比传统法可以有效的降低机密性保护机制对系统性能的影响;

(4)本方法中使用的硬件加密逻辑是在嵌入式处理器内核的cache和系统总线之间实现,对于具有多个外部存储器的嵌入式系统,不需要在每个外存控制器或者存储器芯片内逐一实例化密码引擎,降低了系统资源的消耗。

附图说明

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

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

其中,图2中的代号aes是高级加密标准,是一种广泛应用的对称密钥加密标准。

具体实施方式

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

图1是本发明的一种基于硬件的嵌入式系统机密性保护方法的操作流程图。

本发明一种基于硬件的嵌入式系统机密性保护方法,如图1所示,该方法包括具体实施步骤如下:

步骤1,根据选用的嵌入式处理器,选择对应的编译、链接工具链,将用户源程序经编译、链接生成嵌入式系统目标代码;

步骤2,在上位机对目标代码进行预处理,将目标代码进行加密,并将加密后的目标代码下载到嵌入式系统的非易失存储器中。这里采用的方法是将目标代码中的代码段和数据段,按照指令cache和数据cache中的一行为单位进行对齐,将其存放的物理地址进行截断、填充,采用选用的加密算法进行加密生成pad,然后将pad异或对应的cache行产生密文,实现将目标代码进行加密。在生成pad过程中使用的加密算法和密钥,与步骤6、步骤7中使用的加密算法和密钥一致,以确保加密后的目标代码在嵌入式系统运行过程中可以被解密和使用;

步骤3,对嵌入式系统进行上电复位,嵌入式系统开始进行初始化,处理器将自动从非易失存储器中存储的目标代码的系统复位地址处开始执行嵌入式程序;

步骤4,嵌入式处理器进入运行状态,执行后续嵌入式程序,如果指令cache或者数据cache中的任意一个发生失靶,或者数据cache向外部存储器进行回写操作,则执行步骤5;否则,则按照步骤4的方法继续执行后续的嵌入式程序,直到程序执行完毕;

步骤5,如果数据cache需要进行对外部存储器的回写操作,或者嵌入式处理器访问数据cache失靶,且对应cache行处于dirty状态时,此时嵌入式处理器需要向外部存储器中写入数据,则执行步骤6;否则,即嵌入式处理器对于指令或者数据的读取操作发生cache失靶,或者对于数据的写出操作发生数据cache失靶,且需要将写出地址对应的cache行先读入数据cache时,此时嵌入式处理器需要从外部存储器中读出数据,则执行步骤8;

步骤6,以指令cache或数据cache中的一行为粒度,根据一行数据中的字节宽度,截断、舍弃掉该行数据对应物理地址中的无效的较低几位,然后将剩余的有效物理地址进行填充,使其数据宽度满足所选用的加密算法需要的数据宽度;填充的方法可以选用固定的字节进行填充,也可以根据需要生成计数值或者偏移向量进行物理地址的填充。然后,使用硬件实现的加密逻辑进行加密生成pad,将pad异或cache行的数据产生密文;

步骤7,将产生的密文根据嵌入式处理器计算出的存储地址,写入外部存储器中,然后按照步骤4的方法继续执行后续的嵌入式程序;

步骤8,以指令cache或数据cache中的一行为粒度,根据一行数据中的字节宽度,截断、舍弃掉该行数据对应物理地址中的无效的较低几位,然后将剩余的有效物理地址进行填充,使其数据宽度满足所选用的加密算法需要的数据宽度;填充的方法可以选用固定的字节进行填充,也可以根据需要生成计数值或者偏移向量进行物理地址的填充。然后,使用硬件实现的加密逻辑进行加密生成pad,与此同时从外部存储器中读取出密文,然后将pad异或读取到的密文,得到嵌入式处理器需要的指令或者数据;

步骤9,将解密后的指令或者数据送入嵌入式处理器,并写入到对应片上cache的一行中,然后按照步骤4的方法继续执行后续的嵌入式程序。

通过以上步骤,本发明提供的一种基于硬件的嵌入式系统机密性保护方法能以较低的实现代价和性能损失实现对嵌入式系统中存储的程序代码和数据的机密性的保护,能有效的避免了恶意攻击对系统中存储、处理的程序和数据的非法访问和理解,能避免程序和数据信息的泄露,能防止基于返回导向编程和跳转导向编程方法的攻击。

图2是本发明所述方法的一种实施例的硬件结构框图,该结构框图给出了openrisc处理器(一种32位精简指令集嵌入式处理器)平台上,采用aes加密标准作为选取的密码算法,使用本发明的基于硬件的嵌入式系统机密性保护方法对嵌入式系统进行机密性保护的一种实施例。下面以32位openrisc处理器平台为例,采用128位aes加密标准作为选取的密码算法,结合图2列举本发明的基于硬件的嵌入式系统机密性保护方法的一种实施例。该实施例中的基于硬件的嵌入式系统机密性保护方法包括:

步骤1,使用openrisc处理器指令集兼容的编译器和链接器对用户源程序代码进行编译、链接,生成二进制目标代码文件;

步骤2,在上位机对目标代码进行预处理,将目标代码进行加密,并将加密后的目标代码下载到嵌入式系统的非易失存储器中。这里采用的方法是将目标代码中的代码段和数据段,按照指令cache和数据cache中的一行为单位进行对齐(openrisc处理器中cache一行为16字节,即128位),将其存放的物理地址进行截断、填充,采用aes加密算法进行加密生成pad,然后将pad异或对应的cache行产生密文,实现将目标代码进行加密。在生成pad过程中使用的aes加密算法和密钥,与步骤6、步骤7中使用的aes加密算法和密钥一致,以确保加密后的目标代码在嵌入式系统运行过程中可以被解密和使用;

步骤3,上电复位嵌入式系统进行初始化,openrisc处理器将会从非易失存储器中存储的目标代码的系统复位地址处开始执行嵌入式程序。这里的复位地址即上电后openrisc处理器读取第一条指令的地址,该地址在openrisc处理器和嵌入式系统设计完成后是一个固定的地址;

步骤4,嵌入式处理器进入运行状态,执行后续嵌入式程序,如果指令cache或者数据cache中的任意一个发生失靶,或者数据cache向外部存储器进行回写操作,则执行步骤5;否则,则按照步骤4的方法继续执行后续的嵌入式程序,直到程序执行完毕;

步骤5,如果数据cache需要进行对外部存储器的回写操作,或者嵌入式处理器访问数据cache失靶,且对应cache行处于dirty状态时,此时嵌入式处理器需要向外部存储器中写入数据,则执行步骤6;否则,即嵌入式处理器对于指令或者数据的读取操作发生cache失靶,或者对于数据的写出操作发生数据cache失靶,且需要将写出地址对应的cache行先读入数据cache时,此时嵌入式处理器需要从外部存储器中读出数据,则执行步骤8;

步骤6,以指令cache或数据cache中的一行为粒度(openrisc处理器中cache一行为16字节,即128位),根据一行数据中的字节宽度,截断、舍弃掉该行数据对应物理地址中的无效的较低4位,然后将剩余的有效物理地址进行填充,使其数据宽度满足所选用的加密算法需要的数据宽度,在本实施例中为128位;填充的方法可以选用固定的字节进行填充,也可以根据需要生成计数值或者偏移向量进行物理地址的填充。然后,使用硬件实现的加密逻辑(图2中aes加密逻辑)进行加密生成pad,将pad异或cache行的数据产生密文;

步骤7,将产生的密文根据嵌入式处理器计算出的存储地址,写入外部存储器中,然后按照步骤4的方法继续执行后续的嵌入式程序;

步骤8,以指令cache或数据cache中的一行为粒度(openrisc处理器中cache一行为16字节,即128位),根据一行数据中的字节宽度,截断、舍弃掉该行数据对应物理地址中的无效的较低4位,然后将剩余的有效物理地址进行填充,使其数据宽度满足所选用的加密算法需要的数据宽度,在本实施例中为128位;填充的方法可以选用固定的字节进行填充,也可以根据需要生成计数值或者偏移向量进行物理地址的填充。然后,使用硬件实现的加密逻辑(图2中aes加密逻辑)进行加密生成pad,与此同时从外部存储器中读取出密文,然后将pad异或读取到的密文,得到嵌入式处理器需要的指令或者数据;

步骤9,将解密后的指令或者数据送入嵌入式处理器,并写入到对应片上cache的一行中,然后按照步骤4的方法继续执行后续的嵌入式程序。

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

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