CN104636276A - 一种保护内存存储器数据机密性和完整性的方法 - Google Patents
一种保护内存存储器数据机密性和完整性的方法 Download PDFInfo
- Publication number
- CN104636276A CN104636276A CN201510009530.7A CN201510009530A CN104636276A CN 104636276 A CN104636276 A CN 104636276A CN 201510009530 A CN201510009530 A CN 201510009530A CN 104636276 A CN104636276 A CN 104636276A
- Authority
- CN
- China
- Prior art keywords
- counter
- key
- data block
- assigned
- encryption
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提出一种内存数据机密性和完整性保护方案。它的实现方法是:将系统为数据块分配的counterassigned和数据块的地址作为带密钥的MAC函数的输入,计算加解密过程中使用的counteruse,根据计算得出的counteruse计算本次加解密使用的密钥keyuse。本发明方法与传统的计数器模式加密方法相比,可以平滑的消除counter溢出对系统计算资源占用的影响,允许系统为数据块分配较短的counter,减少counter占用的存储空间,同时保留计数器模式加密方法在系统性能方面的优势,并且保护内存数据的完整性。
Description
技术领域
本发明属于计算机数据存储保护技术领域,涉及一种保护内存存储器数据机密性和完整性的方法。
背景技术
随着科学技术的发展,存储在计算机内存中的数据越来越多、越来越重要,内存也由此遭到越来越多的攻击,所以需要对其机密性进行保护,防止信息泄露。内存数据机密性保护领域最常使用的加密方法是计数器模式加密,因为在不考虑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。
Claims (4)
1.一种保护内存存储器数据机密性和完整性的方法,其特征在于在CPU中设置n个密钥,key1,…,keyn,使用系统为数据块分配的counterassigned计算用于加解密这个数据块的counteruse,并且根据计算得到的counteruse选择使用哪个密钥keyuse进行加解密;具体包括以下两个部分:
当CPU将数据块写回内存时:首先,系统为需要写回的数据块分配新的counterassigned,counterassigned可以这样产生,其初始为0,每次产生则自身加(1),保证其在溢出之前不重复;然后使用counterassigned计算用于加解密的counteruse,如式(1):
counteruse=Hashkey(addrblock||counterassigned) (1)
其中||为连接运算,addrblock为数据块的地址,Hashkey为CPU中预分配的带密钥的Hash函数;使用计算的counteruse选择本次加密使用的密钥keyuse;应用计数器模式加密方法对数据块加密;检查是否可以将counteruse存储在片上缓存中;如果可以存储在片上缓存中,则存储在片上缓存中;否则,丢弃;最后将数据块和counterassigned写回内存;
当CPU从内存读取数据块时:首先从内存读取数据块;然后检查这个数据块的counteruse是否存储在片上;如果不在片上缓存中,从内存中读取这个数据块的counterassigned,将counterassigned和数据块的地址作为带密钥的Hash函数的输入计算counteruse,如式(1);最后应用计数器模式加密方法解密这个数据块。
2.如权利要求1所述的方法,其特征在于系统预先分配多个密钥在片上存储,使用计算得到的counteruse对系统中可用的密钥的数量求余,确定需要使用哪个密钥keyuse对数据块进行加解密,如式(2):
keyuse=keyi,i=counteruse mod n (2)
其中mod是取摸运算。
3.如权利要求1或2所述的方法,其特征在于在式1中添加另一个输入counter_i,其产生方式同counterassigned,counter_i在内存中单独存储,如式(3)或式(4):
counteruse=Hashkey(addrblock||counterassigned||counter_i) (3)
Counteruse=Hashkey(Hashkey(addrblock||counterassigned)||counter_i) (4)
其中addrblock为数据块的地址。
4.如权利要求1或2所述的方法,其特征在于在式(2)中添加另一个输入counter_i参与密钥key的选择,counter_i在内存中单独存储,如式(5):
keyuse=keyi,i=(Hashkey(counteruse||counter_i))mod n (5)
其中||为连接运算,mod是取摸运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510009530.7A CN104636276B (zh) | 2015-01-07 | 2015-01-07 | 一种保护内存存储器数据机密性和完整性的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510009530.7A CN104636276B (zh) | 2015-01-07 | 2015-01-07 | 一种保护内存存储器数据机密性和完整性的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104636276A true CN104636276A (zh) | 2015-05-20 |
CN104636276B CN104636276B (zh) | 2017-06-13 |
Family
ID=53215052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510009530.7A Expired - Fee Related CN104636276B (zh) | 2015-01-07 | 2015-01-07 | 一种保护内存存储器数据机密性和完整性的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104636276B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106130719A (zh) * | 2016-07-21 | 2016-11-16 | 中国科学院信息工程研究所 | 一种抵抗内存泄漏攻击的密码算法多核实现方法及装置 |
CN110958573A (zh) * | 2019-11-22 | 2020-04-03 | 大连理工大学 | 车载内容中心网络下基于一致性哈希的移动感知协作缓存方法 |
CN112347432A (zh) * | 2020-11-24 | 2021-02-09 | 广芯微电子(广州)股份有限公司 | 一种基于risc-v架构的嵌入式处理器中的程序保护方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4370712A (en) * | 1980-10-31 | 1983-01-25 | Honeywell Information Systems Inc. | Memory controller with address independent burst mode capability |
CN102355352A (zh) * | 2011-07-24 | 2012-02-15 | 哈尔滨工程大学 | 一种数据机密性和完整性保护方法 |
CN102629236A (zh) * | 2012-02-22 | 2012-08-08 | 哈尔滨工程大学 | 基于不等长计数器的存储器保护方法 |
CN102841998A (zh) * | 2012-07-11 | 2012-12-26 | 哈尔滨工程大学 | 内存附加校验器的内存数据完整性保护方法 |
-
2015
- 2015-01-07 CN CN201510009530.7A patent/CN104636276B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4370712A (en) * | 1980-10-31 | 1983-01-25 | Honeywell Information Systems Inc. | Memory controller with address independent burst mode capability |
CN102355352A (zh) * | 2011-07-24 | 2012-02-15 | 哈尔滨工程大学 | 一种数据机密性和完整性保护方法 |
CN102629236A (zh) * | 2012-02-22 | 2012-08-08 | 哈尔滨工程大学 | 基于不等长计数器的存储器保护方法 |
CN102841998A (zh) * | 2012-07-11 | 2012-12-26 | 哈尔滨工程大学 | 内存附加校验器的内存数据完整性保护方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106130719A (zh) * | 2016-07-21 | 2016-11-16 | 中国科学院信息工程研究所 | 一种抵抗内存泄漏攻击的密码算法多核实现方法及装置 |
CN110958573A (zh) * | 2019-11-22 | 2020-04-03 | 大连理工大学 | 车载内容中心网络下基于一致性哈希的移动感知协作缓存方法 |
CN112347432A (zh) * | 2020-11-24 | 2021-02-09 | 广芯微电子(广州)股份有限公司 | 一种基于risc-v架构的嵌入式处理器中的程序保护方法及系统 |
CN112347432B (zh) * | 2020-11-24 | 2021-10-12 | 广芯微电子(广州)股份有限公司 | 一种基于risc-v架构的嵌入式处理器中的程序保护方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104636276B (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8516271B2 (en) | Securing non-volatile memory regions | |
US8938603B2 (en) | Cache system optimized for cache miss detection | |
US9798900B2 (en) | Flexible counter system for memory protection | |
CN105069379B (zh) | 一种基于写计数器的存储器完整性保护方法 | |
CN108427575B (zh) | 全流水结构sha-2消息扩展优化方法 | |
US11205017B2 (en) | Post quantum public key signature operation for reconfigurable circuit devices | |
CN104463020A (zh) | 存储器数据完整性保护的方法 | |
CN107430555B (zh) | 用于存储器保护的高速缓存和数据组织 | |
CN109144894B (zh) | 基于数据冗余的内存访问模式保护方法 | |
CN103678172A (zh) | 一种本地数据缓存管理方法及装置 | |
CN103065082A (zh) | 基于Linux系统的软件安全防护方法 | |
CN110187832B (zh) | 一种数据操作的方法、设备和系统 | |
CN108573176B (zh) | 一种密钥派生加密的移动终端数据安全删除的方法及系统 | |
CN106326751A (zh) | 一种可信道系统及其实现方法 | |
CN104636276A (zh) | 一种保护内存存储器数据机密性和完整性的方法 | |
KR101825838B1 (ko) | 데이터의 부분 암호화 방법, 데이터의 부분 복호화 방법 및 부분 암호화된 데이터를 복호화하는 프로그램을 저장하는 저장매체 | |
CN104182356A (zh) | 一种内存管理方法、装置及终端设备 | |
CN105335530B (zh) | 一种提升大数据块重复数据删除性能的方法 | |
EP3474147A1 (en) | Cache management method and device, and computer storage medium | |
KR102421318B1 (ko) | 장치의 시스템 온 칩의 보안 모듈로의 복수의 액세스를 관리하기 위한 디바이스 | |
CN104516823A (zh) | 一种数据存储方法和装置 | |
CN106789061A (zh) | 磁浮工程检测车数据传输方法、装置以及磁浮工程检测车 | |
US20140161253A1 (en) | High performance hardware-based execution unit for performing c2 block cipher encryption/decryption | |
KR20160131622A (ko) | 개인정보 이관 시스템 | |
US11792004B2 (en) | Polynomial multiplication for side-channel protection in cryptography |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170613 Termination date: 20200107 |
|
CF01 | Termination of patent right due to non-payment of annual fee |