王鳳領,王 涵,2,郭啟恩,趙方珍
(1. 澳門城市大學數據科學研究院,澳門 999078;2. 珠海中科先進技術研究院,廣東 珠海 519000;3. 暨南大學信息科學技術學院,廣東 廣州 510632)
隨著大數據云計算的發展,云存儲作為一種新的服務模式,即數據存儲即服務(DaaS)。云存儲通過應用軟件將網絡中大量不同類型的存儲設備集成在一起協同工作,實現了低成本、高可靠性、免維護的存儲服務的革命性變革,它對外提供數據存儲和業務訪問功能[1]。安全保障是云存儲應用的核心問題,也是云計算用戶最關心的問題。云存儲作為服務必須解決的安全問題,其中訪問控制就是最突出的。
在SHAMIR學者提出基于身份的系統概念后,Sahai等[2]學者提出了一種基于模糊身份的加密方案,這是基于屬性加密(ABE)的最早原型。Goyal等[3]學者提出基于屬性的密鑰策略屬性加密方案(KP-ABE);Bethencourt等[4]學者提出一種更實用的基于屬性的密文策略加密(CP-ABE)。RAY I等[5]學者提出了一種簡單有效的利用混合密碼體制來實現層次訪問控制的方案CBHAC。在基于CP-ABE的訪問控制中,數據所有者(DO)依靠云服務提供商(CSP)提供的基本訪問控制功能來保護數據。CP-ABE機制認為是最適合訪問控制應用的技術,是由DU負責制定的訪問控制策略[6]。
隨著大數據云時代的到來,越來越多的用戶選擇在云上存儲數據。然而,在解決海量數據存儲和數據共享問題的時候,云存儲中的訪問控制將面臨著數據安全問題。許多學者對如何將CP-ABE算法應用于密文訪問控制進行了深入研究,但主要集中在屬性授權管理、屬性撤銷、訪問結構等方面,但沒有涉及開放云存儲完整性和存儲空間利用率的問題。
針對這一現象,本文提出了一種基于密文策略屬性加密(CP-ABE,Ciphertext-Policy Attributes-Based Encryption)的云存儲數據動態訪問控制。隨著屬性用戶數量的增加,形成了訪問控制編碼,以確定用戶的訪問權限和范圍,有效地完成了對云存儲數據的動態訪問控制,提高了云存儲服務器的空間利用率,大大減少DO端的權限管理代價,在數據動態訪問控制的完整性和安全性具有極大的優勢,并提高了靈活性和效率。
主要從以下3個部分內容進行定義:
1)定義1:屬性,設P={P1,P2,…,Pn},每個用戶的屬性A是P的非空子集,P是所有屬性的集合,A?{P1,P2,…,Pn},可用N個屬性鑒別2N個用戶。
2)定義2:訪問結構,T?2{P1,P2,…,Pn}{?},訪問結構T是非空子集,屬性的判斷條件為T,在T中的屬性集稱為授權集,否則稱為非授權集。
3)定義3:訪問樹,樹的每個葉節點為一個屬性項,每一個關系函數用來表示每個內部節點。對其關系函數為OR(1 of m),AND(m of m)或者n of m(m>n)門限3種不同的函數[7]。如圖1所示。

圖1 訪問結構樹
如圖2所示給出了一個具體的實現CP-ABE機制工作流程[8]。

圖2 CP-ABE機制工作流程
CP-ABE算法主要從以下4個步驟進行:
步驟1:初始化設置參數Setup:用來生成主密鑰MK(Master Key)和公開參數PK(Public Key)。
步驟2:數據加密算法SK=KeyGen(PK,MK,AS)。私鑰SK(Secret Key)由主密鑰MK、公鑰PK和用戶屬性集AS(Attributes Set)生成[9]。
步驟3:密鑰生成算法CT=Encrypt(PK,F,T)。利用訪問結構T、公鑰PK和加密數據明文F(File),使加密后的密文為CT(Ciphertext)。
步驟4:密文解密算法M=Decrypt(CT,SK,PK)。只有當屬性AS滿足訪問控制結構T條件時,用私鑰SK解密密文CT得到明文F,Decrypt()才能成功操作并輸出M,否則不能。
訪問控制機制可以授權合法用戶訪問特定資源,訪問控制模型對系統或數據的訪問是通過檢查訪問者的角色來進行控制,可建立多個角色,解密密文只有擁有相應密鑰的授權人員才能實現。在服務器端不可信環境中密文訪問控制技術可以保證數據的機密性[10]。目前,許多學者提出了基于CP-ABE的云存儲訪問控制模型及其應用[11],如圖3所示給出了具體云存儲訪問控制框架。有3個實體:DO、DU和CSSP。DO負責CP-ABE算法的前3步,并制定AT、將加密得到的CT和EAT(k)發送到云端存儲。如果滿足DU的AS,可以解密得到K,最后F可以通過解密獲得,否則就不能。

