用于数据存储中的高效信任保持的系统和方法

文档序号:7909577阅读:226来源:国知局
专利名称:用于数据存储中的高效信任保持的系统和方法
技术领域
本发明总的涉及数据验证,且特别地,涉及在不可信机器上存储数据并通过最小化可信计算基(trusted computing base)上的资源使用来高效地保持可信性。
背景技术
今天的信息正日益被电子地存储。尽管数字数据记录易于存储并便于检索,它们也相对容易被篡改而未被检测到。考虑到以数字形式存储的关键信息的数量,永远不会过分地高估确保此类信息是可信且可靠的重要性。能够保持并验证可信度是尤其重要的一个领域是法规遵循。随着诸如SEC规则17-4a和HIPAA(健康保险可移植性和责任法案)的记录保管法规的数量和范围在扩大,今天的企业正比以往任何时候都面临着更高度的法规和责任。如果未能遵守这样的法规,则会导致巨额罚款和监狱判决。厂商们已提供了若干WORM(—次写入多次读取)解决方案来帮助管理数据。较早的版本是依靠物理WORM媒介,诸如CD-R和光磁技术。由于性能和成本考虑,它们被近来的 WORM方案替代了,这些WORM方案使用标准可重写硬盘驱动器,但通过软件实施WORM属性。 但是,这些系统所提供的保护经常是有限的,尤其是在法规遵循环境中,在这样的环境中内部攻击的机会很高。先前备受瞩目的行业丑闻已经表明,有动机篡改现有数据的那些人通常是试图抹去证据或掩盖他们的罪行的高层主管。不仅是因为他们在物理上和管理上能够访问数据系统,所涉及的重大利害关系也提供了动机来进行复杂和有策略的攻击。现有的方案并不安全,因为(1)软件保护是基于这样的假设,即,对手不能闯入系统,且保护一个大型的/复杂的软件系统是非常困难的;(2)具有物理访问意味着,攻击者可以直接访问存储设备,而绕过所有的保护机制;(3)数据迁移,这在升级到新系统或是在灾难恢复的情况下是需要的,这可能会创造漏洞窗口 ; (4)基于CAS(内容寻址存储)技术的解决方案仅仅是将问题推向更高层次,因为CAS通常是由不可信的系统管理的;(5)现有的解决方案关注于保护参考数据,而不是元数据结构,以及;(6)即使系统是安全的,它们并不给审计员提供方法来验证数据的正确性,因此除非是审计员能直接访问数据系统, 而这不是通常的情况,查询产生的结果在到达请求者之前可被改变。 保持固定内容的数据记录的可信性通常是直截了当的。一个简单的方法是计算内容和数据记录的属性的安全单向散列,且使可信计算基(TCB)使用其私钥来对其签名,例如,Sign(H(data)), H(metadata), timestamp).这样的签名然后可被用来验证数据记录的完整性及其创建时间。对于法规遵循,元数据典型地包括一些保留属性,其规定了对象何时到期,这样签名可被用来验证对象是否被合法删除。如果想要最小化在对象被移除后需要被维持的信息,签名可被略微地修改为Sign(H(data)),H(metadata-retention attr), retention attr, timestamp)。通过将新建立的数据记录的散列分组到一起,并使TCB生成一个用于整个批的签名,可以获得更好的效率。但是,考虑到今天的信息系统中的大量数据,数据典型地通过某些形式的元数据结构,诸如目录和搜索引擎,来访问。与固定内容的数据对象不同,这些元数据结构需要经常在数据对象被插入或是移除时被更新。这带来了额外的漏洞,因为现在不是直接篡改数据,对手还可以篡改元数据结构来隐藏信息或将审计员引向错误的方向。最近的研究工作提出了高效的只能附加的(append-only)元数据结构,其适合于被存储在WORM存储器上。 但是,元数据结构的动态性质使得高效地保持其可信性变得更具挑战性。简单地计算整个元数据结构的单向散列将会惊人地昂贵,因为每次更新都需要由TCB验证(不同于固定内容的对象,TCB在没有验证更新的合法性的情况下,不能盲目地签名或存储用于动态元数据结构的新散列)。 只能附加的数据结构的一个简单例子是基于文件ID (或文件名)来组织的审计日志。整个日志可以被分为许多只能附加的片段,每个文件一个片段。在法规遵循环境中对审计日志的一种常见类型的查询是检索对应于指定文件的所有日志条目。为了满足这样的查询中完备性的完整性要求,需要能够证明包含的日志条目的数量是正确的并且是最新的,以及每一日志条目的完整性。使用如上所述的只能附加的数据结构,可以将元数据结构分解为很多个小块(称为页),每个块都是只能附加的。尽管这允许TCB通过为每个单元维持一个单独散列来检查更新是否覆盖了现有数据,从而更高效地验证对单个块的更新是否是有效的,该方法对于 TCB来说不是存储高效的。考虑到今天数据集的规模,这样的元数据结构所需要的散列的数量将远远超过 TCB内部的安全存储的容量,因此需要被存储在不可信的主系统上。TCB可以对这些散列加密或签名来防止它们被篡改。在每次更新时,将向TCB呈现页的当前内容、当前签名和更新。TCB然后将验证内容与签名和更新匹配,然后将验证该更新是合法的。但是,这不能阻止对手通过与更新一起提交页内容/签名的较早版本从而有效地隐藏现有数据,来实施 “重放”攻击。因此,尽管TCB没有空间来为每个页存储单独的状态信息,它不得不以某种方式来“记住”每个页的当前版本。验证大的动态数据结构的传统方法是使用Merkle散列树。Merkle散列树是一种二叉树,其中该树的每个叶子包含一数据值的散列,且该树的每个内部节点包含其两个子节点的散列。数据值的验证基于如下事实该Merkle散列树的根是通过可信方或者数字签名来验证的。为了验证数据值的真实性,证明者需要将数据值自身和从该数据值到Merkel 树的根的路径上的节点的兄弟节点中存储的值一起发送给验证者。验证者可以迭代地计算从数据值到根的路径上的节点的散列值。验证者然后可以检查计算机根值是否与被验证的根值匹配。Merkle树的安全性基于散列函数的抗冲突性;能够成功地验证伪造数据值的对手必须在从数据值到根的路径上的至少一个节点上有冲突。使用Merkle树,TCB只需要在其安全存储器中维护树根。但是,解决存储问题的代价是用于TCB的更高计算和通信开销。 现在对于每个页更新,计算量和验证对象(VO)的大小现在是log(N),其中N是页的总数。 在具有高对象摄入率、并且每个对象插入会触发若干元数据更新(例如全文索引)的大型档案系统中,TCB很容易被压垮。

