用于查询受保护的结构化数据的方法和设备的制作方法

文档序号:6655899阅读:173来源:国知局
专利名称:用于查询受保护的结构化数据的方法和设备的制作方法
技术领域
本发明涉及用于查询受保护的结构化数据的方法和设备。
背景技术
在远程数据库中存储诸如XML结构化文档的需求日益增加。当这样的数据包含敏感信息,诸如病人信息或者(音频)视频内容的有商业价值的元数据时,数据应当受到保护。通常的方法是在将数据存储到远程数据库之前对其进行加密。引起的问题是如何使得客户端设备随后能够对数据库进行查询。最明显的解决方法是下载整个数据库到本地,并且随后完成查询。这样当然是相当低效率的。另外一个选择是提供具有解密密钥的数据库服务器,但是,这个并不是通常可以得到满足的,它需要数据库服务器系统中和管理它的人员的完全信任。
因此,在此领域的问题是如何使得服务器可以高效地对加密的数据进行查询,特别是XML结构化的数据。W3C推荐“XML加密语法”以便允许使用对称和公共密钥的组合来对XML数据进行加密,其中,单元内容通过使用对称密钥加密,而该对称密钥又使用接收者的公共密钥予以加密。参考在http://www.w3.org/TR/xml-encryption-req的W3C注释“XML加密需求”,2002年3月4日,和在http://www.w3.org/TR/xmlenc-core的W3C推荐标准“XML加密语法和处理”,2002年12月10日。
由于查询是在XML数据上完成的基础操作,要完成的第一步是定位围绕对加密的XML数据的查询的主题。对加密的XML数据进行搜索的一种直接方法是首先对数据进行解密,随后在解密的XML数据上进行搜索。但是,这样不可避免地招致大量不必要的解密操作,导致查询效率低下,特别是在被搜索的数据量很大,而搜索目标仅仅来自被搜索数据中的一小部分时。

发明内容
有利地,本发明提供了如权利要求1中所述的用于对受保护的数据进行查询的由计算机完成的方法和如权利要求9中所述的相应的设备。本发明还提供了如权利要求11中所述的客户端设备。
假设数据是以树状来组织的。树的结点多项式是依照数据被组织的树所对应的结构而被构造的。该树中每个结点多项式,对于某些输入(该输入等于从所考虑的结点开始的树的分支中出现的某个结点名被分配的标识符),计算为零。
所述构造的树被划分为客户端部分和服务器部分。客户端部分被随机地选定,并且服务器部分是与原始数据树的差。在对查询的响应中,客户端和服务器均对在自己部分内的多项式进行计算,并且将结果发给查询发起者(可能是客户端本身)。这些结果的任一个均不包含重构原始数据所需的足够信息。因此,数据得到保护。
通过将客户端部分和服务器部分的计算结果组合,可以识别出与给定查询相匹配的结点。对于任何特定的结点名,所述两部分的计算结果之和与原始结点多项式针对该特定结点名的计算结果相同。并且,如果此查询的结点名字与该特殊结点名字的结点名字相匹配,此计算为零。因此,查询可以在服务器也不知道答案时得到回答。
一旦查询到匹配结点,可以从服务器中检索到它们(被加密)的内容,并且由客户端进行解密。
在优选实施例中,在树中的数据结点被转换成特里结构(trie)表达形式,从而,数据段中在第二个字符之后的第一个字符,被表示为所述第二个字符的子结点。这使得可以对加密文档中元素的数据内容进行搜索。


