付 偉,顧晨陽(yáng)*,高 強(qiáng)
(1.海軍工程大學(xué)信息安全系,武漢430033;2.海軍聯(lián)合參謀部指揮保障大隊(duì),北京100841)
在云存儲(chǔ)環(huán)境中,用戶把數(shù)據(jù)上傳至云端,由云服務(wù)提供商存儲(chǔ)和管理數(shù)據(jù),用戶只擁有數(shù)據(jù)的所有權(quán),服務(wù)提供商擁有數(shù)據(jù)的直接控制權(quán)。即使用戶將數(shù)據(jù)加密上傳,也只能保證數(shù)據(jù)內(nèi)容本身不被泄露,服務(wù)提供商仍然可以通過(guò)對(duì)用戶訪問(wèn)行為的長(zhǎng)期記錄和觀察,開(kāi)展行為特征分析,從中挖掘出用戶的敏感信息或者對(duì)解密有用的信息。這些訪問(wèn)行為包括用戶訪問(wèn)數(shù)據(jù)的頻度、先后順序、數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系等。
不經(jīng)意隨機(jī)訪問(wèn)機(jī)(Oblivious Random Access Machine,ORAM)[1]通過(guò)構(gòu)造恰當(dāng)?shù)拇鎯?chǔ)結(jié)構(gòu)和訪問(wèn)機(jī)制,對(duì)用戶訪問(wèn)操作進(jìn)行變換,并增加一些冗余操作,使攻擊者無(wú)法根據(jù)用戶的行為來(lái)獲取有效信息。該技術(shù)可以隱藏用戶訪問(wèn)行為與訪問(wèn)目標(biāo)之間的對(duì)應(yīng)關(guān)系,是現(xiàn)階段保護(hù)用戶訪問(wèn)意圖的主要手段之一。ORAM 在傳統(tǒng)加密保護(hù)思想上額外增加了一道安全機(jī)制,提高了云端數(shù)據(jù)安全。
現(xiàn)有ORAM 方案[2-8]中數(shù)據(jù)只能由其擁有者訪問(wèn),屬于單用戶操作,通常不支持用戶之間的數(shù)據(jù)共享。然而在互聯(lián)網(wǎng)時(shí)代,數(shù)據(jù)共享需求比較突出,應(yīng)用場(chǎng)景較為普遍。目前,僅有部分ORAM 方案涉及到多用戶共享[9]。為實(shí)現(xiàn)ORAM 方案內(nèi)不同用戶共享數(shù)據(jù)的要求,Zhang 等[10]在2014 年以層次ORAM 方案為基礎(chǔ),將用戶和服務(wù)器通過(guò)一系列的串聯(lián)匿名器連接,設(shè)計(jì)實(shí)現(xiàn)了第一個(gè)具有實(shí)際應(yīng)用能力的多用戶ORAM 方案。該方案中,用戶利用自身私鑰對(duì)共享數(shù)據(jù)進(jìn)行加密,再通過(guò)串聯(lián)匿名器依次執(zhí)行加密運(yùn)算,最終形成密文,并將密文提交給云服務(wù)器,由云服務(wù)器存儲(chǔ)?;诖?lián)匿名器的多用戶共享方案假設(shè)用戶之間相互信任,并且共同擁有數(shù)據(jù)訪問(wèn)密鑰,然而在更多應(yīng)用場(chǎng)景中,用戶之間不存在完全相互信任,并且希望不同的用戶對(duì)數(shù)據(jù)有不同的訪問(wèn)權(quán)限,上述方案均不能滿足這種需求。因此,設(shè)計(jì)一個(gè)能夠?qū)崿F(xiàn)用戶間數(shù)據(jù)按需共享的ORAM方案具有較大的研究意義和實(shí)際應(yīng)用價(jià)值。
屬性加密(Attribute Based Encryption,ABE)作為一種公鑰密碼原語(yǔ),可以為云存儲(chǔ)提供靈活細(xì)粒度的訪問(wèn)控制,在密文或者密鑰中嵌入訪問(wèn)控制策略,實(shí)現(xiàn)對(duì)數(shù)據(jù)的靈活訪問(wèn)控制[11-12]。為此,本文利用屬性加密對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)控制,設(shè)計(jì)實(shí)現(xiàn)了一種基于屬性加密的新型多用戶共享ORAM 方案ABE-M-ORAM,在保證數(shù)據(jù)機(jī)密性和訪問(wèn)安全性的前提下實(shí)現(xiàn)了用戶之間的靈活數(shù)據(jù)共享。
屬性加密(ABE)[13]是公鑰密碼學(xué)的一種擴(kuò)展形式。基于身份的密碼學(xué)機(jī)制將用戶身份替代為用戶屬性,加密者通過(guò)設(shè)定由屬性構(gòu)成的訪問(wèn)策略,指定接受者應(yīng)具有的屬性,只有當(dāng)用戶屬性滿足密文的訪問(wèn)策略要求時(shí)才能解密密文,獲取明文。屬性加密技術(shù)極大豐富了訪問(wèn)策略和用戶權(quán)限的表達(dá)形式。
2005 年,Sahai 等[14]提 出 模 糊 身 份 加 密 方 案(Fuzzy Identity-Based Encryption),將身份的概念以一組屬性表示,采用門(mén)限技術(shù)實(shí)現(xiàn)相似匹配的訪問(wèn)策略,該方案被視為ABE 方案的雛形。Goyal 等[15]在2006 年提出ABE 機(jī)制,說(shuō)明屬性的概念和意義。ABE 機(jī)制根據(jù)應(yīng)用場(chǎng)景的不同,分為密鑰策略的屬性加密機(jī)制(Key Policy-Attribute Based Encryption,KPABE)[15]和 密 文 策 略 的 屬 性 加 密 機(jī) 制(Ciphertext Policy-Attribute Based Encryption,CP-ABE)[13],前者中密鑰與訪問(wèn)策略關(guān)聯(lián),密文與一組屬性關(guān)聯(lián),而后者相反。CP-ABE 和KPABE在實(shí)現(xiàn)細(xì)粒度訪問(wèn)控制的同時(shí),還保證了防串謀性。
屬性加密模型主要由數(shù)據(jù)所有者、數(shù)據(jù)共享者和可信第三方構(gòu)成,三者之間的關(guān)系如圖1所示。
圖1 屬性加密模型Fig.1 Attribute encryption model
數(shù)據(jù)所有者 對(duì)數(shù)據(jù)擁有絕對(duì)所有權(quán),向可信第三方提交數(shù)據(jù)屬性集要求,從而獲得可信第三方分發(fā)的屬性公鑰PK,利用屬性公鑰PK 和訪問(wèn)屬性要求將數(shù)據(jù)明文M 加密成密文C,并將密文C分享給數(shù)據(jù)共享者。
數(shù)據(jù)共享者 向可信第三方提交自身屬性集合,從而獲得可信第三方分發(fā)的屬性私鑰SK,利用屬性私鑰SK 對(duì)從數(shù)據(jù)所有者處獲得的密文C進(jìn)行解密。
可信第三方 根據(jù)數(shù)據(jù)所有者提出的屬性集產(chǎn)生主密鑰MK 和屬性公鑰PK,利用主密鑰和用戶共享者屬性集合產(chǎn)生屬性私鑰SK,分發(fā)屬性公鑰PK和屬性私鑰SK。
屬性加密ABE主要有以下四種算法:
1)Setup():設(shè)計(jì)屬性集,根據(jù)屬性計(jì)算主密鑰和屬性公鑰;
2)KeyGen():根據(jù)不同用戶的屬性集,計(jì)算用戶屬性私鑰;
3)Encrypt():數(shù)據(jù)所有者根據(jù)訪問(wèn)屬性集,利用屬性公鑰加密明文,得到密文;
4)Decrypt():數(shù)據(jù)共享者通過(guò)自身屬性私鑰,解密密文,得到明文。
2006 年Goyal 等[15]基于fuzzy IBE 提出一種基于密鑰的細(xì)粒度訪問(wèn)控制的ABE 方案,該方案將訪問(wèn)策略嵌入私鑰中,而密文與屬性集合相關(guān)聯(lián),因此被稱為密鑰策略的屬性加密機(jī)制(KP-ABE)。KP-ABE 本質(zhì)是一對(duì)多的公鑰加密技術(shù),該方案訪問(wèn)策略表示為一棵訪問(wèn)樹(shù),支持任意單調(diào)訪問(wèn)結(jié)構(gòu)和細(xì)粒度的訪問(wèn)控制,能夠?qū)崿F(xiàn)屬性間的與(and)、或(or)以及門(mén)限(threshold)操作。該方案的提出豐富了ABE 的性質(zhì)和適用范圍,大大加快了ABE相關(guān)研究的發(fā)展。
2007 年Bethencourt 等[13]提出一種基于密文策略的屬性加密機(jī)制(CP-ABE)。該方案將訪問(wèn)策略嵌入密文中,而密鑰與屬性集合相關(guān)聯(lián)。數(shù)據(jù)所有者通過(guò)公鑰加密明文,并根據(jù)密文定義訪問(wèn)結(jié)構(gòu)。由于是將訪問(wèn)結(jié)構(gòu)隱藏在密文之中,使方案的訪問(wèn)策略更加靈活。數(shù)據(jù)共享者的私鑰與自身屬性集相關(guān),解密時(shí),私鑰必須滿足訪問(wèn)策略,才能解密獲取明文。
Ring ORAM 是Ren 等[16-18]提出的新型ORAM 方案。服務(wù)器以二叉樹(shù)結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)塊,并在用戶端存儲(chǔ)一個(gè)數(shù)據(jù)塊地址映射表,用于存儲(chǔ)每個(gè)數(shù)據(jù)塊的存儲(chǔ)地址。通過(guò)層次遞進(jìn)遍歷搜索,較好地隱藏了用戶的訪問(wèn)模式,同時(shí)完成數(shù)據(jù)的高效訪問(wèn)和傳輸。
將數(shù)據(jù)塊存儲(chǔ)在大小為b=O(log N)的bucket 中,以bucket 作為二叉樹(shù)的節(jié)點(diǎn),建立高度為h=log N 的二叉樹(shù),共有N 個(gè)葉子節(jié)點(diǎn)。服務(wù)器將數(shù)據(jù)塊存儲(chǔ)在二叉樹(shù)的節(jié)點(diǎn)中,用該節(jié)點(diǎn)的子葉子節(jié)點(diǎn)表示存儲(chǔ)地址。在本地設(shè)置緩沖區(qū)stash,用于存儲(chǔ)云服務(wù)器提交的數(shù)據(jù)塊bucket。Ring ORAM 二叉樹(shù)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)如圖2所示。
圖2 Ring ORAM算法的數(shù)據(jù)結(jié)構(gòu)Fig.2 Data structure of Ring ORAM algorithm
圖2 中目標(biāo)數(shù)據(jù)塊u 的地址為葉子節(jié)點(diǎn)l,則說(shuō)明目標(biāo)數(shù)據(jù)塊存儲(chǔ)在路徑path(l)上的某一個(gè)bucket 中;路徑path(l)表示從根節(jié)點(diǎn)root到葉子節(jié)點(diǎn)l的路徑,即圖中虛線路徑。
Ring ORAM 方案執(zhí)行時(shí),用戶向服務(wù)器提交訪問(wèn)需求,并查詢目標(biāo)數(shù)據(jù)塊所在路徑。從root 節(jié)點(diǎn)開(kāi)始,沿著目標(biāo)路徑依次搜索每一個(gè)節(jié)點(diǎn)bucket,直至葉子節(jié)點(diǎn)。若仍未找到目標(biāo)數(shù)據(jù)塊,則遍歷stash,查找目標(biāo)數(shù)據(jù)塊。用戶操作結(jié)束后,為新數(shù)據(jù)塊分配新的地址,并更新數(shù)據(jù)塊地址映射表。最后把新數(shù)據(jù)塊寫(xiě)回stash中。
Ring ORAM 中的每個(gè)bucket 中的有效數(shù)據(jù)塊有X 個(gè),無(wú)效數(shù)據(jù)塊有Y 個(gè)。bucket 中的有效數(shù)據(jù)塊被讀取至緩沖區(qū)stash 后,服務(wù)器會(huì)將bucket 中的原數(shù)據(jù)塊刪除,由于bucket 中的有效數(shù)據(jù)塊只有X 個(gè),也就說(shuō),當(dāng)對(duì)一個(gè)bucket 進(jìn)行X 次讀取操作后,需要對(duì)該bucket 進(jìn)行重組。因此,為保證數(shù)據(jù)的茫然性,每進(jìn)行O(X)次訪問(wèn)操作,就要選擇對(duì)服務(wù)器的某一個(gè)二叉樹(shù)存儲(chǔ)路徑進(jìn)行重組操作。重組操作時(shí),將該路徑上所有數(shù)據(jù)塊讀取到stash 中,然后從該路徑的葉子節(jié)點(diǎn)開(kāi)始,把stash 中的數(shù)據(jù)塊寫(xiě)回,寫(xiě)回時(shí)要保證bucket 中的數(shù)據(jù)塊離自身的葉子節(jié)點(diǎn)最近。
基于串聯(lián)匿名器的ORAM 方案[19-20]主要是通過(guò)在用戶和云存儲(chǔ)服務(wù)器之間引入一系列協(xié)作但相互獨(dú)立的匿名器,從而實(shí)現(xiàn)多用戶數(shù)據(jù)共享。當(dāng)用戶需要查詢數(shù)據(jù)時(shí),由匿名器作為中間信息傳遞的橋梁,用戶的訪問(wèn)請(qǐng)求和云存儲(chǔ)服務(wù)器的應(yīng)答都將由匿名器轉(zhuǎn)發(fā)。
當(dāng)用戶需要訪問(wèn)某些數(shù)據(jù)項(xiàng)時(shí),利用匿名器來(lái)防止用戶與云存儲(chǔ)服務(wù)器進(jìn)行信息交互,保護(hù)了用戶的身份信息;而且用戶不需要存儲(chǔ)數(shù)據(jù)和身份密鑰的相關(guān)信息避免攻擊者通過(guò)用戶和云存儲(chǔ)服務(wù)器的交互信息來(lái)竊取用戶的隱私信息。
由于多個(gè)串聯(lián)匿名者相互獨(dú)立,所以當(dāng)部分匿名器不能工作時(shí),用戶的訪問(wèn)行為信息仍然是安全的。在體系結(jié)構(gòu)中,串聯(lián)匿名器整體被云存儲(chǔ)服務(wù)器虛擬為單個(gè)用戶,而且有且僅有匿名器可以和云存儲(chǔ)服務(wù)器進(jìn)行信息交互。
此方案雖然能夠解決多個(gè)用戶之間共享數(shù)據(jù)的問(wèn)題,但訪問(wèn)效率很低,而且無(wú)法鑒別訪問(wèn)用戶的身份,不能實(shí)現(xiàn)基于用戶身份的權(quán)限訪問(wèn)。因此,設(shè)計(jì)一個(gè)訪問(wèn)效率高,并且能夠?qū)崿F(xiàn)根據(jù)用戶不同身份分配訪問(wèn)權(quán)限的多用戶共享ORAM模型具有很大的實(shí)際應(yīng)用前景。
為解決多用戶共享云存儲(chǔ)服務(wù)器上的數(shù)據(jù),孫曉妮等[21]在2016 年提出了一種基于傳統(tǒng)二叉樹(shù)存儲(chǔ)結(jié)構(gòu)的多用戶(Binary-Tree-Structed Multiple user,BTS-M)ORAM 模型。該模型通過(guò)引入可信第三方作代理,作為用戶和服務(wù)器之間的橋梁,用于數(shù)據(jù)傳輸和各類參數(shù)的生成。BTS-M ORAM 模型主要由用戶、代理和云存儲(chǔ)服務(wù)器三部分組成。用戶作為數(shù)據(jù)的上傳者和使用者,擁有向服務(wù)器上傳數(shù)據(jù)和從服務(wù)器中下載的權(quán)限;代理作為可信第三方,作為用戶與服務(wù)器之間的數(shù)據(jù)傳遞者,同時(shí)運(yùn)行參數(shù)和密鑰生成算法生成各類參數(shù)和密鑰,并分發(fā)給不同的用戶;云存儲(chǔ)服務(wù)器作為數(shù)據(jù)的存儲(chǔ)者,接收并存儲(chǔ)用戶上傳的數(shù)據(jù),以及向用戶提供所查找的目標(biāo)數(shù)據(jù)。每個(gè)用戶都需要與代理構(gòu)建信息傳輸渠道,將代理作為信息集中和傳輸?shù)那溃粫?huì)直接與云存儲(chǔ)服務(wù)器進(jìn)行數(shù)據(jù)傳遞。因此,需要將原先由不同用戶本地存儲(chǔ)的位置映射表統(tǒng)一匯總到代理,并由代理進(jìn)行位置映射表的整合,形成服務(wù)器中數(shù)據(jù)塊的位置映射表。
在BTS-M ORAM模型之中,執(zhí)行的主要算法為以下兩種:
1)bucket.ReadAndRemove(s):在節(jié)點(diǎn)bucket 中搜索訪問(wèn)數(shù)據(jù)塊s,訪問(wèn)后移除數(shù)據(jù)塊s。
用戶在節(jié)點(diǎn)bucket 中訪問(wèn)數(shù)據(jù)塊s 時(shí),需要遍歷訪問(wèn)節(jié)點(diǎn)bucket 中的所有數(shù)據(jù)塊。訪問(wèn)方法為,先從節(jié)點(diǎn)bucket 中讀取一個(gè)密文數(shù)據(jù)塊m,并將密文數(shù)據(jù)塊m 提交給作為數(shù)據(jù)傳輸橋梁的代理,由代理對(duì)密文數(shù)據(jù)塊m 進(jìn)行第一次解密,得到解密數(shù)據(jù)塊m'。代理將解密數(shù)據(jù)塊m'交給提出數(shù)據(jù)訪問(wèn)申請(qǐng)的用戶,由用戶對(duì)解密數(shù)據(jù)塊m'進(jìn)行第二次解密,得到最終的明文數(shù)據(jù)塊M。如果該數(shù)據(jù)塊為目標(biāo)數(shù)據(jù)塊s,則返回給代理一個(gè)無(wú)效數(shù)據(jù)塊;如果該數(shù)據(jù)塊不是目標(biāo)數(shù)據(jù)塊,則將該數(shù)據(jù)塊直接加密后返回給代理。代理得到數(shù)據(jù)塊后,先加密再交還給服務(wù)器,由服務(wù)器將數(shù)據(jù)塊存儲(chǔ)在原位置。當(dāng)對(duì)節(jié)點(diǎn)bucket 中所有數(shù)據(jù)塊都進(jìn)行一次訪問(wèn)后,算法運(yùn)行結(jié)束。如果bucket.ReadAndRemove(s)算法執(zhí)行的結(jié)果為數(shù)據(jù)塊s,那么表明用戶從該節(jié)點(diǎn)成功訪問(wèn)到數(shù)據(jù)塊s;如果bucket.ReadAndRemove(s)算法執(zhí)行的結(jié)果為無(wú)效數(shù)據(jù)塊,那么表明該節(jié)點(diǎn)不存在數(shù)據(jù)塊s,用戶訪問(wèn)失敗。
2)bucket.Add(s,d):將數(shù)據(jù)塊s寫(xiě)入節(jié)點(diǎn)bucket中。
用戶在節(jié)點(diǎn)bucket中寫(xiě)入數(shù)據(jù)塊s時(shí),需要遍歷訪問(wèn)節(jié)點(diǎn)bucket中的所有數(shù)據(jù)塊。訪問(wèn)方法為,先從節(jié)點(diǎn)中讀取一個(gè)密文數(shù)據(jù)塊m,并將密文數(shù)據(jù)塊m 提交給作為數(shù)據(jù)傳輸橋梁的代理,由代理對(duì)密文數(shù)據(jù)塊進(jìn)行第一次解密,得到解密數(shù)據(jù)塊m'。代理將解密數(shù)據(jù)塊m'交給提出數(shù)據(jù)訪問(wèn)申請(qǐng)的用戶,由用戶對(duì)解密數(shù)據(jù)塊m'進(jìn)行第二次解密,得到最終的明文數(shù)據(jù)塊M。當(dāng)用戶得到的數(shù)據(jù)塊為有效數(shù)據(jù)塊,則直接將該數(shù)據(jù)塊返回給代理;當(dāng)用戶第一次從代理得到無(wú)效數(shù)據(jù)塊時(shí),將數(shù)據(jù)塊(s,d)作為新數(shù)據(jù)塊加密后發(fā)送給代理,之后得到的無(wú)效數(shù)據(jù)塊的處理方法與有效數(shù)據(jù)塊相同。代理得到數(shù)據(jù)塊后,先加密再交還給服務(wù)器,由服務(wù)器將數(shù)據(jù)塊存儲(chǔ)在原位置。當(dāng)對(duì)節(jié)點(diǎn)bucket 中所有數(shù)據(jù)塊都進(jìn)行一次訪問(wèn)后,算法運(yùn)行結(jié)束。如果bucket.Add(s,d)算法執(zhí)行的結(jié)果為數(shù)據(jù)內(nèi)容d,則表明已經(jīng)將數(shù)據(jù)塊s 成功存儲(chǔ)在該節(jié)點(diǎn)bucket 之中;如果bucket.Add(s,d)算法執(zhí)行的結(jié)果為空,則表明沒(méi)有成功將數(shù)據(jù)塊s存儲(chǔ)在該節(jié)點(diǎn)bucket之中。
基于屬性加密的多用戶共享ORAM 方案ABE-M-ORAM的是在BTS-M ORAM 模型的基礎(chǔ)上,結(jié)合屬性加密技術(shù)而設(shè)計(jì)實(shí)現(xiàn)的新型ORAM 模型,它可以有效解決當(dāng)下多用戶差別數(shù)據(jù)共享問(wèn)題,同時(shí)能夠?yàn)閿?shù)據(jù)提供有效的保護(hù)。
ABE-M-ORAM 的主體包括用戶(數(shù)據(jù)所有者和數(shù)據(jù)共享者)、可信第三方和云端服務(wù)器[22]。用戶和服務(wù)器不直接通信,而是由可信第三方負(fù)責(zé)兩者之間的數(shù)據(jù)傳遞??尚诺谌匠诉M(jìn)行數(shù)據(jù)傳遞,還需要根據(jù)每一個(gè)接入的用戶的屬性,完成具有屬性特性的密鑰生成和分發(fā)工作;同時(shí),還建立本地緩沖區(qū)stash 和存儲(chǔ)一張數(shù)據(jù)塊地址映射表,記錄每個(gè)數(shù)據(jù)塊所在路徑信息。數(shù)據(jù)在云端服務(wù)器以二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)存儲(chǔ),以bucket為基本存儲(chǔ)單元。
2.1.1 用戶接入階段
用戶0(數(shù)據(jù)所有者)將自身屬性集合提交至可信第三方,可信第三方則根據(jù)用戶0 提交的屬性集合生成主密鑰MK和屬性公鑰PK,保存主密鑰,并將屬性公鑰發(fā)布在公開(kāi)網(wǎng)絡(luò)。
用戶i(數(shù)據(jù)共享者)將自身屬性集合同樣提交給可信第三方,可信第三方則根據(jù)用戶i提交的屬性集合生成包含個(gè)人屬性集合信息的用戶屬性私鑰SKi,并通過(guò)保密通信渠道將SKi發(fā)送給用戶i。
2.1.2 數(shù)據(jù)上傳階段
用戶0從公開(kāi)渠道獲取屬性公鑰PK,利用屬性公鑰PK加密明文數(shù)據(jù)塊M,生成密文數(shù)據(jù)塊C;然后將密文數(shù)據(jù)塊C 提交給可信第三方和云存儲(chǔ)服務(wù)器。
可信第三方獲取密文數(shù)據(jù)塊C,為其隨機(jī)分配路徑地址,并記錄在數(shù)據(jù)塊地址映射表中;隨后將密文數(shù)據(jù)塊C 存放在stash中。
2.1.3 數(shù)據(jù)訪問(wèn)階段
1)用戶i向可信第三方提出訪問(wèn)請(qǐng)求。
2)可信第三方查詢留存的屬性密鑰SKi,判斷用戶i是否具有訪問(wèn)權(quán)限,驗(yàn)證不通過(guò)則駁回訪問(wèn)請(qǐng)求,通過(guò)則搜索數(shù)據(jù)塊地址映射表,確定數(shù)據(jù)所在的目標(biāo)塊路徑地址。
3)從root節(jié)點(diǎn)開(kāi)始,沿著目標(biāo)路徑依次搜索每一個(gè)節(jié)點(diǎn),找到目標(biāo)數(shù)據(jù)塊,則將目標(biāo)數(shù)據(jù)塊提交給可信第三方;若未找到或者在之前節(jié)點(diǎn)已經(jīng)找到目標(biāo)數(shù)據(jù)塊,則提交一個(gè)無(wú)效數(shù)據(jù)塊。
4)若仍未找到目標(biāo)數(shù)據(jù)塊,則可信第三方遍歷本地緩沖區(qū)stash,查找目標(biāo)數(shù)據(jù)塊。
5)可信第三方將目標(biāo)數(shù)據(jù)塊發(fā)送給用戶i。
6)用戶i 利用屬性私鑰SKi對(duì)目標(biāo)數(shù)據(jù)塊解密獲得明文數(shù)據(jù)塊M,進(jìn)行相應(yīng)的操作,更新為新的明文數(shù)據(jù)塊M'。
7)用戶i 同樣利用公開(kāi)渠道獲得的屬性公鑰PK 將新的明文數(shù)據(jù)塊M 加密變成新的密文數(shù)據(jù)塊C',并提交給可信第三方。
8)可信第三方為新的密文數(shù)據(jù)塊C'分配新的地址,并更新數(shù)據(jù)塊地址映射表,然后將新的密文數(shù)據(jù)塊C'寫(xiě)回stash中。
ABE-M-ORAM 系統(tǒng)模型主要有三部分:用戶群、可信第三方和云存儲(chǔ)服務(wù)器,如圖3 所示。用戶群又分為數(shù)據(jù)所有者和數(shù)據(jù)共享者。模型構(gòu)建三部分之間的相互關(guān)系,并建立通信,從而實(shí)現(xiàn)具有安全性的ABE-M-ORAM系統(tǒng)。
圖3 ABE-M-ORAM系統(tǒng)模型Fig.3 ABE-M-ORAM system model
2.2.1 構(gòu)建方法
根據(jù)系統(tǒng)模型,設(shè)計(jì)模型構(gòu)成,構(gòu)建多用戶訪問(wèn)環(huán)境。由多個(gè)用戶組成的用戶群構(gòu)成數(shù)據(jù)提交和數(shù)據(jù)訪問(wèn)端,云存儲(chǔ)服務(wù)器提供數(shù)據(jù)存儲(chǔ)服務(wù)功能。將可信第三方作為二者的連接樞紐,進(jìn)行信息交換。用戶群、代理和云存儲(chǔ)服務(wù)器三部分共同組成了ABE-M-ORAM系統(tǒng)模型。
2.2.2 模型描述
用戶i:用戶群中的用戶,既可以擔(dān)任數(shù)據(jù)所有者的身份,也可以擔(dān)任數(shù)據(jù)共享者的身份,二者并不沖突。但在某一次訪問(wèn)行為中,只能擁有一種身份,擔(dān)任數(shù)據(jù)所有者或者是數(shù)據(jù)共享者。
代理:由可信第三方擔(dān)任,主要需要承擔(dān)用戶群和云存儲(chǔ)服務(wù)器之間信息傳遞,負(fù)責(zé)二者的溝通。為了保證訪問(wèn)的安全,代理還需要具有用戶身份認(rèn)證等功能;與此同時(shí),系統(tǒng)初始化時(shí),代理還需要產(chǎn)生密鑰和根據(jù)不同用戶的屬性分配密鑰。
云存儲(chǔ)服務(wù)器:作為云端的數(shù)據(jù)存儲(chǔ)端,主要負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)。服務(wù)器采用二叉樹(shù)存儲(chǔ)結(jié)構(gòu),內(nèi)置ORAM方案,極大地提高了數(shù)據(jù)的安全性,保護(hù)了用戶的訪問(wèn)行為。
2.2.3 系統(tǒng)特點(diǎn)
ABE-M-ORAM 方案結(jié)合屬性加密,能較好地實(shí)現(xiàn)多用戶共享的功能。該方案主要具有以下三個(gè)優(yōu)點(diǎn):第一,實(shí)現(xiàn)用戶細(xì)粒度劃分,利用屬性加密,實(shí)現(xiàn)訪問(wèn)控制,對(duì)用戶數(shù)據(jù)進(jìn)行更好的保護(hù),具有較好的實(shí)用性;第二,基于屬性加密的數(shù)據(jù)共享根據(jù)用戶屬性進(jìn)行訪問(wèn)控制,能夠便捷地增加和刪除用戶,而不影響整體,具有良好的適用性;第三,屬性加密和ORAM 方案都能較好地保護(hù)用戶數(shù)據(jù),二者結(jié)合,能夠更好地對(duì)用戶數(shù)據(jù)進(jìn)行保護(hù),具有強(qiáng)安全性。
1)Initalize():可信第三方初始化生成主密鑰,并根據(jù)用戶屬性產(chǎn)生和分發(fā)屬性公鑰和屬性密鑰。
2)Enc():數(shù)據(jù)擁有者用戶0根據(jù)屬性公鑰加密數(shù)據(jù)。
3)DataAdd():可信第三方向云存儲(chǔ)服務(wù)器添加數(shù)據(jù)。
4)IdVer():驗(yàn)證數(shù)據(jù)共享者用戶i 屬性是否滿足數(shù)據(jù)所有者對(duì)其搜索數(shù)據(jù)的屬性要求。
5)DataSearch():可信第三方從云存儲(chǔ)服務(wù)器搜索數(shù)據(jù)。
6)Dec():數(shù)據(jù)共享者用戶i根據(jù)屬性私鑰解密數(shù)據(jù)。
7)Recombine():云存儲(chǔ)服務(wù)器重排數(shù)據(jù)。
屬性加密是根據(jù)身份加密創(chuàng)新提出的,但屬性加密仍然屬于公鑰加密。公鑰加密主要由四個(gè)算法構(gòu)成,其中系統(tǒng)初始化Setup()、密鑰生成KeyGen()和信息加密Encrypt()三個(gè)算法是概率算法,而解密算法Decrypt()是確定性算法。常見(jiàn)的安全模型有選擇明文攻擊安全和選擇密文攻擊安全模型。
選擇明文攻擊的定義是攻擊者選擇任意確定明文,通過(guò)掌握的加密方法獲取密文,通過(guò)明密文對(duì)比,獲取解密信息。CP-ABE 機(jī)制是選擇明文攻擊安全(INDistinguishability under Chosen-Plaintext Attack,IND-CPA),即攻擊者無(wú)法通過(guò)選擇明文攻擊獲取任何有用信息。CP-ABE 的密文與訪問(wèn)策略有關(guān),如果任何具有下面優(yōu)勢(shì)的攻擊者都能忽略那么就是IND-CPA。攻擊模型如下:
1)初始階段:攻擊者選擇要挑戰(zhàn)的訪問(wèn)結(jié)構(gòu)τ,然后傳給挑戰(zhàn)者。
2)Setup 階段:挑戰(zhàn)者運(yùn)行Setup()算法,得到公鑰PK 并交給攻擊者。
3)查詢階段1:挑戰(zhàn)者隨機(jī)選擇不滿足τ 的屬性集,運(yùn)行密鑰生成算法,將生成的用戶私鑰交給攻擊者。
4)挑戰(zhàn)階段:攻擊者給挑戰(zhàn)者一個(gè)挑戰(zhàn)屬性集及兩個(gè)等長(zhǎng)的明文M1、M2,而且攻擊者不知道挑戰(zhàn)屬性集的密鑰。挑戰(zhàn)者從兩個(gè)明文中隨機(jī)選取一個(gè)a ∈{0,1},然后利用τ 進(jìn)行加密,獲得密文C并交給挑戰(zhàn)者。
5)查詢階段2:重復(fù)選擇階段1。
6)猜測(cè)階段:攻擊者輸出猜測(cè)值a'∈{0,1},如果a'=a,則獲得攻擊成功。
在模型中,攻擊者的優(yōu)勢(shì)定義為Adv=|Pr[a=a']-1/2|。在多項(xiàng)式時(shí)間內(nèi),攻擊者的優(yōu)勢(shì)是可以忽略的,故此方案在IND-CPA下是安全的,即為選擇明文攻擊安全。
計(jì)算機(jī):Lenovo ideaiPad 410P,操作系統(tǒng):Windows 7 旗艦版64 bit,CPU:Intel Core i5-4200M CPU 2.50 GHz,運(yùn)行內(nèi)存:8 GB。運(yùn)行Matlab R2017a版本,進(jìn)行仿真實(shí)驗(yàn)。
3.2.1 實(shí)驗(yàn)方法
本實(shí)驗(yàn)主要進(jìn)行多用戶訪問(wèn)測(cè)試,但Ring ORAM 方案是單用戶方案,因此對(duì)Ring ORAM 方案進(jìn)行調(diào)整,得到改進(jìn)Ring ORAM 方案。因?yàn)閿?shù)據(jù)共享者訪問(wèn)數(shù)據(jù)時(shí)需要獲得數(shù)據(jù)塊地址,以及搜索數(shù)據(jù)時(shí)需要涉及數(shù)據(jù)緩沖區(qū),而數(shù)據(jù)塊地址表和數(shù)據(jù)緩沖區(qū)都是數(shù)據(jù)所有者本地存儲(chǔ);因此,對(duì)單用戶的Ring ORAM 方案進(jìn)行改進(jìn),將數(shù)據(jù)所有者作為數(shù)據(jù)共享者與云存儲(chǔ)服務(wù)器的第三方,負(fù)責(zé)數(shù)據(jù)塊地址查詢工作和擔(dān)任數(shù)據(jù)緩沖區(qū)的角色。數(shù)據(jù)共享者訪問(wèn)數(shù)據(jù)時(shí),首先需要與數(shù)據(jù)所有者建立通信,通過(guò)數(shù)據(jù)所有者獲取數(shù)據(jù)塊地址,并在云存儲(chǔ)服務(wù)器和數(shù)據(jù)所有者的緩沖區(qū)中搜索數(shù)據(jù)。
ABE-M-ORAM 方案和傳統(tǒng)的基于串聯(lián)匿名器的ORAM方案以多用戶共享為設(shè)計(jì)目標(biāo),根據(jù)方案的設(shè)計(jì)原理和方法,在Matlab上分別編寫(xiě)算法,仿真多用戶訪問(wèn)共享云存儲(chǔ)數(shù)據(jù)。
3.2.2 ABE-M-ORAM方案與改進(jìn)Ring ORAM方案對(duì)比
ABE-M-ORAM 方案是在Ring ORAM 方案的基礎(chǔ)上集合屬性加密而形成的多用戶共享方案。本次實(shí)驗(yàn)在Matlab上仿真,針對(duì)ABE-M-ORAM 方案和改進(jìn)Ring ORAM 方案,模擬不同用戶數(shù)量同時(shí)訪問(wèn)100 次共享數(shù)據(jù)。實(shí)驗(yàn)獲取每個(gè)用戶的訪問(wèn)總時(shí)間,計(jì)算平均每個(gè)用戶100 次訪問(wèn)的總時(shí)間。通過(guò)分析平均用戶訪問(wèn)時(shí)間,研究同時(shí)訪問(wèn)的用戶數(shù)量在不同方案中對(duì)訪問(wèn)效率的影響。
表1 ABE-M-ORAM方案和改進(jìn)Ring ORAM方案的平均用戶訪問(wèn)時(shí)間對(duì)比 單位:sTab.1 Average user access time comparison of ABE-M-ORAM scheme and improved Ring ORAM scheme unit:s
在改進(jìn)Ring ORAM 方案中,數(shù)據(jù)共享者訪問(wèn)數(shù)據(jù)時(shí),首先與數(shù)據(jù)所有者建立信息交互渠道,將數(shù)據(jù)訪問(wèn)請(qǐng)求發(fā)送給數(shù)據(jù)所有者。數(shù)據(jù)所有者根據(jù)數(shù)據(jù)共享者的訪問(wèn)請(qǐng)求,從云存儲(chǔ)服務(wù)器獲取數(shù)據(jù),并傳遞給數(shù)據(jù)共享者。因?yàn)閿?shù)據(jù)塊地址表和數(shù)據(jù)緩沖區(qū)都建立在數(shù)據(jù)所有者本地,從云服務(wù)器端看,還是與數(shù)據(jù)所有者的雙向訪問(wèn),仍然屬于單用戶進(jìn)行操作。所有的數(shù)據(jù)的訪問(wèn)操作都是由數(shù)據(jù)所有者進(jìn)行,當(dāng)訪問(wèn)的用戶較多時(shí),訪問(wèn)請(qǐng)求需要進(jìn)行排隊(duì)。同時(shí)訪問(wèn)的用戶越多,平均訪問(wèn)時(shí)間越長(zhǎng),訪問(wèn)效率越低。
在ABE-M-ORAM 方案中,數(shù)據(jù)所有者不需要參加任何工作,身份認(rèn)證和信息傳遞的工作由代理負(fù)責(zé)。不同的用戶訪問(wèn)時(shí)通過(guò)代理傳輸數(shù)據(jù),而代理可以同時(shí)處理多個(gè)用戶的訪問(wèn)請(qǐng)求,因此,多個(gè)用戶可以并行訪問(wèn),減少了用戶大量的等待時(shí)間,極大地縮短了用戶的訪問(wèn)時(shí)間,提高了用戶的訪問(wèn)效率。而且,用戶的平均訪問(wèn)時(shí)間幾乎不受同時(shí)訪問(wèn)用戶數(shù)的影響。另外,每個(gè)用戶在訪問(wèn)代理時(shí),互不影響。當(dāng)一個(gè)用戶訪問(wèn)出現(xiàn)錯(cuò)誤時(shí),其他用戶仍然可以正常訪問(wèn)。
3.2.3 ABE-M-ORAM 方案與基于串聯(lián)匿名器的ORAM 方案對(duì)比
在Matlab 上,模擬仿真基于串聯(lián)匿名器的ORAM 方案和ABE-M-ORAM 方案。實(shí)驗(yàn)設(shè)定有2個(gè)用戶在訪問(wèn)云存儲(chǔ)服務(wù)器內(nèi)的數(shù)據(jù),獲取不同訪問(wèn)數(shù)據(jù)量,即不同訪問(wèn)次數(shù)情況下,計(jì)算平均每個(gè)用戶單次訪問(wèn)時(shí)間,分析研究不同方案中訪問(wèn)次數(shù)對(duì)訪問(wèn)效率的影響。
在基于串聯(lián)匿名器的ORAM 方案中,用戶每次訪問(wèn)數(shù)據(jù)前,都需要進(jìn)行嚴(yán)格的身份認(rèn)證,多用戶同時(shí)訪問(wèn)時(shí),需要進(jìn)行多次身份認(rèn)證。隨著訪問(wèn)數(shù)據(jù)量增加、訪問(wèn)次數(shù)的增多,用戶的平均單次訪問(wèn)時(shí)間在逐漸變長(zhǎng)。ABE-M-ORAM 方案通過(guò)用戶屬性來(lái)對(duì)訪問(wèn)進(jìn)行細(xì)粒度控制,利用可信第三方作為代理來(lái)進(jìn)行身份認(rèn)證,減少了身份認(rèn)證時(shí)間,提高了身份認(rèn)證的效率。訪問(wèn)數(shù)據(jù)的增加,對(duì)用戶的平均單次訪問(wèn)時(shí)間影響較小,方案的穩(wěn)定性更好。同時(shí),可信第三方作為代理,還能夠有效提高數(shù)據(jù)通信的效率,加快數(shù)據(jù)傳遞,提高用戶訪問(wèn)數(shù)據(jù)的效率。
表2 ABE-M-ORAM方案與基于串聯(lián)匿名器的ORAM方案的平均用戶單次訪問(wèn)時(shí)間對(duì)比 單位:msTab.2 Average user single access time comparison of ABE-M-ORAM scheme and serial anonymous device based ORAM scheme unit:ms
3.2.4 ABE-M-ORAM方案與BTS-M-ORAM方案對(duì)比
在Matlab 上,模擬仿真BTS-M-ORAM 方案和ABE-MORAM 方案。實(shí)驗(yàn)中,模擬不同數(shù)量用戶向云服務(wù)器同時(shí)提出對(duì)數(shù)據(jù)的100 次訪問(wèn)請(qǐng)求,即獲取不同方案完成多用戶訪問(wèn)所消耗的時(shí)間,計(jì)算平均完成每個(gè)用戶所有訪問(wèn)所需要的時(shí)間,分析不同方案中多用戶訪問(wèn)的時(shí)間效率。
表3 ABE-M-ORAM方案與BTS-M-ORAM方案的平均用戶訪問(wèn)時(shí)間對(duì)比 單位:sTab.3 Average user access time comparison of ARE-M-ORAM scheme and BTS-M-ORAM scheme unit:s
在BTS-M-ORAM 方案中,用戶提出對(duì)云存儲(chǔ)服務(wù)器中存儲(chǔ)數(shù)據(jù)的訪問(wèn)請(qǐng)求后,代理首先需要對(duì)用戶進(jìn)行身份驗(yàn)證,明確用戶對(duì)該數(shù)據(jù)是否具有訪問(wèn)權(quán)限,具有權(quán)限則代理向云存儲(chǔ)服務(wù)器提取數(shù)據(jù),否則直接拒絕用戶的訪問(wèn)請(qǐng)求。而且用戶的訪問(wèn)權(quán)限不是永久授權(quán)的,在訪問(wèn)期間,代理需要對(duì)用戶進(jìn)行多次身份驗(yàn)證,影響訪問(wèn)效率。在ABE-M-ORAM 方案中,采用了屬性加密,保證了用戶只能對(duì)具有訪問(wèn)權(quán)限的數(shù)據(jù)進(jìn)行解密,無(wú)法獲取權(quán)限之外的數(shù)據(jù),因此,不需要對(duì)用戶進(jìn)行身份驗(yàn)證,能大大提高用戶的訪問(wèn)效率,節(jié)約代理的運(yùn)行資源,保證數(shù)據(jù)訪問(wèn)的高效性。
基于屬性加密作為一種新型的密碼方案,能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)的靈活細(xì)粒度訪問(wèn)控制,使得它可以廣泛地應(yīng)用于政治、軍事、商業(yè)等諸多領(lǐng)域,尤其是屬性基加密為解決云存儲(chǔ)環(huán)境下數(shù)據(jù)的多用戶安全共享提供了一種解決方案?,F(xiàn)階段,對(duì)基于屬性加密機(jī)制的研究雖然成果顯著,但是由于實(shí)際運(yùn)用中還出現(xiàn)了很多問(wèn)題,所以還有許多地方有待改進(jìn)。下一步的研究重點(diǎn)主要涉及到以下兩個(gè)方面:第一,為了保證安全,增加了可信第三方和存儲(chǔ)了大量無(wú)效數(shù)據(jù)塊,對(duì)用戶的訪問(wèn)效率產(chǎn)生了很大的影響。同時(shí),為確保安全性,可信第三方要對(duì)密鑰進(jìn)行維護(hù)和更新,占用了更多的計(jì)算資源和存儲(chǔ)空間,一定程度上影響了系統(tǒng)的工作效率。所以,如何在保證安全的基礎(chǔ)上提高效率是主要的研究方向之一。第二,在屬性修正機(jī)制方面,效率和安全依然是重中之重??尚诺谌叫枰鶕?jù)數(shù)據(jù)共享者屬性產(chǎn)生對(duì)應(yīng)的私鑰,而數(shù)據(jù)共享者的屬性并不是保持不變的。數(shù)據(jù)共享者屬性的不斷變化將占用可信第三方大量的計(jì)算資源,因此如何解決數(shù)據(jù)共享者屬性變化帶來(lái)的效率降低問(wèn)題,也是現(xiàn)階段主要的研究方向之一。