圖3 基于CP-ABE的云存儲訪問控制框架
云存儲系統中的數據安全算法有文件體、密鑰體、訪問權限體和證書體4種結構[12]。后3個存儲在身份驗證服務器中的相同位置,只有第一個文件體存儲在元數據服務器對應節點中,在這4種結構之間可以協調完成文件訪問、數據存儲和文件修改等[13]。圖4顯示了算法數據結構之間的關系。

圖4 算法數據結構
在用戶訪問數據文件時,圖4中的數據結構描述了各功能模塊之間的關系。只有通過身份驗證的用戶才能獲得相應的密鑰。在云存儲訪問數據文件時用戶需要進行身份驗證[14]。
在對云存儲數據動態訪問控制過程中,將云存儲環境下的所有數據資源按屬性進行劃分,根據需求形成訪問控制編碼,確定用戶訪問權限和訪問范圍,從而有效地完成云存儲數據動態訪問控制[15]。具體步驟如下:
假設在云存儲數據動態訪問控制過程中,ul代表云存儲環境下的資源數據用戶,(L1,d1) 、(L2,d2)、(Ln,dn)分別代表數據資源屬性的范圍,然后根據數據用戶的需要,利用式(1)形成一個訪問控制編碼

(1)
式(1)中,Tn表示數據資源屬性集ω對應的私鑰,φ表示用戶ul的屬性節點集合。
假設,由δ代表形成的訪問控制結構,Si表示δ的所有節點賦值,并用式(2)生成私鑰

(2)
式(2)中,Qkk代表每個用戶設置屬性集。
根據式(2)得到的私鑰,用式(3)確定用戶訪問權限和訪問數據資源的范圍

(3)
云存儲數據動態訪問控制原理通過以上方法說明,能夠有效地實現云存儲數據動態訪問控制[16]。
數據持有者Owner首先發送一個存儲請求Rstore,然后隨機選擇一組節點,被選出的節點集合稱為存儲節點集,記為Qs={P1,P2,…,Pn}。這些節點被用來存儲Owner提交的數據,并且系統在收到存儲請求后會把節點集合Q信息反饋給數據持有者Owner[17]。數據持有者通過秘密共享收到節點集合信息后將數據D使用各個節點的公鑰進行加密后,并發送給存儲節點。系統會定期重新產生新的節點集合Qs后,秘密共享產生的數據集合{D1,D2,…,Dn}會通過安全傳輸協議轉移到新的Qs中,在整個過程中輸入數據不會存儲太久,保證數據的安全性[18]。對動態操作的支持流程如圖5所示。