本发明的这些和其他方面参考在附图中显示的说明性实施例将得到阐述并且变得显而易见,其中,图1示意性地示出了依照本发明的系统的概图。
图2(a)示出一个基于XML的示例文档的树表示图。
图2(b)示出一个分配给结点名字的结点多项式的树。
图3(a)示出F5[x]中的结点多项式的树。
图3(b)示出Z[x2+1]中的结点多项式的树。
图4(a)示出F5[x]中的盲目多项式(blinding polynomial)的树。
图4(b)示出F5[x]中的差分多项式的树。
图5(a)示出Z[x2+1]中的盲目多项式的树。
图5(b)示出Z[x2+1]中的差分多项式的树。
图6(a)示出图4(a)中盲目多项式的树的所有多项式的F5[x]中的计算。
图6(b)示出图4(b)中差分多项式树的所有多项式的F5[x]中的计算。
图6(c)示出图6(a)和6(b)中的多项式的对应计算的F5[x]中的对应和。
图7(a)示出图5(a)中盲目多项式树的所有多项式在Z[x2+1]中的计算。
图7(b)示出图5(b)中差分多项式树的所有多项式在Z[x2+1]中的计算。
图7(c)示出图7(a)和7(b)中多项式的对应计算在Z[x2+1]中的对应和。
图8(a)示出一个具有数据内容的XML元素的例子。
图8(b)示出此XML元素压缩的特里结构表示;和图8(c)示出此XML元素未压缩的特里结构表示。
贯穿这些图,相同的参考数字指示相似的或者对应的特性。附图中所示的这些特性的一部分典型地由软件来实现,并且同样表示诸如软件模块或对象的软件实体。
具体实施例方式
图1示意性地示出了依照本发明的系统的概图。如同本领域所公知的,服务器100维护着具有数据的数据库101,并且被配置来对来自一个或者多个客户端102的查询进行应答。从诸如因特网的网络110接收到查询。数据库101中存储的数据由数据源系统103供应。此系统103可以是客户端102中的一个,但是也可以是一个独立的系统。当然所述数据可以来自多个源,并且由服务器100合并。
例如,客户端102可以是医院中输入病人信息的终端。病人信息随后又被存储在数据库101中,由于这样或者那样的原因,数据库位于一个远程地址。病人信息由于隐私的缘故,而必须受到保护。随后,使用客户端102来对数据库101进行查询,以便得到先前输入的病人的信息。这个情况中,数据来源系统103与客户端102相同。
在另外一个实施例中,数据来源系统103可以是内容提供商,它将诸如电影或音乐的有用内容提供给客户。此外,内容提供商允许它的客户使用诸如它所出售的内容的名字或者艺术家的元数据对数据库进行查询。由于提供商的效率的原因,可以由第三方来提供数据库的管理。由于这样的数据库的商业价值昂贵,提供商需要对数据库中的数据进行保护。
假设数据具有类似树的结构,在基于XML的文档中是这样的。在XML文档中,每个结点具有一个名字,并且可能具有一个值。两个结点之间不会多于一个路径。下面示出一个示例的基于XML的文档,它的树形表示被显示在图2(a)中。
1.<?xml version=′1.0′?>
2.<customers>
3.<client><name>Smith</name></client>
4.<client><name>Jones</name></client>
5.</customers>
在图2(a)中,可以看出,“customers(顾客)”元素成为树的根或者最顶端的结点。在它的下面是两个名为“client(客户)”的结点,每一个结点有名为“name(名字)”的一个子结点。名为“name”’的结点是叶子结点,也就是它们没有子结点。
数据也可以是索引结构,以允许对诸如e-mail消息的扁平文本文件进行搜索。非结构化的数据可以首先被转换为类似树的结构化格式。
希望对数据进行保护,使得在服务器100上不具有足够的信息来恢复数据。因此,数据来源系统103以如下受保护的格式提供数据。
首先为每个结点的名字分配一个标识符和对应的标识多项式i(x),对于等于结点名字标识符的x该多项式计算为零。下面的表1中示出了结点名字映射到标识符的例子。标识符对于每个名字必须是唯一的。例如,它们可以被(伪)随机地选择或者由操作员进行分配。使用这个映射,可以构造标识多项式i(x)。优选地,标识多项式是一阶多项式,尽管这个不是必须的。一阶多项式只对一个输入计算为零。使用更高阶的多项式意味着需要对答案进行过滤来找到正确的答案。
在贯穿本文使用的示例实施例中,使用的一种简单构造是形如i(x)=x-n的多项式,其中,n等于赋给该结点名字的标识符。
如果需要,可以将结点名字对服务器100保密,从结点名字到标识符的映射因此也不提供给服务器100。在下文将明显看出,服务器100不需要这些信息来完成查询。
接着,给每一个结点的名字分配一个结点多项式n(x)。对于一个叶子结点,它的结点多项式等于它的标识多项式。对于非叶子结点,它的结点多项式由它的标识多项式和它所有子结点的结点多项式的乘积计算得出。这些在图2(b)中进行说明。
为了避免高阶次的多项式,优选在有限域内进行计算,例如Fp[x]或者Z[r(x)]。使用有限域不损失任何信息。
在第一个例子中,多项式系数以模p降阶,如果p是质数,则a∈Fp∶ap-1≡1(mod p)。因此,每一个多项式可以降阶为具有Fp中的系数的阶次低于p-1的多项式。这个在图3(a)中选取p=5来进行说明。
在第二个例子中,多项式以模一个不可约分的多项式r(x)降阶。多项式的阶次此时小于r(x)的阶次。但是,系数是Z的元素,也就是整数,并且可以由于具有很多结点名字的数据结构而变得很大。这个在图3(b)中以选择r(x)=x2+1来进行说明。
总结一下,下面是用于示例实施例的结点名字、分配的标识符、结点名字的标识多项式和结点多项式的概括。
表1