发明内容
本发明提供了一种用于保持数据可信性的方法和系统,该方法包括在不可信系统上存储数据,并将数据提交到可信计算基(TCB)。该提交包括在预定时间间隔结束时,将大小固定的数据从不可信系统发送到TCB,且TCB基于对代表被验证数据的一般散列树的第一根和第二根执行单个散列操作,来保持被验证数据的可靠性。另一实施例涉及一种用于保持数据可信性的系统。该系统包括至少一个不可信模块,其被配置为存储数据,以及与该不可信模块连接的可信计算基(TCB)模块。TCB被配置为验证数据,其中,在预定时间间隔结束时,不可信模块将大小固定的验证数据发送到 TCB用于提交,且该TCB基于对代表被验证数据的一般散列树的第一根和第二根执行单个散列操作,来保持验证数据的可信性。 又一个实施例涉及一种用于保持数据可信性的计算机程序产品,其使得计算机在不可信的系统中存储数据,并将该数据提交到可信计算基(TCB)。该提交还使得计算机在预定时间间隔结束时,将大小固定的验证数据从不可信系统发送到TCB,且TCB基于对代表被验证数据的一般散列树的第一根和第二根执行单个散列操作,来保持验证数据的可信性。本发明的其它方面和优势将从下列详细描述而变得更明显,所述描述,结合附图, 以示例方式示出了本发明的原理。从第一方面来看,本发明提供了一种用于保持数据可信性的方法,该方法包括在不可信的系统上存储数据;以及将该数据提交到可信计算基(TCB),其中所述提交包括在预定时间间隔结束时,将固定大小的验证数据从不可信系统发送到TCB,且TCB基于对代表被验证数据的一般散列树的第一根和第二根执行单个散列操作,来保持验证数据的可信性。优选地,本发明提供了一种方法,其中,所述提交包括基于第一根和第二根的散列来计算一般散列树的第三根。优选地,本发明提供了一种方法,其中,所述提交还包括生成第三根并将该第三根与计算的根值比较。优选地,本发明提供了一种方法,其中,所述散列树包括多个叶子,每个叶子存储了与相应元数据页相关的信息。优选地,本发明提供了一种方法,其中,所述树的每个内部节点被计算为其子节点的散列。优选地,本发明提供了一种方法,其中,不同的散列函数被应用在不同的内部节点上。优选地,本发明提供了一种方法,其中,不同的散列函数属于同态散列族。优选地,本发明提供了一种方法,还包括为每个内部节点计算标签值和指数值。优选地,本发明提供了一种方法,其中,所述标签值是该标签的两个孩子的标签值的乘积,且所述指数值是该节点的兄弟节点的标签值。从另一方面来看,本发明提供了一种用于保持数据可信性的系统,包括至少一个不可信模块,其被配置为存储数据;以及连接到该不可信模块的可信计算基(TCB)模块,该 TCB被配置为验证数据,其中,在预定时间间隔结束时,不可信模块将固定大小的验证数据发送到TCB用于提交,且TCB基于对代表被验证数据的一般散列树的第一根和第二根执行单个散列操作,来保持验证数据的可信性。优选地,本发明提供了一种系统,其中,所述TCB通过基于第一根和第二根的散列进一步计算一般散列树的第三根,来保持可信性。
优选地,本发明提供了一种系统,其中,所述树的每个内部节点被计算为其子节点的散列。优选地,本发明提供了一种系统,其中,不同的散列函数被应用在不同的内部节点上。优选地,本发明提供了一种系统,其中,不同的散列函数属于同态散列族。优选地,本发明提供了一种系 统,还包括包括多个不可信模块子系统的分布式网络,其中,TCB模块还被配置为保持在每个不可信模块子系统上存储的数据的可信性。从另一个角度来看,本发明提供了一种用于保持数据可信性的计算机程序产品, 包括包含了计算机可读程序的计算机可用媒介,其中,该计算机可读程序在计算机上执行时使得计算机在不可信的系统上存储数据;并将数据提交到可信计算基(TCB),其中,所述提交进一步使得计算机在预定时间间隔结束时,将固定大小的数据从不可信系统发送到 TCB ;且TCB基于对代表被验证数据的一般散列树的第一根和第二根执行单个散列操作,来保持验证数据的可信性。优选地,本发明提供了一种计算机程序产品,其中,TCB通过将一般散列树的第三根与计算的根值比较,来验证可信性。优选地,本发明提供了一种计算机程序产品,其中,不同的散列函数被应用在一般散列树的不同内部节点上。优选地,本发明提供了一种计算机程序产品,其中,所述树的每个内部节点被计算为其子节点的散列,并且不同的散列函数被应用在不同的内部节点上。优选地,本发明提供了一种计算机程序产品,其中,不同的散列函数属于同态散列族。


