邵梅芳,陳家琪,盧 菁
(上海理工大學光電學院,上海200093)
在云計算數據服務平臺概念出現之前,業界使用“數據庫服務”(Database as a Service)這個概念[1],或稱“數據庫外包”(Database Outsourcing),指的是企業把數據庫任務委托給專門的可以提供這些功能的第3方管理,第3方(數據庫服務者)將對委托的數據庫進行創建、訪問、維護、升級和管理等。而云計算是一種基于因特網的超級計算模式,云計算發展也面臨了許多關鍵性問題,特別是在數據安全和隱私保護方面尤為突出[2]。
云計算數據服務平臺的概念所能提供的服務對象不僅僅是數據庫,還包括了半結構化、無結構的數據甚至是文本文件、語音流和視頻流等多媒體數據等。由于在數據交換方面上缺少統一的標準,XML是當前處理結構化文檔信息的有力工具。XML描述的是數據本身的意義和實體之間的結構化的數據,又能夠表示半結構化的數據,如 Web數據。XML數據已經逐漸成為Internet上數據表示和交換的新的標準。隨著XML信息交流的增多,如何快速地從大量的XML數據中進行安全的數據查詢已經成為眾多研究者所關注的問題。
因此,把XML數據遷移到云計算平臺中,對云計算平臺中的XML數據實現安全查詢已成為必須解決的問題。
了解云計算平臺中的數據服務有3個重要的角色,分別是云計算中的數據服務提供者(DSP)、數據擁有者(Do)和數據請求者(DReq)。圖1是云計算數據服務架構框圖。
數據服務提供者(DSP)是一個專業的提供云計算數據服務的企業,維護委托方的數據,并能正確地進行數據的復制、備份等數據管理任務。
數據擁有者是擁有用戶數據的企業,產生用戶數據并將數據以保護用戶隱私的方式委托給云計算數據服務提供者。

圖1 云計算平臺中的數據框架
數據請求者(DReq)是指可以將用戶的查詢轉換成數據服務器可識別的查詢(如經過一定的查詢轉換),將云計算平臺中數據服務器返回的保護隱私的查詢結果經過處理,方便用戶進行查詢后處理的前端。圖1中涉及的3個角色之間的關系以及傳送數據的過程為:
①首先,為了使DReq能夠驗證DSP正確地返回Do想要返回的數據,數據擁有者以一定的方式把密鑰和驗證碼一起發送給數據請求者;
②其次,為了保證數據的隱私,數據擁有者就以某種保護隱私數據的方式對數據加以處理,數據擁有者把數據委托給數據服務提供者;
③再次,數據請求者請求數據服務提供者查詢數據,即Q1,…Qb,經過網絡查詢接口,DSP接收數據請求者發送來的需要查詢的數據,并正確執行此數據查詢,查詢結束后給數據請求者返回正確的查詢結果,即 ρ(Q1),…ρ(Qb) 。
在云服務平臺中,保證數據隱私安全是十分必要的,因此,數據請求者請求數據服務提供者執行查詢而且返回正確的查詢結果,即必須保證數據服務提供者查詢得到的數據滿足數據完整性和完備性。
數據的完整性[3]確保數據服務提供者經查詢得到的結果確實是來自真實的數據擁有者。而數據的完備性則是確保數據服務提供者在目標域上能夠正確地執行查詢并返回所有滿足數據請求者提供的查詢條件的數據。雖然數據的完整性和數據的完備性在概念上有所不同,但是它們都需要數據擁有者提供額外的機制來保證,而且有些機制既可以實現數據的完整性也可以實現數據的完備性。到目前為止,實現數據的完整性或完備性的機制主要有3種:基于數據簽名的方法、基于挑戰-響應的方法和基于概率的方法?;?種方法采用不同的原理,本文采用挑戰-響應協議實現XML數據完整性和完備性。
由于DSP在網絡、非集中以及惡劣的環境中正確執行查詢遭到質疑,因為云計算中的數據服務提供者有時為了避免因為執行查詢支付CPU和存儲費用,可能會因為懶惰或惡意而不去執行查詢,或者選擇返回一個不準確或完全不正確的查詢結果。為了解決這個問題,文獻[4]提出了挑戰-響應協議上的運行時查詢證明機制,是一種對任意查詢、確保查詢正確執行的解決方法。對于數據請求者發出的每一批查詢,DSP被挑戰需要提供查詢執行證明,然后,在DReq端被檢查接收到的實際查詢結果是否正確,以確定是否接受DSP執行查詢后返回的查詢結果。如圖2所示,在進行查詢時,與Do端委托時的數據分組保持一致,在DReq端先把數據分成n份(di,… dn)。

圖2 挑戰-響應模型
在查詢過程1中,提交一個查詢Q時,首先要計算哈希值CT=H(Q(di)),因為哈希值具有不可逆性和單向性,從而發現查詢結果匹配挑戰令牌,i作為挑戰值與查詢一起發送給DSP。
在查詢過程2中,DSP通過網絡接口接收到DReq提交的信息,DSP響應查詢并在返回查詢結果的同時,要返回i的值作為挑戰值的響應值。
在查詢過程3中,DSP發送查詢的結果。因此DReq就可以根據返回的響應值判斷DSP是否正確執行查詢并返回正確的查詢結果。挑戰-響應方法的目的是只有當返回所有的挑戰值后才能返回正確的查詢結果。而挑戰值必須是在所有查詢都已執行的情況下才能得到,因此挑戰-響應方法保證了數據完整性,保障數據查詢正確執行和返回正確的查詢結果。
XML是各種應用程序之間進行數據傳輸的最常用的工具,并且在信息存儲和描述領域變得越來越流行,因此XML數據查詢的安全性也越來越重要。XML數據在查詢的過程中,也可以轉換成關系數據庫來查詢,但是增加了查詢過程。把數據庫外包中的挑戰-響應協議用于云計算平臺中的XML數據進行安全查詢,并保證了查詢執行證明以及數據的完整性和和完備性,將使云計算平臺中數據查詢安全又前進了一步,省去了諸多的麻煩。下面要解決的是XML數據在查詢過程中如何保證數據安全以及查詢得到正確的結果。圖3即是使用挑戰-響應方法對XML查詢建立模型。

