專利名稱:用于查詢受保護(hù)的結(jié)構(gòu)化數(shù)據(jù)的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于查詢受保護(hù)的結(jié)構(gòu)化數(shù)據(jù)的方法和設(shè)備。
背景技術(shù):
在遠(yuǎn)程數(shù)據(jù)庫(kù)中存儲(chǔ)諸如XML結(jié)構(gòu)化文檔的需求日益增加。當(dāng)這樣的數(shù)據(jù)包含敏感信息,諸如病人信息或者(音頻)視頻內(nèi)容的有商業(yè)價(jià)值的元數(shù)據(jù)時(shí),數(shù)據(jù)應(yīng)當(dāng)受到保護(hù)。通常的方法是在將數(shù)據(jù)存儲(chǔ)到遠(yuǎn)程數(shù)據(jù)庫(kù)之前對(duì)其進(jìn)行加密。引起的問(wèn)題是如何使得客戶端設(shè)備隨后能夠?qū)?shù)據(jù)庫(kù)進(jìn)行查詢。最明顯的解決方法是下載整個(gè)數(shù)據(jù)庫(kù)到本地,并且隨后完成查詢。這樣當(dāng)然是相當(dāng)?shù)托实?。另外一個(gè)選擇是提供具有解密密鑰的數(shù)據(jù)庫(kù)服務(wù)器,但是,這個(gè)并不是通??梢缘玫綕M足的,它需要數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)中和管理它的人員的完全信任。
因此,在此領(lǐng)域的問(wèn)題是如何使得服務(wù)器可以高效地對(duì)加密的數(shù)據(jù)進(jìn)行查詢,特別是XML結(jié)構(gòu)化的數(shù)據(jù)。W3C推薦“XML加密語(yǔ)法”以便允許使用對(duì)稱和公共密鑰的組合來(lái)對(duì)XML數(shù)據(jù)進(jìn)行加密,其中,單元內(nèi)容通過(guò)使用對(duì)稱密鑰加密,而該對(duì)稱密鑰又使用接收者的公共密鑰予以加密。參考在http://www.w3.org/TR/xml-encryption-req的W3C注釋“XML加密需求”,2002年3月4日,和在http://www.w3.org/TR/xmlenc-core的W3C推薦標(biāo)準(zhǔn)“XML加密語(yǔ)法和處理”,2002年12月10日。
由于查詢是在XML數(shù)據(jù)上完成的基礎(chǔ)操作,要完成的第一步是定位圍繞對(duì)加密的XML數(shù)據(jù)的查詢的主題。對(duì)加密的XML數(shù)據(jù)進(jìn)行搜索的一種直接方法是首先對(duì)數(shù)據(jù)進(jìn)行解密,隨后在解密的XML數(shù)據(jù)上進(jìn)行搜索。但是,這樣不可避免地招致大量不必要的解密操作,導(dǎo)致查詢效率低下,特別是在被搜索的數(shù)據(jù)量很大,而搜索目標(biāo)僅僅來(lái)自被搜索數(shù)據(jù)中的一小部分時(shí)。
發(fā)明內(nèi)容
有利地,本發(fā)明提供了如權(quán)利要求1中所述的用于對(duì)受保護(hù)的數(shù)據(jù)進(jìn)行查詢的由計(jì)算機(jī)完成的方法和如權(quán)利要求9中所述的相應(yīng)的設(shè)備。本發(fā)明還提供了如權(quán)利要求11中所述的客戶端設(shè)備。
假設(shè)數(shù)據(jù)是以樹狀來(lái)組織的。樹的結(jié)點(diǎn)多項(xiàng)式是依照數(shù)據(jù)被組織的樹所對(duì)應(yīng)的結(jié)構(gòu)而被構(gòu)造的。該樹中每個(gè)結(jié)點(diǎn)多項(xiàng)式,對(duì)于某些輸入(該輸入等于從所考慮的結(jié)點(diǎn)開始的樹的分支中出現(xiàn)的某個(gè)結(jié)點(diǎn)名被分配的標(biāo)識(shí)符),計(jì)算為零。
所述構(gòu)造的樹被劃分為客戶端部分和服務(wù)器部分??蛻舳瞬糠直浑S機(jī)地選定,并且服務(wù)器部分是與原始數(shù)據(jù)樹的差。在對(duì)查詢的響應(yīng)中,客戶端和服務(wù)器均對(duì)在自己部分內(nèi)的多項(xiàng)式進(jìn)行計(jì)算,并且將結(jié)果發(fā)給查詢發(fā)起者(可能是客戶端本身)。這些結(jié)果的任一個(gè)均不包含重構(gòu)原始數(shù)據(jù)所需的足夠信息。因此,數(shù)據(jù)得到保護(hù)。
通過(guò)將客戶端部分和服務(wù)器部分的計(jì)算結(jié)果組合,可以識(shí)別出與給定查詢相匹配的結(jié)點(diǎn)。對(duì)于任何特定的結(jié)點(diǎn)名,所述兩部分的計(jì)算結(jié)果之和與原始結(jié)點(diǎn)多項(xiàng)式針對(duì)該特定結(jié)點(diǎn)名的計(jì)算結(jié)果相同。并且,如果此查詢的結(jié)點(diǎn)名字與該特殊結(jié)點(diǎn)名字的結(jié)點(diǎn)名字相匹配,此計(jì)算為零。因此,查詢可以在服務(wù)器也不知道答案時(shí)得到回答。
一旦查詢到匹配結(jié)點(diǎn),可以從服務(wù)器中檢索到它們(被加密)的內(nèi)容,并且由客戶端進(jìn)行解密。
在優(yōu)選實(shí)施例中,在樹中的數(shù)據(jù)結(jié)點(diǎn)被轉(zhuǎn)換成特里結(jié)構(gòu)(trie)表達(dá)形式,從而,數(shù)據(jù)段中在第二個(gè)字符之后的第一個(gè)字符,被表示為所述第二個(gè)字符的子結(jié)點(diǎn)。這使得可以對(duì)加密文檔中元素的數(shù)據(jù)內(nèi)容進(jìn)行搜索。
本發(fā)明的這些和其他方面參考在附圖中顯示的說(shuō)明性實(shí)施例將得到闡述并且變得顯而易見,其中,圖1示意性地示出了依照本發(fā)明的系統(tǒng)的概圖。
圖2(a)示出一個(gè)基于XML的示例文檔的樹表示圖。
圖2(b)示出一個(gè)分配給結(jié)點(diǎn)名字的結(jié)點(diǎn)多項(xiàng)式的樹。
圖3(a)示出F5[x]中的結(jié)點(diǎn)多項(xiàng)式的樹。
圖3(b)示出Z[x2+1]中的結(jié)點(diǎn)多項(xiàng)式的樹。
圖4(a)示出F5[x]中的盲目多項(xiàng)式(blinding polynomial)的樹。
圖4(b)示出F5[x]中的差分多項(xiàng)式的樹。
圖5(a)示出Z[x2+1]中的盲目多項(xiàng)式的樹。
圖5(b)示出Z[x2+1]中的差分多項(xiàng)式的樹。
圖6(a)示出圖4(a)中盲目多項(xiàng)式的樹的所有多項(xiàng)式的F5[x]中的計(jì)算。
圖6(b)示出圖4(b)中差分多項(xiàng)式樹的所有多項(xiàng)式的F5[x]中的計(jì)算。
圖6(c)示出圖6(a)和6(b)中的多項(xiàng)式的對(duì)應(yīng)計(jì)算的F5[x]中的對(duì)應(yīng)和。
圖7(a)示出圖5(a)中盲目多項(xiàng)式樹的所有多項(xiàng)式在Z[x2+1]中的計(jì)算。
圖7(b)示出圖5(b)中差分多項(xiàng)式樹的所有多項(xiàng)式在Z[x2+1]中的計(jì)算。
圖7(c)示出圖7(a)和7(b)中多項(xiàng)式的對(duì)應(yīng)計(jì)算在Z[x2+1]中的對(duì)應(yīng)和。
圖8(a)示出一個(gè)具有數(shù)據(jù)內(nèi)容的XML元素的例子。
圖8(b)示出此XML元素壓縮的特里結(jié)構(gòu)表示;和圖8(c)示出此XML元素未壓縮的特里結(jié)構(gòu)表示。
貫穿這些圖,相同的參考數(shù)字指示相似的或者對(duì)應(yīng)的特性。附圖中所示的這些特性的一部分典型地由軟件來(lái)實(shí)現(xiàn),并且同樣表示諸如軟件模塊或?qū)ο蟮能浖?shí)體。
具體實(shí)施例方式
圖1示意性地示出了依照本發(fā)明的系統(tǒng)的概圖。如同本領(lǐng)域所公知的,服務(wù)器100維護(hù)著具有數(shù)據(jù)的數(shù)據(jù)庫(kù)101,并且被配置來(lái)對(duì)來(lái)自一個(gè)或者多個(gè)客戶端102的查詢進(jìn)行應(yīng)答。從諸如因特網(wǎng)的網(wǎng)絡(luò)110接收到查詢。數(shù)據(jù)庫(kù)101中存儲(chǔ)的數(shù)據(jù)由數(shù)據(jù)源系統(tǒng)103供應(yīng)。此系統(tǒng)103可以是客戶端102中的一個(gè),但是也可以是一個(gè)獨(dú)立的系統(tǒng)。當(dāng)然所述數(shù)據(jù)可以來(lái)自多個(gè)源,并且由服務(wù)器100合并。
例如,客戶端102可以是醫(yī)院中輸入病人信息的終端。病人信息隨后又被存儲(chǔ)在數(shù)據(jù)庫(kù)101中,由于這樣或者那樣的原因,數(shù)據(jù)庫(kù)位于一個(gè)遠(yuǎn)程地址。病人信息由于隱私的緣故,而必須受到保護(hù)。隨后,使用客戶端102來(lái)對(duì)數(shù)據(jù)庫(kù)101進(jìn)行查詢,以便得到先前輸入的病人的信息。這個(gè)情況中,數(shù)據(jù)來(lái)源系統(tǒng)103與客戶端102相同。
在另外一個(gè)實(shí)施例中,數(shù)據(jù)來(lái)源系統(tǒng)103可以是內(nèi)容提供商,它將諸如電影或音樂的有用內(nèi)容提供給客戶。此外,內(nèi)容提供商允許它的客戶使用諸如它所出售的內(nèi)容的名字或者藝術(shù)家的元數(shù)據(jù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢。由于提供商的效率的原因,可以由第三方來(lái)提供數(shù)據(jù)庫(kù)的管理。由于這樣的數(shù)據(jù)庫(kù)的商業(yè)價(jià)值昂貴,提供商需要對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行保護(hù)。
假設(shè)數(shù)據(jù)具有類似樹的結(jié)構(gòu),在基于XML的文檔中是這樣的。在XML文檔中,每個(gè)結(jié)點(diǎn)具有一個(gè)名字,并且可能具有一個(gè)值。兩個(gè)結(jié)點(diǎn)之間不會(huì)多于一個(gè)路徑。下面示出一個(gè)示例的基于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(顧客)”元素成為樹的根或者最頂端的結(jié)點(diǎn)。在它的下面是兩個(gè)名為“client(客戶)”的結(jié)點(diǎn),每一個(gè)結(jié)點(diǎn)有名為“name(名字)”的一個(gè)子結(jié)點(diǎn)。名為“name”’的結(jié)點(diǎn)是葉子結(jié)點(diǎn),也就是它們沒有子結(jié)點(diǎn)。
數(shù)據(jù)也可以是索引結(jié)構(gòu),以允許對(duì)諸如e-mail消息的扁平文本文件進(jìn)行搜索。非結(jié)構(gòu)化的數(shù)據(jù)可以首先被轉(zhuǎn)換為類似樹的結(jié)構(gòu)化格式。
希望對(duì)數(shù)據(jù)進(jìn)行保護(hù),使得在服務(wù)器100上不具有足夠的信息來(lái)恢復(fù)數(shù)據(jù)。因此,數(shù)據(jù)來(lái)源系統(tǒng)103以如下受保護(hù)的格式提供數(shù)據(jù)。
首先為每個(gè)結(jié)點(diǎn)的名字分配一個(gè)標(biāo)識(shí)符和對(duì)應(yīng)的標(biāo)識(shí)多項(xiàng)式i(x),對(duì)于等于結(jié)點(diǎn)名字標(biāo)識(shí)符的x該多項(xiàng)式計(jì)算為零。下面的表1中示出了結(jié)點(diǎn)名字映射到標(biāo)識(shí)符的例子。標(biāo)識(shí)符對(duì)于每個(gè)名字必須是唯一的。例如,它們可以被(偽)隨機(jī)地選擇或者由操作員進(jìn)行分配。使用這個(gè)映射,可以構(gòu)造標(biāo)識(shí)多項(xiàng)式i(x)。優(yōu)選地,標(biāo)識(shí)多項(xiàng)式是一階多項(xiàng)式,盡管這個(gè)不是必須的。一階多項(xiàng)式只對(duì)一個(gè)輸入計(jì)算為零。使用更高階的多項(xiàng)式意味著需要對(duì)答案進(jìn)行過(guò)濾來(lái)找到正確的答案。
在貫穿本文使用的示例實(shí)施例中,使用的一種簡(jiǎn)單構(gòu)造是形如i(x)=x-n的多項(xiàng)式,其中,n等于賦給該結(jié)點(diǎn)名字的標(biāo)識(shí)符。
如果需要,可以將結(jié)點(diǎn)名字對(duì)服務(wù)器100保密,從結(jié)點(diǎn)名字到標(biāo)識(shí)符的映射因此也不提供給服務(wù)器100。在下文將明顯看出,服務(wù)器100不需要這些信息來(lái)完成查詢。
接著,給每一個(gè)結(jié)點(diǎn)的名字分配一個(gè)結(jié)點(diǎn)多項(xiàng)式n(x)。對(duì)于一個(gè)葉子結(jié)點(diǎn),它的結(jié)點(diǎn)多項(xiàng)式等于它的標(biāo)識(shí)多項(xiàng)式。對(duì)于非葉子結(jié)點(diǎn),它的結(jié)點(diǎn)多項(xiàng)式由它的標(biāo)識(shí)多項(xiàng)式和它所有子結(jié)點(diǎn)的結(jié)點(diǎn)多項(xiàng)式的乘積計(jì)算得出。這些在圖2(b)中進(jìn)行說(shuō)明。
為了避免高階次的多項(xiàng)式,優(yōu)選在有限域內(nèi)進(jìn)行計(jì)算,例如Fp[x]或者Z[r(x)]。使用有限域不損失任何信息。
在第一個(gè)例子中,多項(xiàng)式系數(shù)以模p降階,如果p是質(zhì)數(shù),則a∈Fp∶ap-1≡1(mod p)。因此,每一個(gè)多項(xiàng)式可以降階為具有Fp中的系數(shù)的階次低于p-1的多項(xiàng)式。這個(gè)在圖3(a)中選取p=5來(lái)進(jìn)行說(shuō)明。
在第二個(gè)例子中,多項(xiàng)式以模一個(gè)不可約分的多項(xiàng)式r(x)降階。多項(xiàng)式的階次此時(shí)小于r(x)的階次。但是,系數(shù)是Z的元素,也就是整數(shù),并且可以由于具有很多結(jié)點(diǎn)名字的數(shù)據(jù)結(jié)構(gòu)而變得很大。這個(gè)在圖3(b)中以選擇r(x)=x2+1來(lái)進(jìn)行說(shuō)明。
總結(jié)一下,下面是用于示例實(shí)施例的結(jié)點(diǎn)名字、分配的標(biāo)識(shí)符、結(jié)點(diǎn)名字的標(biāo)識(shí)多項(xiàng)式和結(jié)點(diǎn)多項(xiàng)式的概括。
表1
創(chuàng)建了結(jié)構(gòu)化的多項(xiàng)式樹,下一步是將該樹分解為服務(wù)器部分和客戶端部分。服務(wù)器部分存儲(chǔ)在服務(wù)器100上,客戶端存儲(chǔ)在將要隨后查詢服務(wù)器的客戶端102上。如果數(shù)據(jù)來(lái)源系統(tǒng)103不與客戶端102的系統(tǒng)相同,需要將客戶端部分傳輸?shù)娇蛻舳?02。
在優(yōu)選的實(shí)施例中,多項(xiàng)式樹被按照如下所示分解。每一個(gè)個(gè)體結(jié)點(diǎn)被分配為它自己(偽)隨機(jī)選擇的與其結(jié)點(diǎn)多項(xiàng)式同階的盲目多項(xiàng)式。這意味著兩個(gè)具有相同名字的結(jié)點(diǎn)通常具有被分配的不同盲目多項(xiàng)式。對(duì)圖2(a)中所示的示例樹的這種的分配例子被顯示在圖4(a)中。在圖4(a)中的樹將作為盲目多項(xiàng)式的樹。此多項(xiàng)式全部在F5[x]中。
接著,對(duì)于每個(gè)結(jié)點(diǎn),計(jì)算差分多項(xiàng)式,使得盲目多項(xiàng)式與差分多項(xiàng)式的和等于結(jié)點(diǎn)多項(xiàng)式。在圖4(b)中顯示對(duì)應(yīng)“差分多項(xiàng)式樹”的例子樹。對(duì)于每一個(gè)結(jié)點(diǎn),如下為真,如果該結(jié)點(diǎn)在圖4(a)中的盲目多項(xiàng)式被加到圖4(b)中的對(duì)應(yīng)差分多項(xiàng)式,結(jié)果等于圖3(a)中此結(jié)點(diǎn)的結(jié)點(diǎn)多項(xiàng)式。例如,圖4(a)中根結(jié)點(diǎn)加上圖4(b)中根結(jié)點(diǎn)為(2x3+3x2+2x+2)+(x3+x+1)=3x3+3x2+3x+3等于圖3(a)中的根結(jié)點(diǎn)。
圖5(a)和5(b)中示出了Z[x2+1]中對(duì)應(yīng)的例子。如果圖5(a)中的根結(jié)點(diǎn)與圖5(b)的根結(jié)點(diǎn)相加,結(jié)果為圖3(b)的根結(jié)點(diǎn)(9x-12)+(256x+57)=265x+45客戶端102和服務(wù)器100中的一個(gè)被賦給盲目多項(xiàng)式樹,另外一個(gè)被賦給差分多項(xiàng)式樹。這些樹的任一個(gè)都不包含重構(gòu)原始多項(xiàng)式樹所需的足夠信息。該樹可以被通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸,或在例如CD-ROM的數(shù)據(jù)載體上可得。
原則上,客戶端102和服務(wù)器100的哪一個(gè)接收哪個(gè)樹是無(wú)所謂的。但是,如果客戶端102具有有限存儲(chǔ)容量,優(yōu)選將差分多項(xiàng)式樹分配給服務(wù)器100??蛻舳?02可以僅被提供初始化偽隨機(jī)數(shù)字發(fā)生器的種子,該偽隨機(jī)數(shù)字發(fā)生器用于產(chǎn)生盲目多項(xiàng)式??蛻舳?02可以隨后在任何需要的時(shí)候,再次生成盲目多項(xiàng)式。例如,移動(dòng)電話有有限的存儲(chǔ)空間,但是它足可以完成所需的計(jì)算。
將盲目多項(xiàng)式樹和差分多項(xiàng)式樹分別提供給客戶端和服務(wù)器后,客戶端可以對(duì)服務(wù)器進(jìn)行查詢。討論第一個(gè)簡(jiǎn)單的元素查詢,也就是在樹中查找給定結(jié)點(diǎn)名字的結(jié)點(diǎn)。
稱為Xpath的W3C推薦標(biāo)準(zhǔn)描述了對(duì)包含某個(gè)路徑的XML文檔的搜索。在XPath中,對(duì)于名為“client”的結(jié)點(diǎn)的元素查找被表示為“//client”。通常,服務(wù)器100通過(guò)遍歷整個(gè)樹并且對(duì)比所有結(jié)點(diǎn)名字和名字“client”來(lái)完成這樣的查找。這樣做相當(dāng)?shù)托В⑶以诜?wù)器100由于只具有差分多項(xiàng)式樹(或盲目多項(xiàng)式樹)而不知道實(shí)際的結(jié)點(diǎn)名字時(shí)是不可能實(shí)現(xiàn)的。
依照本發(fā)明,客戶端102首先確定分配給所考慮的結(jié)點(diǎn)名字的標(biāo)識(shí)符。對(duì)于名字“client”,如上所示,標(biāo)識(shí)符為“2”??蛻舳?02隨后請(qǐng)求服務(wù)器100采用x等于該標(biāo)識(shí)符,在例子中x=2,對(duì)該樹中多項(xiàng)式進(jìn)行計(jì)算,并且返回結(jié)果。優(yōu)選地,服務(wù)器100應(yīng)在每一個(gè)多項(xiàng)式完成計(jì)算之后,馬上將每一個(gè)結(jié)果返回,這樣客戶端102可以向服務(wù)器100發(fā)信號(hào)停止計(jì)算,來(lái)避免進(jìn)一步進(jìn)行不必要的計(jì)算。這些將在下文進(jìn)行解釋。
客戶端102本身也對(duì)其多項(xiàng)式按照x=2的給定值一一進(jìn)行計(jì)算。并且客戶端102為每一個(gè)結(jié)點(diǎn)計(jì)算其自己的計(jì)算結(jié)果與由服務(wù)器100返回的該結(jié)點(diǎn)的計(jì)算結(jié)果之和。如果和為零,則該結(jié)點(diǎn)的結(jié)點(diǎn)多項(xiàng)式包含因子(x-2)。這表明要么該結(jié)點(diǎn)具有結(jié)點(diǎn)名“client”,要么其下面的某個(gè)結(jié)點(diǎn)具有該名字。
如果和不為零,則結(jié)點(diǎn)多項(xiàng)式不包含因子(x-2)。這表明在這個(gè)結(jié)點(diǎn)下的任意位置都沒有結(jié)點(diǎn)名為“client”的結(jié)點(diǎn)。因此,在該分支中不必進(jìn)行進(jìn)一步搜索。客戶端102可以在此時(shí)向服務(wù)器100發(fā)信號(hào),通知它停止對(duì)該分支中的多項(xiàng)式的計(jì)算。
每一個(gè)和為零且其子結(jié)點(diǎn)的和不為零的結(jié)點(diǎn)表示該查詢的答案。這在圖6(a)-6(c)中顯示。所有的計(jì)算在F5[x]中。Z[x2+1]中的同樣的例子顯示于圖7(a)-7(c)中。
圖6(a)示出對(duì)客戶端樹(此處為盲目多項(xiàng)式)的所有多項(xiàng)式的計(jì)算。圖6(b)示出對(duì)服務(wù)器樹(此處為差分多項(xiàng)式)的所有多項(xiàng)式的計(jì)算。圖6(c)示出圖6(a)和6(b)中對(duì)應(yīng)多項(xiàng)式計(jì)算的對(duì)應(yīng)和。通過(guò)對(duì)比圖6(c)與圖2(a)可以驗(yàn)證,圖2(a)中名為“client”的結(jié)點(diǎn)具有零和,并且,它的子結(jié)點(diǎn)和不為零。結(jié)點(diǎn)“customers”具有零和,并且子結(jié)點(diǎn)的和也為零,表示在此結(jié)點(diǎn)下有一個(gè)或者多個(gè)結(jié)點(diǎn)名為“client”。
如果一個(gè)結(jié)點(diǎn)名可以在樹的多個(gè)層出現(xiàn),這個(gè)方法不傳遞完全準(zhǔn)確的結(jié)果。例如,如果數(shù)據(jù)按照如下結(jié)構(gòu)組織1.<?xml version=′1.0′?>
2.<customers>
3.<client>
4.<name>
5.<client/>
6.</name>
7.</client>
8.</customers>
則在行3的名為“client”的結(jié)點(diǎn)不被識(shí)別為一個(gè)匹配的結(jié)點(diǎn)。這個(gè)結(jié)點(diǎn)具有和為零的子結(jié)點(diǎn),因?yàn)榇嬖谝粋€(gè)后繼結(jié)點(diǎn)也名為“client”,即在行5的這個(gè)事實(shí)。
可以有更好的,不具有這個(gè)問(wèn)題的識(shí)別結(jié)點(diǎn)匹配的方法。它需要對(duì)于某些結(jié)點(diǎn)重構(gòu)原始結(jié)點(diǎn)多項(xiàng)式。假設(shè)客戶端102已經(jīng)接收到盲目多項(xiàng)式樹。在接收到來(lái)自服務(wù)器100的反饋答案,并且已經(jīng)如上所述識(shí)別了某些結(jié)點(diǎn)之后,客戶端102從服務(wù)器100請(qǐng)求每一個(gè)所識(shí)別結(jié)點(diǎn)的差分多項(xiàng)式和該結(jié)點(diǎn)直接子結(jié)點(diǎn)的差分多項(xiàng)式。例如,在圖6(c)的例子中,根結(jié)點(diǎn)是匹配結(jié)點(diǎn)。客戶端102將請(qǐng)求根結(jié)點(diǎn)的差分多項(xiàng)式和根結(jié)點(diǎn)下直接的兩個(gè)結(jié)點(diǎn)的差分多項(xiàng)式。
客戶端102此時(shí)可以通過(guò)簡(jiǎn)單地將相關(guān)盲目多項(xiàng)式和差分多項(xiàng)式相加,來(lái)重構(gòu)所考慮的每一個(gè)結(jié)點(diǎn)的結(jié)點(diǎn)多項(xiàng)式。隨后,所述和為零的結(jié)點(diǎn)的結(jié)點(diǎn)多項(xiàng)式由其直接子結(jié)點(diǎn)的結(jié)點(diǎn)多項(xiàng)式相除。這揭示了和為零的結(jié)點(diǎn)的標(biāo)識(shí)多項(xiàng)式。隨后,可以容易地驗(yàn)證對(duì)于給定的查詢,是否標(biāo)識(shí)多項(xiàng)式被計(jì)算為零。從這點(diǎn)可以推斷,所考慮的結(jié)點(diǎn)是否與查詢匹配,或者應(yīng)在子結(jié)點(diǎn)之一中查找答案。
進(jìn)一步可以檢測(cè)來(lái)自服務(wù)器的回答反饋的正確性。令f是一個(gè)結(jié)點(diǎn)的結(jié)點(diǎn)多項(xiàng)式,并且q1......qn是其第n個(gè)直接子結(jié)點(diǎn)的結(jié)點(diǎn)多項(xiàng)式。要檢查答案的正確性,需要在隨后的方程中求解tf=(x-t)Πi=1nqi(modr)]]>
t的值應(yīng)該等于在查詢中使用的結(jié)點(diǎn)名字的標(biāo)識(shí)符。在例子中,t應(yīng)該等于2,因?yàn)榇藰?biāo)識(shí)符被賦給在查詢中使用的結(jié)點(diǎn)名字“client”。這個(gè)可以如下被解出d=d(r)f-q1...qn(x-t)=0(mod r)其中有ad-1xd-1+ad-2xd-2+...+a1x+a0=0其中,每一個(gè)ai是t的函數(shù)。這個(gè)可以記做如下的系列方程。
ad-1(t)=0ad-2(t)=0...
a0(t)=0一個(gè)單獨(dú)的方程足以求解t。其他的方程可以被用來(lái)對(duì)由服務(wù)器提供的答案進(jìn)行檢驗(yàn)。如果服務(wù)器是被信任提供正確答案的,只有最后一個(gè)方程就足夠。在這種情況下,只有存儲(chǔ)在服務(wù)器上的每一個(gè)多項(xiàng)式的常數(shù)因子必須被傳輸。這降低了帶寬,并提高了效率,但是降低了安全性。
找到匹配的結(jié)點(diǎn)之后,客戶端102此時(shí)可以從服務(wù)器100請(qǐng)求這些結(jié)點(diǎn)的(加密的)內(nèi)容并且在本地對(duì)內(nèi)容解密。這樣,只需要將匹配結(jié)點(diǎn)的內(nèi)容從服務(wù)器100傳輸?shù)娇蛻舳?02,而不是傳輸整個(gè)加密的數(shù)據(jù)庫(kù)。
在一些應(yīng)用中,結(jié)點(diǎn)可能為空,也就是不含內(nèi)容。所有的信息此時(shí)被包含在結(jié)點(diǎn)名字和樹中結(jié)點(diǎn)的結(jié)構(gòu)中。
本發(fā)明還允許對(duì)受保護(hù)的數(shù)據(jù)完成更詳細(xì)的XPath查詢。諸如“//a/b//c/d/e”的查詢當(dāng)然可以從左到右來(lái)進(jìn)行計(jì)算。也就是說(shuō),先在樹中搜索“a”的存在,隨后在具有該名字的結(jié)點(diǎn)下的分支中搜索名為“b”的結(jié)點(diǎn),如此類推。這可以更加高效地一次計(jì)算整個(gè)查詢。
樹中的每一個(gè)多項(xiàng)式包含其所有后繼結(jié)點(diǎn)的根結(jié)點(diǎn)。這允許單獨(dú)的查詢來(lái)查找包含任意特定后繼結(jié)點(diǎn)的所有元素。解決如上給出的查詢例子需要如下步驟1.從根結(jié)點(diǎn)找到所有的名為′a′并且在樹的更深層中某處具有名為′b′,′c′,′d′知′e′的元素的元素。
2.從找到的所有名為′a′的元素中,找到所有名為′b′并且在樹的更深層中某處具有名為′c′,′d′和′e′元素的直接子結(jié)點(diǎn)。
3.從找到的所有名為′b′的元素中,找到所有名為′c′并且在樹的更深層中某處具有名為′d′和′e′的元素的子孫結(jié)點(diǎn)。
4.從找到的所有名為′c′的元素中,找到所有名為′d′并且在樹的更深層中某處具有名為′e′元素的直接子結(jié)點(diǎn)。
5.從找到的所有名為′d′的元素中,找到所有名為′e′的直接子結(jié)點(diǎn)。
上述實(shí)施例假設(shè)從固定大小的集合中選出元素名字,例如DTD中所描述的集合,但是因?yàn)椴煌臄?shù)據(jù)元素的數(shù)目可能為無(wú)限大而不能被用做XML元素的內(nèi)容。下面展示的實(shí)施例也適于在數(shù)據(jù)中進(jìn)行搜索。
在此實(shí)施例中,原始XML文檔中的數(shù)據(jù)字符串被翻譯為結(jié)點(diǎn)路徑,其中,每一個(gè)結(jié)點(diǎn)選自一個(gè)小的集合。優(yōu)選地,這個(gè)小集合是字母表,也就是,{′A′...′Z′,′a′...′z′},盡管當(dāng)然其他字符也可以包含在此集合中。
選擇該集合使得所有的數(shù)據(jù)元素能夠用來(lái)自該集合的字符表示。但是,也可能通過(guò)選擇數(shù)據(jù)元素中使用的所有的字符的有限子集來(lái)構(gòu)造集合。例如,標(biāo)點(diǎn)符號(hào),空格等可以被排除。集合的選擇決定可以在數(shù)據(jù)上進(jìn)行何種查詢。如果集合僅僅包含字母表,則僅能夠完成對(duì)單詞的查詢。
建立集合之后,下一步是將數(shù)據(jù)結(jié)點(diǎn)轉(zhuǎn)換為它們所謂的“特里結(jié)構(gòu)”表示。這種表示形式在Edward Fredkin,BoltBeranek,Newman.Trie memory.Communications of ACM,3(9)490-499,1960年9月,中有描述。在數(shù)據(jù)段的特里結(jié)構(gòu)表示形式中,數(shù)據(jù)段中在第二個(gè)字符之后的第一個(gè)字符,被表示為所述第二個(gè)字符的子結(jié)點(diǎn)。
圖8(a)示出具有數(shù)據(jù)內(nèi)容的XML元素的例子。在此例中,元素被稱為“name”,并且包含數(shù)據(jù)“Joan Johnson”。
圖8(b)示出此XML元素的壓縮的特里結(jié)構(gòu)表示形式。圖8(c)示出此XML元素未被壓縮的特里結(jié)構(gòu)表示形式。未被壓縮的特里結(jié)構(gòu)儲(chǔ)存著與原始信息完全相同的信息,而壓縮的特里結(jié)構(gòu)損失了單詞的順序和基數(shù)。在此例中,字符串被分為單詞,由路徑表示,并且,隨后每一個(gè)路徑被分為若干個(gè)字符。也非??赡艽嬖趯⒆址纸鉃榻Y(jié)點(diǎn)的其他方法。如這些圖中可以看到的,在數(shù)據(jù)段“Joan”中在字符“J”的后面的字符“o”,被表示結(jié)點(diǎn)“J”的子結(jié)點(diǎn)。
這個(gè)過(guò)程建立起與集合中元素相同多的新的元素名字。例如,當(dāng)文本被分解為字母表(a,b,...,z)中的小寫字母時(shí),這個(gè)處理給予26個(gè)新名字。為了使得多項(xiàng)式盡量小,質(zhì)數(shù)因子p為29是合理的。每一個(gè)字母將占p*log_2(p)比特=18字節(jié)。因此,在最壞的情況下(當(dāng)沒有公共前綴時(shí)),文檔的大小依照此常數(shù)迅猛增加。但是,文檔越大,公共前綴的數(shù)目也越大,并且因此,文檔大小的增長(zhǎng)將降低。甚至有微小可能,轉(zhuǎn)換后的文檔小于原始文檔。
將原始的XML樹翻譯為(壓縮的)特里結(jié)構(gòu)后,可以使用如上的相同策略對(duì)文檔編碼。此時(shí)能夠?qū)ML文檔中的數(shù)據(jù)內(nèi)容進(jìn)行搜索。例如,此時(shí)這個(gè)查詢可能是/name[contains(text(),“Joan”)]此查詢搜索所有包含文本“Joan”的文本(數(shù)據(jù))結(jié)點(diǎn)。此查詢首先被翻譯為/name[//J/o/a/n]并且隨后翻譯為/map(name)[//map(J)/map(o)/map(a)/map(n)]簡(jiǎn)單的規(guī)則表達(dá)類似.和.*可以被映射為它們的特里結(jié)構(gòu)對(duì)等表示*如//。
使用上述的搜索策略,首先定位具有名字“Joan”的XML元素。下一步是確定該元素是否包含數(shù)據(jù)串“Joan”。這是通過(guò)對(duì)該元素(和其子結(jié)點(diǎn))查詢“J/o/a/n”來(lái)實(shí)現(xiàn),完全同上所述。換句話說(shuō),查詢“Joan”被轉(zhuǎn)換為對(duì)“Joan”的特里結(jié)構(gòu)表示形式的查詢。
在圖8(b)和(c)中可以看出,在名為“name”的結(jié)點(diǎn)下第一個(gè)(并且唯一的)子結(jié)點(diǎn)是名為“J”的結(jié)點(diǎn)。下面是結(jié)點(diǎn)“o”,在結(jié)點(diǎn)“o”下跟隨著“Joan”中的其它字符“a”和“n”的結(jié)點(diǎn)。因此,使用上述策略查詢“J/o/a/n”將揭示是否在結(jié)點(diǎn)“name”中包含值“Joan”。
如前文所解釋的,此實(shí)施例使得在由最初選定的集合中的字符組成的文檔中進(jìn)行數(shù)據(jù)查詢成為可能。利用集合{′A′,...′Z′,′a′...′z′}可以完成對(duì)單詞的查詢。數(shù)據(jù)中的不在所述集合中的字符將優(yōu)選地在特里結(jié)構(gòu)中被省去,雖然它們也可以被映射為特定分配的字符。通過(guò)在特里結(jié)構(gòu)中省略這樣的字符,在查詢中不需要指定這種字符。例如,在圖8(b)的特里結(jié)構(gòu)中,盡管在查詢中“Joan”和“Johnson”之間的空格字符不提供在特里結(jié)構(gòu)中,對(duì)“Joan Johnson”的查詢也能夠成功。
在進(jìn)一步的優(yōu)化中,通過(guò)確定數(shù)據(jù)元素中使用的所有唯一字符來(lái)構(gòu)建字符集合??蛇x地,可以檢查XML文檔來(lái)確定它的編碼,這樣可以檢查它使用了何種字符集合。隨后選擇所述集合與字符集合相同。這給出相當(dāng)大的集合,特別是當(dāng)使用Unicode字符集時(shí),但是此時(shí)可以對(duì)每一個(gè)可能的查詢進(jìn)行搜索。
為了進(jìn)行必要的計(jì)算,可以為服務(wù)器100和客戶端102提供特別編寫的軟件和/或硬件。由于大部分的計(jì)算是對(duì)多項(xiàng)式進(jìn)行計(jì)算,標(biāo)準(zhǔn)的CPU可以被用于運(yùn)行該軟件。
應(yīng)該注意,上述實(shí)施例對(duì)本發(fā)明進(jìn)行舉例說(shuō)明,而不是進(jìn)行限制,并且,本領(lǐng)域的技術(shù)人員能夠在不偏離隨后所附權(quán)利要求的范圍的情況下設(shè)計(jì)許多替代實(shí)施例。
例如,可能在第一個(gè)服務(wù)器上存儲(chǔ)盲目多項(xiàng)式樹,在第二個(gè)服務(wù)器上存儲(chǔ)差分多項(xiàng)式樹??蛻舳丝梢噪S后請(qǐng)求兩個(gè)服務(wù)器用給定x值對(duì)它們的多項(xiàng)式進(jìn)行計(jì)算,并且,只需要加法計(jì)算出結(jié)果。這樣,客戶端不需要自己對(duì)任何多項(xiàng)式進(jìn)行計(jì)算。
具有結(jié)點(diǎn)多項(xiàng)式的樹可以被分為多于兩個(gè)樹,這樣完成一個(gè)查詢需要多于兩方參與。如此做的一種直接的方法是為每個(gè)結(jié)點(diǎn)選擇多個(gè)(偽)隨機(jī)盲目多項(xiàng)式。隨后為每個(gè)結(jié)點(diǎn)選擇差分多項(xiàng)式,使得此結(jié)點(diǎn)的所有盲目多項(xiàng)式和差分多項(xiàng)式的和等于此結(jié)點(diǎn)的結(jié)點(diǎn)多項(xiàng)式。每一方接收盲目多項(xiàng)式樹之一或者差分多項(xiàng)式樹。通過(guò)將一個(gè)結(jié)點(diǎn)的所有多項(xiàng)式的所有計(jì)算結(jié)果相加,可以檢驗(yàn)該結(jié)點(diǎn)是否與查詢匹配。
在權(quán)利要求中,任何位于括號(hào)之間的參考符號(hào)不應(yīng)視為對(duì)權(quán)利要求的限制。詞匯“包含”不排除在權(quán)利要求中列出元素件或者步驟之外的其它元素或步驟的存在。元素前的詞匯“一個(gè)”不排除多個(gè)這種元素的存在。
本發(fā)明可以通過(guò)包含多個(gè)不同元件的硬件和適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。權(quán)利要求中引用的“方法”可以由相應(yīng)的軟件庫(kù)或者模塊來(lái)實(shí)例化。多種方法可以以一個(gè)單獨(dú)的計(jì)算機(jī)程序?qū)嵗?br>
在列舉若干裝置的設(shè)備權(quán)利要求中,這些裝置中的幾個(gè)可以由一個(gè)或相同的硬件項(xiàng)來(lái)實(shí)現(xiàn)。在相互不同的獨(dú)立權(quán)利要求中闡述某些方法或裝置的事實(shí),并不意味著不能使用這些方法或裝置的組合來(lái)獲益。
權(quán)利要求
1.一種能夠?qū)κ鼙Wo(hù)數(shù)據(jù)進(jìn)行查詢的由計(jì)算機(jī)完成的方法,數(shù)據(jù)以樹的形式進(jìn)行組織,樹包含具有相應(yīng)結(jié)點(diǎn)名字的結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)名字被分配一個(gè)唯一的標(biāo)識(shí)符,該方法包含對(duì)應(yīng)數(shù)據(jù)所被組織的樹的結(jié)構(gòu)來(lái)構(gòu)造結(jié)點(diǎn)多項(xiàng)式的樹,使得每一個(gè)結(jié)點(diǎn)多項(xiàng)式,對(duì)于等于在從所考慮的結(jié)點(diǎn)開始的樹的分支中出現(xiàn)的結(jié)點(diǎn)名字被分配的標(biāo)識(shí)符的輸入,計(jì)算為零,對(duì)應(yīng)于數(shù)據(jù)所被組織的樹的結(jié)構(gòu)來(lái)構(gòu)造盲目多項(xiàng)式樹和差分多項(xiàng)式樹,使得結(jié)點(diǎn)多項(xiàng)式樹中的每一個(gè)多項(xiàng)式等于盲目多項(xiàng)式樹中相應(yīng)的多項(xiàng)式與差分多項(xiàng)式樹中相應(yīng)的多項(xiàng)式的和,使得服務(wù)器系統(tǒng)可以得到盲目多項(xiàng)式樹和差分多項(xiàng)式樹中的一個(gè),并且,客戶端設(shè)備可以得到盲目多項(xiàng)式樹和差分多項(xiàng)式樹中的另外一個(gè)。
2.依照權(quán)利要求1的方法,其中,進(jìn)一步包含為每個(gè)結(jié)點(diǎn)名字分配一個(gè)以x為變量的標(biāo)識(shí)多項(xiàng)式,此多項(xiàng)式在x等于唯一的標(biāo)識(shí)符時(shí)計(jì)算為零。
3.依照權(quán)利要求2的方法,其中,所述標(biāo)識(shí)多項(xiàng)式為一階多項(xiàng)式。
4.依照權(quán)利要求2或3的方法,進(jìn)一步包含構(gòu)建結(jié)點(diǎn)多項(xiàng)式樹,使得對(duì)于樹中的每一個(gè)結(jié)點(diǎn),如果結(jié)點(diǎn)是葉子結(jié)點(diǎn),結(jié)點(diǎn)多項(xiàng)式等于此結(jié)點(diǎn)的標(biāo)識(shí)多項(xiàng)式,并且,否則結(jié)點(diǎn)多項(xiàng)式等于其標(biāo)識(shí)多項(xiàng)式與其子結(jié)點(diǎn)的結(jié)點(diǎn)多項(xiàng)式的乘積。
5.依照權(quán)利要求1的方法,其中盲目多項(xiàng)式樹對(duì)于客戶端設(shè)備可用,并且差分多項(xiàng)式樹對(duì)于服務(wù)器系統(tǒng)可用。
6.依照權(quán)利要求1的方法,其中,盲目多項(xiàng)式樹通過(guò)(偽)隨機(jī)選擇盲目多項(xiàng)式的系數(shù)來(lái)創(chuàng)建。
7.依照權(quán)利要求5和6的方法,其中,通過(guò)使用于初始化偽隨機(jī)數(shù)字發(fā)生器的種子對(duì)客戶端設(shè)備可用,來(lái)使得盲目多項(xiàng)式樹對(duì)于客戶端設(shè)備可用,其中該偽隨機(jī)數(shù)字發(fā)生器用于生成盲目多項(xiàng)式樹的系數(shù)。
8.依照權(quán)利要求1的方法,包含,構(gòu)建多個(gè)盲目多項(xiàng)式樹,使得結(jié)點(diǎn)多項(xiàng)式樹中的每一個(gè)多項(xiàng)式等于盲目多項(xiàng)式樹中的對(duì)應(yīng)多項(xiàng)式與差分多項(xiàng)式樹中的對(duì)應(yīng)多項(xiàng)式的和,并且,使得多個(gè)盲目多項(xiàng)式樹之一或者差分多項(xiàng)式樹對(duì)于服務(wù)器系統(tǒng)可用,并且其余的樹對(duì)相應(yīng)客戶端設(shè)備可用。
9.依照權(quán)利要求1的方法,包含,將樹中的數(shù)據(jù)結(jié)點(diǎn)轉(zhuǎn)換為特里結(jié)構(gòu)表示形式,從而,數(shù)據(jù)段中第二個(gè)字符之后的第一個(gè)字符被表示為所述第二個(gè)字符的子結(jié)點(diǎn)。
10.一種能夠查詢受保護(hù)數(shù)據(jù)的設(shè)備,數(shù)據(jù)以樹的形式進(jìn)行組織,樹包含具有相應(yīng)結(jié)點(diǎn)名字的結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)名字被分配一個(gè)唯一的標(biāo)識(shí)符,該設(shè)備包含用于對(duì)應(yīng)于數(shù)據(jù)所被組織的樹的結(jié)構(gòu)來(lái)構(gòu)造結(jié)點(diǎn)多項(xiàng)式的樹的裝置,使得每一個(gè)結(jié)點(diǎn)多項(xiàng)式,對(duì)于等于在從所考慮的結(jié)點(diǎn)開始的樹的分支中出現(xiàn)的結(jié)點(diǎn)名字被分配的標(biāo)識(shí)符的輸入,計(jì)算為零,用于對(duì)應(yīng)于數(shù)據(jù)所被組織的樹的結(jié)構(gòu)來(lái)構(gòu)造盲目多項(xiàng)式樹和差分多項(xiàng)式樹的裝置,使得結(jié)點(diǎn)多項(xiàng)式樹中的每一個(gè)多項(xiàng)式等于盲目多項(xiàng)式樹中相應(yīng)的多項(xiàng)式與差分多項(xiàng)式樹中相應(yīng)的多項(xiàng)式的和,用于使得服務(wù)器系統(tǒng)可以得到盲目多項(xiàng)式樹和差分多項(xiàng)式樹中的一個(gè)并且客戶端設(shè)備可以得到盲目多項(xiàng)式樹和差分多項(xiàng)式樹中的另外一個(gè)的裝置。
11.依照權(quán)利要求10的設(shè)備,被配置來(lái)作為客戶端設(shè)備進(jìn)行操作。
12.一個(gè)用于對(duì)服務(wù)器查詢受保護(hù)數(shù)據(jù)的客戶端設(shè)備,數(shù)據(jù)以樹的形式進(jìn)行組織,樹包含具有相應(yīng)結(jié)點(diǎn)名字的結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)名字被分配一個(gè)唯一的標(biāo)識(shí)符,該客戶端設(shè)備包含響應(yīng)于接收到對(duì)于結(jié)點(diǎn)名字的查詢來(lái)確定分配給該結(jié)點(diǎn)名字的唯一標(biāo)識(shí)符的裝置,給服務(wù)器系統(tǒng)發(fā)送請(qǐng)求的裝置,該請(qǐng)求令服務(wù)器系統(tǒng)通過(guò)權(quán)利要求1所述的方法采用等于所確定的標(biāo)識(shí)符的輸入對(duì)服務(wù)器系統(tǒng)可得到的樹中的多項(xiàng)式進(jìn)行計(jì)算,通過(guò)權(quán)利要求1所述的方法采用等于所確定的標(biāo)識(shí)符的輸入對(duì)客戶端設(shè)備可得到的樹中的多項(xiàng)式進(jìn)行計(jì)算的裝置,用于確定從服務(wù)器系統(tǒng)接收的計(jì)算結(jié)果和由客戶端設(shè)備計(jì)算的結(jié)果的和是否等于零的裝置,將一個(gè)結(jié)點(diǎn)作為查詢的答案返回的裝置,為該結(jié)點(diǎn)所確定的和等于零并且該結(jié)點(diǎn)的任何子結(jié)點(diǎn)的和不等于零。
13.依照權(quán)利要求12的客戶端設(shè)備,進(jìn)一步包含,如果由所述服務(wù)器系統(tǒng)為根結(jié)點(diǎn)的分支計(jì)算的結(jié)果非零,則信號(hào)通知服務(wù)器系統(tǒng)停止對(duì)該特定分支中的多項(xiàng)式計(jì)算的裝置。
14.依照權(quán)利要求12的客戶端設(shè)備,進(jìn)一步包含,將對(duì)包含在一個(gè)特定結(jié)點(diǎn)中的數(shù)據(jù)段的查詢,轉(zhuǎn)換為對(duì)于所述特定結(jié)點(diǎn)的查詢和跟隨的對(duì)該數(shù)據(jù)段的特里結(jié)構(gòu)表示的查詢的裝置。
15.包含使得計(jì)算設(shè)備能夠如權(quán)利要求10中的設(shè)備那樣運(yùn)行的指令的一種計(jì)算機(jī)程序產(chǎn)品。
16.包含使得計(jì)算設(shè)備能夠如權(quán)利要求12中的客戶端設(shè)備那樣運(yùn)行的指令的一種計(jì)算機(jī)程序產(chǎn)品。
全文摘要
用于查詢受保護(hù)的樹形式的結(jié)構(gòu)化數(shù)據(jù)的方法和設(shè)備。構(gòu)造對(duì)應(yīng)的結(jié)點(diǎn)多項(xiàng)式樹,使得每個(gè)結(jié)點(diǎn)多項(xiàng)式對(duì)于等于在從所考慮的結(jié)點(diǎn)開始的樹的分支中出現(xiàn)的結(jié)點(diǎn)名字被分配的標(biāo)識(shí)符的輸入,計(jì)算為零。構(gòu)造盲目多項(xiàng)式樹和差分多項(xiàng)式樹,使得結(jié)點(diǎn)多項(xiàng)式樹中的每一個(gè)多項(xiàng)式等于盲目多項(xiàng)式樹中相應(yīng)的多項(xiàng)式與差分多項(xiàng)式樹中相應(yīng)的多項(xiàng)式的和。將盲目多項(xiàng)式樹給予客戶端,將差分多項(xiàng)式樹給予服務(wù)器。通過(guò)組合客戶端和服務(wù)器的計(jì)算結(jié)果,有可能識(shí)別與給定查詢相匹配的結(jié)點(diǎn)。
文檔編號(hào)G06F21/62GK1961269SQ200580017111
公開日2007年5月9日 申請(qǐng)日期2005年4月29日 優(yōu)先權(quán)日2004年5月28日
發(fā)明者W·永克, R·布林克曼, J·M·杜門, B·舍恩馬克斯 申請(qǐng)人:皇家飛利浦電子股份有限公司