为了更完整地理解本发明的性质和优势,以及优选的使用模式,需要结合附图来参考下列详细描述,在附图中图1示出了根据本发明的一个实施例的可信系统;图2示出了根据本发明的实施例的分布式可信系统;图3示出了根据本发明的实施例的代表被验证数据的一般树结构;并且图4示出了根据本发明的实施例的用于验证数据的过程的框图。
具体实施例方式下列说明是为了示出本发明的一般原理,而不是为了限制这里所要求保护的发明构思。此外,这里描述的特殊特征可以在各种可能的组合和排列中的每一个中与其它描述的特征结合起来使用。除非这里另外特别定义,所有术语被给予其最广泛的可能的解释,包括说明书中隐含的含义,以及本领域技术人员所理解、和/或字典、论文等中定义的含义。本说明将公开用于保持数据的可信性、同时减少可信计算基所需的计算的若干个优选实施例,以及其操作和组成部分。尽管下列描述为了清楚起见将从数据和设备的验证方面来描述,并将本发明置于上下文中,需要记住这里的教导可以在所有类型的系统、设备和应用中具有广泛的应用。
本发明提供了一种用于保持数据的可信性的方法和系统,该方法包括在不可信的系统上存储数据,并将该数据提交到可信计算基(TCB)。该提交包括在预定时间间隔结束时,将大小固定的数据从不可信系统发送到TCB,且TCB基于对代表被验证数据的一般散列树的第一根和第二根执行单个散列操作,来保持验证数据的可信性。图1示出了系统100,包括单独的可信计算基(TCB) 110和不可信系统模块120。系统100将TCB 110上的存储、计算和通信开销降低为0(1)(具有单个操作开销)。假设在批中有对N个唯一元数据页的m次更新(在批中对同一页的多次更新将被合并为一次),其中直截了当Merkle树方法在TCB 110上带来0(m · IogN)的计算和通信开销。在一个实施例中,一般散列树(GHT)被用作TCB 110上的被验证数据结构(如图3所示)。元数据结构中的页总数被表示为N(图3中,N = 4)且元数据页被表示为 P1, P2, . . ., PN。TCB 110建立一般散列树(GTH),其中第i个叶子存储与第i个(i = 1, 2,...,N)元数据页相关的信息。一般散列树的高度被表示为ht = logN。GHT的每个内部节点被计算为其两个子节点的散列。但是,与在整棵树中使用同一个散列函数的Merkle 树不同,根据一个实施例,不同的散列函数被应用在GHT中的不同内部节点上。内部节点的值被表示为^Xi2且用于计算^Xi2的散列函数被表示为氏。换句话说,Ki1Z2被计算为
vHi1 = Hi(VJj1yKk1 ) ’其中。·丄和是的两个子节点。在一个实施例中,用于计算内部节点的散列函数属于同态散列族{H},其满足下列同态属性对于任意 Hi, Hj e H,Hj (HiOc0, y0), Hi (x1 Yl)) = Hi (Hj (x0, X1), Hj (y0, Υι))0
在一个实施例中,定义丑1(Χ,力二///·^·/^ (力,其中,fy(x) =Xym。dn,这是基于
Rivest-Shamir算法(RSA)假设的同态散列函数,其中η是RSA模数。可以直截了当地证明这样的散列族满足上述同态属性。下面示出了如何生成用于特定的散列函数Hi的参数ΙΛ,ιγ}。在一个实施例中,为 GHT中的每个节点定义了标签值和指数值。第i个叶子的标签值被定义为ei(i = 1,2,..., N),其中ei属于一组不同的素数Ie1, e2, . . . , eN}。内部节点的标签值被定义为其两个孩子的标签值的乘积。最后,节点的指数值被定义为其兄弟节点的标签值。在图3示出的例子中,V1和V2的标签值分别为ei和e2,且V12的标签值为^e2。V1
和V2的指数值分别为e2和ei,且V12的指数值为e3e4。接着,I1被定义为Ri2的左孩子的指
数值,且A被定义为J^i2的右孩子的指数值。生成指数值的方法具有如下的属性。在一个实施例中,从叶子V1到根的路径上的节点的兄弟节点的指数被分别定义为E1, E2, ... , Eht。 在一个实施例中,最大公约数(gccOgccKEi,E2, ... , Eht) = ei。最后,确定在一般散列树的叶子上存储的值。时间被划分为时间间隔。不可信系统模块120在每个间隔的结束时与TCB 110通信。令n(i)表示直到间隔结束时与第i个元数据页相关的数据块的数量,且数据项为Dil,Di2,. . .,Din(i)。在第i个叶子上存储的值为 \,其被计算为Vi = H0 (H0 (…H0 (H0 (h (Dil),h (Di2)),h (Di3))...), h (Din(I)),其中 H。(x,y)= xye0modn,且eQ是来自{e1; e2,. . .,eN}的独特素数。因此,H0 = H。在一个实施例中,不可信系统模块120在每个间隔结束时只需要向TCB 110提交大小固定的验证数据。在一个实施例中,一般散列树的两个叶子被定义为V1和v2,其父节点为V12 = H1 (V1,V2)。对于两个新数据屯和d2,且两个叶子的新父节点被计算。令义=}^+) 且v2 = h(d2)。新父节点被计算为
权利要求
1.一种用于保持数据可信性的方法,该方法包括 在不可信系统上存储数据;以及将该数据提交到可信计算基(TCB),其中所述提交包括在检测到预定时间间隔的结束时,将大小固定的验证数据从不可信系统发送到TCB ;以及所述TCB基于对代表被验证数据的一般散列树的第一根和第二根执行单个散列操作, 来保持验证数据的可信性。
2.如权利要求1所述的方法,其中,所述提交包括基于第一根和第二根的散列来计算一般散列树的第三根。
3.如权利要求1所述的方法,其中,所述提交还包括生成第三根并将第三根与计算的根值比较。
4.如权利要求3所述的方法,其中,所述散列树包括多个叶子,每个叶子存储了与相应元数据页相关的信息。
5.如权利要求3所述的方法,其中,所述树的每个内部节点被计算为其子节点的散列。
6.如权利要求5所述的方法,其中,不同的散列函数被应用在不同的内部节点上。
7.如权利要求6所述的方法,其中,所述不同的散列函数属于同态散列族。
8.如权利要求5所述的方法,还包括 为每个内部节点计算标签值和指数值。
9.如权利要求8所述的方法,其中,所述标签值是该标签的两个孩子的标签值的乘积, 且指数值是该节点的兄弟的标签值。
10.一种用于保持数据可信性的系统,包括至少一个不可信模块,其被配置为存储数据;以及连接到该不可信模块的可信计算基(TCB),该TCB被配置为验证数据,其中,在预定的时间间隔结束时,不可信模块将大小固定的验证数据发送到TCB用于提交,且TCB基于对代表被验证数据的一般散列树的第一根和第二根执行单个散列操作,来保持验证数据的可信性。
11.如权利要求10所述的系统,其中,所述TCB进一步通过基于第一根和第二根的散列计算一般散列树的第三根,来保持可信性。
12.如权利要求11所述的系统,其中,所述树的每个内部节点被计算为其子节点的散列。
13.如权利要求12所述的系统,其中,不同的散列函数被应用在不同的内部节点上。
14.如权利要求13所述的系统,其中,所述不同的散列函数属于同态散列族。
15.如权利要求10所述的系统,还包括包括多个不可信模块子系统的分布式网络,其中,所述TCB模块还被配置为保持在每个不可信模块子系统上存储的数据的可信性。
16.一种包括计算机代码的计算机程序,所述计算机代码在被载入到计算机系统并被执行时,执行根据权利要求1到9中任一个的方法的所有步骤。
全文摘要
本发明提供了一种用于保持数据可信性的方法和系统,该方法包括在不可信系统上存储数据,并将数据提交到可信计算基(TCB)。该提交包括在预定时间间隔结束后,将大小固定的验证数据从不可信系统发送到TCB,且TCB基于对代表被验证数据的一般散列树的第一根和第二根执行单个散列操作来保持验证数据的可信性。
文档编号H04L9/32GK102308300SQ201080006867
公开日2012年1月4日 申请日期2010年2月16日 优先权日2009年2月18日
发明者李田成, 马晓楠 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1