王鳳領(lǐng),王 涵,2,郭啟恩,趙方珍
(1. 澳門城市大學(xué)數(shù)據(jù)科學(xué)研究院,澳門 999078;2. 珠海中科先進技術(shù)研究院,廣東 珠海 519000;3. 暨南大學(xué)信息科學(xué)技術(shù)學(xué)院,廣東 廣州 510632)
隨著大數(shù)據(jù)云計算的發(fā)展,云存儲作為一種新的服務(wù)模式,即數(shù)據(jù)存儲即服務(wù)(DaaS)。云存儲通過應(yīng)用軟件將網(wǎng)絡(luò)中大量不同類型的存儲設(shè)備集成在一起協(xié)同工作,實現(xiàn)了低成本、高可靠性、免維護的存儲服務(wù)的革命性變革,它對外提供數(shù)據(jù)存儲和業(yè)務(wù)訪問功能[1]。安全保障是云存儲應(yīng)用的核心問題,也是云計算用戶最關(guān)心的問題。云存儲作為服務(wù)必須解決的安全問題,其中訪問控制就是最突出的。
在SHAMIR學(xué)者提出基于身份的系統(tǒng)概念后,Sahai等[2]學(xué)者提出了一種基于模糊身份的加密方案,這是基于屬性加密(ABE)的最早原型。Goyal等[3]學(xué)者提出基于屬性的密鑰策略屬性加密方案(KP-ABE);Bethencourt等[4]學(xué)者提出一種更實用的基于屬性的密文策略加密(CP-ABE)。RAY I等[5]學(xué)者提出了一種簡單有效的利用混合密碼體制來實現(xiàn)層次訪問控制的方案CBHAC。在基于CP-ABE的訪問控制中,數(shù)據(jù)所有者(DO)依靠云服務(wù)提供商(CSP)提供的基本訪問控制功能來保護數(shù)據(jù)。CP-ABE機制認(rèn)為是最適合訪問控制應(yīng)用的技術(shù),是由DU負(fù)責(zé)制定的訪問控制策略[6]。
隨著大數(shù)據(jù)云時代的到來,越來越多的用戶選擇在云上存儲數(shù)據(jù)。然而,在解決海量數(shù)據(jù)存儲和數(shù)據(jù)共享問題的時候,云存儲中的訪問控制將面臨著數(shù)據(jù)安全問題。許多學(xué)者對如何將CP-ABE算法應(yīng)用于密文訪問控制進行了深入研究,但主要集中在屬性授權(quán)管理、屬性撤銷、訪問結(jié)構(gòu)等方面,但沒有涉及開放云存儲完整性和存儲空間利用率的問題。
針對這一現(xiàn)象,本文提出了一種基于密文策略屬性加密(CP-ABE,Ciphertext-Policy Attributes-Based Encryption)的云存儲數(shù)據(jù)動態(tài)訪問控制。隨著屬性用戶數(shù)量的增加,形成了訪問控制編碼,以確定用戶的訪問權(quán)限和范圍,有效地完成了對云存儲數(shù)據(jù)的動態(tài)訪問控制,提高了云存儲服務(wù)器的空間利用率,大大減少DO端的權(quán)限管理代價,在數(shù)據(jù)動態(tài)訪問控制的完整性和安全性具有極大的優(yōu)勢,并提高了靈活性和效率。
主要從以下3個部分內(nèi)容進行定義:
1)定義1:屬性,設(shè)P={P1,P2,…,Pn},每個用戶的屬性A是P的非空子集,P是所有屬性的集合,A?{P1,P2,…,Pn},可用N個屬性鑒別2N個用戶。
2)定義2:訪問結(jié)構(gòu),T?2{P1,P2,…,Pn}{?},訪問結(jié)構(gòu)T是非空子集,屬性的判斷條件為T,在T中的屬性集稱為授權(quán)集,否則稱為非授權(quán)集。
3)定義3:訪問樹,樹的每個葉節(jié)點為一個屬性項,每一個關(guān)系函數(shù)用來表示每個內(nèi)部節(jié)點。對其關(guān)系函數(shù)為OR(1 of m),AND(m of m)或者n of m(m>n)門限3種不同的函數(shù)[7]。如圖1所示。
圖1 訪問結(jié)構(gòu)樹
如圖2所示給出了一個具體的實現(xiàn)CP-ABE機制工作流程[8]。
圖2 CP-ABE機制工作流程
CP-ABE算法主要從以下4個步驟進行:
步驟1:初始化設(shè)置參數(shù)Setup:用來生成主密鑰MK(Master Key)和公開參數(shù)PK(Public Key)。
步驟2:數(shù)據(jù)加密算法SK=KeyGen(PK,MK,AS)。私鑰SK(Secret Key)由主密鑰MK、公鑰PK和用戶屬性集AS(Attributes Set)生成[9]。
步驟3:密鑰生成算法CT=Encrypt(PK,F(xiàn),T)。利用訪問結(jié)構(gòu)T、公鑰PK和加密數(shù)據(jù)明文F(File),使加密后的密文為CT(Ciphertext)。
步驟4:密文解密算法M=Decrypt(CT,SK,PK)。只有當(dāng)屬性AS滿足訪問控制結(jié)構(gòu)T條件時,用私鑰SK解密密文CT得到明文F,Decrypt()才能成功操作并輸出M,否則不能。
訪問控制機制可以授權(quán)合法用戶訪問特定資源,訪問控制模型對系統(tǒng)或數(shù)據(jù)的訪問是通過檢查訪問者的角色來進行控制,可建立多個角色,解密密文只有擁有相應(yīng)密鑰的授權(quán)人員才能實現(xiàn)。在服務(wù)器端不可信環(huán)境中密文訪問控制技術(shù)可以保證數(shù)據(jù)的機密性[10]。目前,許多學(xué)者提出了基于CP-ABE的云存儲訪問控制模型及其應(yīng)用[11],如圖3所示給出了具體云存儲訪問控制框架。有3個實體:DO、DU和CSSP。DO負(fù)責(zé)CP-ABE算法的前3步,并制定AT、將加密得到的CT和EAT(k)發(fā)送到云端存儲。如果滿足DU的AS,可以解密得到K,最后F可以通過解密獲得,否則就不能。
圖3 基于CP-ABE的云存儲訪問控制框架
云存儲系統(tǒng)中的數(shù)據(jù)安全算法有文件體、密鑰體、訪問權(quán)限體和證書體4種結(jié)構(gòu)[12]。后3個存儲在身份驗證服務(wù)器中的相同位置,只有第一個文件體存儲在元數(shù)據(jù)服務(wù)器對應(yīng)節(jié)點中,在這4種結(jié)構(gòu)之間可以協(xié)調(diào)完成文件訪問、數(shù)據(jù)存儲和文件修改等[13]。圖4顯示了算法數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系。
圖4 算法數(shù)據(jù)結(jié)構(gòu)
在用戶訪問數(shù)據(jù)文件時,圖4中的數(shù)據(jù)結(jié)構(gòu)描述了各功能模塊之間的關(guān)系。只有通過身份驗證的用戶才能獲得相應(yīng)的密鑰。在云存儲訪問數(shù)據(jù)文件時用戶需要進行身份驗證[14]。
在對云存儲數(shù)據(jù)動態(tài)訪問控制過程中,將云存儲環(huán)境下的所有數(shù)據(jù)資源按屬性進行劃分,根據(jù)需求形成訪問控制編碼,確定用戶訪問權(quán)限和訪問范圍,從而有效地完成云存儲數(shù)據(jù)動態(tài)訪問控制[15]。具體步驟如下:
假設(shè)在云存儲數(shù)據(jù)動態(tài)訪問控制過程中,ul代表云存儲環(huán)境下的資源數(shù)據(jù)用戶,(L1,d1) 、(L2,d2)、(Ln,dn)分別代表數(shù)據(jù)資源屬性的范圍,然后根據(jù)數(shù)據(jù)用戶的需要,利用式(1)形成一個訪問控制編碼
(1)
式(1)中,Tn表示數(shù)據(jù)資源屬性集ω對應(yīng)的私鑰,φ表示用戶ul的屬性節(jié)點集合。
假設(shè),由δ代表形成的訪問控制結(jié)構(gòu),Si表示δ的所有節(jié)點賦值,并用式(2)生成私鑰
(2)
式(2)中,Qkk代表每個用戶設(shè)置屬性集。
根據(jù)式(2)得到的私鑰,用式(3)確定用戶訪問權(quán)限和訪問數(shù)據(jù)資源的范圍
(3)
云存儲數(shù)據(jù)動態(tài)訪問控制原理通過以上方法說明,能夠有效地實現(xiàn)云存儲數(shù)據(jù)動態(tài)訪問控制[16]。
數(shù)據(jù)持有者Owner首先發(fā)送一個存儲請求Rstore,然后隨機選擇一組節(jié)點,被選出的節(jié)點集合稱為存儲節(jié)點集,記為Qs={P1,P2,…,Pn}。這些節(jié)點被用來存儲Owner提交的數(shù)據(jù),并且系統(tǒng)在收到存儲請求后會把節(jié)點集合Q信息反饋給數(shù)據(jù)持有者Owner[17]。數(shù)據(jù)持有者通過秘密共享收到節(jié)點集合信息后將數(shù)據(jù)D使用各個節(jié)點的公鑰進行加密后,并發(fā)送給存儲節(jié)點。系統(tǒng)會定期重新產(chǎn)生新的節(jié)點集合Qs后,秘密共享產(chǎn)生的數(shù)據(jù)集合{D1,D2,…,Dn}會通過安全傳輸協(xié)議轉(zhuǎn)移到新的Qs中,在整個過程中輸入數(shù)據(jù)不會存儲太久,保證數(shù)據(jù)的安全性[18]。對動態(tài)操作的支持流程如圖5所示。
圖5 對動態(tài)操作的支持
通常,具有寫入權(quán)限的用戶也具有讀取權(quán)限。用戶對云存儲系統(tǒng)中數(shù)據(jù)最基本的操作就是讀寫操作。在非對稱加密中,私鑰用于簽名,公鑰用于驗證。為了區(qū)分讀寫權(quán)限,可以選擇一對公鑰和私鑰來控制讀寫權(quán)限[19]。假設(shè)簽名/驗證密鑰為Ksign/Kverify,則Ksign向可寫用戶授予相應(yīng)的讀寫權(quán)限,對數(shù)據(jù)進行簽名在用戶執(zhí)行寫操作后;Kverify向只讀用戶授予相應(yīng)的只讀權(quán)限,以驗證簽名結(jié)果。假設(shè)存在擴展權(quán)限Au1,Au2,…,Aun,則數(shù)據(jù)所有者可以將其權(quán)限特征值設(shè)置為X1,X2,…,Xn,即用X1,X2,…,Xn表示訪問權(quán)限Au1,Au2,…,Aun。
需要保密的每個文件F都有AES在存儲系統(tǒng)中對稱密鑰Kd,該密鑰Kd在創(chuàng)建文件時由文件服務(wù)器或數(shù)據(jù)所有者生成,加密后存儲到相應(yīng)服務(wù)器,對加密數(shù)據(jù)進行簽名/驗證通過RSA公私鑰對Ksign/Kverify完成[20]。讀寫用戶持有Kd、Kverify和Ksign才能進行訪問數(shù)據(jù),寫用戶持有Kd和Kverify,簽名SIG(F)和數(shù)據(jù)密文E(F)分別存儲在元數(shù)據(jù)和存儲端服務(wù)器上。
為了保證密鑰信息的安全性,采用CP-ABE算法對密鑰信息進行加密[21]。即Encrypt(PK,{Kd,Ksign/Kverify},T),假設(shè)具有讀寫權(quán)限的用戶的訪問結(jié)構(gòu)為Trw,對應(yīng)的密文為CTrw=Encrypt(PK,{Kd,Ksign,Kverify},Trw),具有只讀訪問權(quán)限的用戶訪問結(jié)構(gòu)為Tro,對應(yīng)的密文為CTro=Encrypt(PK,{Kd,Kverify},Tro)。文件所有者為每個用戶設(shè)置屬性值A(chǔ)i,然后計算并生成用戶的私鑰SKi=KeyGen(MK,Ai),該私鑰與訪問者的公鑰一起發(fā)送給每個用戶。文件所有者默認(rèn)具有讀寫權(quán)限,維護公共參數(shù)PK和主密鑰MK[22]。文件創(chuàng)建者必須使用自己的私鑰Kpriv對文件體進行簽名,為了保證文件體的真實性。
1)以用戶U讀寫文件F為例,描述了讀寫數(shù)據(jù)的過程。
①讀取數(shù)據(jù)。
用戶U認(rèn)證通過以后讀取文件體是從服務(wù)器中進行,并查詢數(shù)據(jù)項獲取CTro信息;
用戶U通過Decrypt(CTro,SKU)得到Kd和Kverify;
用戶U從云存儲系統(tǒng)中獲取加密文件E(F)和簽名SIG(F);
用戶U用Kd來進行解密E(F)獲取數(shù)據(jù)明文;
用戶U通過對Kverify驗證簽名SIG(F)的正確性。
②寫入數(shù)據(jù)。
用戶U查詢文件體中對應(yīng)的數(shù)據(jù)項得到CTrw;
用戶U用Decrypt(CTrw,SKU)得到Kd和Ksign;
用戶U使用Kd加密文件F得到E(F),使用Ksign簽名E(F)得到SIG(F);
用戶U向云存儲系統(tǒng)發(fā)送E(F)和SIG(F)。
2)讀寫文件F的權(quán)限時通過以數(shù)據(jù)所有者Owner授予/撤銷用戶U′為例,來進行描述用戶對數(shù)據(jù)的訪問控制更改[23-24]。其中,AU′是用戶U′的屬性值。
①撤銷讀寫權(quán)限。
定義~VU′為U′的補集中所有屬性的析取,~VU′=P1∨P2∨…∨PN,Pi∈C(VU′);
所有者Owner生成一個新的訪問結(jié)構(gòu)T′=T∨~VU;
②授予讀寫權(quán)限。
所有者Owner查詢密鑰體中對應(yīng)的數(shù)據(jù)項,得到相應(yīng)的數(shù)據(jù)項CTrw;
所有者Owner使用Decrypt(CTrw,SKU′)得到Kd、Ksign和Kverify;
所有者Owner生成一個新的訪問結(jié)構(gòu)T′=T∨VU′;
本文實驗中,屬性數(shù)量均由0增加到100,3個環(huán)節(jié)實驗結(jié)果如圖6,圖7,圖8所示。
圖6顯示CP-ABE算法中,在根據(jù)用戶數(shù)量的不斷增加,屬性數(shù)量的個數(shù)也不斷增多,對應(yīng)的用戶私鑰產(chǎn)生時間也呈增長趨勢。
圖6 CP-ABC算法密鑰生成時間
在訪問樹中葉結(jié)點數(shù)的增加隨著不同葉結(jié)點數(shù)用戶的變化而不斷增加,從圖7中可以看出,對數(shù)據(jù)對稱密鑰等相關(guān)信息的加密時間也隨著葉結(jié)點數(shù)的變化也在不斷的加長。
圖7 CP-ABC算法加密時間
圖8給出了用戶數(shù)目在500以內(nèi)的情況下,CP-ABE算法屬性數(shù)為100,采用CP-ABE動態(tài)訪問控制策略進行解密過程所需時間分布情況。
圖8 CP-ABC算法解密過程時間
實驗結(jié)果表明,隨著屬性用戶數(shù)量的不斷增加,基于CP-ABE的云存儲數(shù)據(jù)動態(tài)訪問控制策略在完整性和效率上都有很大的優(yōu)勢。
云存儲的安全問題對云存儲應(yīng)用的發(fā)展至關(guān)重要,合理有效的訪問控制可以提高云存儲服務(wù)用戶對云存儲服務(wù)的信任度。本文提出的云存儲數(shù)據(jù)動態(tài)訪問控制能夠靈活、高效、安全地進行數(shù)據(jù)訪問控制,并支持?jǐn)?shù)據(jù)完整性驗證、提高了存儲空間利用率,有效提高了開放云存儲系統(tǒng)數(shù)據(jù)訪問控制的完整性和安全性。仿真結(jié)果表明,通過CP-ABE算法,減少了生成用戶私鑰的時間,降低了存儲空間,具有較強的實用性,存儲開銷低、耗時少的優(yōu)點。在后續(xù)工作中將不斷改進此方法,以支持更靈活的云存儲動態(tài)訪問控制策略。