CN101901316B - 基于Bloom Filter的数据完整性保护方法 - Google Patents
基于Bloom Filter的数据完整性保护方法 Download PDFInfo
- Publication number
- CN101901316B CN101901316B CN2010102265691A CN201010226569A CN101901316B CN 101901316 B CN101901316 B CN 101901316B CN 2010102265691 A CN2010102265691 A CN 2010102265691A CN 201010226569 A CN201010226569 A CN 201010226569A CN 101901316 B CN101901316 B CN 101901316B
- Authority
- CN
- China
- Prior art keywords
- array
- data
- value
- memory
- data block
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供的是一种基于Bloom Filter的数据完整性保护方法。先将受保护的存储区分成相等的多个块,然后在计算机安全区中维护一个m个元素的数组,同时设置k个散列函数,用于将数据块映射到数组中;存储器初始化即建立保护时,内存块数据经k次散列函数计算得到k个值,将这k个值作为数组的序号,将数组相应序号的值加1;当修改数据块时,将原数据块的k个映射位的值减1,再将修改后数据块的k个映射位的值加1;在校验时,如所读取的数据块映射到数组中相应位的值都不为0,则认为数据正常,只要有一个映射位的值为0,则认为遭到篡改。用于防止内存中的数据被恶意篡改;保证内存数据完整性同时,能降低完整性保护的时间和空间开销。
Description
技术领域
本发明涉及的是一种计算机安全保护方法。
背景技术
完整性是指对抗对手主动攻击,防止信息被未经授权的篡改;它是安全体系结构和存储安全的重要研究内容。目前数据完整性校验方法有MAC、Hash树、CHtree树、LHash/H-Lhash、GCM和HW-Htree等机制,而完整性校验的基础是Hash树。
Hash树也叫Merkle树,它是将存储器分成多个等长块,对其构建Hash树。每个存储块对应Hash树一个叶节点,每个内部节点为下属两个节点Hash计算的结果,一直到根节点,存储所有内部节点,树的根节点处于安全的存储区。在校验时,再计算数据块的Hash值,与事先存储的相应Hash值比较,如相同则继续生成上一层Hash值并进行比较,一直到根节点,如某个Hash值不匹配,则发生篡改。Hash树校验存在的问题是每次校验所需要的开销很大,导致***性能显著下降。
发明内容
本发明的目的在于提供一种能够防止内存中的数据被恶意篡改,在保证内存数据完整性同时降低完整性保护的时间和空间开销的基于Bloom Filter的数据完整性保护方法。
本发明的目的是这样实现的:
先将受保护的存储区分成相等的多个块,然后在计算机安全区中维护一个m个元素的数组,同时设置k个散列函数,用于将数据块映射到数组中;存储器初始化即建立保护时,内存块数据经k次散列函数计算得到k个值,将这k个值作为数组的序号,将数组相应序号的值加1;当修改数据块时,将原数据块的k个映射位的值减1,再将修改后数据块的k个映射位的值加1;在校验时,如所读取的数据块映射到数组中相应位的值都不为0,则认为数据正常,只要有一个映射位的值为0,则认为遭到篡改。
具体步骤为:
(1)初始化操作过程:
1)将数组的每个元素置0;
2)读取每一个受保护的内存块数据加上地址信息;
3)进行k次散列函数计算;
4)将得到的k个值作为数组的序号,将数组的相应位加1;
(2)更新操作过程:
1)读取原来的数据块及其地址信息;
2)进行k次散列函数计算;
3)将得到的k个值作为数组的序号,将数组的相应位减1;
4)更新该数据块;
5)将更新后数据块内容加上地址信息再进行k次散列函数计算;
6)将得到的k个值作为数组的序号,将数组的相应位加1;
(3)校验操作过程:
1)读取的数据块内容及其地址信息;
2)进行k次散列函数计算;
3)依次检验k个值映射到数组中相应位的值是否为0;
4)有一个映射位的值为0,则认为遭到篡改;
5)所有映射位都为1,则认为数据正常。
预设的m和k的大小与受保护内存容量大小相关,受保护内存的容量越大,m和k越大。
Hash树是一种公认的存储器完整性保护的可靠方法,在用Hash方法保护N块存储区时,需要构建一棵高度为log2N+1的Hash树,且每次校验数据时都要从叶结点计算到根结点,需要的存储代价和计算开销都很大。
本发明提出了一种基于Bloom Filter的数据完整性保护方法,用于防止内存中的数据被恶意篡改,防御包括重放攻击在内的攻击行为;本发明在保证内存数据完整性同时,能降低完整性保护的时间和空间开销。
附图说明
图1基于Bloom Filter的数据完整性保护方法示意图;
图2完整性保护初始化过程流程图;
图3更新数据过程流程图;
图4校验数据过程流程图;
图5数组放入非安全区存储机制示意图。
具体实施方式
下面结合附图举例对本发明做更详细地描述:
此方法实施的前提条件是先将受保护的存储区分成相等的多个块(如64k),并在计算机安全区中(如处理器Cache)维护一个m个元素的数组,同时设置k个散列函数,每个散列函数可以将任意数据映射为0到m-1中的一个值。在常规Bloom Filter方法中,数据块经k个散列函数计算,将数组中相应映射位的元素加1,如果一个数组位多次被置为1,那么只有第一次会起作用,其余几次将不起作用。这样能很方便的增加新数据块,但在修改某数据块时,不能直接将该数据块在数组中的映射位清除,因为这可能清除了其他数据块的映射值。为了能够完成修改操作,不影响其他数据块在数组中的映射位,这里使用Bloom Filter的改进算法Counting-Bloom Filter,它是为数组的每一位设置一个计数器(初始值为0),用来记录该位发生了多少次散列函数的碰撞。
提出完整性检验方法的存储器具体操作如下。
(1)初始化操作
流程图见附图2,过程描述为:
1)将数组的每个元素置0;
2)读取每一个受保护的内存块数据加上地址信息;
3)进行k次散列函数计算;
4)将得到的k个值(可能重复)作为数组的序号,将数组的相应位加1;
(2)更新操作
流程图见附图3,过程描述为:
1)读取原来的数据块及其地址信息
2)进行k次散列函数计算;
3)将得到的k个值作为数组的序号,将数组的相应位减1;
4)更新该数据块;
5)将更新后数据块内容加上地址信息再进行k次散列函数计算;
6)将得到的k个值作为数组的序号,将数组的相应位加1;
(3)校验操作
流程图见附图4,过程描述为:
1)读取的数据块内容及其地址信息
2)进行k次散列函数计算;
3)依次检验k个值映射到数组中相应位的值是否为0;
4)有一个映射位的值为0,则认为遭到篡改;
5)所有映射位都为1,则认为数据正常。
示例如附图1所示,维持一个有m个元素的一维数组,保存在cache中,其中每一位都是一个计数器(Counter)。已经证明,对绝大部分应用,每个counter有4个二进制位(bit)对于大部分应用来说已经足够,这里就取counter为4位,即范围为0-15。设n个需要保护的数据块,初始对每个数据块要做k个散列函数计算,将散列值映射到数组的相应位中,每映射一次,相应值加1。如数组中第5位被数据块映射了3次,所以值为3;如修改第2块数据时,要先将对应的映射位,即数组中第1、3、5的Counter值分别减1,再将新的数据块重新做k个散列函数计算,并将新映射位的值分别加1;如校验第3个数据块,则再做k个散列计算,如每个映射位都不为0,则数据正常,否则遭到篡改。
由于Bloom Filter自身特性所决定,它在判断存储块是否遭到篡改时会有一定的错误率(false positive rate),错误率一定时,预设的n和m的大小与受保护内存容量大小有关。要求的错误率越低,碰撞发生的次数越少,受保护内存的容量越大,n和m也越大。但经过适当的设置n、m、k,可使错误率维持在一个很低的范围内(如小于0.01%),这完全可以满足实际的数据完整性校验要求。
Hash树数据完整性保护方法为多级树型结构,而该方法为一级Hash结构,只需要有限次计算(计算次数由n与m综合决定)。同时各个存储块相互独立,可并行计算;且各散列函数相互独立,也可并行计算,这样在***和修改存储器的数据时,计算的开销会比Hash树方法大幅减少。在硬件实现时,可考虑在CPU内设置专门部件来完成对Hash映射的并行计算,这会进一步提高校验的效率。
方案的改进
考虑到高速缓存(cache)是***的重要资源,当要保护的空间较大时(大于1G),BloomFilter数组占用较多的存储空间。为减小高速缓存的空间占用,提出改进方法:将数组全部放入到非安全区中(典型为内存),再使用Hash树方法来保护该数组,只将Hash树的根结点保存在cache中。原理如附图5所示,图中每个数组单元占4位,为便于计算,设每64k数组空间作为一个Hash计算单位,以此构建Hash树,中间产生的Hash结点值和数组都保存在内存中,只有根结点保存在cache中,这显著减小了高速缓存的占用。这样对于某一数据块的更新和校验,都要先校验数组,再进行更新或校验操作,具体操作说明如下:
(1)初始化操作
1)执行正常的初始化操作;
2)以事先划分的单位块长度计算数组中每个单位块的Hash值,生成叶结点;
3)连接某叶结点与其兄弟结点的数据;
4)计算连接后的Hash值,保存在内存;
5)重复上述过程,直到根结点,并将其保存在cache中。
(2)更新操作:
1)以事先划分的单位块长度计算每个单位块的Hash值,生成叶结点;
2)连接某叶结点与其兄弟结点的数据,计算连接后的Hash值;
3)看是否与父结点匹配;
4)重复上述过程,直到根结点;
5)检查计算出的根结点Hash值与存储在Cache中的Hash值是否相同;
6)如相同(说明数组安全),更新数据块数据,按正常过程更新数组(5.2中更新操作)。
7)如不同,认为数组遭到篡改。
(3)校验操作:
1)--5)同上面更新操作;
6)按正常过程校验数组。
Claims (2)
1.一种基于Bloom Filter的数据完整性保护方法,其特征是:先将受保护的存储区分成相等的多个块,然后在计算机安全区中维护一个m个元素的数组,同时设置k个散列函数,用于将数据块映射到数组中;执行如下具体步骤:
(1)初始化操作过程:
1)将数组的每个元素置0;
2)读取每一个受保护的内存块数据加上地址信息;
3)进行k次散列函数计算;
4)将得到的k个值作为数组的序号,将数组的相应位加1;
(2)更新操作过程:
1)读取原来的数据块及其地址信息;
2)进行k次散列函数计算;
3)将得到的k个值作为数组的序号,将数组的相应位减1;
4)更新该数据块;
5)将更新后数据块内容加上地址信息再进行k次散列函数计算;
6)将得到的k个值作为数组的序号,将数组的相应位加1;
(3)校验操作过程:
1)读取的数据块内容及其地址信息;
2)进行k次散列函数计算;
3)依次检验k个值映射到数组中相应位的值是否为0;
4)有一个数组中相应位的值为0,则认为遭到篡改;
5)所有数组中相应位的值都为1,则认为数据正常。
2.根据权利要求1所述的基于Bloom Filter的数据完整性保护方法,其特征是预设的m和k的大小与受保护内存容量大小相关,受保护内存的容量越大,m和k越大。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102265691A CN101901316B (zh) | 2010-07-15 | 2010-07-15 | 基于Bloom Filter的数据完整性保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102265691A CN101901316B (zh) | 2010-07-15 | 2010-07-15 | 基于Bloom Filter的数据完整性保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101901316A CN101901316A (zh) | 2010-12-01 |
CN101901316B true CN101901316B (zh) | 2012-05-09 |
Family
ID=43226845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102265691A Expired - Fee Related CN101901316B (zh) | 2010-07-15 | 2010-07-15 | 基于Bloom Filter的数据完整性保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101901316B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104717070B (zh) * | 2015-02-13 | 2018-07-24 | 中国科学院信息工程研究所 | 一种利用单向哈希函数关联数字证书的方法 |
CN105574076B (zh) * | 2015-11-27 | 2019-02-12 | 湖南大学 | 一种基于Bloom Filter的键值对存储结构及方法 |
CN107516046B (zh) * | 2017-06-26 | 2019-11-12 | 江苏通付盾科技有限公司 | 数据保护方法及装置、电子设备、计算机存储介质 |
JP6830552B2 (ja) * | 2019-04-26 | 2021-02-17 | アドバンスド ニュー テクノロジーズ カンパニー リミテッド | アンチリプレー攻撃認証プロトコル |
CN112651054B (zh) * | 2020-12-30 | 2022-10-14 | 海光信息技术股份有限公司 | 一种内存数据完整性保护方法、装置及电子设备 |
CN113076562A (zh) * | 2021-05-08 | 2021-07-06 | 北京炼石网络技术有限公司 | 基于gcm加密模式的数据库加密字段模糊检索方法 |
CN117743472B (zh) * | 2024-02-06 | 2024-05-07 | 之江实验室 | 一种存储任务断点同步方法、装置、介质及设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8032529B2 (en) * | 2007-04-12 | 2011-10-04 | Cisco Technology, Inc. | Enhanced bloom filters |
US9256686B2 (en) * | 2008-09-15 | 2016-02-09 | International Business Machines Corporation | Using a bloom filter in a web analytics application |
CN101609449A (zh) * | 2009-06-16 | 2009-12-23 | 浪潮电子信息产业股份有限公司 | 一种基于布鲁姆过滤器的数据块快速比较*** |
-
2010
- 2010-07-15 CN CN2010102265691A patent/CN101901316B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101901316A (zh) | 2010-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101901316B (zh) | 基于Bloom Filter的数据完整性保护方法 | |
CN102930185B (zh) | 运行时程序安全关键数据的完整性验证方法及装置 | |
CN110945509B (zh) | 用于控制对受保护存储器区域中数据的访问的设备和方法 | |
US9785797B2 (en) | Decentralized token table generation | |
US9672351B2 (en) | Authenticated control stacks | |
US8006078B2 (en) | Central processing unit having branch instruction verification unit for secure program execution | |
US10733313B2 (en) | Counter integrity tree for memory security | |
US9563769B2 (en) | System and method for secure loading data in a cache memory | |
CN105069379B (zh) | 一种基于写计数器的存储器完整性保护方法 | |
JP2016009882A (ja) | メモリ管理装置、プログラム、及び方法 | |
KR20130033416A (ko) | 메모리의 세그먼트들을 보호하기 위한 방법 및 장치 | |
EP3384406A1 (en) | Combining hashes of data blocks | |
WO2016144362A1 (en) | Memory device write based on mapping | |
CN103455756A (zh) | 一种基于可信计算的进程控制方法 | |
CN105022968A (zh) | 一种内存数据的完整性校验方法 | |
CN106802837B (zh) | 一种更新错误检测和纠正ecc码的方法及装置 | |
CN116301963A (zh) | ***固件的升级方法、装置、设备及存储介质 | |
US10613993B2 (en) | Method for protecting a program code, corresponding system and processor | |
CN104598827B (zh) | 硬件协助的操作***重启计数器设计方法 | |
CN102521143B (zh) | 一种堆数据处理方法及装置 | |
CN115659417A (zh) | 审计日志存储方法、验证方法、装置和计算机设备 | |
CN102542319A (zh) | Psam卡中密钥保护方法 | |
CN112597488B (zh) | 页表完整性保护方法、装置和设备 | |
CN115777101A (zh) | 使用高速缓存的部分散列值的存储器保护 | |
JP7438924B2 (ja) | 情報処理装置、方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120509 Termination date: 20170715 |