圖3 云計算平臺中XML數據安全查詢結構
XML文檔屬于半結構化的數據,不同于關系數據庫是結構化數據。但同樣適用于挑戰-響應協議。在查詢執行開始時,數據請求端先把XML文件分成n份(XML1,…XMLn),當提交一個查詢W時,為了保證XML數據安全,需要對XML數據進行加密處理。由于加密哈希的不可逆性,采用計算哈希值 CT=H(W(XMLY)),Y∈(1,a),保證 Dreq 端的數據安全。Y是作為挑戰值與查詢一起通過網絡查詢接口發送給DSP端。此外,為了避免先前使用過的挑戰令牌的重復或被DSP記住該查詢,把隨意猜測的可能不正確的查詢結果發送給數據請求端。由于關系數據庫屬于結構化數據,而XML數據屬于半結構化數據,他們的查詢過程在DSP端有所不同。關系數據庫使用的是SQL語言,而XML數據則使用的是XQuery語言。
DReq端發送完畢查詢,DSP端同時通過網絡接口接收到DReq端提交的查詢以及隨機數。此時DSP端響應查詢并執行該查詢,隨機數的存在防止了在查詢中會遇到惡意的攻擊或懶惰行為,DSP端不執行令牌的哈希值,在第1次使用后將是沒用的數據,這樣在DSP端沒有執行才是可能發生的。
DSP正確執行完查詢后并查詢得到正確的查詢結果,在DSP端返回查詢結果的同時,要返回Y的值作為挑戰值的響應值。在此需要強調的是在DSP端執行查詢XML數據并得到正確的查詢結果后,傳輸給請求端的數據也是XML格式,文獻[8]提出了一種方案可應用于要求身份隱藏和身份隱私保護的安全傳輸環境。查詢后傳輸給數據請求端的數據和關系數據庫是有所不同的,傳輸的數據是XML格式,這與關系數據庫查詢的有很大區別。因此DReq就可以根據返回的響應值Y,通過判斷Y=Y'是否正確,判斷DSP是否正確執行查詢并返回正確的XML數據查詢結果。下面將關注隨機數存在的必要性以及理解一次性使用隨機數的重要性。
在缺少隨機數的情況下,DSP很明顯可以記住以前看到過的查詢批處理的挑戰令牌。如果有足夠的存儲可用,當它執行查詢和響應挑戰時,可以記錄相關的令牌,例如,通過構建哈希表標記(查詢,段)對挑戰令牌,最終DSP將會熟知更多的令牌。這些稍后將用于響應挑戰(查找哈希表),就沒有必要執行相關的工作。即如果DReq碰巧提交相同的令牌2次,DSP是直接返回結果,而沒有對給定的批處理查詢做實際的工作。為每一次挑戰令牌使用特別的隨機數,確保不被DSP記錄。同時發送一個隨機數到DSP端,因為如果DSP端記錄挑戰令牌,將會不執行查詢,直接返回查詢結果。
云計算平臺中XML數據的安全查詢,工作重要集中在面向查詢服務的數據隱私保護算法[5]。文獻[6]則研究了隱私保護數據發布中身份保持的匿名方法。但是,目前,對海量數據查詢和更新的完整性和完備性問題的研究還很薄弱。文獻[7]對數據查詢和數據更新的完整性保證進行了一系列的研究。但是云計算數據服務平臺具有與XML數據集成系統中的數據服務完全不同的特征,因此,云計算技術在蓬勃發展,在云計算平臺中實現XML查詢是大勢所趨。在Hadoop平臺上利用挑戰-響應協議實現XML數據安全的查詢,采用的是java編程語言,使用的是JDK1.5.0的開發環境。在hadoop平臺中建立了XML數據安全查詢的系統架構,分析了架構模型保證安全性的各個過程。實踐證明,利用挑戰-響應協議實現XML數據安全的查詢具有可行性。
[1] HACIGüMüSH,MEHROTRA S,IYER B.Providing Database as a Service[C]∥ Proc.of the Int’l Conf.on Data Engineering.Washington:IEEE Computer Society Press,2002:29-38.
[2] 田秀霞,王曉玲,高明.數據庫服務-安全與隱私[J].軟件學報,2010,21(5):991-1006.
[3] MYKLETUN E, NARASIMHA M, TSUDIK G.Authentication and Integrity in Outsourced Databases[J].ACM Trans.on Storage,2006,2(2):107-138.
[4] SION R.Query Execution Assurance Foroutsourced Database[C]∥ Proc.of the 31st InConf.On Very Large Data Bases.New York:ACM Press,2005:601-602
[5] 朱青,趙桐,王珊.面向查詢服務的數據據隱私保護算法[J].計算機科報,2010,33(8):1316-1323.
[6] 童云海,陶有東,唐世渭.隱私保護數據發布中身份保持的匿名方法[J].軟件學報,2010,21(4):771-781.
[7] LU Jing,PENG Dun-lu,HUO Huan.Analyzing Triggers in XML Data Integration Systems[J].International Journal of Digital Content Technology and its Applications,2010,4(5):38-45.