一种内存数据的完整性校验方法_4

文档序号:9304773阅读:来源:国知局

[0107] 当处理器对存储器进行写操作时,更新数据块的访问次数counted,同时更新整 个哈希树。处理器对存储器进行写操作的流程如附图3所示,具体的操作如下:
[0108] (1)当CPU向内存写入数据块data_block[i]时,更新它的计数器counter2[i]= counter2[i]+1〇
[0109] (2)把这个数据块和兄弟结点所对应的数据块进行连接,重新计算数据块连接之 后的的哈希值hash,更新父节点的哈希值,重复这个过程直到根节点。
[0110] (3)判断t-Tl>T是否成立,若成立,则表示已经到达一个统计周期,改变T1为当前 时刻,并且统计数据块访问次数的变化量,同时按照缓存节点调整规则重新调整缓存中的 节点;若不成立,写操作结束。
[0111] 本发明在模拟器中实现向内存中写入一个数据块时的具体算法描述如算法2所 不。
[0112]
[0113] 3、从内存中读出一个数据块
[0114] 当处理器对存储器进行读操作时,更新数据块的访问次数counted,同时对数据 进行完整性检验。处理器对存储器进行读操作的流程如附图4所示,具体的操作如下所示:
[0115] (1)当CPU从内存读数据块data_block[i]时,更新它的计数器counter2[i]= counter2[i]+1〇
[0116] (2)把这个数据块和兄弟结点所对应的数据块进行连接,然后计算数据块连接之 后的的哈希值hash,同时查看缓存是否命中,如果不命中则重复这个过程直到缓存命中; 缓存命中后比较计算后的哈希值与缓存中存储的哈希值是否相同,如果结果相同,则说明 数据是正确的,没有被篡改,CPU可以使用数据;反之,则说明数据被篡改,发出警报。
[0117] (3)判断t-Tl>T是否成立,若成立,则表示已经到达一个统计周期,改变T1为当前 时刻,并且统计数据块访问次数的变化量,同时按照缓存节点调整规则重新调整缓存中的 节点;若不成立,读操作结束。
[0118] 本发明在模拟器中实现从内存中读取一个数据块时的具体算法描述如算法3所 7Jn〇
[0119]
【主权项】
1. 一种内存数据的完整性校验方法,其特征在于:根据程序的局部性原理,对访问 频率高的数据块和访问频率低的数据块进行区分;改变缓存哈希树中只存储固定层次的 中间结点,使哈希缓存中存储不同层次的中间结点;把内存分成相同大小的数据块data_ block,以数据块作为叶子节点建立一棵哈希树;每个数据块有两个计数器counterl和 counter2 ;初始时counterl= 0,counter2 = 0 ;设t代表当前时刻,T为统计周期;初始时 令T1赋值为tcounterl记录上一统计周期数据块的读写次数,若处理器读写数据块,则 令C〇unter2增加1 ;当当前时刻t-Tl>T时,改变T1为当前时刻;并且统计数据块访问次数 的变化量Acounter=counter2-counterl,并按缓存移动规则调整缓存中的节点;并且如 果counter2 没有溢出,令counterl=counter2,counter2 = 0 ;如果counter2 溢出,则令 counterl= 0,counter2 = 0 ;采用访问次数的变化率k作为缓存节点上下移动的标准,在 系统中固定k不变;数据块data_block的实际访问次数的变化率为k' ;即当k'>k时,数据 块data_block的访问次数为明显上升;当k' <_k时,数据块data_block的访问次数为明显 下降;当k〈k' <_k时,数据块data_block的访问次数变化不明显;对缓存中节点的移动情 况分为3种,分别是向下移动,不移动,向上移动;通过以下规则来判断缓存节点如何移动: (1) 对于缓存中的一个节点,分别有左/右两棵子树,根据左右子树的移动情况来判断 父节点该如何移动;规则如下: (1. 1)如果一棵子树根节点判断需要向上移动,另一棵子树的根节点判断需要向上移 动/不移动,则该父节点向上移动; (1. 2)如果一棵子树根节点判断需要向上移动,另个子树的根节点判断需要向下移动, 则该父节点不移动; (1. 3)如果一棵子树根节点判断需要向下移动,另个子树的根节点判断需要向下移动 /不移动,则该父节点向下移动; (2) 如果一个节点对应的左右子树为叶子节点,这两个叶子节点的访问次数的变化率 分别为kl和k2,则按以下规则来决定其怎样移动; (2. 1)如果一个叶子节点对应的访问次数增加,即kl>k,另一叶子节点对应的访问次 数明显增加或者变化不明显,即k2>k或者-k〈k2〈k;判断缓存节点向下移动; (2. 2) -个叶子节点对应的访问次数明显增加,即kl>k,另一叶子节点对应的访问次 数明显减少,即k2〈-k;令缓存节点不移动;两个叶子节点的访问次数都变化不明显,令缓 存节点不移动; (2. 3)其它情况下,判断缓存节点向上移动; (3) 当处理器对存储器进行写操作时,更新数据块的访问次数counted,同时更新整 个哈希树: (3. 1)当CPU向内存写入数据块data_block[i]时,更新它的计数器counter2[i]=counter2[i]+1 ; (3. 2)把这个数据块和兄弟结点所对应的数据块进行连接,重新计算数据块连接之后 的的哈希值hash,更新父节点的哈希值,重复这个过程直到根节点; (3. 3)判断t-Tl>T是否成立,若成立,则表示已经到达一个统计周期,改变T1为当前时 亥IJ,并且统计数据块访问次数的变化量,同时按照缓存节点调整规则重新调整缓存中的节 点;若不成立,写操作结束; (4)当处理器对存储器进行读操作时,更新数据块的访问次数counted,同时对数据 进行完整性检验。具体的操作如下: (4.1)当CPU从内存读数据块data_block[i]时,更新它的计数器counter2[i]=counter2[i]+1 ; (4. 2)把数据块和兄弟结点所对应的数据块进行连接,计算数据块连接之后的的哈希 值hash,同时查看缓存是否命中,如果不命中则重复这个过程直到缓存命中;缓存命中后 比较计算后的哈希值与缓存中存储的哈希值是否相同,如果结果相同,则说明数据是正确 的,没有被篡改,CPU可以使用数据;反之,则说明数据被篡改,发出警报; (4. 3)判断t-Tl>T是否成立,若成立,则表示已经到达一个统计周期,改变T1为当前时 亥IJ,并且统计数据块访问次数的变化量,同时按照缓存节点调整规则重新调整缓存中的节 点;若不成立,读操作结束; 使用树的带权校验长度作为性能比较的标准,用WPL表示,8卩WPl 其中 权值Wl为每个叶子节点的读/写次数;其中1 ,为叶子节点的校验长度,即路径上分支数目;n为节点的数目。
【专利摘要】本发明涉及的是内存完整性校验领域,具体为一种基于动态缓存哈希树的内存数据的完整性校验方法。本发明根据程序的局部性原理,对访问频率高的数据块和访问频率低的数据块进行区分;改变缓存哈希树中只存储固定层次的中间结点,使哈希缓存中存储不同层次的中间结点;把内存分成相同大小的数据块data_block,以数据块作为叶子节点建立一棵哈希树;每个数据块有两个计数器counter1和counter2;初始时counter1=0,counter2=0;设t代表当前时刻,T为统计周期。本发明由于利用了程序的局部性原理,动态的调整缓存中存储的中间节点。从而从整体上缩短数据块的平均校验路径长度。
【IPC分类】G06F21/64
【公开号】CN105022968
【申请号】CN201510458902
【发明人】张国印, 郭振华, 姚念民, 石翠华, 吴艳霞
【申请人】哈尔滨工程大学
【公开日】2015年11月4日
【申请日】2015年7月30日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1