吳正雪,王靜宇
(內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭 014010)
云環(huán)境中通常使用基于密文策略的屬性基加密技術(shù)[1](ciphertext-policy attribute-based encryption,CP-ABE),由用戶制定訪問(wèn)策略加密明文數(shù)據(jù),通過(guò)對(duì)訪問(wèn)策略的判定,實(shí)現(xiàn)一對(duì)多的數(shù)據(jù)安全共享。CP-ABE加密機(jī)制中,云服務(wù)器存儲(chǔ)的密文信息中附帶明文的訪問(wèn)策略,而實(shí)際應(yīng)用中惡意用戶能夠通過(guò)公開(kāi)的訪問(wèn)策略竊取用戶的隱私?,F(xiàn)有方案通過(guò)采用布隆過(guò)濾器[2]、雙線性映射[3,4]、訪問(wèn)結(jié)構(gòu)轉(zhuǎn)換[5]、隱藏屬性值[6]等技術(shù)實(shí)現(xiàn)訪問(wèn)策略的隱藏。但上述文獻(xiàn)都未考慮到實(shí)際應(yīng)用中用戶屬性動(dòng)態(tài)變化的問(wèn)題,為此大多方案通過(guò)更新屬性版本密鑰[7]、撤銷(xiāo)列表嵌入到密文中[8,9]、更新屬性群密鑰[10]等方法實(shí)現(xiàn)屬性撤銷(xiāo)。但上述研究都不能確保密文數(shù)據(jù)的真實(shí)性與完整性,區(qū)塊鏈技術(shù)[11-14]的提出能有效保證交易數(shù)據(jù)的安全性,具有不可篡改、不可偽造的特性,與加密技術(shù)結(jié)合能有效解決數(shù)據(jù)隱私問(wèn)題。
為設(shè)計(jì)實(shí)現(xiàn)數(shù)據(jù)可靠性、訪問(wèn)策略隱私性和動(dòng)態(tài)屬性撤銷(xiāo),本文結(jié)合區(qū)塊鏈技術(shù),將對(duì)稱(chēng)解密密鑰使用CP-ABE加密存儲(chǔ)在云服務(wù)器中,數(shù)據(jù)摘要及文件位置等信息存儲(chǔ)在區(qū)塊鏈上,實(shí)現(xiàn)對(duì)數(shù)據(jù)的完整性審計(jì),防止云服務(wù)器篡改數(shù)據(jù)。同時(shí)將訪問(wèn)策略轉(zhuǎn)化為訪問(wèn)樹(shù)結(jié)構(gòu),策略完全隱藏在密文中。當(dāng)發(fā)生屬性撤銷(xiāo)時(shí),由授權(quán)中心與云服務(wù)器進(jìn)行密鑰與密文的更新,減輕用戶的計(jì)算開(kāi)銷(xiāo)。
(1)雙線性:對(duì)?g∈G, ?a,b∈Zp, 都有e(ga,gb)=e(g,g)ab。
(2)非退化性:e(g,g)≠1。
(3)可計(jì)算性:對(duì)?g∈G, 存在一個(gè)有效的算法可計(jì)算e(g,g)。
密鑰加密密鑰樹(shù)由屬性管理器(AM)根據(jù)用戶屬性集合進(jìn)行構(gòu)建,其構(gòu)建形式為一個(gè)完全二叉樹(shù)——KEK樹(shù),如圖1所示。每一個(gè)vj節(jié)點(diǎn)存儲(chǔ)一個(gè)隨機(jī)值θj,每一個(gè)用戶uk與葉子節(jié)點(diǎn)相關(guān)聯(lián)。通過(guò)計(jì)算從根節(jié)點(diǎn)到用戶的路徑節(jié)點(diǎn)Path(uk) 與最小覆蓋集Mincs(Gi) 的交集,得到用戶屬性群密鑰,其中屬性群Gi代表?yè)碛袑傩詀tti的用戶集合。具體構(gòu)建步驟請(qǐng)參考文獻(xiàn)[15]。
圖1 密鑰加密密鑰樹(shù)
本文區(qū)塊鏈選取聯(lián)盟鏈fabric 0.6版本,其采用的共識(shí)算法為實(shí)用拜占庭容錯(cuò)算法(practical byzantine fault tole-rance,PBFT)。PBFT共識(shí)過(guò)程分為4個(gè)階段,首先客戶端選取主節(jié)點(diǎn),主節(jié)點(diǎn)對(duì)交易進(jìn)行排序,并廣播給其它節(jié)點(diǎn),所有節(jié)點(diǎn)對(duì)交易進(jìn)行驗(yàn)證,計(jì)算并廣播其哈希值,節(jié)點(diǎn)之間進(jìn)行哈希值的確認(rèn),當(dāng)客戶端收到f+1個(gè)節(jié)點(diǎn)的確認(rèn)消息時(shí),則將交易打包到新的區(qū)塊中。具體共識(shí)步驟請(qǐng)參考文獻(xiàn)[16]。
本模型中有6個(gè)角色,分別為數(shù)據(jù)擁有者(DO)、數(shù)據(jù)用戶(DU)、云服務(wù)商(CSP)、可信授權(quán)中心(TA)以及區(qū)塊鏈(BC)和屬性管理器(AM)。如圖2所示。
圖2 系統(tǒng)模型
各個(gè)角色的具體介紹如下:
(1)DO:根據(jù)相應(yīng)的訪問(wèn)策略加密數(shù)據(jù),對(duì)交易數(shù)據(jù)進(jìn)行簽名。
(2)DU:請(qǐng)求訪問(wèn)數(shù)據(jù),解密階段可驗(yàn)證數(shù)據(jù)是否被篡改。
(3)CSP:負(fù)責(zé)存儲(chǔ)加密數(shù)據(jù),對(duì)密文哈希值進(jìn)行簽名。
(4)TA:負(fù)責(zé)系統(tǒng)初始化,為DU根據(jù)其屬性集合生成私鑰和屬性群初始密鑰。當(dāng)發(fā)生屬性撤銷(xiāo)時(shí),負(fù)責(zé)更新屬性群密鑰。
(5)BC:使用聯(lián)盟區(qū)塊鏈,區(qū)塊鏈中每個(gè)區(qū)塊包含密文的哈希值和密文存儲(chǔ)位置。
(6)AM:負(fù)責(zé)密文重加密,當(dāng)發(fā)生屬性撤銷(xiāo)時(shí),AM執(zhí)行密文更新算法,并且AM與CSP不會(huì)共謀。
(1)系統(tǒng)初始化階段。
TASetup(1λ,U)→(PK,MSK)。 由TA初始化系統(tǒng)。輸入安全參數(shù)λ和屬性集合U,生成系統(tǒng)公鑰PK和系統(tǒng)主私鑰MSK。
CSPSteup(PK)→(CPK,CSK)。 由TA執(zhí)行,輸入系統(tǒng)公鑰PK,輸出CSP的公鑰CPK和私鑰CSK。
DOSteup(PK)→(DPK,DSK)。 由TA執(zhí)行,輸入系統(tǒng)公鑰PK,輸出DO的公鑰DPK和私鑰DSK。
(2)密鑰生成階段。
TAKeygen(id,PK,MSK,L)→(SK,KEK′)。 TA執(zhí)行算法,輸入用戶身份標(biāo)志id、系統(tǒng)公鑰PK、系統(tǒng)主私鑰MSK和用戶屬性集合L,輸出用戶私鑰SK和屬性群初始密鑰KEK′。
AMKekgen(KEK′,L)→KEK。 算法由AM執(zhí)行,輸入屬性群初始密鑰KEK′和用戶屬性集合L,輸出屬性群密鑰KEK。
(3)數(shù)據(jù)文件加密階段。
DOEnc(PK,Data,W)→CT′。 DO執(zhí)行該算法,算法以系統(tǒng)公鑰PK、明文數(shù)據(jù)文件Data和用戶訪問(wèn)策略W作為輸入,輸出中間密文CT′。
AMRenc(PK,CT′)→(CT,Hdr)。 算法由AM執(zhí)行。輸入系統(tǒng)公鑰PK和中間密文CT′,輸出最終密文CT和密文頭Hdr。
SignatureGen(CT)→(SigCSP(CT),Loc)。 CSP收到 (CT,Hdr) 之后,對(duì)CT進(jìn)行簽名,輸出SigCSP(CT), 并將存儲(chǔ)位置Loc發(fā)給DO。
(4)交易產(chǎn)生階段。
TransGen(SigCSP(CT))→transaction。 DO根據(jù)CSP發(fā)送的SigCSP(CT), 進(jìn)行密文的驗(yàn)證,驗(yàn)證成功則創(chuàng)建交易,將密文哈希值H(CT)、密文存儲(chǔ)位置Loc和DO公鑰DPK保存在交易,計(jì)算交易的哈希值H(trans),并向其它節(jié)點(diǎn)進(jìn)行廣播。
(5)解密階段。
Decrypt(PK,SK,CT,Hdr,KEK)→Data。 由DU執(zhí)行該算法,算法輸入系統(tǒng)公鑰PK、用戶私鑰SK、密文CT、密文頭Hdr和屬性群密鑰KEK,輸出明文信息Data。
(6)用戶屬性撤銷(xiāo)階段。
(1)系統(tǒng)初始化階段。
(1)
CSPSteup(PK)→(CPK,CSK)。 TA選擇兩個(gè)大素?cái)?shù)p,q,并且計(jì)算n=p·q,φ(n) 表示n的歐拉函數(shù)。TA選擇隨機(jī)數(shù)E∈[1,φ(n)],E與φ(n) 互素。CSP計(jì)算 (D·E)modφ(n)≡1, 則輸出CSP的公鑰CPK={E,n} 和私鑰CSK=D。
DOSteup(PK)→(DPK,DSK)。 與CSP公私鑰生成方法相同,可以得到DO的公鑰為DPK={E′,n′} 和私鑰DSK=D′。
(2)密鑰生成階段。
AMKekgen(KEK′,L)→KEK。 算法根據(jù)1.2節(jié)中的方法為用戶生成屬性群密鑰,對(duì)于Li=atti,bi, AM計(jì)算φi,bi=Path(uid)∩Mincs(Gi,bi), 若φi,bi=?, 則停止計(jì)算;反之,計(jì)算KEKi,bi=(keki,bi)1/θj=gzi,bi·λi/θj,θj代表對(duì)應(yīng)節(jié)點(diǎn)vj∈φi,bi, 輸出KEK
KEK={Li,vj,keki,bi,KEKi,bi}Li∈L
(3)數(shù)據(jù)文件加密階段。
2)如果孩子節(jié)點(diǎn)為未讀狀態(tài),且非葉子節(jié)點(diǎn)為“或”門(mén),則所有孩子節(jié)點(diǎn)值設(shè)置為s,并設(shè)置節(jié)點(diǎn)為已讀狀態(tài)。DO則計(jì)算
(2)
輸出中間密文為CT′={W,C′,C′1,C′2,C′3,C′4}。
AMRenc(PK,CT′)→(CT,Hdr)。 AM得到DO發(fā)送的中間密文CT′,AM隨機(jī)選擇ki∈Zp, 并運(yùn)行Mincs(Gi,bi) 算法,計(jì)算C4=C′4·∏i∈IWe(g,g)ki,C3=C′3,C2=C′2,C1=C′1,C=C′, 則密文與密文頭為
(3)
AM計(jì)算密文CT的哈希值H(CT),并發(fā)送給DO,并將(CT,Hdr)發(fā)送給CSP存儲(chǔ)。
SignatureGen(CT)→(SigCSP(CT),Loc)。 CSP收到(CT,Hdr)之后,計(jì)算CT的哈希值,得到H(CT),并且產(chǎn)生簽名SigCSP(CT)=H(CT)Dmodn, CSP將SigCSP(CT) 和密文的存儲(chǔ)位置Loc發(fā)送給DO。
(4)交易產(chǎn)生階段。
TransGen(SigCSP(CT))→transaction。 首先DO得到CSP發(fā)送的SigCSP(CT), 驗(yàn)證SigCSP(CT)E=H(CT) 是否成立,如果成立,則CSP正確存儲(chǔ)密文,DO創(chuàng)建交易,并將H(CT)、密文存儲(chǔ)位置Loc和DO的公鑰DPK保存在交易中,計(jì)算交易的哈希值H(trans),計(jì)算SigDO(trans)=H(trans)D′modn′。
DO提交交易,并向其它節(jié)點(diǎn)進(jìn)行廣播,區(qū)塊鏈節(jié)點(diǎn)根據(jù)DO的公鑰驗(yàn)證SigDO(trans)E′=H(trans) 是否與交易單存儲(chǔ)的H(trans)相等,一樣則說(shuō)明交易數(shù)據(jù)沒(méi)有問(wèn)題,并發(fā)送給其它節(jié)點(diǎn)進(jìn)行驗(yàn)證;否則,返回交易單。
(5)解密階段。
Decrypt(PK,SK,CT,Hdr,KEK)→Data。
DU向區(qū)塊鏈請(qǐng)求交易信息,區(qū)塊鏈節(jié)點(diǎn)將交易單返回給DU,同時(shí)DU根據(jù)密文存儲(chǔ)位置Loc向CSP請(qǐng)求密文,得到密文信息后,DU根據(jù)云服務(wù)器返回的密文,計(jì)算密文哈希值是否與區(qū)塊鏈存儲(chǔ)的哈希值H(CT)相等,相等則說(shuō)明CSP返回結(jié)果是正確的。則DU按照如下過(guò)程進(jìn)行解密
(4)
DU利用解密得到的對(duì)稱(chēng)密鑰k,可得到明文文檔,即Data=Dec(k,C)。
(6)用戶屬性撤銷(xiāo)階段。
當(dāng)用戶屬性發(fā)生撤銷(xiāo)時(shí),TA對(duì)系統(tǒng)公鑰、系統(tǒng)主私鑰和屬性密鑰樹(shù)進(jìn)行更新,AM對(duì)密文進(jìn)行更新。操作步驟如下:
(5)
(6)
定理:假設(shè)DBDH問(wèn)題在群 (G,GT,g,p,e) 成立,至少存在多項(xiàng)式時(shí)間算法內(nèi)以一個(gè)不能忽略的優(yōu)勢(shì)解決DBDH。
證明:假設(shè)敵手A攻破本方案的優(yōu)勢(shì)為ζ,則模擬器B就能以ζ/2的優(yōu)勢(shì)來(lái)解決問(wèn)題,其中ζ是不可忽略的。
挑戰(zhàn)者C在隨機(jī)選取a,b,c∈Zp, 設(shè)θ∈{0,1}, 當(dāng)θ=0時(shí),計(jì)算Z=e(g,g)abc;θ=1時(shí),則Z代表群GT上的一個(gè)隨機(jī)值r。挑戰(zhàn)者C將 (g,A=ga,B=gb,C=gc,Z) 發(fā)送給模擬器B。模擬器B充當(dāng)挑戰(zhàn)者C的角色,并執(zhí)行以下過(guò)程。
(1)系統(tǒng)建立。敵手A將挑戰(zhàn)訪問(wèn)樹(shù)R、挑選的質(zhì)詢屬性i*發(fā)送給模擬器B。
(2)初始化階段。B定義系統(tǒng)屬性集U,并且為每個(gè)屬性atti∈Ux, 隨機(jī)選取zi,bi∈Zp, 并計(jì)算Zi,bi=gzi,bi,Ti,bj=g1/zi,bi, 令α=ab, 則系統(tǒng)公鑰為:PK={e,g,e(g,g)α,{Zi,bi,Ti,bi}1≤i≤n,1≤j≤ni}, 并發(fā)送給C,并創(chuàng)建列表K表示用戶id存儲(chǔ)的密鑰查詢。
設(shè)置c為根節(jié)點(diǎn)的值,并標(biāo)記為已讀,所有的孩子節(jié)點(diǎn)設(shè)置為未讀狀態(tài),則每個(gè)未讀的非葉子節(jié)點(diǎn)進(jìn)行如下遞歸運(yùn)算:
2)如果孩子節(jié)點(diǎn)為未讀狀態(tài),且非葉子節(jié)點(diǎn)為“或”門(mén),則其所有孩子節(jié)點(diǎn)值設(shè)置為c,并設(shè)置節(jié)點(diǎn)為已讀狀態(tài)。模擬器B隨機(jī)選擇ki∈Zp, 計(jì)算
(7)
則CT={C1,C2,C3,C4}, 模擬器B生成密文頭
(8)
模擬器B執(zhí)行AMUpCT算法更新CT和Hdr
(9)
(10)
并將作為挑戰(zhàn)密文的密文CT′={C′1,C′2,C′3,C′4} 和密文頭Hdr′發(fā)送給敵手A。
(5)階段2。同階段1,但查詢不到正確的密文解密私鑰。
(6)猜測(cè)。敵手A輸出關(guān)于θ的猜想為θ′。如果θ′=θ,則B輸出0,則對(duì)應(yīng)Z=e(g,g)abc, 密文CT有效,則敵手優(yōu)勢(shì)
(11)
反之,輸出1,對(duì)應(yīng)Z=r,密文CT對(duì)A來(lái)說(shuō)是完全隨機(jī)的,則
(12)
即選擇明文攻擊的游戲中,計(jì)算出模擬器B的優(yōu)勢(shì)為
(13)
則模擬器B解決DBDH問(wèn)題優(yōu)勢(shì)為ξ/2,基于上述過(guò)程證明系統(tǒng)的安全性。證畢。
4.2.1 不同方案功能對(duì)比
如表1所示,本文與文獻(xiàn)[5,9,10,14]的方案進(jìn)行功能特征對(duì)比。文獻(xiàn)[5]方案實(shí)現(xiàn)了策略隱藏,但在屬性動(dòng)態(tài)變化的場(chǎng)景里并不適用。文獻(xiàn)[9,10,14]都支持屬性撤銷(xiāo),但訪問(wèn)策略對(duì)所有用戶可見(jiàn),隱私安全性得不到保證,其中文獻(xiàn)[14]方案通過(guò)結(jié)合區(qū)塊鏈技術(shù)實(shí)現(xiàn)管理用戶撤銷(xiāo)列表,無(wú)需可信中心就能執(zhí)行密鑰的生成與更新。文獻(xiàn)[9]和文獻(xiàn)[14]支持LSSS訪問(wèn)策略,策略表達(dá)更靈活,但策略復(fù)雜,計(jì)算開(kāi)銷(xiāo)較大。雖然本文方案訪問(wèn)結(jié)構(gòu)為樹(shù)形,但在實(shí)際應(yīng)用中是可以接受的。
表1 不同方案功能對(duì)比
綜上所述,本文方案結(jié)合區(qū)塊鏈技術(shù),實(shí)現(xiàn)用戶對(duì)數(shù)據(jù)完整性的可驗(yàn)證,保證了云服務(wù)器返回結(jié)果的正確性。方案不僅實(shí)現(xiàn)策略隱藏,并且實(shí)現(xiàn)了屬性撤銷(xiāo)功能,功能性較強(qiáng)。
4.2.2 不同方案存儲(chǔ)開(kāi)銷(xiāo)對(duì)比
本文與文獻(xiàn)[5,9,10,14]方案在存儲(chǔ)開(kāi)銷(xiāo)進(jìn)行對(duì)比分析,如表2所示。 |G1|、 |G2|、 |Zp| 分別表示群G、群GT、域Zp上的一個(gè)元素的長(zhǎng)度,nu、na、nk分別代表系統(tǒng)、DO訪問(wèn)策略(LSSS和訪問(wèn)樹(shù))和DU的屬性個(gè)數(shù),|CK|、|KK|分別代表密文頭、屬性群密鑰的長(zhǎng)度,r代表撤銷(xiāo)用戶的數(shù)量。
表2 不同方案存儲(chǔ)開(kāi)銷(xiāo)對(duì)比
TA存儲(chǔ)開(kāi)銷(xiāo)主要是系統(tǒng)主私鑰的長(zhǎng)度。文獻(xiàn)[5,9]方案系統(tǒng)主私鑰長(zhǎng)度為常數(shù)級(jí)別,文獻(xiàn)[10]和本文方案存儲(chǔ)代價(jià)隨著系統(tǒng)屬性數(shù)量線性變化。
DO存儲(chǔ)開(kāi)銷(xiāo)主要取決于系統(tǒng)公鑰長(zhǎng)度。文獻(xiàn)[10,14]方案使用較少的存儲(chǔ)開(kāi)銷(xiāo),文獻(xiàn)[5,9]和本文方案系統(tǒng)公鑰存儲(chǔ)長(zhǎng)度與系統(tǒng)屬性數(shù)量有關(guān)。
CSP存儲(chǔ)開(kāi)銷(xiāo)主要來(lái)自于密文和密文頭。文獻(xiàn)[5,9,10,14]方案密文長(zhǎng)度與用戶訪問(wèn)策略屬性個(gè)數(shù)呈線性正相關(guān),文獻(xiàn)[10]與本文方案不僅存儲(chǔ)密文,還要存儲(chǔ)密文頭,但本文方案中密文長(zhǎng)度恒定,密文頭長(zhǎng)度隨訪問(wèn)策略屬性數(shù)量線性增長(zhǎng)。
DU存儲(chǔ)開(kāi)銷(xiāo)主要為密鑰長(zhǎng)度。由表看出,文獻(xiàn)[5,9,10]和本文方案私鑰存儲(chǔ)與用戶屬性有關(guān),并且文獻(xiàn)[10]和本文方案需要額外存儲(chǔ)屬性群密鑰,文獻(xiàn)[14]方案采用外包解密技術(shù),用戶只需要存儲(chǔ)最后的私鑰就可,因此存儲(chǔ)代價(jià)最小。
4.2.3 不同方案計(jì)算開(kāi)銷(xiāo)對(duì)比
基于CP-ABE的數(shù)據(jù)共享方案中,雙線性配對(duì)和指數(shù)運(yùn)算用來(lái)表示其計(jì)算性能,因此忽略哈希運(yùn)算所消耗的時(shí)間,與文獻(xiàn)[5,9,10,14]方案在加密和解密階段的計(jì)算開(kāi)銷(xiāo)進(jìn)行對(duì)比,如表3所示。其中,EG、EGT、p分別表示群G上的指數(shù)運(yùn)算、群GT上的指數(shù)運(yùn)算和1次雙線性對(duì)操作,ns、nd分別代表DO訪問(wèn)策略和DU解密時(shí)需要的屬性個(gè)數(shù)。
表3 不同方案計(jì)算開(kāi)銷(xiāo)對(duì)比
數(shù)據(jù)加密階段,DO首先加密數(shù)據(jù)得到中間密文,其子項(xiàng)C′1和C′2計(jì)算開(kāi)銷(xiāo)為EG+EGT,C′3和C′4計(jì)算開(kāi)銷(xiāo)為ns(EG+p), 則總開(kāi)銷(xiāo)為: (ns+1)EG+EGT+nsp。 文獻(xiàn)[5,9,10,14]與本文方案中DO加密計(jì)算開(kāi)銷(xiāo)都為線性變換,但文獻(xiàn)[9,14]方案中變化的斜率較大。
用戶解密過(guò)程中,數(shù)據(jù)使用者需要進(jìn)行較多的雙線性運(yùn)算,其計(jì)算代價(jià)為: (nd+3)p+EGT。 其中,文獻(xiàn)[14]方案中采用外包解密技術(shù),計(jì)算開(kāi)銷(xiāo)最低。
從表3可以看出,本文與文獻(xiàn)[5,9,10]方案加密計(jì)算代價(jià)都與用戶訪問(wèn)策略屬性個(gè)數(shù)相關(guān),但本文方案解密效率較高。
4.3.1 加解密時(shí)間消耗
本文與文獻(xiàn)[5]和文獻(xiàn)[10]方案在加密、解密階段的時(shí)間消耗進(jìn)行實(shí)驗(yàn)對(duì)比,方案采用JAVA中基于配對(duì)的密碼學(xué)(JPBC)庫(kù)進(jìn)行仿真實(shí)驗(yàn),具體的實(shí)驗(yàn)環(huán)境為Intel Core i7-8700 CPU處理器,內(nèi)存為16 GB,操作系統(tǒng)為Windows10 64位。
實(shí)驗(yàn)使用Type A型的素?cái)?shù)階橢圓曲線,橢圓曲線為y2=x3+x,代碼基于JPBC-FAME與ConstantSizeCPABESE進(jìn)行修改編寫(xiě)。
本文方案主要是對(duì)用戶的加解密時(shí)間消耗進(jìn)行仿真。實(shí)驗(yàn)中,設(shè)置5種不同的訪問(wèn)策略,以10為屬性增量,從10增加到50。不同的訪問(wèn)策略,數(shù)據(jù)取10次實(shí)驗(yàn)的平均值作為實(shí)驗(yàn)結(jié)果。
如圖3所示,文獻(xiàn)[5]和文獻(xiàn)[10]方案加密消耗時(shí)間在相同屬性數(shù)量下相似,但本文方案加密時(shí)間較長(zhǎng)一些,因?yàn)樵诒WC密文長(zhǎng)度恒定時(shí)需要額外的雙線性運(yùn)算,計(jì)算開(kāi)銷(xiāo)較大,但存儲(chǔ)開(kāi)銷(xiāo)較低。
圖3 加密時(shí)間對(duì)比
解密時(shí)間消耗對(duì)比如圖4所示,解密消耗時(shí)間都隨著解密屬性數(shù)量增加而增加,但文獻(xiàn)[5]和文獻(xiàn)[10]方案中解密消耗時(shí)間變化的斜率較大,相同解密屬性數(shù)量下本文解密消耗時(shí)間是最低的。
圖4 解密時(shí)間對(duì)比
綜上,本文方案屬性撤銷(xiāo)時(shí)密鑰更新與密文更新由TA和AM執(zhí)行,DO只參與加解密階段,并且具有較高的解密效率。因此,方案對(duì)于屬性頻繁變動(dòng)的場(chǎng)景是適用的。
4.3.2 PBFT算法通信次數(shù)分析
本文使用PBFT算法實(shí)現(xiàn)共識(shí),當(dāng)系統(tǒng)節(jié)點(diǎn)為n個(gè)時(shí),在客戶端請(qǐng)求階段,通信次數(shù)為n次;預(yù)準(zhǔn)備階段,主節(jié)點(diǎn)與其它節(jié)點(diǎn)通信,次數(shù)為(n-1)次;準(zhǔn)備階段,每個(gè)節(jié)點(diǎn)都與其它節(jié)點(diǎn)進(jìn)行通信,則通信次數(shù)為 (n-1)(n-1) 次;確認(rèn)階段需要n(n-1) 次;回復(fù)給客戶端階段需要n次,總通信次數(shù)為2n2次。通信次數(shù)圖像如圖5所示,并對(duì)函數(shù)進(jìn)行取對(duì)數(shù)運(yùn)算??梢钥闯觯?dāng)節(jié)點(diǎn)達(dá)到一定數(shù)量時(shí),通信次數(shù)會(huì)隨著節(jié)點(diǎn)數(shù)量的增加緩慢上升。
圖5 PBFT算法通信次數(shù)
本文通過(guò)結(jié)合區(qū)塊鏈技術(shù),提出了支持策略隱藏與撤銷(xiāo)的CP-ABE方案,用戶不僅實(shí)現(xiàn)數(shù)據(jù)自主權(quán),并且確保數(shù)據(jù)具有完整性、真實(shí)性。首先,明文形式的訪問(wèn)策略存在信息泄露的問(wèn)題,因此實(shí)現(xiàn)策略隱藏是有必要的。其次,屬性的即時(shí)撤銷(xiāo)保證被撤銷(xiāo)的用戶無(wú)法獲得數(shù)據(jù)的訪問(wèn)權(quán)。同時(shí)方案中恒定的密文長(zhǎng)度,減輕了云服務(wù)器的存儲(chǔ)負(fù)擔(dān)。最后,在標(biāo)準(zhǔn)模型下,基于DBDH假設(shè)完成安全性證明。與同類(lèi)方案對(duì)比,加解密效率較高,并且方案功能性較強(qiáng),更符合當(dāng)前云環(huán)境的需求。
計(jì)算機(jī)工程與設(shè)計(jì)2022年12期