專利名稱:一種數(shù)據(jù)外包環(huán)境下的查詢結(jié)果驗(yàn)證方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)庫管理系統(tǒng)領(lǐng)域,涉及一種數(shù)據(jù)外包環(huán)境下的查詢結(jié)果驗(yàn)證方 法,主要針對(duì)在數(shù)據(jù)發(fā)布者和查詢服務(wù)提供者分離的情況下,保障查詢結(jié)果的正確性和完 全性。
背景技術(shù):
單一 XML驗(yàn)證包括檢查單一 XML數(shù)據(jù)查詢結(jié)果的正確性和完全性?;趩我?XML數(shù)據(jù)庫的驗(yàn)證,目前主要的研究?jī)?nèi)容包括文獻(xiàn)“Executing SQL over encrypted data in the database-service-provider model, presented at the Proceedings of the 2002ACM SIGMOD international conference on Management of data,Madison, Wisconsin, 2002. ”中提出的外包數(shù)據(jù)的加密保護(hù)并基于加密數(shù)據(jù)的查詢處 3S;文^“Authentication of outsourced databases using signature aggregation and chaining vol. 3882. Berlin, ALLEMAGNE =Springer, 2006"中提出的外包數(shù)據(jù)的完全性保 護(hù);文獻(xiàn)"Verifying completeness of relational query results in data publishing, presented at the Proceedings of the 2005ACM SIGMOD international conference on Management of data, Baltimore, Maryland,2005”中關(guān)于外包數(shù)據(jù)的查詢完全性、準(zhǔn)確性 和時(shí)效性研究等方面。但這些研究基本面向關(guān)系數(shù)據(jù),所提出的方法、算法無法直接應(yīng)用于 目前應(yīng)用越來越廣泛的XML數(shù)據(jù)。目前針對(duì)XML數(shù)據(jù)的可信查詢處理的代表性工作有兩種,一是在文獻(xiàn)“Flexible authentication of XML documents, presented at the Proceedings of the 8th ACM conference on Computer and Communications Security, Philadelphia, PA, USA,2001." 中提出的基于 < 路徑,節(jié)點(diǎn)集 > 的路徑表查詢驗(yàn)證方法,另一個(gè)是在文獻(xiàn)“Structural signatures for tree data structures, Proc. VLDB Endow. , vol. 1, pp. 138-150, 2008.,, 中提出的基于Pre-Post節(jié)點(diǎn)編碼的XML樹結(jié)構(gòu)驗(yàn)證方法。這兩種方法都沒有解決查詢完 全性的問題服務(wù)器返回的結(jié)果是否全部包含了對(duì)應(yīng)查詢語句(XPath或XQuery)所應(yīng)得到 的全部結(jié)果,并且沒有多余的非查詢結(jié)果被返回。
發(fā)明內(nèi)容
本發(fā)明是針對(duì)單一 XML數(shù)據(jù)庫驗(yàn)證問題,克服上述現(xiàn)有相應(yīng)技術(shù)存在的不足,提 出的一種數(shù)據(jù)外包環(huán)境下的查詢結(jié)果驗(yàn)證方法。本方法既能保證查詢結(jié)果的完全性,又能 保證查詢結(jié)果的正確性。本發(fā)明的技術(shù)方案為一種數(shù)據(jù)外包環(huán)境下的查詢結(jié)果驗(yàn)證方法,其步驟為1)數(shù)據(jù)源端構(gòu)造存儲(chǔ)到外包服務(wù)器端的數(shù)據(jù)集D的Hash表;其中數(shù)據(jù)集D為若 干XML文檔樹構(gòu)成的文檔樹;2)客戶端將查詢請(qǐng)求分別發(fā)送到數(shù)據(jù)源端和外包服務(wù)器端;
3)數(shù)據(jù)源端查詢?cè)揌ash表中滿足查詢請(qǐng)求的XML文檔樹結(jié)構(gòu)根節(jié)點(diǎn)的散列值 HD,并通過安全通道將其發(fā)送給客戶端;4)外包服務(wù)器端根據(jù)查詢請(qǐng)求返回查詢處理結(jié)果R’給客戶端,并提供可計(jì)算出 該HD的驗(yàn)證數(shù)據(jù)S ;5)客戶端根據(jù)散列函數(shù)、返回?cái)?shù)據(jù)R’以及驗(yàn)證數(shù)據(jù)S計(jì)算出Hd’,并檢驗(yàn)Hd’ = Hd 是否成立;若成立則返回結(jié)果正確,否則錯(cuò)誤。進(jìn)一步的,構(gòu)造所述數(shù)據(jù)集D的Hash表的方法為1)初始化一路徑表I^athTable,將數(shù)據(jù)集D自根節(jié)點(diǎn)開始的每一路徑作為路徑表 PathTable 中的一行;2)深度周游D并對(duì)D中所有子樹從小到大進(jìn)行編碼,將編碼作為每棵子樹的標(biāo) 識(shí);3)從路徑表PathTable中查找每棵子樹的入口,并把相應(yīng)子樹的標(biāo)識(shí)按照編碼先 后順序記錄在路徑表PathTable的相應(yīng)行;4)將路徑表PathTable每行所包含的標(biāo)識(shí)作為標(biāo)識(shí)組,計(jì)算每一標(biāo)識(shí)組的hash值 并把該值記錄在路徑表PathTable的相應(yīng)行。進(jìn)一步的,所述路徑表PathTable每行包含的信息有路徑、與路徑對(duì)應(yīng)的子樹編 碼按照文檔序的排列、MHT值。進(jìn)一步的,所述外包服務(wù)器端根據(jù)查詢請(qǐng)求返回查詢處理結(jié)果R’給客戶端,并提 供可計(jì)算出該戰(zhàn)的驗(yàn)證數(shù)據(jù)S的方法為1)在路徑表PathTable中查找所有滿足查詢請(qǐng)求的路徑;2)對(duì)于每一條符合要求的路徑,返回一三元組(labelpath、subtrees、 hashpath);其中,labelpath為符合要求路徑的全路徑、subtrees為路徑表I^athTable中 與符合要求路徑對(duì)應(yīng)的行中所有標(biāo)識(shí)對(duì)應(yīng)的子樹序列、hashpath為從符合要求路徑對(duì)應(yīng)的 葉節(jié)點(diǎn)開始到計(jì)算根節(jié)點(diǎn)hash值路徑上用到的所有的hash值形成hash路徑;3) 31 [Hi W H 7Π (labelpath^ subtrees、hashpath)歹Ij ■中的 labelpath^ subtrees作為返回查詢結(jié)果R,,hashpath作為驗(yàn)證數(shù)據(jù)S。進(jìn)一步的,數(shù)據(jù)源端查詢所述散列值Hd的方法為1)在路徑表PathTable中查詢所有滿足查詢請(qǐng)求的路徑;2)對(duì)于所有符合要求的路徑,如果存在子樹序列,則為每個(gè)子樹構(gòu)建D0MHASH并 基于所有子樹的D0MHASH構(gòu)造MHT樹,將該MHT樹根的值放入一 HashSet集合中;3)對(duì) HashSet 構(gòu)建 MHT 樹,求出根節(jié)點(diǎn) MHTcheck ;4)對(duì)MHTcheck簽名得到所述散列值Hd。進(jìn)一步的,所述計(jì)算出Hd’的方法為1)對(duì)于外包服務(wù)器端返回的每個(gè)三元組(labelpath、subtrees、hashpath);a)計(jì)算查詢結(jié)果subtrees中每個(gè)子樹的D0MHASH ; b)用a)步驟得到的D0MHASH構(gòu)建MHT,計(jì)算該MHT根節(jié)點(diǎn)的hash值;c)基于b)中的hash值和hashpath,計(jì)算labelpath對(duì)應(yīng)的MHT樹的根節(jié)點(diǎn)hash 值Hd;2)對(duì)所有三元組生成的hash值構(gòu)成的序列,構(gòu)建MHT樹并得到根節(jié)點(diǎn)的hash值MHTT,利用簽名函數(shù)得到H/。進(jìn)一步的,所述數(shù)據(jù)源端將HashSet集合返回給客戶端;客戶端將計(jì)算出的每一 hash值Hd,核查當(dāng)前Hd e HashSet是否成立,若成立則該返回結(jié)果正確,否則返回結(jié)果不正確。XML查詢完全性驗(yàn)證的定義如下令D= {D1,D2,. . ·,Dm}為Data Owner(數(shù)據(jù)源) 外包到外包服務(wù)器krver上的XML數(shù)據(jù)集(文檔樹組成的森林),令R = Qc (D)為基于數(shù) 據(jù)D執(zhí)行查詢Qc的正確查詢結(jié)果;令R’為查詢用戶(這里查詢用戶不是Data Owner)將 Qc提交給krver的查詢處理結(jié)果,則查詢完全性驗(yàn)證可歸納為對(duì)關(guān)系R^R’的判斷??紤] 到數(shù)據(jù)庫查詢結(jié)果的準(zhǔn)確性在實(shí)際應(yīng)用中的重要性,本方法將該判斷進(jìn)一步嚴(yán)格為R^R’ 且R,[R,即 R = R,。MHT樹(Merkle Hash Tree, Merkle散列樹)是一種根據(jù)葉節(jié)點(diǎn)值排序的二叉樹 結(jié)構(gòu)。葉節(jié)點(diǎn)以其對(duì)應(yīng)的值(如數(shù)值或字符串)作為鍵進(jìn)行散列運(yùn)算,每個(gè)內(nèi)部節(jié)點(diǎn)的散 列值是根據(jù)兩個(gè)子節(jié)點(diǎn)的散列值獲得。XML查詢正確性驗(yàn)證是基于MHT的數(shù)據(jù)正確性驗(yàn)證,其定義如下。D= {D1,D2,..., Dm}為數(shù)據(jù)源存放在服務(wù)器上的外包數(shù)據(jù),與此同時(shí),數(shù)據(jù)源會(huì)根據(jù)已有方法計(jì)算森林D所 有子樹的DOMHASH(DOM樹散列值),并基于此計(jì)算D中所有路徑對(duì)應(yīng)的MHT值。令Hd為滿 足查詢Qc的D中所有路徑MHT值所構(gòu)造的對(duì)應(yīng)MHT樹結(jié)構(gòu)根節(jié)點(diǎn)的散列值,合法的查詢用 戶均會(huì)利用安全通道從數(shù)據(jù)源得到該Hd。當(dāng)服務(wù)器返回查詢用戶提交的查詢處理結(jié)果R’ 時(shí),必須隨同提供可計(jì)算出Hd的驗(yàn)證數(shù)據(jù)S,查詢用戶可基于散列函數(shù)h (),返回?cái)?shù)據(jù)R’以 及驗(yàn)證數(shù)據(jù)S計(jì)算出Hd’并檢驗(yàn)等式Hd’ =Hd是否成立。若成立則說明返回結(jié)果正確,否 則錯(cuò)誤。本發(fā)明方法的具體實(shí)施步驟如下1.數(shù)據(jù)源(Data Owner)對(duì)數(shù)據(jù)(Data)簽名;本步驟通過數(shù)據(jù)源對(duì)XM L數(shù)據(jù)樹構(gòu)造Hash表來實(shí)現(xiàn)。2.服務(wù)端(Server)查詢并構(gòu)建驗(yàn)證;3.數(shù)據(jù)源(Data Owner)查詢并提供驗(yàn)證4.客戶端(Client)核查結(jié)果是正確的與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為本發(fā)明分別在兩個(gè)數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)(1)由DTD生成的XML文件集(合成數(shù) 據(jù)集);(2)真實(shí)XML數(shù)據(jù)集。從實(shí)驗(yàn)結(jié)果來看,增加完全性檢驗(yàn)的時(shí)間只增加了 數(shù)量 級(jí)以下的時(shí)間,但是本發(fā)明既能保證查詢結(jié)果的完全性,又能保證查詢結(jié)果的正確性,從而 為查詢結(jié)果準(zhǔn)確性在實(shí)際應(yīng)用中的重要性提供保障。
圖1、XML數(shù)據(jù)樹PathTable構(gòu)造示意(忽略葉節(jié)點(diǎn));圖2、本發(fā)明查詢驗(yàn)證方法流程圖。
具體實(shí)施例方式附圖1為XML數(shù)據(jù)樹PathTable構(gòu)造示意(忽略葉節(jié)點(diǎn))
1.路徑表I^athTable初始化=PathTable中每行包含的信息有路徑、所有與 該路徑對(duì)應(yīng)的子樹編碼按照文檔序的排列、MHT值等;D中所有自根節(jié)點(diǎn)開始的路徑,在 PathTable中都有一行與之對(duì)應(yīng)。2.處理D (將D看作是由子樹Dl,D2,. . .,Dm構(gòu)成的一顆樹),深度周游D并對(duì) D中所有子樹(subtree)從小到大進(jìn)行編碼,將該編碼作為每棵子樹的標(biāo)識(shí)。從路徑表 PathTable中查找每棵子樹的入口,并把相應(yīng)子樹的標(biāo)識(shí)按照編碼先后順序記錄在路徑表 PathTable的相應(yīng)行。3.路徑表PathTable中的每行都包含0至多個(gè)不同的標(biāo)識(shí),形成標(biāo)識(shí)組。每個(gè)標(biāo) 識(shí)組通過MHT求得一個(gè)hash值,把該值記錄在路徑表PathTable的相應(yīng)行。對(duì)于只有0個(gè) 標(biāo)識(shí)的行,將hash值設(shè)為0。附圖2為本發(fā)明的查詢驗(yàn)證流程圖1.數(shù)據(jù)源(Data Owner)對(duì)數(shù)據(jù)(Data)簽名;本步驟通過數(shù)據(jù)源對(duì)XM L數(shù)據(jù)樹構(gòu)造Hash表來實(shí)現(xiàn)。主要步驟如下①處理D (將D看作是由子樹Dl,D2,'",Dm構(gòu)成的一顆樹),深度周游D并對(duì)D中所 有子樹(subtree)從小到大進(jìn)行編碼,將該編碼作為每棵子樹的標(biāo)識(shí)。從路徑表I^athTable 中查找每棵子樹的入口,并把相應(yīng)子樹的標(biāo)識(shí)按照編碼先后順序記錄在路徑表PathTable 的相應(yīng)行。②路徑表I^thTable中的每行都包含O至多個(gè)不同的標(biāo)識(shí),形成標(biāo)識(shí)組。每個(gè)標(biāo) 識(shí)組通過MHT求得一個(gè)hash值,把該值記錄在路徑表PathTable的相應(yīng)行。對(duì)于只有O個(gè) 標(biāo)識(shí)的行,將hash值設(shè)為O。2.服務(wù)端(Server)查詢并構(gòu)建驗(yàn)證;①在路徑表PathTable中查找所有滿足查詢語句q的路徑;②對(duì)于每一條符合要求的路徑,返回;a)全路徑(label path);b)路徑表I^athTable的該行中的所有標(biāo)識(shí)對(duì)應(yīng)的子樹序列(subtrees);c)從該路徑對(duì)應(yīng)的葉節(jié)點(diǎn)開始,到計(jì)算根節(jié)點(diǎn)的MHT的hash值路徑上用到的所有 白勺 hash {t, MM hash (hashpath);③返回步驟②中的三元組(labelpath、subtrees、hashpath)形成的列表。3.數(shù)據(jù)源(Data Owner)查詢并提供驗(yàn)證;具體實(shí)施步驟如下①在路徑表PathTable中查詢所有滿足查詢語句q的路徑;②對(duì)于所有符合要求的路徑,如果存在子樹序列,為每個(gè)子樹構(gòu)建D0MHASH,并基 于所有子樹的D0MHASH構(gòu)造MHT樹,將該MHT樹根的值放入HashSet集合中;③對(duì)HashSet構(gòu)建MHT,求出根節(jié)點(diǎn)MHTcheck ;④對(duì)MHTcheck簽名(設(shè)簽名函數(shù)為SD(.))并通過安全通道返回結(jié)果HD = checkResult 及 HashSet 給客戶端。4.客戶端(Client)核查結(jié)果是正確的。具體實(shí)施步驟如下
①對(duì)于服務(wù)器端返回的每個(gè)三元組;a)計(jì)算查詢結(jié)果(子樹序列)subtrees中每個(gè)子樹的D0MHASH ;b)用a)步驟得到的D0MHASH構(gòu)建MHT,得到該MHT根節(jié)點(diǎn)的hash值;c)基于b)中的hash值和hashpath,計(jì)算Iabelpath對(duì)應(yīng)的MHT樹的根節(jié)點(diǎn)hash 值Hd;d)核查Hd e HashSet是否成立,若成立則該返回結(jié)果正確,否則返回結(jié)果不正確。②對(duì)于所有的三元組通過b)步驟生成的hash值構(gòu)成的序列,構(gòu)建MHT樹并得到 根節(jié)點(diǎn)的hash值MHTT,利用簽名函數(shù)SD (MHTT)得到Hd ‘,驗(yàn)證HD’ = Hd是否成立,若不成 立,則說明該查詢結(jié)果不具備完全性。
權(quán)利要求
1.一種數(shù)據(jù)外包環(huán)境下的查詢結(jié)果驗(yàn)證方法,其步驟為1)數(shù)據(jù)源端構(gòu)造存儲(chǔ)到外包服務(wù)器端的數(shù)據(jù)集D的Hash表;其中數(shù)據(jù)集D為若干XML 文檔樹構(gòu)成的文檔樹;2)客戶端將查詢請(qǐng)求分別發(fā)送到數(shù)據(jù)源端和外包服務(wù)器端;3)數(shù)據(jù)源端查詢?cè)揌ash表中滿足查詢請(qǐng)求的XML文檔樹結(jié)構(gòu)根節(jié)點(diǎn)的散列值HD,并 通過安全通道將其發(fā)送給客戶端;4)外包服務(wù)器端根據(jù)查詢請(qǐng)求返回查詢處理結(jié)果R’給客戶端,并提供可計(jì)算出該Hd 的驗(yàn)證數(shù)據(jù)S ;5)客戶端根據(jù)散列函數(shù)、返回?cái)?shù)據(jù)R’以及驗(yàn)證數(shù)據(jù)S計(jì)算出Hd’,并檢驗(yàn)Hd’=Hd是 否成立;若成立則返回結(jié)果正確,否則錯(cuò)誤。
2.如權(quán)利要求1所述的方法,其特征在于構(gòu)造所述數(shù)據(jù)集D的Hash表的方法為1)初始化一路徑表I^athTable,將數(shù)據(jù)集D自根節(jié)點(diǎn)開始的每一路徑作為路徑表 PathTable 中的一行;2)深度周游D并對(duì)D中所有子樹從小到大進(jìn)行編碼,將編碼作為每棵子樹的標(biāo)識(shí);3)從路徑表I^athTable中查找每棵子樹的入口,并把相應(yīng)子樹的標(biāo)識(shí)按照編碼先后順 序記錄在路徑表PathTable的相應(yīng)行;4)將路徑表I^athTable每行所包含的標(biāo)識(shí)作為標(biāo)識(shí)組,計(jì)算每一標(biāo)識(shí)組的hash值并把 該值記錄在路徑表PathTable的相應(yīng)行。
3.如權(quán)利要去2所述的方法,其特征在于所述路徑表PathTable每行包含的信息有 路徑、與路徑對(duì)應(yīng)的子樹編碼按照文檔序的排列、MHT值。
4.如權(quán)利要求2或3所述的方法,其特征在于所述外包服務(wù)器端根據(jù)查詢請(qǐng)求返回查 詢處理結(jié)果R’給客戶端,并提供可計(jì)算出該Hd的驗(yàn)證數(shù)據(jù)S的方法為1)在路徑表I^thTable中查找所有滿足查詢請(qǐng)求的路徑;2)對(duì)于每一條符合要求的路徑,返回一三元組(labelpath、subtrees、hashpath);其 中,Iabelpath為符合要求路徑的全路徑、subtrees為路徑表I^athTable中與符合要求路徑 對(duì)應(yīng)的行中所有標(biāo)識(shí)對(duì)應(yīng)的子樹序列、hashpath為從符合要求路徑對(duì)應(yīng)的葉節(jié)點(diǎn)開始到計(jì) 算根節(jié)點(diǎn)hash值路徑上用到的所有的hash值形成hash路徑;3)(labelpath> subtrees^ hashpath) ^lJ^Φ ^ labelpath> subtrees 作為返回查詢結(jié)果R,,hashpath作為驗(yàn)證數(shù)據(jù)S。
5.如權(quán)利要求4所述的方法,其特征在于數(shù)據(jù)源端查詢所述散列值Hd的方法為1)在路徑表I^thTable中查詢所有滿足查詢請(qǐng)求的路徑;2)對(duì)于所有符合要求的路徑,如果存在子樹序列,則為每個(gè)子樹構(gòu)建D0MHASH并基于 所有子樹的D0MHASH構(gòu)造MHT樹,將該MHT樹根的值放入一 HashSet集合中;3)對(duì)HashSet構(gòu)建MHT樹,求出根節(jié)點(diǎn)MHTcheck;4)對(duì)MHTcheck簽名得到所述散列值Hd。
6.如權(quán)利要求5所述的方法,其特征在于所述計(jì)算出Hd’的方法為1)對(duì)于外包服務(wù)器端返回的每個(gè)三元組(labelpath、subtrees、hashpath);a)計(jì)算查詢結(jié)果subtrees中每個(gè)子樹的D0MHASH;b)用a)步驟得到的D0MHASH構(gòu)建MHT,計(jì)算該MHT根節(jié)點(diǎn)的hash值;c)基于b)中的hash值和hashpath,計(jì)算Iabelpath對(duì)應(yīng)的MHT樹的根節(jié)點(diǎn)hash值Hd ;2)對(duì)所有三元組生成的hash值構(gòu)成的序列,構(gòu)建MHT樹并得到根節(jié)點(diǎn)的hash值MHTT, 利用簽名函數(shù)得到Hd’。
7.如權(quán)利要求6所述的方法,其特征在于所述數(shù)據(jù)源端將Hashkt集合返回給客戶端; 客戶端將計(jì)算出的每一 hash值Hd,核查當(dāng)前Hd e HashSet是否成立,若成立則該返回結(jié)果 正確,否則返回結(jié)果不正確。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)外包環(huán)境下的查詢結(jié)果驗(yàn)證方法,屬于數(shù)據(jù)庫管理系統(tǒng)領(lǐng)域。本方法為1)數(shù)據(jù)源端構(gòu)造存儲(chǔ)到外包服務(wù)器端的數(shù)據(jù)集D的Hash表;2)客戶端將查詢請(qǐng)求分別發(fā)送到數(shù)據(jù)源端和外包服務(wù)器端;3)數(shù)據(jù)源端查詢?cè)揌ash表中滿足查詢請(qǐng)求的XML文檔樹結(jié)構(gòu)根節(jié)點(diǎn)的散列值HD,并通過安全通道將其發(fā)送給客戶端;4)外包服務(wù)器端根據(jù)查詢請(qǐng)求返回查詢處理結(jié)果R’給客戶端,并提供可計(jì)算出該HD的驗(yàn)證數(shù)據(jù)S;5)客戶端根據(jù)散列函數(shù)、返回?cái)?shù)據(jù)R’以及驗(yàn)證數(shù)據(jù)S計(jì)算出HD’,并檢驗(yàn)HD’=HD是否成立;若成立則返回結(jié)果正確,否則錯(cuò)誤。本發(fā)明可保證查詢結(jié)果的完全性和正確性,為查詢結(jié)果在實(shí)際應(yīng)用中的重要性提供保障。
文檔編號(hào)G06F17/30GK102073716SQ20111000123
公開日2011年5月25日 申請(qǐng)日期2011年1月5日 優(yōu)先權(quán)日2011年1月5日
發(fā)明者包小源, 李樹節(jié), 楊冬青, 王騰蛟, 蔡慧慧 申請(qǐng)人:北京大學(xué)