專利名稱:生成索引的方法和裝置以及檢索方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息處理技術(shù),尤其涉及使得能夠驗證檢索結(jié)果完整性的生成索引的方法和裝置以及檢索方法和裝置。
背景技術(shù):
在很多應用中,需要對大量信息進行檢索,以獲得滿足一定條件的信息。通常,預先對原始信息建立索引。然后,響應于檢索請求,在索引中執(zhí)行查找,以找出匹配的項目,從而得到相關(guān)信息。出于各種原因,檢索者總是希望能夠得到完整的檢索結(jié)果,即,得到所有滿足檢索條件的信息。而現(xiàn)有的索引編制和檢索技術(shù)缺乏對檢索完整性的保障。
隨著計算機網(wǎng)絡和通信技術(shù)的廣泛使用,數(shù)據(jù)擁有者經(jīng)常將數(shù)據(jù)文件存儲在由第三方維護的(一個或多個)服務器上。這種應用中,對服務器上存儲的數(shù)據(jù)文件的檢索服務一般也由第三方提供,即,提供檢索服務的第三方響應于檢索者的請求,利用索引對服務器上存儲的數(shù)據(jù)文件執(zhí)行查找,并將結(jié)果提供給檢索者。由于實質(zhì)的檢索工作主要由第三方執(zhí)行,因此在這種情況中,更加希望能夠驗證和保證檢索的正確性和完整性。
另外,出于隱私和安全的考慮,數(shù)據(jù)文件經(jīng)常被加密存儲。尤其是在上述使用存儲服務的情況中,文件經(jīng)常以密文的形式存儲在服務器上,以防止文件內(nèi)容暴露給未被授權(quán)的用戶(一些情況中也包括提供存儲或檢索服務的第三方)。而文件的加密存儲使得文件檢索變得困難,尤其是難以驗證檢索結(jié)果是否正確和完整。
發(fā)明內(nèi)容
本發(fā)明提供了一種生成索引的方法和裝置,以及用于檢索的方法的裝置。
根據(jù)本發(fā)明的一個方面,提供了一種生成索引的方法,包括生成對應于檢索項的檢索項標識;根據(jù)與所述檢索項相關(guān)的一條或多條檢索信息,生成一個或多個索引項;生成所述一條或多條檢索信息的聚合器;以及至少利用所述檢索項標識、所述一個或多個索引項以及所述聚合器生成索引條目,從而形成索引。
根據(jù)本發(fā)明的另一個方面,提供了一種用于生成索引的裝置,包括檢索項標識生成單元,適合于生成對應于檢索項的檢索項標識;索引項生成單元,適合于根據(jù)與所述檢索項相關(guān)的一條或多條檢索信息,生成一個或多個索引項;聚合器生成單元,適合于生成所述一條或多條檢索信息的聚合器;以及索引形成單元,適合于至少利用所述檢索項標識、所述一個或多個索引項以及所述聚合器生成索引條目,從而形成索引。
根據(jù)本發(fā)明的另一個方面,提供了一種檢索方法,包括生成檢索請求;接收一個或多個索引項和聚合器;從所述接收的一個或多個索引項提取一條或多條檢索信息;利用所述接收的聚合器驗證所述提取的檢索信息。
根據(jù)本發(fā)明的另一個方面,提供了一種檢索裝置,包括檢索請求單元,適合于生成檢索請求;檢索信息提取單元,適合于從接收的一個或多個索引項提取一條或多條檢索信息;以及驗證單元,適合于利用接收的聚合器驗證所述提取的檢索信息。
根據(jù)本發(fā)明的方法,可以利用聚合器驗證檢索結(jié)果的完整性和正確性。本發(fā)明可以應用于加密索引,尤其是加密倒排索引。結(jié)合設置了隱私級別的加密倒排索引,可以在提供檢索結(jié)果的可驗證性的基礎(chǔ)上,提供了良好的隱私控制和保密性。
從下面結(jié)合附圖對本發(fā)明優(yōu)選實施例的描述中可以更好地理解本發(fā)明,附圖中類似的參考標號表示類似的部分,其中 圖1是示出了一個檢索系統(tǒng)的示例的框圖; 圖2是示意性地示出了根據(jù)本發(fā)明一個實施例的數(shù)據(jù)擁有者終端的配置示例的框圖; 圖3是示意性地示出了根據(jù)該實施例的生成索引的操作的流程圖; 圖4是示意性地示出了根據(jù)本發(fā)明一個實施例的檢索者終端的配置示例的框圖;以及 圖5是示意性地示出了根據(jù)該實施例進行檢索的操作的流程圖。
具體實施例方式 下面將詳細描述本發(fā)明的各個方面的特征和示例性實施例。在下面的詳細描述中,提出了許多具體細節(jié),以便提供對本發(fā)明的全面的理解。但是,對于本領(lǐng)域技術(shù)人員來說很明顯,本發(fā)明可以在不需要這些具體細節(jié)中的一些細節(jié)的情況下被實施。下面對實施例的描述僅僅是為了通過示出本發(fā)明的示例來提供對本發(fā)明的更好的理解。本發(fā)明決不限于下面所提出的任何具體配置和算法,而是覆蓋了元素、部件和算法的任何修改、替換和改進,只要不脫離本發(fā)明的精神。在附圖和下面的描述中,沒有示出公知的結(jié)構(gòu)和技術(shù),以便避免不必要地使本發(fā)明模糊。
圖1示意性地示出了可在其中應用本發(fā)明的一個檢索系統(tǒng)的示例。如圖1所示,數(shù)據(jù)擁有者的裝置或終端、由服務提供者管理的服務器、以及一個或多個檢索者的裝置或終端經(jīng)由通信網(wǎng)絡彼此連接并彼此可通信。數(shù)據(jù)擁有者將文件和這些文件的索引存儲在服務器上。服務器響應于來自檢索者終端的檢索請求,利用索引對文件進行檢索,并將檢索結(jié)果提供給檢索者。
應當注意,這里所使用的術(shù)語“服務器”可以是提供存儲服務和檢索服務兩者的單個裝置,或者彼此相鄰或遠程的一組多個裝置,每個負責不同的服務,例如存儲、數(shù)據(jù)檢索、用戶管理等等,或者分擔服務。例如,數(shù)據(jù)擁有者可以將文件存儲在存儲服務器上,而將索引存儲在可與存儲服務器通信的檢索服務器上。為了簡化說明,在圖中和下面的描述中,將這樣的設備統(tǒng)稱為“服務器”。雖然圖中將數(shù)據(jù)擁有者終端和服務器示出為分別的裝置,但是可以理解,在本發(fā)明中,也可以由單個設備實現(xiàn)下面所描述的數(shù)據(jù)擁有者終端和服務器的功能。
數(shù)據(jù)擁有者和服務器的裝置或終端中的每個可以實現(xiàn)為能夠處理信息和進行信息通信的設備,例如個人計算機(PC)、個人數(shù)字助理(PDA)、智能電話、或者其他數(shù)據(jù)處理設備。服務器一般實現(xiàn)為由服務提供者管理的能夠存儲和維護大量數(shù)據(jù),并且使得終端能夠有條件地訪問數(shù)據(jù)的設備或一組設備。
在所示系統(tǒng)中,數(shù)據(jù)擁有者對其文件編制索引,并將文件和索引存儲在服務器上。檢索時,檢索者向服務器提供包含檢索項信息(例如,檢索項標識)的請求,服務器根據(jù)檢索項信息在索引中執(zhí)行查找,找到匹配的索引條目,將該索引條目中與檢索項有關(guān)的索引項提供給檢索者,以便檢索者獲取有關(guān)信息。特別的,根據(jù)本發(fā)明的方案,索引條目中還包括用于驗證檢索結(jié)果完整性的聚合器。服務器還將索引條目中的聚合器提供給檢索者。檢索者根據(jù)聚合器來驗證檢索結(jié)果是否正確和完整。
在一般的應用中,經(jīng)常使用倒排索引,其中根據(jù)關(guān)鍵詞來查找含有該關(guān)鍵詞的文件。下面以倒排索引應用為例來進行說明。但是應當理解,本發(fā)明也可以類似地應用于正排索引。
圖2示意性地示出了根據(jù)本發(fā)明一個實施例的數(shù)據(jù)擁有者終端100的配置示例。如圖2所示,數(shù)據(jù)擁有者終端100主要包括檢索項標識生成單元101、索引項生成單元102、聚合器生成單元103和索引形成單元104。
圖3示意性地示出了根據(jù)該實施例的數(shù)據(jù)擁有者終端100生成索引的操作。
首先,在步驟S201,針對數(shù)據(jù)擁有者文件的檢索項被設置,并且檢索項標識生成單元101根據(jù)檢索項生成相應的檢索項標識。在倒排索引應用中,檢索項是關(guān)鍵詞。例如,數(shù)據(jù)擁有者終端通過提取各個文件中的關(guān)鍵詞來作為檢索項,或者由數(shù)據(jù)擁有者通過對終端的輸入來手動設置檢索項。假設設置了彼此不同的關(guān)鍵詞作為檢索項,對于每一檢索項(關(guān)鍵詞)KW,檢索項標識生成單元101生成相應的唯一檢索項標識KL。
檢索項標識KL例如可以是檢索項KW本身,或者映射到檢索項KW的數(shù)據(jù)。在加密索引應用中,檢索項標識KL可以是KW的密文,或包含KW信息的數(shù)據(jù)。例如如下計算KL KL=Hash(MEK‖KW)式(1) 其中Hash()表示哈希函數(shù),MEK是特定參數(shù)(例如,數(shù)據(jù)擁有者的主密鑰),“‖”表示串或數(shù)字按照預定順序的組合?;蛘?,KL=E(EKey,KW),其中EKey是特定密鑰,E(EKey,KW)表示利用EKey對KW加密。
在步驟S202,與每個檢索項有關(guān)的檢索信息被設置,并且索引項生成單元102生成每條檢索信息相應的索引項。每個檢索項對應于一條或多條檢索信息。檢索信息可以是提供了與該檢索項匹配的檢索結(jié)果的任何信息。例如,在倒排索引中,對于檢索項(關(guān)鍵詞)KW,每個含有關(guān)鍵詞KW的文件的文件名或文件位置(或與該文件相關(guān)的其他信息)被設置為與該檢索項相關(guān)的一條檢索信息。例如,對于檢索項KW,含有關(guān)鍵詞KW的n個文件的文件名被設置為與檢索項KW有關(guān)的n條檢索信息I1、I2、...In。
注意,在加密存儲應用中,數(shù)據(jù)擁有者可能將文件以密文而非明文的形式存儲在服務器上。在這種情況中,上述文件名是指加密文件的密文文件名。
對于每一檢索信息,索引項生成單元102生成包含該檢索信息或能夠從中得出該檢索信息的一個索引項。對于檢索信息Ij(j=1,2,...,n),索引項生成單元102生成索引項FLj。索引項FLj例如可以是檢索信息Ij本身,或者可經(jīng)過變換得到檢索信息Ij的值。在一種加密索引應用中,索引項FLj可以是包含Ij信息的數(shù)據(jù)的密文。例如如下計算索引項FLj FLj=E(EKey,Ij‖Key) 式(2) 其中EKey是特定密鑰,Key是特定參數(shù)(例如,數(shù)據(jù)擁有者用于相應加密文件的密鑰)E(EKey,Ij‖Key)表示利用EKey對Ij和Key的組合加密。
然后在步驟S203,聚合器生成單元103生成聚合器,每個聚合器聚合了與一個檢索項有關(guān)的全部檢索信息,用于驗證檢索結(jié)果的完整性??梢允褂酶鞣N方法來生成聚合器,只要在檢索者終端處,能夠使用該聚合器驗證得到的包含各個檢索信息的檢索結(jié)果是否完整。下面分別以異或運算、取模運算、聚合簽名為例來說明聚合器的計算。本領(lǐng)域技術(shù)人員能夠認識到,還可以使用各種其他算法來生成聚合器。
示例1-異或運算
對于與檢索項KW相關(guān)的全部檢索信息I1、I2、...In,聚合器生成單元103可以利用異或運算如下生成聚合器IC 式(3) 式(3)可以利用以下迭代程序計算 set IC=0 for j=1 to n next j 示例2-取模運算
利用取模運算,聚合器生成單元103可以如下生成聚合器IC 式(4) 或者 式(5) 其中,p是大素數(shù)。
式(4)可以利用以下迭代程序計算 set IC=1 for j=1 to n IC=(IC*Ij)mod p next j 式(5)可以利用以下迭代程序計算 set IC=0 for j=1 to n IC=(IC+Ij)mod p nextj 示例3-聚合簽名
假設預先設置如下安全參數(shù)p是大素數(shù);G1和G2是同為p階的群;g1和g2分別是G1和G2的生成元;Zp*是所有小于p且與p互素的正整數(shù)的集合;定義雙線性映射e為G1×G2→GT,該雙線性映射滿足以下特性 (1)雙映射性——對所有的g1、g2和屬于Zp*的所有的a,b,e(g1a,g2b)=e(g1,g2)ab成立; (2)非退化性——如果e(g1,g2)=1,存在g2屬于G2,則有g(shù)1=O。
并且設置將{0,1}*映射到G1的哈希函數(shù)H,選擇Zp*中的隨機數(shù)K,并設置密鑰sk。其中,g2和隨機數(shù)K被公布給檢索者,或者g2k被公布給檢索者。
聚合器生成單元103可以如下生成聚合器IC 式(6) 式(5)可以利用以下迭代程序計算 set IC=1 for j=1 to n IC=(IC*H(Ij)1/(sk+K))mod p next j 聚合器被生成之后,索引形成單元104針對每個檢索項,生成一個索引條目。每個索引條目至少包括與該檢索項相對應的檢索項標識、與該檢索項有關(guān)的全部索引項,以及通過聚合與該檢索項相關(guān)的全部檢索信息而得到的聚合器。然后,索引形成單元104形成包括了全部索引條目的索引。需要注意的是,可以選擇不同的隨機數(shù)K來分別聚合不同組的索引項,以生成各個聚合器。
至此,在數(shù)據(jù)擁有者終端100處生成了含有聚合器的索引。之后,數(shù)據(jù)擁有者終端可以將文件以及所生成的索引存儲到服務器上,以供使用。
下面參考圖4和圖5描述聚合器的使用。
圖4示意性地示出了根據(jù)本發(fā)明一個實施例的檢索者終端300的配置示例。如圖4所示,檢索者終端300主要包括檢索請求單元301、檢索信息提取單元302和驗證單元303。
圖5示意性地示出了根據(jù)該實施例的檢索者終端300進行檢索的操作。
首先,在步驟S401,檢索請求單元301生成至少包括檢索項標識的檢索請求并將檢索請求發(fā)送給服務器。檢索者可以從數(shù)據(jù)擁有者處得到檢索項標識,或者從數(shù)據(jù)擁有者處得到計算檢索項標識所必須的數(shù)據(jù),利用與建立索引時所用的生成檢索項標識的方法相對應的方法計算出檢索項標識。
服務器接收到檢索請求之后,在索引中執(zhí)行查找,找到含有與所接收的檢索項標識相匹配的檢索項標識的索引條目,將該索引條目中的所有索引項以及聚合器返回給檢索者終端。在需要認證的情況中,在執(zhí)行上述查找之前,服務器還可以對檢索者執(zhí)行身份認證過程。如果服務器沒有找到匹配的索引條目或者檢索者的身份認證失敗,服務器可以返回空結(jié)果或者進入錯誤處理,例如向檢索者終端發(fā)送通知等。在這種情況下,檢索者終端執(zhí)行相應的錯誤處理,例如重試或者結(jié)束過程。
如果服務器返回了檢索結(jié)果,在步驟S402,檢索者終端接收得到的一個或多個索引項和相應的聚合器。
然后在步驟S403,檢索者終端的檢索信息提取單元302從所接收的每個索引項中提取檢索信息。如上所述,索引項可以是檢索信息本身,這種情況中,可以直接得到檢索信息。在索引項是檢索信息的加密形式或者是可經(jīng)過變換得到檢索信息的值的情況下,檢索信息提取單元302通過相應的解密或變換過程提取檢索信息。解密或變換所需的參數(shù)可以從數(shù)據(jù)擁有者處獲得。
得到每個索引項中所包含的檢索信息之后,在步驟S404,檢索者終端的驗證單元303利用所接收的聚合器來檢驗檢索結(jié)果是否完整和正確。
如果檢驗成功,則過程進行到步驟S405,獲取的檢索信息可以被使用,例如用于根據(jù)檢索信息獲取相應文件或者用于進一步的信息處理。由于如何使用檢索信息與本發(fā)明并不直接相關(guān),因此附圖中并未繪出相應的單元或模塊,并且在此省略對其的詳細描述。但是應當理解,可以根據(jù)實際的應用添加任何必要的單元或模塊,執(zhí)行所需的過程。
如果驗證失敗,則表明檢索結(jié)果不完整或者不正確。這可能是由于數(shù)據(jù)被篡改或者數(shù)據(jù)通信中出現(xiàn)錯誤而造成的。在這種情況下,過程進行到步驟S406,執(zhí)行錯誤處理。例如,重新發(fā)送檢索請求,或者要求重傳,或者結(jié)束過程。
前述使用聚合器進行驗證的方法可以根據(jù)數(shù)據(jù)擁有者終端所采用的生成聚合器的方法來確定。
例如,驗證單元303可以根據(jù)提取出的全部檢索信息,使用和數(shù)據(jù)擁有者終端所用的相同的方法計算一個聚合器,將該計算出的聚合器與從服務器接收的聚合器相比較。如果兩者一致,則驗證成功;否則,驗證失敗。下面給出幾個示例。
假設檢索信息提取單元從所接收的全部索引項中提取出了檢索信息I’1、I’2、...I’m。在聚合器是按照上述式(3)生成的情況下,驗證單元303計算
并將IC’與從服務器接收的聚合器IC相比較。
類似地,在聚合器是按照上述式(4)生成的情況中,驗證單元303計算
并將IC’與從服務器接收的聚合器IC相比較?;蛘撸诰酆掀魇前凑丈鲜鍪?5)生成的情況中。驗證單元303計算
p,并將IC’與從服務器接收的聚合器IC相比較。
在聚合器是采用上述式(6)的聚合簽名形式生成的情況中,可以通過驗證該聚合簽名來進行驗證。具體地,驗證單元303計算
p,然后檢驗是否存在如下關(guān)系e(IC′,g2)=e(IC,g2sk*g2K)。如果該關(guān)系成立,則驗證成功;否則,驗證失敗。
當使用其他算法生成聚合器時,驗證單元303采用相應的方法來利用聚合器驗證獲取的檢索信息是否完整。
在一些情況中,索引需要被更新。例如,添加新的文件或者刪除已有文件時,檢索信息發(fā)生變化,索引需要相應地更新,以提供正確的檢索。根據(jù)文件的增刪,索引項被更新,同時相關(guān)索引條目中的聚合器也相應地更新。
例如,如果新的檢索信息Ia需要被添加到與檢索項KW相對應的索引條目中時,利用上述式(3)計算的聚合器IC可以被更新為 式(7) 利用上式(4)計算的聚合器IC可以被更新為 ICupdated=(IC*Ia)mod p式(8) 利用上式(5)計算的聚合器IC可以被更新為 ICupdated=(IC+Ia)mod p式(9) 利用上式(6)計算的聚合器IC可以被更新為 ICupdated=[IC*H(Ia)1/(sk+K)]mod p式(10) 對于利用式(6)計算的聚合器IC,也可以采用如下方法進行更新首先,選擇新的公共隨機數(shù)K’,然后如下計算更新的聚合器ICupdated ICupdated=[IC(sk+K)*H(Ia)mod p]1/(sk+K’) 式(11) 另一方面,如果已有的檢索信息Ib需要被從與檢索項KW相對應的索引條目中刪除時,利用上述式(3)計算的聚合器IC可以被更新為 式(12) 利用上式(4)計算的聚合器IC可以被更新為 ICupdated=(IC*Ib-1)mod p式(13) 利用上式(5)計算的聚合器IC可以被更新為 ICupdated=(IC-Ib)mod p式(14) 利用上式(6)計算的聚合器IC可以被更新為 ICupdated=[IC*H(Ib)-1/(sk+K)]mod p式(15) 對于利用式(6)計算的聚合器IC,也可以采用如下方法進行更新首先,選擇新的公共隨機數(shù)K’,然后如下計算更新的聚合器ICupdated ICupdated=[IC(sk+K)*H(Ib)-1modp]1/(sk+K’) 式(16) 索引條目的更新可以由數(shù)據(jù)擁有者終端進行,然后更新后的索引條目被發(fā)送到服務器用以代替之前的索引條目?;蛘?,更新可以由服務器進行。相應地,可以在數(shù)據(jù)擁有者終端或者服務器中配置用于進行索引更新的更新單元(未在圖中示出)。
根據(jù)本發(fā)明的在索引中使用的聚合器可以應用于各種索引。例如,在加密索引中,可以同樣使用聚合器。例如,索引條目中的索引項是通過對包含檢索信息的信息進行加密而得到的密文,并且通過對檢索信息進行聚合得到聚合器,其中的檢索信息可以是加密后的文件的密文文件名。在這樣的加密索引中,除了數(shù)據(jù)擁有者和被授權(quán)的檢索者之外,其他方,包括服務器,無法通過對索引項進行解密而得知檢索信息,也無法通過模擬加密過程而得到可正確解密的索引項,因此避免了索引項和聚合器被篡改。
下面提供了一種快速密文檢索方法,其中使用了改進的倒排加密索引,并利用聚合器來提供對檢索結(jié)果完整性的驗證。
在該方法中,數(shù)據(jù)擁有者終端利用相同或不同的密鑰對每個文件進行加密,然后將文件的密文存儲到服務器上。在本示例中,上述的檢索信息Ij是文件FILEj的加密后的文件名CFNj。根據(jù)加密后的文件名,服務器可以容易地在所存儲的加密文件中找到匹配的文件,將其提供給請求者。
在編制索引時,對于作為檢索項的關(guān)鍵詞KW,數(shù)據(jù)擁有者終端通過對包含關(guān)鍵詞KW的信息進行加密或者將包含關(guān)鍵詞KW的信息映射到一個值來計算檢索項標識,例如檢索項標識被計算為KL=Hash(MEK‖KW),其中MEK是數(shù)據(jù)擁有者的主密鑰。
假設文件FILEj(j=1,2,...n)含有關(guān)鍵詞KW,數(shù)據(jù)擁有者終端如下計算與KW有關(guān)的FILEj的索引項FLj FLj=E(EKey,Ij‖Kfilej) 式(17) 其中,Kfilej是用于文件FILEj的解密密鑰,Ij是文件FILEj的加密文件名,EKey是數(shù)據(jù)擁有者設置的用于生成索引項的加密密鑰,E(EKey,Ij‖Kfilej)表示利用EKey對Ij和Kfilej的組合進行加密。
然后,可以對Ij(j=1,2,...n)進行聚合,生成對于檢索項KW的聚合器IC。例如,可以利用上述式(3)~(6)中任何一種方法,或者其他方法來進行計算。
隨后,針對關(guān)鍵詞KW,生成至少包括了KL、FLj(j=1,2,...n)和IC的索引條目。由這樣的索引條目形成的加密倒排索引被存儲到服務器上。
如果數(shù)據(jù)擁有者希望使得一個檢索者能夠?qū)σ粋€關(guān)鍵詞進行檢索,則數(shù)據(jù)擁有者以安全的方式向該檢索者授予該關(guān)鍵詞的檢索項標識KL,并授權(quán)給該檢索者的用于解密索引項的解密密鑰DKey。
在檢索時,檢索者終端將含有檢索項標識KL的檢索請求發(fā)送給服務器。服務器根據(jù)接收的檢索項標識KL,在所存儲的加密索引中找到匹配的索引條目,然后將匹配的索引條目中所包含的全部索引項FLj以及聚合器IC返回給檢索者終端。
在從服務器接收到各個索引項FLj之后,檢索者終端利用由數(shù)據(jù)擁有者所授予的用于解密索引項的解密密鑰DKey,每個索引項FLj進行解密,以獲得加密文件名和相應的文件解密密鑰,即Ij和Kfilej。
然后,數(shù)據(jù)擁有者終端利用所接收的聚合器IC檢驗獲取的Ij是否完整。如果檢驗成功,檢索者終端可以相應地使用這些Ij,例如將Ij發(fā)送到服務器以獲取具有相應加密文件名的加密文件,然后利用相應的文件解密密鑰Kfilej對加密文件進行解密,從而得到文件的明文。如果驗證失敗,可以進行上述的錯誤處理。
在上述的方案中,文件和索引信息都以加密形式存儲在服務器上,從而避免了文件信息暴露給服務器。
在上述示例的一種改進形式中,代替直接使用檢索信息Ij來計算聚合器,可以使用包含檢索信息Ij的信息的密文或者從包含檢索信息Ij的信息映射而來的數(shù)據(jù)來代替上述計算、驗證和更新聚合器IC時所使用的Ij。例如,在計算聚合器時使用Ij’=Ij‖X代替上述Ij,其中X可以是任意預定信息,例如上述示例中的DKey。又例如,在上述利用異或、取模等算法計算聚合器時,可以使用Ij’=Ij‖X來代替式中的Ij,其中X可以是任意預定信息,例如上述示例中的DKey。
如前文所述,由于索引項是對包含檢索信息的信息的密文形式,而聚合器是對檢索信息進行聚合而得到了,因此未被授權(quán)的第三方無法篡改索引項或聚合器。
在另一種改進形式中,數(shù)據(jù)擁有者可以設置不同的隱私級別,并對不同的每個隱私級別設置不同的索引項加密和解密密鑰EKey和DKey。在生成索引時,對于可以在某個隱私級別公開的文件,使用該隱私級別的索引項加密密鑰來生成對應該文件的索引項。從而,在與一個檢索項(關(guān)鍵詞)相對應的索引條目中,可以存在多個不同隱私級別的索引項。在這種情況中,為每個隱私級別的索引項都生成一個聚合器。也就是說,在與一個檢索項相對應的索引條目中,通過聚集屬于同一隱私級別的所有索引項中所包含的檢索信息來生成該級別的聚合器。從而,存在針對不同隱私級別的多個聚合器。
在上述改進形式中,數(shù)據(jù)擁有者按照隱私級別對檢索者授權(quán),即,將適應于檢索者隱私級別的索引項解密密鑰DKey授予該檢索者。在檢索時,檢索者利用所授予的索引項解密密鑰DKey可以對從服務器得到的全部索引項中利用相同隱私級別索引項加密密鑰生成的索引項進行解密,得到該隱私級別的與檢索項相關(guān)的檢索信息??梢酝ㄟ^在索引項中設置預定標志來驗證解密的正確性。例如,如下生成索引項 FLj=E(EKey,F(xiàn)LAG‖Ij‖Kfilej) 式(18) 其中,F(xiàn)LAG是檢索者已知的參數(shù)。這樣,檢索者通過檢查解密后的信息中是否存在正確的FLAG,可以確定是否進行了正確的解密。
并且,通過解密得到了相應隱私級別的檢索信息之后,檢索者利用接收的相應隱私級別的聚合器來驗證該隱私級別的檢索信息是否完整。檢索者可以利用索引條目中包括的多個聚合器來進行檢驗,只要其中一個檢驗成功,就代表驗證通過。這是因為計算出的聚合器與不相應的隱私級別的聚合器相等的概率極低?;蛘?,索引條目可以分段排列,即,同一隱私級別的索引項和聚合器放在同一段中,從而使得檢索者能夠通過判斷哪段索引項被成功解密而確定使用哪個聚合器進行檢驗?;蛘撸梢詫酆掀鞲郊悠渌畔?,例如表示隱私級別的參數(shù),以幫助檢索者確定應當使用哪個聚合器。或者,在執(zhí)行檢索時,服務器可以執(zhí)行確認檢索者隱私級別的過程,然后根據(jù)檢索者的隱私級別,向檢索者返回相應隱私級別的聚合器。這種情況中,不需要檢索者選擇聚合器的處理。
上面已經(jīng)參考附圖描述了根據(jù)本發(fā)明的一些具體示例。但是,本發(fā)明并非要受到上述實施例中描述的任何具體配置和過程的限制。在本發(fā)明的精神的范圍之內(nèi),本領(lǐng)域技術(shù)人員能夠認識到上述配置、算法、操作和過程的各種替換、改變或修改。例如,上面具體描述了倒排索引的示例,但是本發(fā)明也可以應用于正排索引。例如,上述示例中的檢索項是文件名或加密后的文件名,檢索信息是文件中所包含的關(guān)鍵詞或加密后的關(guān)鍵詞等。在正排索引中,可以類似地應用聚合器。又例如,上述給出的示例中,索引條目至少包括了檢索項標識、索引項以及聚合器。但是,可以認識到,取決于應用的需要,還可以在索引條目中添加任意需要的其他信息或數(shù)據(jù)。
在本說明書中使用的所謂的“文件”應當被理解為是廣義的概念,其包括但不限于例如文本文件、視頻/音頻文件、圖像/圖表以及任何其他數(shù)據(jù)或信息。
作為數(shù)據(jù)擁有者終端、檢索者終端和服務器的示例性配置,圖中已經(jīng)示出了一些耦合在一起的單元。這些單元可以利用總線或者任何其他信號線或者通過任何無線連接來耦合,以在其間傳輸信號。然而,每個設備中所包括的部件并不限于上述這些單元,具體的配置可以被修改或改變。每個設備還可以包括其他單元,例如用于向設備的操作者顯示信息的顯示單元、用于接收操作者的輸入的輸入單元、用于控制每個單元的操作的控制單元、任何需要的存儲或處理裝置等等。由于這些部件是本領(lǐng)域中公知的,因此沒有對其進行詳細的描述,本領(lǐng)域的技術(shù)人員將容易地考慮到將它們添加到上述設備中。另外,雖然所描述的單元在附圖中被示出為是分別的單元,但是它們中的任何一個可以與其他單元相結(jié)合作為一個部件,或者可以被分割為多個部件。
此外,數(shù)據(jù)擁有者終端、檢索者終端和服務器在上述示例中被描述為分別的設備,其可以在通信網(wǎng)絡中彼此遠程地放置。但是,它們可以組合為一個設備來增強功能性。例如,數(shù)據(jù)擁有者終端和檢索者終端可以被組合,以創(chuàng)建新的設備,其在一些情況中是數(shù)據(jù)擁有者終端而在另一些情況中能夠作為檢索者終端而執(zhí)行檢索。又例如,服務器和數(shù)據(jù)擁有者終端或者檢索者終端可以被組合,如果在某個應用中它扮演這兩個角色。同樣,可以創(chuàng)建在不同事務中扮演數(shù)據(jù)擁有者終端、檢索者終端和服務器的設備。
上述的通信網(wǎng)絡可以是任何類型的網(wǎng)絡,包括任何種類的電信網(wǎng)絡或者計算機網(wǎng)絡。當數(shù)據(jù)擁有者終端、檢索者終端和服務器被實現(xiàn)為單個設備的一部分是,上述通信網(wǎng)絡還可以包括任何內(nèi)部數(shù)據(jù)傳輸機制,例如,數(shù)據(jù)總線或集線器。
本發(fā)明的元素可以實現(xiàn)為硬件、軟件、固件或者它們的組合,并且可以用在它們的系統(tǒng)、子系統(tǒng)、部件或者子部件中。當以軟件方式實現(xiàn)時,本發(fā)明的元素是被用于執(zhí)行所需任務的程序或者代碼段。程序或者代碼段可以存儲在機器可讀介質(zhì)中,或者通過載波中攜帶的數(shù)據(jù)信號在傳輸介質(zhì)或者通信鏈路上傳送?!皺C器可讀介質(zhì)”可以包括能夠存儲或傳輸信息的任何介質(zhì)。機器可讀介質(zhì)的例子包括電子電路、半導體存儲器設備、ROM、閃存、可擦除ROM(EROM)、軟盤、CD-ROM、光盤、硬盤、光纖介質(zhì)、射頻(RF)鏈路,等等。代碼段可以經(jīng)由諸如因特網(wǎng)、內(nèi)聯(lián)網(wǎng)等的計算機網(wǎng)絡被下載。
本發(fā)明可以以其他的具體形式實現(xiàn),而不脫離其精神和本質(zhì)特征。例如,特定實施例中所描述的算法可以被修改,而系統(tǒng)體系結(jié)構(gòu)并不脫離本發(fā)明的基本精神。因此,當前的實施例在所有方面都被看作是示例性的而非限定性的,本發(fā)明的范圍由所附權(quán)利要求而非上述描述定義,并且,落入權(quán)利要求的含義和等同物的范圍內(nèi)的全部改變從而都被包括在本發(fā)明的范圍之中。
權(quán)利要求
1.一種生成索引的方法,包括
生成對應于檢索項的檢索項標識;
根據(jù)與所述檢索項相關(guān)的一條或多條檢索信息,生成一個或多個索引項;
生成所述一條或多條檢索信息的聚合器;以及
至少利用所述檢索項標識、所述一個或多個索引項以及所述聚合器生成索引條目,從而形成索引。
2.根據(jù)權(quán)利要求1所述的方法,其中,生成聚合器包括利用聚合簽名、異或運算、取模運算中的至少一種聚合所述一條或多條檢索信息。
3.根據(jù)權(quán)利要求1所述的方法,其中,所述檢索項是關(guān)鍵詞,所述檢索信息是包含所述關(guān)鍵詞的文件的加密文件名。
4.根據(jù)權(quán)利要求1所述的方法,其中,生成檢索項標識包括生成包含所述檢索項的信息的密文,或者生成從包含所述檢索項的信息映射得的數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的方法,其中,生成索引項包括生成所述檢索信息的信息的密文。
6.根據(jù)權(quán)利要求1所述的方法,其中,生成索引項包括用索引項加密密鑰對包含相應檢索信息的信息進行加密。
7.根據(jù)權(quán)利要求1所述的方法,其中,生成聚合器包括聚合包含所述檢索信息的信息的密文,或者聚合從包含所述檢索信息的信息映射而來的數(shù)據(jù)。
8.根據(jù)權(quán)利要求1所述的方法,還包括當添加或刪除檢索信息時,更新所述聚合器。
9.根據(jù)權(quán)利要求8所述的方法,其中,所述聚合器被計算為
其中I1、I2、...I0是要被聚合的檢索信息,
表示異或運算,并且,所述更新包括
當添加或刪除檢索信息Ia時,將所述聚合器更新為
10.根據(jù)權(quán)利要求8所述的方法,其中,所述聚合器被計算為
其中Ii是要被聚合的檢索信息,p是大素數(shù),并且,所述更新包括
當添加檢索信息Ia時,將所述聚合器更新為ICupdated=(IC*Ia)modp;以及
當刪除檢索信息Ib時,將所述聚合器更新為
11.根據(jù)權(quán)利要求8所述的方法,其中,所述聚合器被計算為
其中Ij是要被聚合的檢索信息,p是大素數(shù),并且,所述更新包括
當添加檢索信息Ia時,將所述聚合器更新為ICupdated=(IC+Ia)modp;以及
當刪除檢索信息Ib時,將所述聚合器更新為ICupdated=(IC-Ib)mod。
12.根據(jù)權(quán)利要求8所述的方法,其中,所述聚合器被計算為
并且g2和K被公布,或者g2k被公布,其中Ij是要被聚合的檢索信息,sk是密鑰,p是大素數(shù),H是將串映射到G1的哈希函數(shù),K是Zp*中的隨機數(shù),Zp*是所有小于p且與p互素的正整數(shù)的集合,g2是G2的生成元,G1和G2是同為p階的群,存在關(guān)于G1和G2的雙線性映射,并且,所述更新包括
當添加檢索信息Ia時,將所述聚合器更新為ICupdated=[IC(sk+K)*H(Ia)modp]1/(sk+K’),并公布K’或者g2k’,其中K’是Zp*中與K不同的隨機數(shù);以及
當刪除檢索信息Ib時,將所述聚合器更新為ICupdated=[IC(sk+K’)*H(Ib)-1modp]1/(sk+K’),并公布K’或者g2k’,其中K’是Zp*中與K不同的隨機數(shù)。
13.一種用于生成索引的裝置,包括
檢索項標識生成單元,適合于生成對應于檢索項的檢索項標識;
索引項生成單元,適合于根據(jù)與所述檢索項相關(guān)的一條或多條檢索信息,生成一個或多個索引項;
聚合器生成單元,適合于生成所述一條或多條檢索信息的聚合器;以及
索引形成單元,適合于至少利用所述檢索項標識、所述一個或多個索引項以及所述聚合器生成索引條目,從而形成索引。
14.根據(jù)權(quán)利要求13所述的裝置,其中,所述聚合器生成單元被配置為通過利用聚合簽名、異或運算、取模運算中的至少一種聚合所述一條或多條檢索信息,來生成所述聚合器。
15.根據(jù)權(quán)利要求13所述的裝置,其中,所述檢索項是關(guān)鍵詞,所述檢索信息是包含所述關(guān)鍵詞的文件的加密文件名。
16.根據(jù)權(quán)利要求13所述的裝置,其中,所述檢索項標識生成單元被配置為通過生成包含所述檢索項的信息的密文,或者生成從包含所述檢索項的信息映射得的數(shù)據(jù),來生成所述檢索項標識。
17.根據(jù)權(quán)利要求13所述的裝置,其中,所述索引項生成單元被配置為通過生成所述檢索信息的數(shù)據(jù)的密文,來生成所述索引項。
18.根據(jù)權(quán)利要求13所述的裝置,其中,所述索引項生成單元被配置為通過用索引項加密密鑰對包含相應檢索信息的信息進行加密,來生成所述索引項。
19.根據(jù)權(quán)利要求13所述的裝置,其中,所述聚合器生成單元被配置為通過聚合包含所述檢索信息的信息的密文,或者聚合從包含所述檢索信息的信息映射而來的數(shù)據(jù),來生成所述聚合器。
20.根據(jù)權(quán)利要求13所述的裝置,還包括更新單元,適合于當添加或刪除檢索信息時,更新所述聚合器。
21.根據(jù)權(quán)利要求20所述的裝置,其中,所述聚合器生成單元被配置為將所述聚合器計算為
其中I1、I2、...In是要被聚合的檢索信息,
表示異或運算,并且,所述更新單元被配置為當檢索信息Ia被添加或刪除時,將所述聚合器更新為
22.根據(jù)權(quán)利要求20所述的裝置,其中,所述聚合器生成單元被配置為將所述聚合器計算為
其中Ij是要被聚合的檢索信息,p是大素數(shù),
并且,所述更新單元被配置為當檢索信息Ia被添加時,將所述聚合器更新為ICupdated=(IC*Ia)modp;并且當檢索信息Ib被刪除時,將所述聚合器更新為
23.根據(jù)權(quán)利要求20所述的裝置,其中,所述聚合器生成單元被配置為將所述聚合器計算為
其中Ij是要被聚合的檢索信息,p是大素數(shù),
并且,所述更新單元被配置為當檢索信息Ia被添加時,將所述聚合器更新為ICupdated=(IC+Ia)modp;并且當檢索信息Ib被刪除時,將所述聚合器更新為ICupdated=(IC-Ib)modp。
24.根據(jù)權(quán)利要求20所述的裝置,其中,所述聚合器生成單元被配置為將所述聚合器計算為
并公布g2和K,或者公布g2k,其中Ij是要被聚合的檢索信息,sk是密鑰,p是大素數(shù),H是將串映射到G1的哈希函數(shù),K是Zp*中的隨機數(shù),Zp*是所有小于p且與p互素的正整數(shù)的集合,g2是G2的生成元,G1和G2是同為p階的群,存在關(guān)于G1和G2的雙線性映射,
并且,所述更新單元被配置為當檢索信息Ia被添加時,將所述聚合器更新為ICupdated=[IC(sk+K’)*H(Ia)modp]1/(sk+K’),并公布K’或者g2k’;并且檢索信息Ib被刪除時,將所述聚合器更新為ICupdated=[IC(sk+K’)*H(Ib)-1 modp]1/(sk+K’),并公布K’或者g2k’,其中K’是Zp*中與K不同的隨機數(shù)。
25.一種檢索方法,包括
生成檢索請求;
接收一個或多個索引項和聚合器;
從所述接收的一個或多個索引項提取一條或多條檢索信息;以及
利用所述接收的聚合器驗證所述提取的檢索信息。
26.根據(jù)權(quán)利要求25所述的方法,其中,驗證檢索信息包括根據(jù)所述提取的檢索信息計算聚合器,并用所述接收的聚合器檢驗所述計算出的聚合器。
27.根據(jù)權(quán)利要求25所述的方法,其中,驗證檢索信息包括驗證聚合簽名。
28.根據(jù)權(quán)利要求25所述的方法,其中,提取檢索信息包括解密所述一個或多個索引項。
29.根據(jù)權(quán)利要求26所述的方法,其中,計算聚合器包括利用聚合簽名、異或運算、取模運算中的至少一種聚合所述檢索信息
30.根據(jù)權(quán)利要求26所述的方法,其中,計算聚合器包括聚合包含所述檢索信息的信息的密文,或者聚合從包含所述檢索信息的信息映射而來的數(shù)據(jù)。
31.一種檢索裝置,包括
檢索請求單元,適合于生成檢索請求;
檢索信息提取單元,適合于從接收的一個或多個索引項提取一條或多條檢索信息;以及
驗證單元,適合于利用接收的聚合器驗證所述提取的檢索信息。
32.根據(jù)權(quán)利要求31所述的裝置,其中,所述驗證單元被配置為根據(jù)所述提取的檢索信息計算聚合器,并用所述接收的聚合器檢驗所述計算出的聚合器。
33.根據(jù)權(quán)利要求31所述的裝置,其中,所述驗證單元被配置為驗證聚合簽名。
34.根據(jù)權(quán)利要求31所述的裝置,其中,所述檢索信息提取單元被配置為通過解密所述一個或多個索引項,來提取所述檢索信息。
35.根據(jù)權(quán)利要求32所述的裝置,其中,所述驗證單元被配置為通過利用聚合簽名、異或運算、取模運算中的至少一種聚合所述檢索信息,來計算聚合器。
36.根據(jù)權(quán)利要求32所述的裝置,其中,所述驗證單元被配置為通過聚合包含所述檢索信息的信息的密文,或者聚合從包含所述檢索信息的信息映射而來的數(shù)據(jù),來計算所述聚合器。
全文摘要
本發(fā)明提供了一種生成索引的方法和裝置以及檢索方法和裝置。索引條目至少包括對應于檢索項的檢索項標識、根據(jù)與檢索項相關(guān)的一條或多條檢索信息而生成的一個或多個索引項、以及關(guān)于檢索信息的聚合器。通過聚合檢索信息,或者聚合包含檢索信息的信息的密文,或者聚合從包含檢索信息的信息映射而來的數(shù)據(jù),來得到聚合器。檢索時,索引項和聚合器被提供給檢索者,檢索者從索引項提取檢索信息,并利用聚合器驗證所提取的檢索信息是否完整。在一個實施例中,聚合器被加在加密倒排索引中。
文檔編號G06F17/30GK101739400SQ20081017272
公開日2010年6月16日 申請日期2008年11月11日 優(yōu)先權(quán)日2008年11月11日
發(fā)明者雷浩, 田野, 曾珂, 王利明, 福島俊一 申請人:日電(中國)有限公司