[发明专利]一种非平衡哈希树的存储器完整性保护方法有效
申请号: | 201510451102.X | 申请日: | 2015-07-28 |
公开(公告)号: | CN105138478B | 公开(公告)日: | 2018-10-26 |
发明(设计)人: | 张国印;郭振华;姚念民;石翠华;吴艳霞 | 申请(专利权)人: | 哈尔滨工程大学 |
主分类号: | G06F12/14 | 分类号: | G06F12/14;G06F12/06 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 150001 黑龙江省哈尔滨市南岗区*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 平衡 哈希树 存储器 完整性 保护 方法 | ||
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
算法描述:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工程大学,未经哈尔滨工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510451102.X/1.html,转载请声明来源钻瓜专利网。