基于Bloom Filter的数据完整性保护方法技术

技术编号:4046213 阅读:205 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供的是一种基于Bloom?Filter的数据完整性保护方法。先将受保护的存储区分成相等的多个块,然后在计算机安全区中维护一个m个元素的数组,同时设置k个散列函数,用于将数据块映射到数组中;存储器初始化即建立保护时,内存块数据经k次散列函数计算得到k个值,将这k个值作为数组的序号,将数组相应序号的值加1;当修改数据块时,将原数据块的k个映射位的值减1,再将修改后数据块的k个映射位的值加1;在校验时,如所读取的数据块映射到数组中相应位的值都不为0,则认为数据正常,只要有一个映射位的值为0,则认为遭到篡改。用于防止内存中的数据被恶意篡改;保证内存数据完整性同时,能降低完整性保护的时间和空间开销。

【技术实现步骤摘要】

本专利技术涉及的是一种计算机安全保护方法。
技术介绍
完整性是指对抗对手主动攻击,防止信息被未经授权的篡改;它是安全体系结构 和存储安全的重要研究内容。目前数据完整性校验方法有MAC、Hash树、CHtree树、LHash/ H-Lhash, GCM和HW-Htree等机制,而完整性校验的基础是Hash树。Hash树也叫Merkle树,它是将存储器分成多个等长块,对其构建Hash树。每个 存储块对应Hash树一个叶节点,每个内部节点为下属两个节点Hash计算的结果,一直到根 节点,存储所有内部节点,树的根节点处于安全的存储区。在校验时,再计算数据块的Hash 值,与事先存储的相应Hash值比较,如相同则继续生成上一层Hash值并进行比较,一直到 根节点,如某个Hash值不匹配,则发生篡改。Hash树校验存在的问题是每次校验所需要的 开销很大,导致系统性能显著下降。
技术实现思路
本专利技术的目的在于提供一种能够防止内存中的数据被恶意篡改,在保证内存数据 完整性同时降低完整性保护的时间和空间开销的。本专利技术的目的是这样实现的先将受保护的存储区分成相等的多个块,然后在计算机安全区中维护一个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个值作为数组的序号,将_女组的相应位减14)更新该数据块;35)将更新后数据块内容加上地址信息再进行k次散列函数计算;6)将得到的k个值作为数组的序号,将数组的相应位加1 ;(3)校验操作过程1)读取的数据块内容及其地址信息;2)进行k次散列函数计算;3)依次检验k个值映射到数组中相应位的值是否为0 ;4)有一个映射位的值为0,则认为遭到篡改;5)所有映射位都为1,则认为数据正常。预设的m和k的大小与受保护内存容量大小相关,受保护内存的容量越大,m和k 越大。Hash树是一种公认的存储器完整性保护的可靠方法,在用Hash方法保护N块存储 区时,需要构建一棵高度为log2N+l的Hash树,且每次校验数据时都要从叶结点计算到根 结点,需要的存储代价和计算开销都很大。本专利技术提出了一种,用于防止内存中的 数据被恶意篡改,防御包括重放攻击在内的攻击行为;本专利技术在保证内存数据完整性同时, 能降低完整性保护的时间和空间开销。附图说明图1示意图;图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。设η个需 要保护的数据块,初始对每个数据块要做k个散列函数计算,将散列值映射到数组的相应 位中,每映射一次,相应值加1。如数组中第5位被数据块映射了 3次,所以值为3 ;如修改 第2块数据时,要先将对应的映射位,即数组中第1、3、5的Counter值分别减1,再将新的数 据块重新做k个散列函数计算,并将新映射位的值分别加1 ;如校验第3个数据块,则再做k 个散列计算,如每个映射位都不为0,则数据正常,否则遭到篡改。由于Bloom Filter自身特性所决定,它在判断存储块是否遭到篡改时会有一定的 错误率(false positive rate),错误率一定时,预设的η和m的大小与受保护内存容量大 小有关。要求的错误率越低,碰撞发生的次数越少,受保护内存的容量越大,η和m也越大。 但经过适当的设置n、m、k,可使错误率维持在一个很低的范围内(如小于0. 01% ),这完全 可以满足实际的数据完整性校验要求。Hash树数据完整性保护方法为多级树型结构,而该方法为一级Hash结构,只需要 有限次计算(计算次数由η与m综合决定)。同时各个存储块相互独立,可并行计算;且各散 列函数相互独立,也可并行计算,这样在插入和修改存储器的数据时,计算的开销会比Hash 树方法大幅减少。在硬件实现时,可考虑在CPU内设置专门部件来完成对Hash映射的并行 计算,这会进一步提高校验的效率。方案的改进考虑到高速缓存(cache)是系统的重要资源,当要保护的空间较大时(大于1G), Bloom Filter数组占用较多的存储空间。为减小高速缓存的空间占用,提出改进方法将数5组全部放入到非安全区中(典型为内存),再使用Hash树方法来保护该数组,只将Hash树 的根结点保存在cache中。原理如附图5所示,图中每个数组单元占4位,为便于计算,设 每64k数组空本文档来自技高网...

【技术保护点】
一种基于BloomFilter的数据完整性保护方法,其特征是:先将受保护的存储区分成相等的多个块,然后在计算机安全区中维护一个m个元素的数组,同时设置k个散列函数,用于将数据块映射到数组中;存储器初始化即建立保护时,内存块数据经k次散列函数计算得到k个值,将这k个值作为数组的序号,将数组相应序号的值加1;当修改数据块时,将原数据块的k个映射位的值减1,再将修改后数据块的k个映射位的值加1;在校验时,如所读取的数据块映射到数组中相应位的值都不为0,则认为数据正常,只要有一个映射位的值为0,则认为遭到篡改。

【技术特征摘要】

【专利技术属性】
技术研发人员:姚念民马海峰范洪博
申请(专利权)人:哈尔滨工程大学
类型:发明
国别省市:93

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1