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

文档序号:9304773阅读:1963来源:国知局
一种内存数据的完整性校验方法
【技术领域】
[0001] 本发明涉及的是内存完整性校验领域,具体为一种基于动态缓存哈希树的内存数 据的完整性校验方法。 技术背景
[0002] 随着科技的发展,计算机的应用越来越普及,目前电子商务、银行、政府、云计算以 及移动计算都大量的使用计算机作为计算工具,由于处理的数据会涉及很多的机密,因此, 保证计算机在处理这些数据的安全成了当前研究的热点。数据的安全性包括机密性和完整 性。本发明只讨论如何确保数据的完整性。攻击者可以对总线上的流动的数据进行欺骗、 重组、重放攻击。完整性保护就是要保证能够检测到攻击者对数据所实施的恶意篡改行为, 如硬件搭载攻击。其重点在于保护信息使之免受重放攻击。重放攻击是指攻击者用以前存 储在某个地址单元中的数据替换现在的数据。目前防范重放攻击主要使用树形校验机制。 根据认证单元采用的方法与构建树过程的不同,又可分为MerkleTree、并行校验树PAT和 TEC-Tree这三种方案。
[0003]MerkleTree又称HashTree,是一种最早用于完整性校验的树机制。由Merkle在 1980年提出主要用于公钥系统中的有效计算问题。Blum等人修改后将其用于存储器内容 的完整性校验中。它通过对内存数据块进行迭代哈希计算建立一棵树,在CPU中保存根结 点从而可以确保数据的完整性,尤其是可以抵抗重放攻击。缺点是数据块更新时不能并行 计算,因此延迟比较大。针对这个缺点后人提出了并行校验树PAT,由于该方法每次进行哈 希计算时都对应一个随机数,高层结点的计算不直接依赖于低层结点,上层结点通过将子 结点的随机数连接后计算MAC,因此它实现了数据更新时的并行计算。但是MerkleTree和 PAT树只能保证数据的完整性,即它们的完整性保护和机密性保护方案是分开的,针对此问 题后人又提出了TEC-Tree,它通过往数据中添加冗余数据,在保证数据完整性的同时也保 证了数据的机密性。
[0004] 这三种树的一个共同的缺点是所有数据块的完整性校验路径长度相同,每次校验 时都需要从叶子结点到根结点,校验路径长,因此进行哈希计算时延迟大

【发明内容】

