[发明专利]一种非平衡哈希树的存储器完整性保护方法有效
申请号: | 201510451102.X | 申请日: | 2015-07-28 |
公开(公告)号: | CN105138478B | 公开(公告)日: | 2018-10-26 |
发明(设计)人: | 张国印;郭振华;姚念民;石翠华;吴艳霞 | 申请(专利权)人: | 哈尔滨工程大学 |
主分类号: | G06F12/14 | 分类号: | G06F12/14;G06F12/06 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 150001 黑龙江省哈尔滨市南岗区*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及的是内存完整性校验领域,具体为一种非平衡哈希树的存储器完整性保护方法。本发明包括:(1)初始化;(2)构建非平衡二叉树;(3)写操作;(4)读操作。本方法在一般情况下,校验代价要低于普通的平衡二叉树的校验代价,即使在最坏情况下,本方法的性能也不会高于普通的平衡二叉树的校验代价,而是与它的校验代价相同。本发明从整体上缩短了数据认证时的路径长度。 | ||
搜索关键词: | 一种 平衡 哈希树 存储器 完整性 保护 方法 | ||
【主权项】:
1.一种非平衡哈希树的存储器完整性保护方法,其特征在于,包括如下步骤:1)初始化(1.1)把内存分成相同大小的数据块data_block[i],每个数据块有一个计数器counter[i]来记录对该数据块的读/写次数;初始时,counter[i]=0,当处理器读写数据块data_block[i]时,它的计数器值counter[i]=counter[i]+1;(1.2)数据结构采用3链表式,如下所示:Node{long int counter;//读/写次数,作为数据块的权值long int hash;//哈希值Struct node*lchild;//左孩子Struct node*rchild;//右孩子Struct node*parent;//父节点}node;(1.3)设置一个定时器Time;当定时器到达设定的时间后,构建一棵非平衡二叉树,同时把所有数据块data_block的计数器counter全部清零,使它们重新计数;本发明使用模拟器SimpleScalar tool实现所提出的算法内容,下面分别介绍每一个步骤算法的具体实施伪代码;2)构建非平衡二叉树处理器构建非平衡二叉树的流程,具体操作如下:(2.1)把内存中n个数据块的读/写次数作为权值,则得到n个权值{w1,w2,w3,w4,w5,……wn},每个权值构成一棵只有根节点的树Ti,则得到有n棵树的集合F={T1,T2,T3,T4,T5,……Tn};(2.2)从集合F中选取权值最小的两棵树Ti和Tj,以它们作为左右孩子构建一棵新的树T,新树T节点的权值为两个孩子节点权值之和;从集合F中删除Ti和Tj,树T加入集合F中;(2.3)重复步骤(2.2),直到集合F中只剩下一棵树;构建非平衡二叉树的具体实施代码如算法1所示;算法1:构建非平衡二叉树算法输入:数据块节点data_block[n]输出:非平衡二叉树T算法描述:![]()
3)向内存中写入数据当处理器向内存中写入数据块data_block[i]时,更新数据块的访问次数counter[i]和整个哈希树;处理器对存储器进行写操作的流程,具体的操作如下:(3.1)当CPU向内存写入数据块data_block[i]时,更新它的计数器counter[i]=counter[i]+1;(3.2)然后找到数据块data_block[i]的相应叶子节点的指针;(3.3)把这个数据块和兄弟结点所对应的数据块进行连接,重新计算数据块连接之后的的哈希值hash,更新父节点的哈希值,重复这个过程直到根节点;(3.4)检查定时器Time是否到达设定时间,如果已经到达设定时间,则重新建立非平衡哈希树,否则,写操作结束;向内存中写入一个数据块时的具体实施过程如算法2所示;算法2:向内存中写数据块算法输入:数据块节点data_block[n],叶节点指针数组node[n],集合F输出:F中二叉树T算法描述:
4)从内存中读数据当处理器从内存中读数据块data_block[i]时,更新它的计数器counter[i],同时对数据进行完整性检验;处理器对存储器进行读操作的具体流程如下:(4.1)当CPU从内存中读数据块data_block[i]时,更新它的计数器counter[i]=counter[i]+1;(4.2)然后找到数据块data_block[i]的相应叶子节点的指针;(4.3)把这个数据块和兄弟结点所对应的数据块进行连接,然后计算数据块连接之后的的哈希值hash,把哈希结果与父节点的哈希值进行比较,重复这个过程直到根节点,如果最后计算后的根节点的哈希值与CPU上存储的根节点的哈希结果相同,则说明数据是正确的,没有被篡改,CPU可以使用数据;反之,则说明数据被篡改,发出警报;(4.4)检查定时器Time是否到达设定时间,如果已经到达设定时间,则重新建立非平衡哈希树,否则,读操作结束;从内存中读取一个数据块时的具体实施过程如算法3所示;算法3:从内存中读数据块算法输入:数据块节点data_block[n],叶节点指针数组node[n],集合F输出:F中二叉树T算法描述:![]()
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工程大学,未经哈尔滨工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510451102.X/,转载请声明来源钻瓜专利网。