利用硬件加密模块实现嵌入式软件的代码保护的装置的制作方法

文档序号:6389333阅读:154来源:国知局
专利名称:利用硬件加密模块实现嵌入式软件的代码保护的装置的制作方法
技术领域
利用硬件加密模块实现嵌入式软件的代码保护的装置技术领域[0001]本发明涉及一种利用硬件模块来实现嵌入式软件代码保护的技术,主要是将需要 保护的代码和数据信息进行加密保护,使之对外界是透明的,用以防止关键技术和信息的泄露。
背景技术
[0002]随着嵌入式系统软件的不断发展,一个完整的系统软件的开发工作通常不是完全 由一个厂商来进行的,通常从上游到下游会涉及到很多厂商的参与。因此上下游的合作就 变得尤为重要,因此离产品使用者最近的厂商在进行产品开发的时候都会用到前端厂商所 提供的一些技术资料和相关文档,而这些资料中有些信息是涉及到产品开发过程中的关键 数据和技术信息,因此提供给客户会存在很大的技术安全隐患。传统方式是向客户提供库 文件,同时提供说明文档来说明库中存在的接口函数的具体信息,这种方式前期的准备工 作会很繁琐。为了解决这一问题,本发明利用硬件加密模块来进行软件代码和关键数据方 面的加密保护。并且采用分层级的方式来处理各个层次的用户需求,不同层级的用户可以 根据自己的实际情况将核心数据信息加以保护,可以只提供给客户说明文档,介绍使用的 步骤和流程即可,无需将这些信息完全透明的提供给客户。发明内容[0003]为了解决上述问题,本发明提供一种利用硬件加密模块对软件代码进行加密保护 的方法,该方法包括以下步骤[0004]I)根据需要将需要保护的代码编译后的文件存放在相应的存储区域中,所述存储 区域中设置有相应的密码存储区;[0005]2)利用硬件加密模块将密码输入到密码存储区中,从而使所述存储区域进入加密 状态;[0006]3)在需要访问所述存储区域的时候,通过向硬件加密模块输入密码,从而获得访 问所述存储区域的权限。[0007]进一步的,所述硬件加密模块包括密码寄存器、身份验证模块和加密单元。并且其 中密码寄存器用于存储用户输入的密码值;身份验证模块用于验证用户输入到密码寄存器 的密码值与相应的存储区域的密码存储区的密码值是否一致;加密单元用于根据身份验证 模块的验证结果确定是否允许用户访问相应的存储区域。[0008]进一步的,所述身份验证模块包括加密状态寄存器,用于存储表征所述存储区域 是否进入加密状态的状态值;比对密码单元,用于比对密码寄存器与相应的存储区域的密 码存储区内的密码值是否一致。[0009]进一步的,所述加密单元包括总线加密控制单元,其用于限制通过总线访问存储 器的相应存储区域的操作;控制寄存器,通过向该控制寄存器进行写操作,从而启动该总线 加密控制单元。[0010]进一步的,利用硬件加密模块将密码输入到密码存储区中,从而使所述存储区域 进入加密状态的步骤包括a)读取加密状态寄存器,判断所述存储器是否已经进入加密状 态,如果未进入加密状态则进入步骤C),否则从步骤b)顺序执行;b)向密码寄存器写入密 码值,所述比对密码单元比对密码寄存器的密码值以及相应存储区域内的密码存储区的密 码值是否一致,并将比对结果传递给用户以及加密单元,如果比对结果为不一致,则结束加 密过程,如果比对结果一致则加密单元中的总线加密控制单元不再限制对所述存储区域的 访问,并且执行步骤c) ;c)向存储器中相应的存储区域的密码存储区写入密码,对加密单 元的控制寄存器执行写入操作,从而启动总线加密控制单元,使存储器进入加密状态。[0011]进一步的,通过向硬件加密模块输入密码,从而获得访问所述存储区域的权限的 操作包括a)将密码值写入密码寄存器;b)比对密码单元判断密码寄存器的值与相应的存 储区域的密码存储区的密码值是否一致,如果比对结果为一致则允许通过总线访问相应的 存储区域。[0012]本发明还提供一种通过硬件加密模块对存储器的特定存储区域进行加密和解密 的系统,所述特定存储区域包括与之对应的密码存储区用于存储密码以供访问该存储区域 时比对,所述系统包括[0013]用户模块,用于向硬件加密模块写入密码,[0014]硬件加密模块,接收用户模块写入的密码值,从而完成对存储区域的加密或解 密;[0015]其中,硬件加密模块包括密码寄存器、身份验证模块和加密单元,[0016]密码寄存器用于存储用户模块输入的密码值;[0017]身份验证模块用于验证用户模块输入到密码寄存器的密码值与相应的存储区域 的密码存储区的密码值是否一致;[0018]加密单元用于根据身份验证模块的验证结果确定是否允许用户访问相应的存储 区域。[0019]进一步的,所述身份验证模块包括加密状态寄存器,用于存储表征所述存储区域 是否进入加密状态的状态值;比对密码单元,用于比对密码寄存器与相应的存储区域的密 码存储区内的密码值是否一致。[0020]进一步的,所述加密单元包括总线加密控制单元,其用于限制通过总线访问存储 器的相应存储区域的操作;控制寄存器,通过向该控制寄存器进行写操作,从而启动该总线 加密控制单元。


