内存附加校验器的内存数据完整性保护方法

文档序号:6373119阅读:355来源:国知局
专利名称:内存附加校验器的内存数据完整性保护方法
技术领域
本发明涉及的是一种提高计算机安全性能的方法。
背景技术
在与本发明相关的技术领域中,公认的存储器完整性校验的有效机制是Merkle树(或Hash树),它是将存储器分成多个等长块,每个存储块对应Merkle树一个叶结点,每个内部结点是它两个儿子结点连接再进行hash计算的结果,此过程一直进行到根结点,树的根结点处于安全的存储区,例如CPU中。在校验时,再计算数据块的hash值,与事先存储的相应hash值比较,如相同则继续生成上一层hash值并进行比较,一直到根结点,如某个hash值不匹配,则发生篡改。但该方法需要占用大量存储空间来存储树的结构,而且每次校验都需要在从树叶到根节点的每一层进行计算,耗费了大量计算资源,其太长的延迟也不适用于很多实时性任务。有许多Merkle树的改进方法,主要有CHTree、Lhash和H-LHash、 BMT、M-TREE、PAT、TEC-Tree 和 HW-HTree 等。CHTree是利用处理器的片内Cache来提高基于Merkle树的完整性校验效率。将用作完整性检查的Merkle树内部结点被缓冲在L2_Cache中而维持可信。这种方法通过降低校验路径的长度,使得所需hash计算的次数减少。该方法的主要问题是需要较大的L2-Cache以缓冲足够多的Merkle树的内部结点。LHash和H-LHash都是维护一个存储器读写的操作日志,可以在稍后的某个时间一次性校验一系列存储器访问结果的完整性,属于脱机校验。该类方法通过减少不必要的校验次数而降低整个校验过程的代价。LHash/H-LHash多数时间只记录日志,因而“运行时性能”好,但一次校验代价会更大,若想有效发挥LHash的性能,检验必须是不频繁的。BMT (Bonsai Merkle Trees)是一种能同时保护内存和一部分外存的方法,它建立一棵Merkle树保护整个内存,每个内存页(page)又对应一棵Merkle子树,将子树的根结点保存在内存中设置的专用区,以此来保护外存交换区的安全,因校验交换区数据要经两级Merkle树,系统开销较大。M-TREE方法将Merkle树的MAC长度由256位降低为32位,降低了计算和存储开销,但安全性有待证明。PAT (Parallelizableauthentication trees)方法能并行认证和更新结点,但总体开销仍较大。TEC-Tree方法,它将明文分为数据块和nonce两部分,再用Merkle树保护nonce块,在解密时将解出的nonce和保存的nonce比较即可完成校验,这省去了一次MAC操作,但仍要维护一棵nonce树。HW-Htree (Hot Window Hash Tree)是通过缩短校验路径的方法来减小代价,使用的也是Merkle树校验方法,主要思想是维持Merkle树的基本结构不变,为其添加热点区域,通过优化热点区域从而提高校验性能。这种方法是Merkle树的一种改进,由于每次只需要校验到子树的顶结点,缩短了校验路径,一定程度上提高了校验效率,但它采用统一的存储块划分方式,当要保护的存储区很大时,进行校验的开销仍较大。

