CN1741010A - 优化哈希树完整性校验的方法和装置 - Google Patents
优化哈希树完整性校验的方法和装置 Download PDFInfo
- Publication number
- CN1741010A CN1741010A CN 200410046692 CN200410046692A CN1741010A CN 1741010 A CN1741010 A CN 1741010A CN 200410046692 CN200410046692 CN 200410046692 CN 200410046692 A CN200410046692 A CN 200410046692A CN 1741010 A CN1741010 A CN 1741010A
- Authority
- CN
- China
- Prior art keywords
- hash
- node
- subtree
- window
- window hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
优化哈希树完整性校验的方法和装置。本发明涉及数据安全技术,其主要内容是对基于哈希树的数据完整性校验进行优化。所采用的技术要点是:将哈希树分割为哈希子树;将高访问频率哈希子树的节点予以缓冲,并保持该类哈希子树的顶节点为可信;将哈希子树更上层次的哈希树剩余部分以及低访问频率的哈希子树的顶节点,亦予以缓冲;借助所缓冲的节点以及保持可信的哈希子树顶节点和哈希树根结点,结合其它有效的优化措施,降低哈希树完整性校验的代价。本发明所提出的方法和装置可适用于为数据提供完整性校验的应用场合。
Description
技术领域
本发明涉及数据安全技术,特别是指对基于哈希树的数据完整性校验进行优化的方法和装置。
背景技术
数据的安全保护涉及诸多方面;其中,重要的一点在于校验数据的完整性(integrity)。数据的完整性是指防止数据的讹误(即出错)或非授权的修改;它通过记录系统中的信息并用于日后的比较,以发现内容的篡改。也就是说,完整性校验是为数据提供一个篡改证明环境。在数据的完整性校验技术中,哈希树(Hash Tree,或Merkle Tree;参阅“R.C.Merkle.Protocols for public key cryptography.In IEEE Symposium on Security andPrivacy,pages 122 134,1980”)是一种有效的完整性校验技术。例如,在存储器上应用哈希树,可以为存储器提供联机(on-line,指对数据访问即时进行校验)的完整性校验,并具有对抗重放攻击(replay attack)的能力。
虽然哈希树能够提供强有力的联机方式的篡改证明能力,但直接应用哈希树是困难的。其根本原因在于基于哈希树的完整性校验技术要求将被保护的数据视为一个整体;即,基于被保护的数据创建哈希树,依赖可信的哈希树根节点校验数据的完整性。这就使得每次完整性验证都涉及很多相关数据的读写与中间计算步骤,从而使得运行性能降低。比如,如果将一个未经优化的哈希树(称原始的或基本的哈希树)直接应用于计算机内存(指处理器片外存储器)的完整性校验,由于每次校验都需要读取校验路径上的许多相关节点,会带来过高的存储器访问代价而使系统运行得异常缓慢。有若干技术致力于解决这一问题,典型的如麻省理工学院(MIT)的研究人员所提出的“缓冲型哈希树(CHTree,Cached Hash Tree;参阅‘B.Gassend,G.E.Suh,D.Clarke,M.van Dijk,and S.Devadas.Caches and merkle trees for efficient memory authentication.In Proceedings ofNinth International Symposium on High Performance Computer Architecture,February2003’)”。该方法将处理器的片内二级高速缓冲器(on-chip L2-Cache)视为可信(trusted,即指不能被攻击者所篡改)的存储空间,并利用处理器的片内二级高速缓冲器缓冲哈希树的部分节点。这样,对内存访问的完整性校验不需要一直进行到哈希树的根节点,校验可以停止在缓冲于处理器内部的节点上而缩短校验路径的长度,从而减小了数据访问的代价。但这种优化方法需要很大容量的处理器片内二级高速缓冲器,以便缓冲足够多的哈希树内部节点;另外,还具有其它若干副面的效应,比如由于对处理器片内二级高速缓冲器的争用加剧而造成其它应用程序的处理器片内二级高速缓冲器失效率上升。
总之,哈希树是一种能够提供联机的具有很强抗篡改能力的完整性校验技术,但原始哈希树的运行代价过高。虽然存在若干优化的方法,但依然难以获得完全令人满意的效果。因此,有必要提供更有效的哈希树优化方法和装置,以满足数据安全保护的需求。
发明内容
本发明的目的在于给出一种方法和装置,使得在应用哈希树校验数据完整性时,能够有效地优化校验过程;即,能够显著减小哈希树校验的代价(其中,主要是数据访问的代价)。
为实现本发明的目的,本发明所采用的技术方案是:保持哈希树的根节点是可信的;在底层分割哈希树而形成一系列哈希子树,称为窗口哈希子树;将访问频率相对为高的窗口哈希子树称为热窗口哈希子树,其它的称为冷窗口哈希子树;缓冲热窗口哈希子树的节点,包括其顶节点,并保持热窗口哈希子树的顶节点是可信的;缓冲位于窗口哈希子树顶节点以上、哈希树根节点以下的哈希树内部节点,包括冷窗口哈希子树顶节点;对于热窗口哈希子树对应的校验,借助所缓冲的热窗口哈希子树节点以及可信的热窗口哈希子树顶节点而实现;对于热窗口哈希子树之外的校验,借助所缓冲的窗口哈希子树顶节点以上、哈希树根节点以下的哈希树内部节点,包括窗口哈希子树顶节点,来进行;依据运行时具体的数据访问情况,热窗口哈希子树可以随着访问频率的降低转换为冷窗口哈希子树,而冷窗口哈希子树可以随着访问频率的升高转换为热窗口哈希子树。
在为实现本发明所采用的技术方案中,窗口哈希子树是宽度相同的,或者可以实质上等价于宽度相同。
在为实现本发明所采用的技术方案中,保持哈希树根节点以及哈希子树顶节点的可信性,可以是直接将其置于可信区域内,或者通过其它方式使之实质上是可信的。
在为实现本发明所采用的技术方案中,对于热窗口哈希子树对应的完整性校验,借助所缓冲的热窗口哈希子树节点以及可信的热窗口哈希子树顶节点而实现,是指:校验可以依据热窗口哈希子树顶节点完成校验,而不必每次都依赖哈希树根节点;所需的对节点的更新操作可以停止在热窗口哈希子树顶节点,而不必立刻就一直更新到哈希树根节点;校验过程可以直接利用被缓冲的节点。
在为实现本发明所采用的技术方案中,可以将热窗口哈希子树节点缓冲在可信的或非可信的区域内;如果热窗口哈希子树节点是缓冲在可信区域内的,那么热窗口哈希子树对应的完整性校验只要到达任一被缓冲的节点就可停止,节点更新也可以到达任一被缓冲的节点就停止。
在为实现本发明所采用的技术方案中,对于热窗口哈希子树之外的完整性校验,借助所缓冲的窗口哈希子树顶节点以上、哈希树根节点以下的哈希树内部节点,包括窗口哈希子树顶节点(热窗口哈希子树顶节点和冷窗口哈希子树顶节点都已被缓冲),来进行,是指:校验时可以直接利用被缓冲的节点;当热窗口哈希子树转换为冷窗口哈希子树时,可以直接利用被缓冲的节点。
在为实现本发明所采用的技术方案中,可以将窗口哈希子树顶节点以上、哈希树根节点以下的哈希树内部节点,包括冷窗口哈希子树顶节点,缓冲在可信或非可信区域内;如果缓冲在可信区域内,那么相对应的完整性校验只要到达任一被缓冲的节点就可停止。
在为实现本发明所采用的技术方案中,哈希树可以采用不同的分支结构;即窗口哈希子树可以采用一种宽度的分支结构;而窗口哈希子树以上层次到哈希树根节点的部分,可以采用另一种宽度的分支结构。
在为实现本发明所采用的技术方案中,当哈希树采用不同的分支结构时,窗口哈希子树采用的分支宽度,比起窗口哈希子树以上层次到哈希树根节点所采用的分支宽度,要更宽。
通过本发明所提出的方法和装置,由于绝大多数数据访问是通过热窗口哈希子树进行完整性校验的,而热窗口哈希子树所需校验路径的长度远远小于依赖整个哈希树进行校验的路径长度;因此,每次完成校验的代价将显著降低。另外,通过对哈希树进行规则的切分,以及采用恰当的节点缓冲方法,适于采取一些高效的优化方法。总之,相比基本的哈希树而言,本发明所提出的方法和装置可以有效地降低基于哈希树的完整性校验的代价。
附图说明
说明书包括5幅附图:
图1是基本的哈希树原理图;
图2是本发明对哈希树实施优化的原理图;
图3是不同分支结构的哈希树;
图4是应用本发明所提出的哈希树优化方法,校验计算机系统内存完整性时,采用的哈希树结构说明。
图5是应用本发明所提出的哈希树优化方法,校验计算机系统内存完整性时,实施的逻辑框图。
具体实施方式
本发明所考虑的,是如何有效地优化基于哈希树的数据完整性校验过程。鉴于公知的原因,本发明对所使用的某些术语、名词和表达方式等不作显式的定义或说明,比如:数据、数据块、位(bit)、字节(Byte)、节点、连接、数的表达方式、单向散列函数(One-wayhash function)、哈希(Hash)、MD5算法(The MD5 Message-Digest Algorithm)、SHA1算法(SHA1 Secure Hash Algorithm)、处理器、存储设备、内存、磁盘,等等。
为了清楚地描述本发明所提出的方法,首先对哈希树本身作出必要的介绍和说明。
(一)基本哈希树
附图1描述了一个基本的(或原始的)哈希树。附图1中,最底层的节点称为哈希树的叶节点,如节点201、202、203和204都是叶节点。中间的节点,或称内部节点301和302,为其下属两个节点抗碰撞的哈希结果(collision-resistant hash result,即很难找到2个不同的消息具有同样的哈希结果);比如,内部节点301是由叶节点201连接叶节点202后,经哈希计算而得到的。最上端的节点,称为哈希树的根节点100,是可信的(即,根节点100不能被攻击者所篡改;比如,将其置于可信存储区内)。附图1中所示的哈希树是一个2元(2-ary)的,即每个父节点对应2个子节点。对于附图1所示的哈希树,有两个基本的操作。这两个操作分别为:
操作1:校验树中某一节点的完整性,其步骤为:
a.读该节点和其兄弟节点;
b.连接它们的数据;
c.对连接后的数据进行哈希计算;
d.结果与父节点是否匹配;
e.重复这些步骤直到根节点。
操作2:更新树中某一节点,其步骤为:
a.如上校验该节点的完整性;
b.改变该节点的数据为新数据;
c.连接该节点的新数据与兄弟节点的数据;
d.计算连接后结果的哈希值;
e.用新的哈希值更新父节点;
f.重复这些步骤直到根节点被更新。
附图1所示的基本哈希树,虽然能够校验被保护数据的完整性,但是其代价是难以承受的。对于一个m元(m-ary,指每个父节点下属m个子节点)的哈希树而言,每次叶上数据的更新将导致logm(N)次哈希计算(N是被保护的叶节点的数目,代表被保护的存储器大小),而每次哈希计算的代价是与m成正比的(需要读取相应的下属m个节点的数据)。这使得应用原始的哈希树而不加以有效的优化,其代价之高是非常显著的。
(二)哈希树的优化
为了降低哈希树校验过程的代价,本发明提出的优化方法称为带热窗口的哈希树。
附图2描述了本发明对哈希树的优化方法。我们知道,数据访问具有局部性特征;即,在某一确定的时间段内,访问是聚簇在一定区域的,而不是等概率分散在整个被访问空间中的。这样,附图2中,某一在给定的时间段内被频繁访问的区域,就构成一个访问的聚簇区;将一个访问聚簇区所对应的哈希子树称为一个热窗口哈希子树。例如,如果叶节点501、502、503和504所在的区域具有相对为高的访问频率,则对应叶节点501、502、503和504就形成一个热窗口哈希子树1001。显然,如果热窗口哈希子树1001的顶节点701(为与哈希树根节点区分明显,将哈希子树最上端节点称为顶节点)是可信的,那么,针对热窗口哈希子树1001的完整性校验过程(比如,校验节点501、502、503或504的完整性)只需进行到相应哈希子树的顶节点701,而不必一直进行到整个哈希树的根节点100。这样一来,由于校验路径明显缩短,发生在热窗口哈希子树中的完整性校验的代价将显著减小;并且,由于访问局部性特征而会使得绝大多数访问都经由热窗口哈希子树直接完成校验,从而使得整个代价获得有效的降低。
为了描述方便,只考虑一个哈希树;另外,哈希树的根节点、叶节点,以及内部(或中间)节点,都可以称为节点。
为了使附图2所示的带热窗口的哈希树能够有效地运行,本发明给出如下的定义、规则和处理。
定义:给定一个哈希树,在底层分割哈希树而形成一系列哈希子树,称为窗口哈希子树;给定时间段内,将访问频率相对为高的窗口哈希子树称为热窗口哈希子树,其它的窗口哈希子树称为冷窗口哈希子树。
规则1:窗口哈希子树具有固定的宽度M;即,所有的窗口哈希子树是等宽度的,或者在实质上是等宽度的。
规则2:可以有多个热窗口哈希子树和多个冷窗口哈希子树同时存在;若干个热窗口哈希子树可以连续分布以对应一个更大的高访问频率区域;热窗口哈希子树也可以离散分布以对应多个位置不连续的高访问频率区域。
规则3:当访问频率发生变化后,热窗口哈希子树可以转换为冷窗口哈希子树,冷窗口哈希子树也可以转换为热窗口哈希子树。
处理1:热窗口哈希子树形成;按照如下过程进行——
a.生成热窗口哈希子树的节点并缓存全部或部分节点。(备注:从热窗口哈希子树顶节点开始向下至叶节点,被缓冲的哈希子树层次越多,优化效果越好。)
b.创建该热窗口哈希子树顶节点的备份(比如附图2中,热窗口哈希子树1001中的顶节点701的备份802)。
c.保持热窗口哈希子树顶节点是可信的(比如附图2中,热窗口哈希子树1001中的顶节点701被转储于可信区域1003内,即顶节点701合并为节点801;或者说,节点701是“虚的”或“逻辑的”,而节点801是“实的”或“物理的”;而节点801位于可信区域1003以内,从而不能被攻击者所篡改)。
处理2:校验热窗口哈希子树某节点;按照如下过程进行——
a.读该节点和其兄弟节点(比如附图2中,节点502是节点501的兄弟节点,节点602是节点601的兄弟节点)。
b.连接它们的数据。
c.计算连接后结果的哈希值。
d.结果与父节点(比如附图2中,节点601是节点501和节点502的父节点)是否匹配。
e.这些过程一直进行到该热窗口哈希子树顶节点。
处理3:更新热窗口哈希子树某节点;按照如下过程进行——
a.依照“处理2”校验该节点的完整性。
b.改变该节点的数据为新数据。
c.连接该节点的新数据与其兄弟节点的数据。
d.计算连接后结果的哈希值。
e.用这一结果更新父节点。
f.这些过程一直进行到该热窗口哈希子树顶节点被更新。
处理4:热窗口哈希子树与冷窗口哈希子树相互转换;按照如下过程进行——
a.判断是否发生过更新,即对比待转换热窗口哈希子树顶节点的备份和当前的顶节点值是否相同(比如附图2,对比热窗口哈希子树1001中的顶节点701,也即节点801,是否与其备份802相同);若相同,则直接转步骤j。
b.为待移动热窗口哈希子树顶节点的当前值生成一个备份,且这一备份也置于可信区域内,然后以其原备份值恢复该哈希子树顶节点(比如附图2,为热窗口哈希子树1001的顶节点701,也即节点801,生成一个备份,且这一备份处于可信区域内,比如使用位于可信区域1003中的一个暂存单元;然后将顶节点701替换为原备份值802)。
c.依据附图1中基本哈希树的“操作1”校验待移动热窗口哈希子树顶节点的完整性。
d.以待移动热窗口哈希子树顶节点的当前值备份恢复该热窗口哈希子树顶节点。
e.连接待移动热窗口哈希子树顶节点与其兄弟节点。
f.计算连接后结果的哈希值。
g.用这一结果更新待移动热窗口哈希子树顶节点的父节点(比如附图2中,热窗口1001中的哈希子树顶节点701的父节点为节点901)。
h.向上一直更新到哈希树根节点(比如附图2中,不断更新更上层次的父节点且一直进行到哈希树的根节点100被更新)。
i.作废待转换热窗口哈希子树节点的缓存(不含其顶节点);
j.在其它位置(指新的访问聚簇区,或待转换的冷窗口哈希子树处),执行“处理1”。
处理5:在热窗口哈希子树外访问;按照如下过程进行——
依据附图1中基本哈希树的“操作1”和“操作2”来进行(备注:将被“处理6”中所指的被缓冲的节点所加速)。
处理6:初始化;按照如下过程进行——
a.按选定的窗口哈希子树宽度从底层切分哈希树(切分得到的窗口哈希子树在后续运行中,将依据被访问频率的不同,在某一时段内分别对应热窗口哈希子树或冷窗口哈希子树)。
b.缓存所有窗口哈希子树的顶节点。
c.基于所有窗口哈希子树的顶节点生成位于更上层次的哈希树的剩余部分的节点(比如附图2中,基于节点701和节点702,构造节点901;基于节点901和节点902,构造节点100)。
d.缓存上一步骤中所得全部中间节点,并保持整个哈希树的根节点为可信(比如附图2中,缓存中间节点901和902,并保存根节点100到可信区域1003中)。
e.所缓冲的节点在后续过程中可以被其它处理操作更新。
在附图1和附图2中,将哈希树简单地视为平衡树,即树的结构是左右对称的。比如,附图1是一个二叉树;当底层有4个节点时,它是平衡的;若底层只有3个节点,则无法形成平衡树。在实际应用中,不一定都可构造出平衡树,但这并不会违背上述所给出的发明内容。因为可以补充一些“哑”节点以构成平衡树。比如附图1中,若本来底层只有节点201、202和203,可以补充一个“哑”节点204;节点204实际不存在而不会被访问,所以可以将“哑”节点204的值取为全零(或其它值);这样一来,就形成了平衡树。同样的道理,按照选定的窗口哈希子树宽度不一定总能均分哈希树,或者说不一定总能在形式上保持所有窗口哈希子树是等宽度的,但可以实质上使得所有窗口哈希子树的宽度相同。比如附图1中,若本来底层只有节点201、202和203,而每个窗口哈希子树对应2个底层节点的宽度;此时,虽然3个节点在形式上无法形成两个宽度都为2个节点的窗口哈希子树,但可以补充一个“哑”节点204,从而实质上形成两个宽度相同的窗口哈希子树。因此,不管被保护的空间具体尺寸是多少,总可以在实质上形成一系列等宽度的窗口哈希子树,且同时使得哈希树是平衡树。
我们将哈希树根节点以及热窗口哈希子树顶节点视为可信。实际应用中,可信可以通过直接的或实质上的方式而达到。这些节点可以直接置于可信区域内,而该可信区域是攻击者不可篡改的,从而得以保持可信。比如,若认为处理器是可信的,那么哈希树根节点置于处理器片内高速缓冲器中,或者片内寄存器中,或者片内设置的其它的或特殊的存储器中,都可以由于直接位于可信区域内而保持可信。还有,即使哈希树根节点以及热窗口哈希子树顶节点存储于非可信区域中,也可以附加一层哈希运算(比如,对根结点再计算一个哈希值,或者对根结点连接顶节点后再计算一次哈希值)而将计算结果置于可信区域内;那么,哈希树根结点以及热窗口哈希子树顶节点就实质上保持可信了。
热窗口哈希子树内部节点(不含顶节点),可以缓存在是非可信区域内。如果是缓存在可信区域内,那么热窗口哈希子树的完整性校验过程甚至不必进行到热窗口哈希子树的顶节点;校验只要到达任一处于可信区域中的节点就可停止(因为校验的结果是可信赖的);相关节点的更新也可以在到达任一处于可信区域中的节点时就停止,然后在热窗口哈希子树转换为冷窗口哈希子树时再向上传递更新结果。当然,这需要相对更大容量的可信区域。
同样地,如果将窗口哈希子树顶节点以上、哈希树根节点以下的哈希树内部节点,包括冷窗口哈希子树顶节点,缓存在可信区域内,那么热窗口哈希子树以外的校验过程也不必一直进行到整个哈希树的根节点;校验只要到达所缓存的这些节点中的任一节点就可停止(因为校验的结果是可信赖的)。显然,这也需要相对更大容量的可信区域。
虽然附图2中所描述的哈希树分支是固定的(附图2以2-元分支结构为例,即1个父节点下属2个子节点),但实际上可以采用变元或不同的分支结构。也就是说,窗口哈希子树的分支结构可以与窗口哈希子树以上层次的分支结构不同。比如附图3中,窗口哈希子树1501采用3-元分支结构(即1个父节点下属3个子节点),而窗口哈希子树以上层次的哈希树剩余部分1502,可以采用2-元分支结构(即1个父节点下属2个子节点)。当然,其他数量的分支结构在原理上也是同所描述的发明内容相一致的。
还有,在实际应用哈希树时,通常将哈希树构造于被保护的数据空间之上。考虑被一个哈希树所覆盖的数据空间,从哈希树与被保护的数据空间的关系上看,一个哈希树的叶节点可以是由一个数据块(比如,内存的一个内存块,或者磁盘的一个扇区)经单向散列变换(或哈希变换)而得到的;整个被保护的数据空间的全部数据块,对应生成全部的哈希树叶节点。所有数据块可以是等宽度的,或者取不同的宽度。即使整个数据空间的尺寸不能被数据块宽度整除,也可以补充一些“哑”数据单元而使得所有数据块宽度相同。
本发明通过将热窗口的概念添加到哈希树中,使得在热窗口哈希子树覆盖下的的访问(绝大多数访问),可以依据大大缩短了的校验路径完成完整性校验;另外,发生在热窗口哈希子树之外的访问,也由于相关节点被预先缓存而使得校验代价显著降低。因此,本发明可以有效地降低基于哈希树的完整性校验的代价。
下面,通过对计算机内存的完整性校验,给出本发明的一个具体应用示例。
(三)示例:通过本发明所提出的方法校验计算机内存的完整性
如附图4所示,整个计算机内存被划分为内存块,1个内存块经单向散列变换(或哈希变换)生成1个哈希树的叶节点。可信区域2001是不可篡改的;非可信区域2002是可以被攻击者篡改的。首先,选定相关的各种参数(注:参数有多种选择的组合,可依据具体情形而改变;该处仅以所列举的诸参数值作为示例):
①假定被保护的计算机内存2501为256MByte。
②取1个内存块的大小为64Byte(假定计算机处理器的L2-Cache,即2级高速缓冲器,行长度为64Byte;而处理器总是在存储器的64Byte边界处读数据以填充L2-Cache行);比如内存块2401、2402、2403和2404都是64Byte大小。
③哈希树的1个叶节点,经单向散列变换,创建于1个内存块;比如哈希树叶节点2301是由内存块2401经单向散列变换(或哈希变换)而得到的。
③取哈希树为4-元分支结构的,即每个父节点下属4个子节点;比如节点2301、2302、2303和2304对应1个父节点2201。
④取1个窗口哈希子树对应64KByte的内存空间,或1个窗口哈希子树的宽度为64KByte/64Byte=1K个叶节点,而系统在某一时刻维持64个热窗口哈希子树;这样,共有64KByte×64=4MByte的内存空间在给定时间段内处于热窗口哈希子树的覆盖下,其余内存空间被冷窗口哈希子树所覆盖。
⑤采用MD5单向散列变换算法(或哈希算法)计算哈希值;这样,哈希树的每个节点都是由其下属子节点相互连接后,经MD5算法,而得到的128bit或者16Byte哈希值。
在如此选定诸参数后,依据本发明所给出的内容,有:
①保持可信的哈希树的根节点,以及64个热窗口哈希子树顶节点,需要(1+64)×16Byte≈1KByte可信存储器;比如,附图4中的可信区域2001由可信存储器构成(若处理器是可信的,则可以使用处理器的片内高速缓冲器),它保持哈希树的根节点100,以及热窗口哈希子树的顶节点2101、2102,等。
②缓存全部热窗口哈希子树节点(包含叶节点,为其顶节点缓存一个备份值)、所有冷窗口哈希子树顶节点,以及窗口哈希子树更上层的整个哈希树剩余的内部节点。由于每个热窗口哈希子树有1K个叶节点,因此,每个热窗口哈希子树需缓存的节点数约为1365(底层有1K个节点,其上层为256个,然后是64、16、4,最后是1个顶节点备份),而每个节点为16Byte;所以,缓存每个热窗口哈希子树节点所需存储容量约为21.33KByte,存储64个热窗口哈希子树全部内部节点所需容量约21.33KByte×64≈1.33MByte。对于256MByte的系统存储器(共对应256MByte/64KByte=4K个窗口哈希子树),所以存储冷窗口哈希子树顶节点以及窗口哈希子树更上层次的哈希树剩余内部节点,约需[(4K-64)+1K+256+64+16+4]×16Byte≈84.31KByte。即,需要一个1.33MByte+84.31KByte≈1.4MByte(可取1.5MByte)的存储器作为工作缓冲区(为提高速度,可附加由SRAM芯片制备的存储电路来构成;也可以直接在内存中开辟一段特殊的区域用作该缓冲区)。这部分缓冲区不必是可信的;比如,可以位于附图4的非可信区域2002内。
具体的实施逻辑可以如附图5。在附图5中:
①计算机内存3000是被保护的存储器空间;内存总线3001是访问内存3000的通道。
②耦合器3002耦合在内存总线3001上;即所有发送到和流出内存3000的信号,包括地址、数据、读写控制等信号,都旁路到耦合器3002。耦合器3002内部设置有一个缓冲队列;该队列可以在内存总线访问事务粹发时缓冲多个连续的内存总线访问事务,从而可以允许正常的内存访问和对内存访问的完整性校验异步地进行。耦合器有两个基本功能。一是依据地址信息,负责排序各个窗口哈希子树所对应的内存区域的访问频度,确定当前热窗口哈希子树的位置,并在访问聚簇区发生改变时,指示进行热窗口哈希子树与冷窗口哈希子树相互转换;二是将缓冲队列中的内存总线访问事务,依照访问发生的时间顺序,向控制器3003传递。
③控制器3003依据耦合器3002所传递过来的信息,按照本发明给出的带热窗口的哈希树的校验方法,完成相关的处理过程。这一部分涉及处理的逻辑与流程控制、对缓冲器3004(缓冲全部热窗口哈希子树节点、所有冷窗口哈希子树顶节点,以及更上层的整个哈希树剩余的内部节点)和可信存储器3005(存储有64个热窗口哈希子树顶节点以及整个哈希树的根节点)的访问,以及单向散列变换(或哈希变换)的运算等操作。
这样一来,可以看出:
①热窗口哈希子树的高度远远小于整个哈希树的高度,因此依据热窗口哈希子树所完成的完整性校验代价将远远低于依赖整个哈希树进行校验的代价;只有热窗口平移时才导致对整个哈希树根节点的更新,这使得更新被延迟以及多次更新操作被合并,而实际校验效果仍然是“联机”性质的(备注:由于耦合器中缓冲队列的存在,使得这里所说的“联机”不是精确的;即,允许校验滞后于访问的完成而完成,滞后的程度取决于耦合器中缓冲队列的长度)。
②通过缓冲热窗口哈希子树的全部节点,检验热窗口哈希子树覆盖下的访问不需额外地访问内存,从而避免了与正常应用程序争用内存带宽以及所带来的相关延迟。通过缓冲窗口哈希子树的顶节点以及更上层次的哈希树内部节点,检验热窗口哈希子树以外的访问只需读取一个窗口哈希子树所对应宽度的内存;而且,热窗口哈希子树转换为冷窗口哈希子树时不需读取内存(不计在新的位置上形成热窗口哈希子树的过程)。
③依赖于热窗口哈希子树所完成的访问将占据访问的多数比例,从而在多数情况下都能够高效地实现完整性校验。
④在多个访问事务粹发时,即使校验系统的工作带宽小于内存总线的带宽,由于耦合器中缓冲队列的存在,校验可在后台异步进行,而允许一定数量(依赖缓冲队列的大小)的内存总线访问事务不受阻碍地连续进行。
⑤对全部热窗口哈希子树节点(不含保持为可信的热窗口哈希子树顶节点)、所有冷窗口哈希子树顶节点,以及更上层的整个哈希树剩余的内部节点进行缓冲所需的缓冲器不需要是可信的;这样,该缓冲器不必置入处理器片内高速缓冲器(如L2-Cache)中,从而避免了对处理器片内高速缓冲器的争用。还有,该缓冲所需的存储器容量相比整个被保护的内存空间是很小的,如果利用已有内存来构造,可以避免需要存储大量节点而争用内存空间的问题。
由此可见,应用本发明所提出的方法和装置,可以有效地降低基于哈希树的完整性校验的代价,使之成为一种有效的实用的技术;比如,应用于计算机内存的完整性校验中。
本发明并不局限于上述具体描述的实现形态,而是适用于所有的依据本发明的内容可获得的能够校验数据完整性的系统。这包括软件的、硬件的以及软件硬件相结合的实现形态,以及不需其它发明性的能力而可直接获得的变化形态。比如,单向散列算法(即哈希算法)可以选择任何具有足够密码安全性的变换函数,包括MD5和SHA1等哈希算法;哈希树的根节点以及热窗口哈希子树顶节点可以直接置于可信器内而保持可信,也可以通过其它的保护技术使之实质上是可信的;这里的可信存储器是指不能被攻击者所篡改的存储器,比如当攻击者无法攻击处理器时,处理器的片内高速缓冲存储器就可视为是可信存储器,再比如校验磁盘时若认为攻击者不能篡改内存,则内存也就成为可信存储器;数据块可以先经过单向散列变换而作为哈希树的叶节点,也可直接作为哈希树叶节点;缓冲热窗口哈希子树的节点可以是全部节点或者部分节点,所使用的缓冲器可以是可信的或非可信的(非可信缓冲器不能用于保持热窗口哈希子树顶节点);缓冲所有冷窗口哈希子树顶节点,以及窗口哈希子树更上层的哈希树剩余节点,也可使用可信或非可信的缓冲器;所需的缓冲器可以由单独的硬件装置完成,也可以直接利用计算机已有的存储器;整个欲保护的数据空间可能是由一个哈希树所覆盖,也可以由多个哈希树所覆盖,而每个哈希树的校验过程的优化都可以按照本发明的内容进行;本发明不但可以应用于计算机内存的完整性保护,还可应用于任何种类的块存储设备的数据完整性保护(比如,以扇区、块、簇等为单位校验磁盘中的数据完整性),或者其它的适用场合;等等。
本发明适用于所有的依据本发明的内容而构造的方法和装置,以及不需其它创造性质的能力而可获得的变化形式。因此,本发明适用于同这里所描述的原理与特征相一致的最广的范围。
Claims (10)
1.一种对基于哈希树的数据完整性校验进行优化的方法,其特征在于:
保持哈希树的根节点是可信的;
在底层分割哈希树而形成一系列哈希子树,称为窗口哈希子树;
将访问频率相对为高的窗口哈希子树称为热窗口哈希子树,其它的称为冷窗口哈希子树;
缓冲热窗口哈希子树的节点,包括其顶节点,并保持热窗口哈希子树的顶节点是可信的;
缓冲位于窗口哈希子树顶节点以上、哈希树根节点以下的哈希树内部节点,包括冷窗口哈希子树顶节点;
对于热窗口哈希子树对应的完整性校验,借助所缓冲的热窗口哈希子树节点以及可信的热窗口哈希子树顶节点而实现;
对于热窗口哈希子树之外的完整性校验,借助所缓冲的窗口哈希子树顶节点以上、哈希树根节点以下的哈希树内部节点,包括窗口哈希子树顶节点,来进行;
依据运行时具体的数据访问情况,热窗口哈希子树可以随着访问频率的降低转换为冷窗口哈希子树,而冷窗口哈希子树可以随着访问频率的升高转换为热窗口哈希子树。
2.根据权利要求1所述的窗口哈希子树,窗口哈希子树是宽度相同的,或者可以实质上等价于宽度相同。
3.根据权利要求1所述的保持哈希树根节点以及热窗口哈希子树顶节点的可信性,可以直接将其置于可信区域内,或者通过其它方式使之实质上是可信的。
4.根据权利要求1所述的借助所缓冲的热窗口哈希子树节点,以及可信的热窗口哈希子树顶节点,实施热窗口哈希子树对应的完整性校验,是指:
校验可以依据热窗口哈希子树顶节点完成校验,而不必每次都依赖哈希树根节点;所需的对节点的更新操作可以停止在热窗口哈希子树顶节点,而不必立刻就一直更新到哈希树根节点;
校验过程可以直接利用被缓冲的节点。
5.根据权利要求1所述的热窗口哈希子树节点,可以缓冲在可信或非可信区域内;如果热窗口哈希子树节点是缓冲在可信区域内的,那么热窗口哈希子树对应的完整性校验只要到达任一被缓冲的节点就可停止,节点更新也可以到达任一被缓冲的节点就停止。
6.根据权利要求1所述的借助所缓冲的窗口哈希子树顶节点以上、哈希树根节点以下的哈希树内部节点,包括窗口哈希子树顶节点,实施热窗口哈希子树之外的的完整性校验,是指:
校验时可以直接利用被缓冲的节点;
当热窗口哈希子树转换为冷窗口哈希子树时,可以直接利用被缓冲的节点。
7.根据权利要求1所述的窗口哈希子树顶节点以上、哈希树根节点以下的哈希树内部节点,包括冷窗口哈希子树顶节点,可以缓冲在可信的或非可信的区域内;如果缓冲在可信区域内,那么相对应的完整性校验只要到达任一被缓冲的节点就可停止。
8.根据权利要求1所述的哈希树,可以采用不同的分支结构,即窗口哈希子树可以采用一种宽度的分支结构,而窗口哈希子树以上层次到哈希树根节点的部分可以采用另一种宽度的分支结构。
9.根据权利要求8所述的哈希树采用不同的分支结构,窗口哈希子树采用的分支宽度,比起窗口哈希子树以上层次到哈希树根节点部分所采用的分支宽度,要更宽。
10.根据权利要求1至权利要求9中任一权利要求所述的方法,采用这些方法所构造的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200410046692XA CN100442277C (zh) | 2004-08-24 | 2004-08-24 | 优化哈希树完整性校验的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200410046692XA CN100442277C (zh) | 2004-08-24 | 2004-08-24 | 优化哈希树完整性校验的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1741010A true CN1741010A (zh) | 2006-03-01 |
CN100442277C CN100442277C (zh) | 2008-12-10 |
Family
ID=36093400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200410046692XA Expired - Fee Related CN100442277C (zh) | 2004-08-24 | 2004-08-24 | 优化哈希树完整性校验的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100442277C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101976322A (zh) * | 2010-11-11 | 2011-02-16 | 清华大学 | 基于一种完整性校验的安全元数据管理方法 |
CN102413313A (zh) * | 2010-09-26 | 2012-04-11 | 索尼公司 | 数据完整性验证信息生成方法和装置、数据完整性验证方法和装置 |
CN110175840A (zh) * | 2019-04-19 | 2019-08-27 | 华中科技大学 | 联盟链中实现轻钱包机制的方法、客户端、联盟链及系统 |
CN112767154A (zh) * | 2021-01-18 | 2021-05-07 | 中国工商银行股份有限公司 | 应用于区块链系统的默克尔树计算方法及系统 |
CN113632418A (zh) * | 2019-04-03 | 2021-11-09 | 特里布泰克解决方案有限公司 | 用于对传感器数据流进行完整性检查的装置和方法 |
WO2024171317A1 (ja) * | 2023-02-14 | 2024-08-22 | 日本電気株式会社 | 情報処理装置、情報処理装置の制御方法、及び、プログラムが格納された非一時的なコンピュータ可読媒体 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903651A (en) * | 1996-05-14 | 1999-05-11 | Valicert, Inc. | Apparatus and method for demonstrating and confirming the status of a digital certificates and other data |
US6047283A (en) * | 1998-02-26 | 2000-04-04 | Sap Aktiengesellschaft | Fast string searching and indexing using a search tree having a plurality of linked nodes |
JP3589349B2 (ja) * | 2001-01-12 | 2004-11-17 | 日本電気株式会社 | 経路検索システムとその検索方法、及び経路検索プログラムを記録した記録媒体 |
-
2004
- 2004-08-24 CN CNB200410046692XA patent/CN100442277C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102413313A (zh) * | 2010-09-26 | 2012-04-11 | 索尼公司 | 数据完整性验证信息生成方法和装置、数据完整性验证方法和装置 |
CN101976322A (zh) * | 2010-11-11 | 2011-02-16 | 清华大学 | 基于一种完整性校验的安全元数据管理方法 |
CN113632418A (zh) * | 2019-04-03 | 2021-11-09 | 特里布泰克解决方案有限公司 | 用于对传感器数据流进行完整性检查的装置和方法 |
CN110175840A (zh) * | 2019-04-19 | 2019-08-27 | 华中科技大学 | 联盟链中实现轻钱包机制的方法、客户端、联盟链及系统 |
CN112767154A (zh) * | 2021-01-18 | 2021-05-07 | 中国工商银行股份有限公司 | 应用于区块链系统的默克尔树计算方法及系统 |
WO2024171317A1 (ja) * | 2023-02-14 | 2024-08-22 | 日本電気株式会社 | 情報処理装置、情報処理装置の制御方法、及び、プログラムが格納された非一時的なコンピュータ可読媒体 |
Also Published As
Publication number | Publication date |
---|---|
CN100442277C (zh) | 2008-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Blass et al. | Toward robust hidden volumes using write-only oblivious RAM | |
US20230195654A1 (en) | Namespace encryption in non-volatile memory devices | |
US9529735B2 (en) | Secure data encryption in shared storage using namespaces | |
US20190229924A1 (en) | Key rotating trees with split counters for efficient hardware replay protection | |
US11362830B2 (en) | Memory system | |
US8613074B2 (en) | Security protection for memory content of processor main memory | |
US7281010B2 (en) | Trusted computing platform with dual key trees to support multiple public/private key systems | |
CN112149146A (zh) | 确定性加密密钥轮换 | |
Ren et al. | Integrity verification for path oblivious-ram | |
EP1826701A2 (en) | Secure processor | |
WO2019156887A1 (en) | Key encryption handling | |
WO2008056700A1 (fr) | Système de détection de falsification, procédé de détection de falsification, programme de détection de falsification, support d'enregistrement, circuit intégré, dispositif de génération d'informations d'authentification et dispositif de détection de fals | |
CN112416808A (zh) | 存储器装置中的逻辑到物理映射同步 | |
Shafiee et al. | Secure DIMM: Moving ORAM primitives closer to memory | |
TWI737088B (zh) | 主機型快閃記憶體維護技術 | |
CN107430555B (zh) | 用于存储器保护的高速缓存和数据组织 | |
US11568074B2 (en) | Memory system | |
JP2021530152A (ja) | 安全な論理対物理キャッシング | |
JP7287595B2 (ja) | 暗号ドメイン間における動的リソース割り振りのための技法 | |
CN110661612B (zh) | 断电序列期间不相关熵的收集 | |
Ren et al. | Unified oblivious-RAM: Improving recursive ORAM with locality and pseudorandomness | |
CN112148521A (zh) | 为元数据使用提供改善的效率 | |
CN112445721A (zh) | 提高效率的经混淆逻辑到物理映射管理 | |
Nagarajan et al. | ρ: Relaxed hierarchical oram | |
US8726041B2 (en) | Methods and apparatus for generating a random number in one or more isolated processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081210 Termination date: 20110824 |