法律状态公告日
法律状态信息
法律状态
2017-06-13
授权
授权
2015-06-17
实质审查的生效 IPC(主分类):G06F12/14 申请日:20150107
实质审查的生效
2015-05-20
公开
公开
技术领域
本发明属于计算机数据存储保护技术领域,涉及一种保护内存存储器数据机密性和完整性的方法。
背景技术
随着科学技术的发展,存储在计算机内存中的数据越来越多、越来越重要,内存也由此遭到越来越多的攻击,所以需要对其机密性进行保护,防止信息泄露。内存数据机密性保护领域最常使用的加密方法是计数器模式加密,因为在不考虑counter溢出的情况下,计数器模式加密只会在数据的关键路径上添加一个异或操作引起的延迟。但是counter溢出会使得系统暂停正在进行的任务,分配新的密钥和counter,进行重新加密,占用非常多的系统计算资源。
发明内容
本发明的目的在于提供一种加解密使用的counter的构建方法,改进计数器模式加密方法,消除counter溢出对系统性能的影响,保留计数器模式加密在性能方面的优势,同时保护系统内存数据的完整性。
本发明的技术方案包括以下两个部分:
当CPU将数据块写回内存时:
1.1.1系统为需要写回的数据块分配新的counterassigned,counterassigned可以这样产生,其初始为0,每次产生则自身加(1),可以保证其在溢出之前不重复;
1.1.2使用counterassigned计算用于加解密的counteruse,如式(1),其中||为连接运算,addrblock为数据块的地址;
counteruse=Hashkey(addrblock||counterassigned) (1)
1.1.3使用计算的counteruse计算本次加密使用的密钥keyuse;
1.1.4应用计数器模式加密方法对数据块加密;
1.1.5检查是否可以将counteruse存储在片上缓存中。如果可以存储在片上缓存中,则存储在片上缓存中;否则,丢弃。
1.1.6将数据块和counterassigned写回内存。
当CPU从内存读取数据块时:
1.2.1首先从内存读取数据块;
1.2.2检查这个数据块的counteruse是否存储在片上。如果不在片上缓存中,从
内存中读取这个数据块的counterassigned,将counterassigned和数据块的地址作为带密
钥的MAC函数的输入计算counteruse,如式(1);
1.2.3应用计数器模式加密方法解密这个数据块;存储在counter缓存中的是计算的得到的counteruse,而不是系统为数据块分配的counterassigned。
系统可以预先分配多个密钥在片上存储,使用计算得到的counteruse对系统中可用的密钥的数量求余,确定需要使用哪个密钥keyuse对数据块进行加解密,如式(2),其中mod是取摸运算。
keyuse=keyi,i=counteruse mod n (2)
可以在式(1)中添加另一个非常短的输入counter_i,其产生方式同counterassigned,counter_i可以在内存中单独存储,如式(3)或式(4),其中addrblock为数据块的地址。
counteruse=Hashkey(addrblock||counterassigned||counter_i) (3)
Counteruse=Hashkey(Hashkey(addrblock||counterassigned)||counter_i) (4)
可以在式(2)中添加另一个非常短的输入counter_i参与密钥key的选择,counter_i可以在内存中单独存储,如式(5),其中||为连接运算,mod是取摸运算。
keyuse=keyi,i=(Hashkey(counteruse||counter_i))mod n(5)
本发明可以平滑的消除counter溢出对系统性能的影响。系统为数据块分配的counterassigned发生溢出,并不意味这系统实际使用的counteruse发生溢出,而且counteruse发生溢出的可能性以及攻击者找到溢出发生的可能性都非常小。
本发明允许系统为数据块分配较小的counter,降低counter导致的存储空间消耗。
本发明可以显著的降低机密性保护对系统性能的影响。与现存的使用全局counter的计数器模式相比,本发明实质上消除了counter溢出的问题,不需要进行大消耗的counter溢出处理。当需要从内存中读取需要的counter时,只会在数据的关键路径上添加进行hash计算的延迟,而根据程序的局部性原理,需要从内存中读取counterassigned来计算counteruse的次数是较少的,所以从总体来看,引起的性能消耗远比使用全局counter的小。
附图说明
图1是改进的计数器模式加密方法的框架图。
图2是CPU从内存中读取数据块的流程图。
图3是CPU将数据块写回内存的流程图。
具体实施方式
下面结合附图对本发明做进一步的说明。具体实现过程如下,结合图1、2和3:
当CPU从内存中读取一个数据块时:
①CPU从内存中读取需要的数据块;
②检查这个数据块对应的counteruse是否在counter缓存中;
③如果counteruse在counter缓存中,转到⑥;
④如果counteruse不在counter缓存中,从内存中读取系统为这个数据块分配的counterassigned;
⑤使用取到的counterassigned和数据块的物理地址作为带密钥的MAC函数的输入,计算counteruse;
⑥使用计算得到的counteruse对系统中可用的密钥数量求余,确定进行加解密操作使用的keyuse;
⑦应用计数器模式加密方法对数据块进行解密操作;
⑧程序结束。
当CPU将一个数据块写回内存时:
①系统为这个数据块分配最新的counterassigned;
②使用分配的counterassigned和这个数据块的物理地址作为带密钥的MAC函数的输入,产生用于加解密的counteruse;
③使用计算得到的counteruse对系统中可用的密钥数量求余,确定进行加解密操作使用的keyuse;
④应用计数器模式加密方法对数据块进行解密操作;
⑤将加密后的数据块和counterassigned写回到内存;
⑥检查是否可以将counteruse存储在片上的counter缓存中;
⑦如果可以存储在counter缓存中,则存储;
⑧如果不可以存储在counter缓存中,则丢弃;
⑨程序结束。
如上面描述的那样,新方法是用系统分配的counterassigned和数据块的物理地址的连接作为带密钥的MAC函数的输入计算实际使用的counteruse,配合其他的一些机制,平滑的消除了counter溢出对系统性能的影响,允许系统为数据块分配较小的counter。
机译: 保护存储器中数据机密性的方法用于计算机系统处理器的静态RAM,涉及使用选定的地址相关随机数对写入内存的数据进行加密
机译: 用于提供存储器机密性,完整性和重放保护的低开销的加密方法和装置
机译: 内存机密性,完整性和重放保护技术