发明内容
本发明的目的在于提供一种能提高内存中数据的安全性,降低完整性校验的时间和空间开销的内存附加校验器的内存数据完整性保护方法。本发明的目的是这样实现的在内存中设置能进行信息摘要计算的校验器,通过如下过程实现对主存储器的保护;(I)初始化为CPU和校验器设一相同密钥key,同时CPU和校验器各维护一个用于同步的计数器,初始时两个计数器值设为O ;⑵写数据块在写数据块时,将CPU的计数器加1,将要保存的cache行数据、计数器值和cache 行地址相连接,以key为密钥做信息摘要计算,得到MAC (Message Authentication Code)值,将cache行与MAC值经由总线发送到内存;内存在接收到数据后,将校验器的计数器加1,在没有篡改情况下CPU与校验器的计数器将保持同步;接着将校验器计数器值与接收的数据块(cache行)和数据块地址相连,以key为密钥做信息摘要计算,将计算出的MAC值与收到的MAC值做比较,如相匹配,则数据校验成功,保存数据块,丢弃MAC值;如不匹配,认为遭到篡改,则数据校验失败,校验器发出报警信息;⑶读数据块在读数据块时,内存将校验器的计数器加1,将读取的数据块、校验器的计数器值和数据块地址相连接,以key为密钥对其做信息摘要计算,将数据块与MAC值经由总线发送到CPU ;CPU收到数据后,将CPU的计数器加1,将CPU计数器值与接收的数据块和数据块地址相连,以key为密钥做信息摘要计算,将计算出的MAC值与收到的MAC值做比较,如相匹配,则数据校验成功,否则数据校验失败,CPU发出报警信息。在本发明之前提出的安全体系结构中,几乎所有方案都假设CPU是安全的,而内存和总线是不安全的,可能受到硬件攻击。而事实上,内存芯片由于有类似于CPU的封装方式,攻击者同样不能探入到其内部结构,即内存芯片是安全的,攻击点只在内存或主板的总线上,攻击者可通过搭接的方法来控制总线,并可能篡改数据。因此如果内存芯片也具有计算功能,则它可与CPU协同完成校验,显著提高系统性能。基于这一想法,本发明提出了硬件协同的存储器完整性保护方法。其主要思想是在内存芯片中加入校验器,CPU和添加的校验器协同完成数据校验。在内存芯片中加入的校验器能进行信息摘要计算。CPU和校验器协同保护总线上传输的数据的完整性,如果攻击者通过某硬件搭接总线,篡改总线上传输的数据,CPU或校验器可以检测到这种情况,并发出报警信息。CPU和校验器具有相同的密钥,并各维护一个同步的计数器。两个计数器初始值相同,每一次总线传输数据后都加1,所以在总线上没有伪造数据的情况下,两个计数器维持同步。考虑到目前的内存通常焊有多个内存芯片,每个芯片的引脚都是外露的,易受到搭载攻击,需要为每个内存芯片都加入校验器,从而造成成本增加。为简化设计,可将整个内存条进行封装,只外露与系统总线的接口,这样一个内存条只需加入一个校验器即可。本发明的主要特点为(I)提高内存中数据的安全性,探测使用搭接总线方法篡改总线数据的攻击行为,防御包括重放攻击在内的各种主动和被动攻击行为;
(2)降低完整性校验的时间和空间开销。