[0021]图1通过硬件加密装置实现嵌入式软件的代码保护的总体框图[0022]图2硬件加密装置的模块框图[0023]图3实现加密过程的流程图[0024]图4实现解密过程的流程图具体实施方式
[0025]本发明利用用户模块去控制硬件加密模块对存储器进行加密操作,来实现对代码的保护。其中所述用户模块可以是软件,也可以是执行特定步骤的处理器或其他类型的硬 件模块。本发明的主要思想是将代码编译链接后生成对应于不同区域的多段image,然后 将其烧录到对应区域中,通过用户模块控制硬件加密模块的方式来实现存储区与用户的分 离,从而起到代码保护的效果。[0026]如图1所示,该发明将存储器分为三个区域,即FB_Region,FO_egion,Fl_Region。 FB_Region主要是存放硬件驱动层的一些关键数据和代码信息;R)_Region为一级客户加 密区域;Fl_Region为二级客户加密区域,如下所示[0027]FBRegion硬件驱动FORegion一级客户FlRegion二级客户[0028]每个存储器区域都具有各自独立的密码区域,即FB密码区、FO密码区和Fl密码 区。硬件加密模块的密码寄存器中也根据不同区域有对应的密码寄存器,即FB密码寄存 器、H)密码寄存器和Fl密码寄存器,用户可通过用户模块直接对任意一个密码寄存器进行 读写数据的操作。硬件加密模块与存储器通过总线相连,从而可以访问存储器内的各密码 区。[0029]如图2所示,硬件加密模块包括密码寄存器(即FB密码寄存器、H)密码寄存器和 Fl密码寄存器)、身份验证模块和加密单元。密码寄存器是提供给用户的密码输入接口,用 户可以通过用户模块直接对密码寄存器进行写入操作,从而写入密码。身份验证模块主要 功能是进行身份验证的功能,其内部有一个加密状态寄存器和一个比对密码单元。加密状 态寄存器记录着各个区域(即FB_Region、F0_Region和Fl_Region)的状态是处于加密状 态还是处于非加密状态,如果要访问的区域为非加密状态时,那么加密单元就不对其读写 动作进行限制,可直接对存储器进行访问;如果访问的区域为加密状态,则加密单元通过总 线加密控制单元限制用户模块通过总线访问存储器的各个区域。比对密码单元通过比对密 码寄存器内用户模块输入的密码与存储器各相应密码区内的密码值是否一致,来判定用户 是否为授权用户,以及是否允许其访问存储器相应的存储区。密码比对单元会将比对的结 果传递给用户模块以及加密单元,如果写入密码寄存器的密码值与密码区的密码值匹配, 即认为是授权用户,密码比对单元将比对结果传递给用户模块和加密单元,从而加密单元 允许用户模块对相应存储器层次的代码和数据才进行读取和修改;若比对结果为非授权用 户,比对密码单元会将比对结果传递给用户模块以及加密单元,加密单元会对用户模块的 读写指令进行阻拦。加密单元包括控制寄存器和总线加密控制单元,其中用户模块通过向 控制寄存器写入控制数值,从而启动加密单元的工作;而加密单元对存储器的访问限制工 作是通过总线加密控制单元来限制用户模块通过总线访问存储器中的相应区域来实现的。 当加密状态寄存器为加密状态时,加密单元通过总线加密控制单元限制用户模块通过总线 对存储器相应的存储区域(FB_Region、FO_Region和Fl_Region中的至少一个)的访问,对 于写操作,其数值不会更新到存储器的相应区域中,对于读操作,返回固定的读数(如O); 当加密状态寄存器为非加密状态时,加密单元不对其读写进行限制。[0030]本发明的方法中主要包含以下几个步骤,即Bin文件的分层存储、加密、解密。Bin 文件的分层存储的步骤主要完成代码经过编译器编译后生成的bin文件在存储器中分区 域存储的任务,即首先根据需要将不同层次的代码编译后的文件存放在相应的存储区,此过程是通过配置编译器的scatter file来完成的。加密是对FB、F0、F1三者中的任意层次 进行加密的过程,主要起到将对应层次的代码和数据与外界隔离的作用。每个层次都对应 一个密码存储区域,向该区域写入密码后,然后向加密单元的控制寄存器中写入控制数值 即可使该区域进入加密状态。解密主要是完成对某一区域进行解密的任务,用户向对应层 次的密码寄存器中写入密码,写入密码后硬件会立即启动比对密码单元,即比较密码寄存 器里写入的密码和对应密码区域的密码是否一致,如果对比一致则该区域解密完成,用户 为授权用户,可以对该区域的代码数据进行读取和修改,反之解密失败,该层次仍然处于加 密状态。[0031]下面介绍一下详细流程[0032]I) Bin文件的分层存储[0033]该层次的主要工作是完成对编译器scatter file的配置工作,用户根据已有的物 理存储结构将对应的代码进行空间分布的配置。下面以Nut MCU平台物理存储空间结构为 例进行配置,由于Nut MCU平台下分为FB、R)和Fl三个存储区域。我们就以下面的地址空 间分配为例[0034]FB 0x0000_00000x0000_3FFF[0035]FO 0x0000_4000—0x0000_BFFF[0036]Fl 0x0000_C0000x0000_FFF[0037]我们就可以按照如下的方式进行配置[0038]LRJROMl 0x00000000 OxOOOOfHfFB_Region 0x00000000 0x3iffFB空间存放的代码文件}F0_Region 0x4000 0x7ftF[0039]{FO空间存放的代码文件}Fl_Region OxcOOO 0x3iffFl空间存放的代码文件[0040]按照以上方式对scatter file进行配置后,经过编译后会编译出三段不同的Bin 文件和一个Bin map文件,然后利用烧录软件根据Bin map文件的内容将三段Bin文件烧 录到对应的存储空间内,这样就完成了 Bin文件的分层存储。这样系统才能正常运行。[0041]2)加密[0042]完成Bin文件的分层存储后,可以根据需要对FB、F0、F1当中的任何一个区域进行 加密动作,每个区域都有一段空间来存储属于本区域的密码,即FB密码区、FO密码区和Fl 密码区。加密的过程需要授权用户通过用户模块控制密码加密模块,配置每段存储器的密 码空间(FB密码区、H)密码区和Fl密码区)的密码值,写完密码值之后,通过用户模块设置 加密单元中的控制寄存器来使能加密单元,从而进入加密状态。具体的加密过程如图3所 示,首先,用户模块读取加密状态寄存器,加密状态寄存器将存储的状态值返回到用户模块 (即步骤SI)。然后,用户模块根据加密寄存器判断系统是否处于加密状态(即步骤S2)。 如果系统处于加密状态,用户模块将用户输入的密码值写入密码寄存器(即步骤s3)。用户 模块写入密码后,身份验证模块的比对密码单元比对所述密码寄存器内的密码与存储器密 码区内的密码是否匹配,进而确定该用户是否为授权用户,并且将比对结果返回到用户模 块和加密单元,如果比对密码单元返回的结果不是授权用户,则用户模块结束加密过程,加 密单元限制用户访问存储器的相应区域;比对密码返回的结果是授权用户,则加密单元允 许用户通过总线访问存储器,用户模块根据返回结果确定可以通过总线向存储器中对应的 密码空间写密码(即步骤S4)。然后用户模块向存储器的对应的密码区写入密码(即步骤 s5)。如果系统没有处于加密状态,用户模块不需要进行密码比对,可以直接通过总线向存 储器对应的密码空间写密码(即步骤s5)。在用户模块完成对存储器的各密码区的写密码 的操作后,用户模块对加密单元的控制寄存器进行写操作启动该总线加密控制单元(即步 骤s6),从而使系统进入加密状态(即步骤S7)。[0043]3)解密[0044]解密过程主要是硬件加密模块中身份验证模块的一个过程,主要任务是完成当前 用户是否为授权用户的判断,如果是授权用户,加密单元向该用户开放该区域的读写功能, 即实现了解密功能,授权用户可以根据自己的需要对该存储器区域的内容进行读取和修 改。[0045]在加密状态下,用户要想读取或者修改存储器中的代码和数据,必须要先进行身 份权限验证,验证通过的用户方可读取和修改对应层次的代码和数据信息。解密的过程需 要用户通过用户模块配置密码寄存器的值即可,然后身份验证模块会根据用户输入的密码 寄存器中的值与对应层次的密码区的值比较,若值相等则解密成功,详细的身份权限验证 过程如图4所示。当系统处于加密状态时,所述用户模块访问并且配置密码寄存器(即步 骤Si),然后比对密码单元比对密码寄存器的密码与存储器中相应的密码区内存储的密码 是否匹配,进而判断所述用户是否为授权用户(即步骤S2)。如果判断是授权用户,比对密 码单元将比对结果传递给加密单元和用户模块,加密单元使系统进入解密状态,用户模块 通过总线访问相应的存储区(即步骤S3)。如果判断不是授权用户,则比对密码单元将比 对结果传递给加密单元和用户模块,加密单元通过总线加密控制单元禁止用户访问存储器 (即步骤S4)。然后,用户模块判断是否继续进行权限验证(即步骤S5),如果否则结束解密 过程,如果是则用户模块进一步判断是否已经进行了预定次数的验证(例如5次)(即步骤s6),如果否,则用户模块返回步骤Si,如果是则结束解密过程。
权利要求1.一种通过硬件加密模块对存储器的特定存储区域进行加密和解密的系统,所述特定存储区域包括与之对应的密码存储区用于存储密码以供访问该存储区域时比对,所述系统包括 用户模块,用于向硬件加密模块写入密码, 硬件加密模块,接收用户模块写入的密码值,从而完成对存储区域的加密或解密; 其中,硬件加密模块包括密码寄存器、身份验证模块和加密单元, 密码寄存器用于存储用户模块输入的密码值; 身份验证模块用于验证用户模块输入到密码寄存器的密码值与相应的存储区域的密码存储区的密码值是否一致; 加密单元用于根据身份验证模块的验证结果确定是否允许用户访问相应的存储区域。
2.如权利要求1所述的系统,其中所述身份验证模块包括 加密状态寄存器,用于存储表征所述存储区域是否进入加密状态的状态值;比对密码单元,用于比对密码寄存器与相应的存储区域的密码存储区内的密码值是否一致。
3.如权利要求1所述的系统,其中所述加密单元包括 总线加密控制单元,其用于限制通过总线访问存储器的相应存储区域的操作; 控制寄存器,通过向该控制寄存器进行写操作,从而启动该总线加密控制单元。
专利摘要一种利用硬件加密模块来实现嵌入式软件的代码保护技术,主要功能是可以根据不用层级用户的需要进行代码空间加密处理,使之与其他层次分离进入加密状态。本实用新型对各个用户进行层级管理方式,每个层级的用户除了提供给下级用户接口以外,其余代码均可以放入保护的范围之内,低级用户必须根据上层提供的接口进行相关的配置,不允许本层直接对其他层次的代码空间进行读取和修改。本实用新型可以有效地对厂商的关键数据信息进行保护,避免被其他厂商读取修改。
文档编号G06F21/78GK202854814SQ201220172949
公开日2013年4月3日 申请日期2012年4月23日 优先权日2012年4月23日
发明者韩东坡, 高占东, 金传恩, 阎斌 申请人:合肥科盛微电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1