创建了结构化的多项式树,下一步是将该树分解为服务器部分和客户端部分。服务器部分存储在服务器100上,客户端存储在将要随后查询服务器的客户端102上。如果数据来源系统103不与客户端102的系统相同,需要将客户端部分传输到客户端102。
在优选的实施例中,多项式树被按照如下所示分解。每一个个体结点被分配为它自己(伪)随机选择的与其结点多项式同阶的盲目多项式。这意味着两个具有相同名字的结点通常具有被分配的不同盲目多项式。对图2(a)中所示的示例树的这种的分配例子被显示在图4(a)中。在图4(a)中的树将作为盲目多项式的树。此多项式全部在F5[x]中。
接着,对于每个结点,计算差分多项式,使得盲目多项式与差分多项式的和等于结点多项式。在图4(b)中显示对应“差分多项式树”的例子树。对于每一个结点,如下为真,如果该结点在图4(a)中的盲目多项式被加到图4(b)中的对应差分多项式,结果等于图3(a)中此结点的结点多项式。例如,图4(a)中根结点加上图4(b)中根结点为(2x3+3x2+2x+2)+(x3+x+1)=3x3+3x2+3x+3等于图3(a)中的根结点。
图5(a)和5(b)中示出了Z[x2+1]中对应的例子。如果图5(a)中的根结点与图5(b)的根结点相加,结果为图3(b)的根结点(9x-12)+(256x+57)=265x+45客户端102和服务器100中的一个被赋给盲目多项式树,另外一个被赋给差分多项式树。这些树的任一个都不包含重构原始多项式树所需的足够信息。该树可以被通过网络进行传输,或在例如CD-ROM的数据载体上可得。
原则上,客户端102和服务器100的哪一个接收哪个树是无所谓的。但是,如果客户端102具有有限存储容量,优选将差分多项式树分配给服务器100。客户端102可以仅被提供初始化伪随机数字发生器的种子,该伪随机数字发生器用于产生盲目多项式。客户端102可以随后在任何需要的时候,再次生成盲目多项式。例如,移动电话有有限的存储空间,但是它足可以完成所需的计算。
将盲目多项式树和差分多项式树分别提供给客户端和服务器后,客户端可以对服务器进行查询。讨论第一个简单的元素查询,也就是在树中查找给定结点名字的结点。
称为Xpath的W3C推荐标准描述了对包含某个路径的XML文档的搜索。在XPath中,对于名为“client”的结点的元素查找被表示为“//client”。通常,服务器100通过遍历整个树并且对比所有结点名字和名字“client”来完成这样的查找。这样做相当低效,并且在服务器100由于只具有差分多项式树(或盲目多项式树)而不知道实际的结点名字时是不可能实现的。
依照本发明,客户端102首先确定分配给所考虑的结点名字的标识符。对于名字“client”,如上所示,标识符为“2”。客户端102随后请求服务器100采用x等于该标识符,在例子中x=2,对该树中多项式进行计算,并且返回结果。优选地,服务器100应在每一个多项式完成计算之后,马上将每一个结果返回,这样客户端102可以向服务器100发信号停止计算,来避免进一步进行不必要的计算。这些将在下文进行解释。
客户端102本身也对其多项式按照x=2的给定值一一进行计算。并且客户端102为每一个结点计算其自己的计算结果与由服务器100返回的该结点的计算结果之和。如果和为零,则该结点的结点多项式包含因子(x-2)。这表明要么该结点具有结点名“client”,要么其下面的某个结点具有该名字。
如果和不为零,则结点多项式不包含因子(x-2)。这表明在这个结点下的任意位置都没有结点名为“client”的结点。因此,在该分支中不必进行进一步搜索。客户端102可以在此时向服务器100发信号,通知它停止对该分支中的多项式的计算。
每一个和为零且其子结点的和不为零的结点表示该查询的答案。这在图6(a)-6(c)中显示。所有的计算在F5[x]中。Z[x2+1]中的同样的例子显示于图7(a)-7(c)中。
图6(a)示出对客户端树(此处为盲目多项式)的所有多项式的计算。图6(b)示出对服务器树(此处为差分多项式)的所有多项式的计算。图6(c)示出图6(a)和6(b)中对应多项式计算的对应和。通过对比图6(c)与图2(a)可以验证,图2(a)中名为“client”的结点具有零和,并且,它的子结点和不为零。结点“customers”具有零和,并且子结点的和也为零,表示在此结点下有一个或者多个结点名为“client”。
如果一个结点名可以在树的多个层出现,这个方法不传递完全准确的结果。例如,如果数据按照如下结构组织1.<?xml version=′1.0′?>
2.<customers>
3.<client>
4.<name>
5.<client/>
6.</name>
7.</client>
8.</customers>
则在行3的名为“client”的结点不被识别为一个匹配的结点。这个结点具有和为零的子结点,因为存在一个后继结点也名为“client”,即在行5的这个事实。
可以有更好的,不具有这个问题的识别结点匹配的方法。它需要对于某些结点重构原始结点多项式。假设客户端102已经接收到盲目多项式树。在接收到来自服务器100的反馈答案,并且已经如上所述识别了某些结点之后,客户端102从服务器100请求每一个所识别结点的差分多项式和该结点直接子结点的差分多项式。例如,在图6(c)的例子中,根结点是匹配结点。客户端102将请求根结点的差分多项式和根结点下直接的两个结点的差分多项式。
客户端102此时可以通过简单地将相关盲目多项式和差分多项式相加,来重构所考虑的每一个结点的结点多项式。随后,所述和为零的结点的结点多项式由其直接子结点的结点多项式相除。这揭示了和为零的结点的标识多项式。随后,可以容易地验证对于给定的查询,是否标识多项式被计算为零。从这点可以推断,所考虑的结点是否与查询匹配,或者应在子结点之一中查找答案。
进一步可以检测来自服务器的回答反馈的正确性。令f是一个结点的结点多项式,并且q1......qn是其第n个直接子结点的结点多项式。要检查答案的正确性,需要在随后的方程中求解tf=(x-t)Πi=1nqi(modr)]]>
t的值应该等于在查询中使用的结点名字的标识符。在例子中,t应该等于2,因为此标识符被赋给在查询中使用的结点名字“client”。这个可以如下被解出d=d(r)f-q1...qn(x-t)=0(mod r)其中有ad-1xd-1+ad-2xd-2+...+a1x+a0=0其中,每一个ai是t的函数。这个可以记做如下的系列方程。
ad-1(t)=0ad-2(t)=0...
a0(t)=0一个单独的方程足以求解t。其他的方程可以被用来对由服务器提供的答案进行检验。如果服务器是被信任提供正确答案的,只有最后一个方程就足够。在这种情况下,只有存储在服务器上的每一个多项式的常数因子必须被传输。这降低了带宽,并提高了效率,但是降低了安全性。
找到匹配的结点之后,客户端102此时可以从服务器100请求这些结点的(加密的)内容并且在本地对内容解密。这样,只需要将匹配结点的内容从服务器100传输到客户端102,而不是传输整个加密的数据库。
在一些应用中,结点可能为空,也就是不含内容。所有的信息此时被包含在结点名字和树中结点的结构中。
本发明还允许对受保护的数据完成更详细的XPath查询。诸如“//a/b//c/d/e”的查询当然可以从左到右来进行计算。也就是说,先在树中搜索“a”的存在,随后在具有该名字的结点下的分支中搜索名为“b”的结点,如此类推。这可以更加高效地一次计算整个查询。
树中的每一个多项式包含其所有后继结点的根结点。这允许单独的查询来查找包含任意特定后继结点的所有元素。解决如上给出的查询例子需要如下步骤1.从根结点找到所有的名为′a′并且在树的更深层中某处具有名为′b′,′c′,′d′知′e′的元素的元素。
2.从找到的所有名为′a′的元素中,找到所有名为′b′并且在树的更深层中某处具有名为′c′,′d′和′e′元素的直接子结点。
3.从找到的所有名为′b′的元素中,找到所有名为′c′并且在树的更深层中某处具有名为′d′和′e′的元素的子孙结点。
4.从找到的所有名为′c′的元素中,找到所有名为′d′并且在树的更深层中某处具有名为′e′元素的直接子结点。
5.从找到的所有名为′d′的元素中,找到所有名为′e′的直接子结点。
上述实施例假设从固定大小的集合中选出元素名字,例如DTD中所描述的集合,但是因为不同的数据元素的数目可能为无限大而不能被用做XML元素的内容。下面展示的实施例也适于在数据中进行搜索。
在此实施例中,原始XML文档中的数据字符串被翻译为结点路径,其中,每一个结点选自一个小的集合。优选地,这个小集合是字母表,也就是,{′A′...′Z′,′a′...′z′},尽管当然其他字符也可以包含在此集合中。
选择该集合使得所有的数据元素能够用来自该集合的字符表示。但是,也可能通过选择数据元素中使用的所有的字符的有限子集来构造集合。例如,标点符号,空格等可以被排除。集合的选择决定可以在数据上进行何种查询。如果集合仅仅包含字母表,则仅能够完成对单词的查询。
建立集合之后,下一步是将数据结点转换为它们所谓的“特里结构”表示。这种表示形式在Edward Fredkin,BoltBeranek,Newman.Trie memory.Communications of ACM,3(9)490-499,1960年9月,中有描述。在数据段的特里结构表示形式中,数据段中在第二个字符之后的第一个字符,被表示为所述第二个字符的子结点。
图8(a)示出具有数据内容的XML元素的例子。在此例中,元素被称为“name”,并且包含数据“Joan Johnson”。
图8(b)示出此XML元素的压缩的特里结构表示形式。图8(c)示出此XML元素未被压缩的特里结构表示形式。未被压缩的特里结构储存着与原始信息完全相同的信息,而压缩的特里结构损失了单词的顺序和基数。在此例中,字符串被分为单词,由路径表示,并且,随后每一个路径被分为若干个字符。也非常可能存在将字符串分解为结点的其他方法。如这些图中可以看到的,在数据段“Joan”中在字符“J”的后面的字符“o”,被表示结点“J”的子结点。
这个过程建立起与集合中元素相同多的新的元素名字。例如,当文本被分解为字母表(a,b,...,z)中的小写字母时,这个处理给予26个新名字。为了使得多项式尽量小,质数因子p为29是合理的。每一个字母将占p*log_2(p)比特=18字节。因此,在最坏的情况下(当没有公共前缀时),文档的大小依照此常数迅猛增加。但是,文档越大,公共前缀的数目也越大,并且因此,文档大小的增长将降低。甚至有微小可能,转换后的文档小于原始文档。
将原始的XML树翻译为(压缩的)特里结构后,可以使用如上的相同策略对文档编码。此时能够对XML文档中的数据内容进行搜索。例如,此时这个查询可能是/name[contains(text(),“Joan”)]此查询搜索所有包含文本“Joan”的文本(数据)结点。此查询首先被翻译为/name[//J/o/a/n]并且随后翻译为/map(name)[//map(J)/map(o)/map(a)/map(n)]简单的规则表达类似.和.*可以被映射为它们的特里结构对等表示*如//。
使用上述的搜索策略,首先定位具有名字“Joan”的XML元素。下一步是确定该元素是否包含数据串“Joan”。这是通过对该元素(和其子结点)查询“J/o/a/n”来实现,完全同上所述。换句话说,查询“Joan”被转换为对“Joan”的特里结构表示形式的查询。
在图8(b)和(c)中可以看出,在名为“name”的结点下第一个(并且唯一的)子结点是名为“J”的结点。下面是结点“o”,在结点“o”下跟随着“Joan”中的其它字符“a”和“n”的结点。因此,使用上述策略查询“J/o/a/n”将揭示是否在结点“name”中包含值“Joan”。
如前文所解释的,此实施例使得在由最初选定的集合中的字符组成的文档中进行数据查询成为可能。利用集合{′A′,...′Z′,′a′...′z′}可以完成对单词的查询。数据中的不在所述集合中的字符将优选地在特里结构中被省去,虽然它们也可以被映射为特定分配的字符。通过在特里结构中省略这样的字符,在查询中不需要指定这种字符。例如,在图8(b)的特里结构中,尽管在查询中“Joan”和“Johnson”之间的空格字符不提供在特里结构中,对“Joan Johnson”的查询也能够成功。
在进一步的优化中,通过确定数据元素中使用的所有唯一字符来构建字符集合。可选地,可以检查XML文档来确定它的编码,这样可以检查它使用了何种字符集合。随后选择所述集合与字符集合相同。这给出相当大的集合,特别是当使用Unicode字符集时,但是此时可以对每一个可能的查询进行搜索。
为了进行必要的计算,可以为服务器100和客户端102提供特别编写的软件和/或硬件。由于大部分的计算是对多项式进行计算,标准的CPU可以被用于运行该软件。
应该注意,上述实施例对本发明进行举例说明,而不是进行限制,并且,本领域的技术人员能够在不偏离随后所附权利要求的范围的情况下设计许多替代实施例。
例如,可能在第一个服务器上存储盲目多项式树,在第二个服务器上存储差分多项式树。客户端可以随后请求两个服务器用给定x值对它们的多项式进行计算,并且,只需要加法计算出结果。这样,客户端不需要自己对任何多项式进行计算。
具有结点多项式的树可以被分为多于两个树,这样完成一个查询需要多于两方参与。如此做的一种直接的方法是为每个结点选择多个(伪)随机盲目多项式。随后为每个结点选择差分多项式,使得此结点的所有盲目多项式和差分多项式的和等于此结点的结点多项式。每一方接收盲目多项式树之一或者差分多项式树。通过将一个结点的所有多项式的所有计算结果相加,可以检验该结点是否与查询匹配。
在权利要求中,任何位于括号之间的参考符号不应视为对权利要求的限制。词汇“包含”不排除在权利要求中列出元素件或者步骤之外的其它元素或步骤的存在。元素前的词汇“一个”不排除多个这种元素的存在。
本发明可以通过包含多个不同元件的硬件和适当编程的计算机来实现。权利要求中引用的“方法”可以由相应的软件库或者模块来实例化。多种方法可以以一个单独的计算机程序实例化。
在列举若干装置的设备权利要求中,这些装置中的几个可以由一个或相同的硬件项来实现。在相互不同的独立权利要求中阐述某些方法或装置的事实,并不意味着不能使用这些方法或装置的组合来获益。
权利要求
1.一种能够对受保护数据进行查询的由计算机完成的方法,数据以树的形式进行组织,树包含具有相应结点名字的结点,每个结点名字被分配一个唯一的标识符,该方法包含对应数据所被组织的树的结构来构造结点多项式的树,使得每一个结点多项式,对于等于在从所考虑的结点开始的树的分支中出现的结点名字被分配的标识符的输入,计算为零,对应于数据所被组织的树的结构来构造盲目多项式树和差分多项式树,使得结点多项式树中的每一个多项式等于盲目多项式树中相应的多项式与差分多项式树中相应的多项式的和,使得服务器系统可以得到盲目多项式树和差分多项式树中的一个,并且,客户端设备可以得到盲目多项式树和差分多项式树中的另外一个。
2.依照权利要求1的方法,其中,进一步包含为每个结点名字分配一个以x为变量的标识多项式,此多项式在x等于唯一的标识符时计算为零。
3.依照权利要求2的方法,其中,所述标识多项式为一阶多项式。
4.依照权利要求2或3的方法,进一步包含构建结点多项式树,使得对于树中的每一个结点,如果结点是叶子结点,结点多项式等于此结点的标识多项式,并且,否则结点多项式等于其标识多项式与其子结点的结点多项式的乘积。
5.依照权利要求1的方法,其中盲目多项式树对于客户端设备可用,并且差分多项式树对于服务器系统可用。
6.依照权利要求1的方法,其中,盲目多项式树通过(伪)随机选择盲目多项式的系数来创建。
7.依照权利要求5和6的方法,其中,通过使用于初始化伪随机数字发生器的种子对客户端设备可用,来使得盲目多项式树对于客户端设备可用,其中该伪随机数字发生器用于生成盲目多项式树的系数。
8.依照权利要求1的方法,包含,构建多个盲目多项式树,使得结点多项式树中的每一个多项式等于盲目多项式树中的对应多项式与差分多项式树中的对应多项式的和,并且,使得多个盲目多项式树之一或者差分多项式树对于服务器系统可用,并且其余的树对相应客户端设备可用。
9.依照权利要求1的方法,包含,将树中的数据结点转换为特里结构表示形式,从而,数据段中第二个字符之后的第一个字符被表示为所述第二个字符的子结点。
10.一种能够查询受保护数据的设备,数据以树的形式进行组织,树包含具有相应结点名字的结点,每个结点名字被分配一个唯一的标识符,该设备包含用于对应于数据所被组织的树的结构来构造结点多项式的树的装置,使得每一个结点多项式,对于等于在从所考虑的结点开始的树的分支中出现的结点名字被分配的标识符的输入,计算为零,用于对应于数据所被组织的树的结构来构造盲目多项式树和差分多项式树的装置,使得结点多项式树中的每一个多项式等于盲目多项式树中相应的多项式与差分多项式树中相应的多项式的和,用于使得服务器系统可以得到盲目多项式树和差分多项式树中的一个并且客户端设备可以得到盲目多项式树和差分多项式树中的另外一个的装置。
11.依照权利要求10的设备,被配置来作为客户端设备进行操作。
12.一个用于对服务器查询受保护数据的客户端设备,数据以树的形式进行组织,树包含具有相应结点名字的结点,每个结点名字被分配一个唯一的标识符,该客户端设备包含响应于接收到对于结点名字的查询来确定分配给该结点名字的唯一标识符的装置,给服务器系统发送请求的装置,该请求令服务器系统通过权利要求1所述的方法采用等于所确定的标识符的输入对服务器系统可得到的树中的多项式进行计算,通过权利要求1所述的方法采用等于所确定的标识符的输入对客户端设备可得到的树中的多项式进行计算的装置,用于确定从服务器系统接收的计算结果和由客户端设备计算的结果的和是否等于零的装置,将一个结点作为查询的答案返回的装置,为该结点所确定的和等于零并且该结点的任何子结点的和不等于零。
13.依照权利要求12的客户端设备,进一步包含,如果由所述服务器系统为根结点的分支计算的结果非零,则信号通知服务器系统停止对该特定分支中的多项式计算的装置。
14.依照权利要求12的客户端设备,进一步包含,将对包含在一个特定结点中的数据段的查询,转换为对于所述特定结点的查询和跟随的对该数据段的特里结构表示的查询的装置。
15.包含使得计算设备能够如权利要求10中的设备那样运行的指令的一种计算机程序产品。
16.包含使得计算设备能够如权利要求12中的客户端设备那样运行的指令的一种计算机程序产品。
全文摘要
用于查询受保护的树形式的结构化数据的方法和设备。构造对应的结点多项式树,使得每个结点多项式对于等于在从所考虑的结点开始的树的分支中出现的结点名字被分配的标识符的输入,计算为零。构造盲目多项式树和差分多项式树,使得结点多项式树中的每一个多项式等于盲目多项式树中相应的多项式与差分多项式树中相应的多项式的和。将盲目多项式树给予客户端,将差分多项式树给予服务器。通过组合客户端和服务器的计算结果,有可能识别与给定查询相匹配的结点。
文档编号G06F21/62GK1961269SQ200580017111
公开日2007年5月9日 申请日期2005年4月29日 优先权日2004年5月28日
发明者W·永克, R·布林克曼, J·M·杜门, B·舍恩马克斯 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1