附图是本发明的内存附加校验器的内存数据完整性保护方法的示意图。
具体实施例方式下面结合附图举例对本发明做更详细的描述结合附图,其中verifier是内存中增加的校验器,它有与CPU相同的密钥key,mask是对多个内存芯片(memory chip)和verifier的封装,使其免于受到硬件攻击。在内存中设置能进行信息摘要计算的校验器,通过三个主要过程初始化、写数据和读数据来实现对主存储器的保护,分别叙述如下。
⑴初始化为CPU和校验器设一相同密钥key,且两者各维护一个用于同步的计数器,初始时两个计数器值可设为O。(2)写数据块在写数据块时,将CPU的计数器加1,将要保存的cache行数据、计数器值和cache行地址相连接,以key为密钥对其做信息摘要计算,得到MAC (Message AuthenticationCode)值,将cache行与MAC值经由总线发送到内存;内存在接收到数据后,将校验器的计数器加1,这样在没有篡改情况下CPU与校验器的计数器将保持同步。接着将校验器计数器值与接收的数据块(cache行)和数据块地址相连,以key为密钥对其做信息摘要计算,将计算出的MAC值与收到的MAC值做比较,如相匹配,则数据校验成功,保存数据块,丢弃MAC值;如不匹配,认为遭到篡改,则数据校验失败,校验器发出报警信息。(3)读数据块在读数据块时,内存将校验器的计数器加1,将读取的数据块、校验器的计数器值和数据块地址相连接,以key为密钥对其做信息摘要计算,将数据块与MAC值经由总线发送到CPU ;CPU收到数据后,将CPU的计数器加1,将CPU计数器值与接收的数据块和数据块地址相连,以key为密钥对其做信息摘要计算,将计算出的MAC值与收到的MAC值做比较,如相匹配,则数据校验成功,否则数据校验失败,CPU发出报警信息。在具体实现时,内存校验器可以选用LKT4101等商业加密芯片,或者选用ARM等具有简单计算功能的芯片,此时加密程序可以存储在一块专用内存中。内存校验器与系统总线相连,进出内存的数据都要经过校验器,如果校验失败,校验器可以适当的方式发出警报,甚至终止程序的运行。与目前主流基于Merkle树的认证方法比较,本发明提出的内存数据完整性保护方法不需要在内存中保存数据块MAC值,也不需要在内存构建Merkle树,大大降低了完整性保护带来的性能开销;同时由于计数器的存在,使每次读写数据时,攻击者如用以前发送过的数据再发给CPU或内存,由于计数器不断加1,导致CPU或内存计算出的MAC值与收到的MAC值不同,校验器也能检测出,所以该方法可以防御重放攻击。结合计数器模式等加密方法,本方法可防范各种主动和被动攻击行为。
权利要求
1.一种内存附加校验器的内存数据完整性保护方法,其特征是在内存中设置能进行信息摘要计算的校验器,通过如下过程实现对主存储器的保护; (1)初始化 为CPU和校验器设一相同密钥key,同时CPU和校验器各维护一个用于同步的计数器,初始时两个计数器值设为O ; (2)写数据块 在写数据块时,将CPU的计数器加1,将要保存的cache行数据、计数器值和cache行地址相连接,以key为密钥做信息摘要计算,得到MAC值,将cache行与MAC值经由总线发送到内存;内存在接收到数据后,将校验器的计数器加I,在没有篡改情况下CPU与校验器的计数器将保持同步;接着将校验器计数器值与接收的数据块和数据块地址相连,以key为密钥做信息摘要计算,将计算出的MAC值与收到的MAC值做比较,如相匹配,则数据校验成功,保存数据块,丢弃MAC值;如不匹配,认为遭到篡改,则数据校验失败,校验器发出报警信息; (3)读数据块 在读数据块时,内存将校验器的计数器加1,将读取的数据块、校验器的计数器值和数据块地址相连接,以key为密钥对其做信息摘要计算,将数据块与MAC值经由总线发送到CPU ;CPU收到数据后,将CPU的计数器加1,将CPU计数器值与接收的数据块和数据块地址相连,以key为密钥做信息摘要计算,将计算出的MAC值与收到的MAC值做比较,如相匹配,则数据校验成功,否则数据校验失败,CPU发出报警信息。
全文摘要
本发明提供的是一种内存附加校验器的内存数据完整性保护方法。在内存芯片中加入能进行信息摘要计算的校验器,CPU和校验器具有相同的密钥,并各维护一个同步的计数器,两个计数器初始值相同,每一次总线传输数据后都加1,所以在总线上没有伪造数据的情况下,两个计数器维持同步。CPU和校验器协同保护总线上传输的数据的完整性,如果攻击者通过某硬件搭接总线,篡改总线上传输的数据,CPU或校验器可以检测到这种情况,并发出报警信息。本发明能够提高内存中数据的安全性,探测使用搭接总线方法篡改总线数据的攻击行为,防御包括重放攻击在内的各种主动和被动攻击行为;降低完整性校验的时间和空间开销。
文档编号G06F21/00GK102841998SQ201210239059
公开日2012年12月26日 申请日期2012年7月11日 优先权日2012年7月11日
发明者姚念民, 马海峰 申请人:哈尔滨工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1