圖5 對動態操作的支持
通常,具有寫入權限的用戶也具有讀取權限。用戶對云存儲系統中數據最基本的操作就是讀寫操作。在非對稱加密中,私鑰用于簽名,公鑰用于驗證。為了區分讀寫權限,可以選擇一對公鑰和私鑰來控制讀寫權限[19]。假設簽名/驗證密鑰為Ksign/Kverify,則Ksign向可寫用戶授予相應的讀寫權限,對數據進行簽名在用戶執行寫操作后;Kverify向只讀用戶授予相應的只讀權限,以驗證簽名結果。假設存在擴展權限Au1,Au2,…,Aun,則數據所有者可以將其權限特征值設置為X1,X2,…,Xn,即用X1,X2,…,Xn表示訪問權限Au1,Au2,…,Aun。
需要保密的每個文件F都有AES在存儲系統中對稱密鑰Kd,該密鑰Kd在創建文件時由文件服務器或數據所有者生成,加密后存儲到相應服務器,對加密數據進行簽名/驗證通過RSA公私鑰對Ksign/Kverify完成[20]。讀寫用戶持有Kd、Kverify和Ksign才能進行訪問數據,寫用戶持有Kd和Kverify,簽名SIG(F)和數據密文E(F)分別存儲在元數據和存儲端服務器上。
為了保證密鑰信息的安全性,采用CP-ABE算法對密鑰信息進行加密[21]。即Encrypt(PK,{Kd,Ksign/Kverify},T),假設具有讀寫權限的用戶的訪問結構為Trw,對應的密文為CTrw=Encrypt(PK,{Kd,Ksign,Kverify},Trw),具有只讀訪問權限的用戶訪問結構為Tro,對應的密文為CTro=Encrypt(PK,{Kd,Kverify},Tro)。文件所有者為每個用戶設置屬性值Ai,然后計算并生成用戶的私鑰SKi=KeyGen(MK,Ai),該私鑰與訪問者的公鑰一起發送給每個用戶。文件所有者默認具有讀寫權限,維護公共參數PK和主密鑰MK[22]。文件創建者必須使用自己的私鑰Kpriv對文件體進行簽名,為了保證文件體的真實性。
1)以用戶U讀寫文件F為例,描述了讀寫數據的過程。
①讀取數據。
用戶U認證通過以后讀取文件體是從服務器中進行,并查詢數據項獲取CTro信息;
用戶U通過Decrypt(CTro,SKU)得到Kd和Kverify;
用戶U從云存儲系統中獲取加密文件E(F)和簽名SIG(F);
用戶U用Kd來進行解密E(F)獲取數據明文;
用戶U通過對Kverify驗證簽名SIG(F)的正確性。
②寫入數據。
用戶U查詢文件體中對應的數據項得到CTrw;
用戶U用Decrypt(CTrw,SKU)得到Kd和Ksign;
用戶U使用Kd加密文件F得到E(F),使用Ksign簽名E(F)得到SIG(F);
用戶U向云存儲系統發送E(F)和SIG(F)。
2)讀寫文件F的權限時通過以數據所有者Owner授予/撤銷用戶U′為例,來進行描述用戶對數據的訪問控制更改[23-24]。其中,AU′是用戶U′的屬性值。
①撤銷讀寫權限。
定義~VU′為U′的補集中所有屬性的析取,~VU′=P1∨P2∨…∨PN,Pi∈C(VU′);

所有者Owner生成一個新的訪問結構T′=T∨~VU;



②授予讀寫權限。

所有者Owner查詢密鑰體中對應的數據項,得到相應的數據項CTrw;
所有者Owner使用Decrypt(CTrw,SKU′)得到Kd、Ksign和Kverify;
所有者Owner生成一個新的訪問結構T′=T∨VU′;


本文實驗中,屬性數量均由0增加到100,3個環節實驗結果如圖6,圖7,圖8所示。
圖6顯示CP-ABE算法中,在根據用戶數量的不斷增加,屬性數量的個數也不斷增多,對應的用戶私鑰產生時間也呈增長趨勢。

圖6 CP-ABC算法密鑰生成時間
在訪問樹中葉結點數的增加隨著不同葉結點數用戶的變化而不斷增加,從圖7中可以看出,對數據對稱密鑰等相關信息的加密時間也隨著葉結點數的變化也在不斷的加長。

圖7 CP-ABC算法加密時間
圖8給出了用戶數目在500以內的情況下,CP-ABE算法屬性數為100,采用CP-ABE動態訪問控制策略進行解密過程所需時間分布情況。

圖8 CP-ABC算法解密過程時間
實驗結果表明,隨著屬性用戶數量的不斷增加,基于CP-ABE的云存儲數據動態訪問控制策略在完整性和效率上都有很大的優勢。
云存儲的安全問題對云存儲應用的發展至關重要,合理有效的訪問控制可以提高云存儲服務用戶對云存儲服務的信任度。本文提出的云存儲數據動態訪問控制能夠靈活、高效、安全地進行數據訪問控制,并支持數據完整性驗證、提高了存儲空間利用率,有效提高了開放云存儲系統數據訪問控制的完整性和安全性。仿真結果表明,通過CP-ABE算法,減少了生成用戶私鑰的時間,降低了存儲空間,具有較強的實用性,存儲開銷低、耗時少的優點。在后續工作中將不斷改進此方法,以支持更靈活的云存儲動態訪問控制策略。