[0005] 本发明的目的在于提供一种缩短树的校验路径长度的内存数据的完整性校验方 法。
[0006] 本发明的目的是这样实现的:
[0007] 根据程序的局部性原理,对访问频率高的数据块和访问频率低的数据块进行区 分;改变缓存哈希树中只存储固定层次的中间结点,使哈希缓存中存储不同层次的中间结 点;把内存分成相同大小的数据块data_block,以数据块作为叶子节点建立一棵哈希树; 每个数据块有两个计数器counterl和counter2 ;初始时counterl= 0,counter2 = 0 ;设 t代表当前时刻,T为统计周期;初始时令T1赋值为t;counterl记录上一统计周期数据块 的读写次数,若处理器读写数据块,则令counter2增加1 ;当当前时刻t-Tl>T时,改变T1 为当前时刻;并且统计数据块访问次数的变化量Acounter=counter2-counterl,并按缓 存移动规则调整缓存中的节点;并且如果counter2没有溢出,令counterl=counter2, counter2 = 0 ;如果counter2 溢出,贝lj令counterl= 0,counter2 = 0 ;采用访问次数的变 化率k作为缓存节点上下移动的标准,在系统中固定k不变;数据块data_block的实际访 问次数的变化率为k';即当k' >k时,数据块data_block的访问次数为明显上升;当k'<_k 时,数据块data_block的访问次数为明显下降;当k〈k' <_k时,数据块data_block的访问 次数变化不明显;对缓存中节点的移动情况分为3种,分别是向下移动,不移动,向上移动; 通过以下规则来判断缓存节点如何移动:
[0008] (1)对于缓存中的一个节点,分别有左/右两棵子树,根据左右子树的移动情况来 判断父节点该如何移动;规则如下:
[0009] (1. 1)如果一棵子树根节点判断需要向上移动,另一棵子树的根节点判断需要向 上移动/不移动,则该父节点向上移动;
[0010] (1. 2)如果一棵子树根节点判断需要向上移动,另个子树的根节点判断需要向下 移动,则该父节点不移动;
[0011] (1. 3)如果一棵子树根节点判断需要向下移动,另个子树的根节点判断需要向下 移动/不移动,则该父节点向下移动;
[0012] (2)如果一个节点对应的左右子树为叶子节点,这两个叶子节点的访问次数的变 化率分别为kl和k2,则按以下规则来决定其怎样移动;
[0013] (2. 1)如果一个叶子节点对应的访问次数增加,即kl>k,另一叶子节点对应的访 问次数明显增加或者变化不明显,即k2>k或者-k〈k2〈k;判断缓存节点向下移动;
[0014] (2. 2) -个叶子节点对应的访问次数明显增加,即kl>k,另一叶子节点对应的访 问次数明显减少,即k2〈_k;令缓存节点不移动;两个叶子节点的访问次数都变化不明显, 令缓存节点不移动;
[0015] (2. 3)其它情况下,判断缓存节点向上移动;
[0016] (3)当处理器对存储器进行写操作时,更新数据块的访问次数counted,同时更 新整个哈希树:
[0017] (3. 1)当CPU向内存写入数据块data_block[i]时,更新它的计数器counter2[i] =counter2[i]+1 ;
[0018] (3. 2)把这个数据块和兄弟结点所对应的数据块进行连接,重新计算数据块连接 之后的的哈希值hash,更新父节点的哈希值,重复这个过程直到根节点;
[0019] (3. 3)判断t-Tl>T是否成立,若成立,则表示已经到达一个统计周期,改变T1为当 前时刻,并且统计数据块访问次数的变化量,同时按照缓存节点调整规则重新调整缓存中 的节点;若不成立,写操作结束;
[0020] (4)当处理器对存储器进行读操作时,更新数据块的访问次数counted,同时对 数据进行完整性检验。具体的操作如下:
[0021] (4. 1)当CPU从内存读数据块data_block[i]时,更新它的计数器counter2[i]= counter2[i]+1 ;
[0022] (4. 2)把数据块和兄弟结点所对应的数据块进行连接,计算数据块连接之后的的 哈希值hash,同时查看缓存是否命中,如果不命中则重复这个过程直到缓存命中;缓存命 中后比较计算后的哈希值与缓存中存储的哈希值是否相同,如果结果相同,则说明数据是 正确的,没有被篡改,CPU可以使用数据;反之,则说明数据被篡改,发出警报;
[0023] (4. 3)判断t-Tl>T是否成立,若成立,则表示已经到达一个统计周期,改变T1为当 前时刻,并且统计数据块访问次数的变化量,同时按照缓存节点调整规则重新调整缓存中 的节点;若不成立,读操作结束;
[0024] 本发明的有益效果在于:
[0025] (1)提高缓存利用率。普通的缓存哈希树CHTree大多数都是直接利用二级缓存 来存储哈希树中间层次的节点,由于要与普通数据共享二级缓存,因此若缓存的节点多,则 缓存的数据必然减少,因此会降低数据的命中率,引起更多的内存访问,增加处理器读数据 时的时延;反之,若缓存的中间节点少,则进行完整性检查时哈希命中率降低,在不命中时 数据的访问延迟则大大增加。而本文提出的这种动态缓存哈希树的存储器完整性保护方法 DCHTIP能够根据程序的局部性原理动态的调整哈希缓存中的结点,改变原来哈希缓存只存 储固定层次的中间结点,使缓存中的每个结点都是最近会用到的,提高哈希缓存的利用率。
[0026] (2)缩短校验路径长度。由于利用了程序的局部性原理,动态的
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1