榮靜 殷新春 徐明 張蕾
摘要:為解決云存儲中數(shù)據(jù)共享與數(shù)據(jù)安全問題,通過使用數(shù)據(jù)分塊技術(shù)將數(shù)據(jù)分割,對得到的每一塊數(shù)據(jù)作對稱加密,將加密后的密文存儲在云上,實現(xiàn)數(shù)據(jù)安全存儲。為達(dá)到數(shù)據(jù)分享的目的,使用密文策略的屬性基加密技術(shù)對上述過程中對稱加密的一系列密鑰進(jìn)行加密,通過共享密鑰實現(xiàn)數(shù)據(jù)共享;當(dāng)用戶需要解密數(shù)據(jù)時,客戶端系統(tǒng)會先驗證用戶身份,驗證通過則解密得到數(shù)據(jù)。同時通過將用戶ID存入權(quán)限撤銷列表中,實現(xiàn)撤銷用戶功能,在實現(xiàn)數(shù)據(jù)共享的同時保證數(shù)據(jù)安全性。
關(guān)鍵詞:云數(shù)據(jù);密文策略屬性基加密;數(shù)據(jù)分塊;數(shù)據(jù)共享;撤銷用戶
A Cloud Data Sharing Mechanism Based on CP?ABE and Data Partition
RONG Jing?YIN Xin?chun1,2,XU Ming?ZHANG Lei?1
(1.Guangling College, Yangzhou University,Yangzhou,225009,China;
2.College of Information and Engineering, Yangzhou University. Yangzhou 225127, China )
Abstract:To solve problem of the data sharing and data security stored in the cloud, we introduce the data partition technology to divide data into lots of parts. After encrypting them one by one with different symmetric keys, the encrypted data is stored in the cloud. To realize data sharing, we use the ciphertext policy attribute?based encryption technology to encrypt the symmetric keys, so we can share the data by sharing the encrypted key. When a user wants to decrypt the data, the client system validates his identity first, if his identity is legal, he can decrypt the key to get the plaintext . Simultaneously, we add the revoked ID into the revocation list in order to revoke user. Eventually, we realize data sharing and data security.
Key Words:cloud environment;CP?ABE;data partition;data sharing;revoke user.
0?引言
云計算[1?2]應(yīng)用因其便捷、靈活、費用合理等優(yōu)勢發(fā)展迅速,用戶將大量數(shù)據(jù)存儲在云端,利用云端豐富的計算資源完成大規(guī)模的計算工作。與此同時,將數(shù)據(jù)存儲在云端也帶來了諸多安全威脅,如何安全高效地存取以及分享存儲在云端的數(shù)據(jù)越來越受到關(guān)注[3]。
屬性基加密機(jī)制[4?7](Attribute-Based Encryption, ABE)可以為云數(shù)據(jù)共享提供安全、可靠、便捷的服務(wù)。ABE原理是在加密時將訪問策略與用戶屬性分別嵌入到密鑰和密文中,只有當(dāng)用戶的屬性滿足設(shè)定的訪問策略時才可解密消息。依據(jù)上述加解密原理,ABE分為密文策略(Ciphertext Policy, CP)和密鑰策略(Key Policy,KP)兩類。KP-ABE是將用戶的屬性與密文關(guān)聯(lián),將設(shè)置的訪問策略與用戶私鑰關(guān)聯(lián)。而CP-ABE是將用戶的屬性與密鑰關(guān)聯(lián),而將設(shè)置的訪問策略與密文關(guān)聯(lián)起來,這種設(shè)定更加符合實際應(yīng)用需求。通過屬性基加密算法實現(xiàn)云數(shù)據(jù)共享的方案很多,如文獻(xiàn)[8]提出了一種在云存儲環(huán)境下的共享方案,該方案使用了兩個半可信中心進(jìn)行密鑰的生成與分發(fā),降低第三方依賴性;文獻(xiàn)[9]通過外包解密的方法降低用戶解密的計算量大等問題。
數(shù)據(jù)量很可能十分龐大,雖然云存儲采用的是分布式存儲[10],但為了其安全性,可先將數(shù)據(jù)按一定的規(guī)則分塊[11?13],然后將分塊后的數(shù)據(jù)再加密上傳到云端進(jìn)行分布式存儲,同時在用戶請求數(shù)據(jù)時可根據(jù)規(guī)則將數(shù)據(jù)恢復(fù)。
1?方案概述
在此將云服務(wù)[14]供應(yīng)商及存儲設(shè)備提供商等都視為不可信的,所有加解密工作都在客戶端實現(xiàn)。當(dāng)用戶需要共享全部數(shù)據(jù)時,用戶將數(shù)據(jù)在客戶端加密后再上傳給云服務(wù)供應(yīng)商。
數(shù)據(jù)屬主首先將數(shù)據(jù)分塊,然后對每一塊數(shù)據(jù)分別使用對稱加密算法加密。?密鑰為:{K?0,K?1,…,K?n},隨后數(shù)據(jù)屬主將加密好的數(shù)據(jù)上傳到云存儲設(shè)備上。對于對稱加密的密鑰[15]{K?0,K?1,…,K?n},系統(tǒng)使用數(shù)據(jù)屬主設(shè)置的訪問策略進(jìn)行加密。根據(jù)所擁有的屬性為用戶生成屬于自己的解密密鑰K?u?,只要用戶所擁有的屬性能夠滿足這個訪問策略,用戶的私鑰便可以解密,最終得到數(shù)據(jù)明文,實現(xiàn)密鑰共享。使用CP-ABE算法加密密鑰主要是為了實現(xiàn)用戶共享數(shù)據(jù),此外還增加了撤銷機(jī)制[16?17]以便靈活地控制用戶權(quán)限。
2?方案實現(xiàn)
數(shù)據(jù)加密:數(shù)據(jù)加密包括兩種方式:①使用對稱加密算法加密每一塊數(shù)據(jù);②使用CP-ABE算法對稱密鑰。加密過程如下:
(1)在客戶端,數(shù)據(jù)屬主先進(jìn)行數(shù)據(jù)分塊。本文采用固定大小分割法,即每一個數(shù)據(jù)塊的長度相同且固定。數(shù)據(jù)屬主輸入分塊數(shù)n,根據(jù)n的值系統(tǒng)將數(shù)據(jù)均勻劃分為等長的數(shù)據(jù)塊(設(shè)數(shù)據(jù)塊的大小為m),若最后一個數(shù)據(jù)塊不足,則需補(bǔ)充字節(jié)。
將數(shù)據(jù)分塊后在本地生成一個數(shù)據(jù)塊索引目錄,索引目錄的主要作用是恢復(fù)數(shù)據(jù)。索引目錄中包括數(shù)據(jù)塊的索引信息(序號):i、n個隨機(jī)值R?i及n個密鑰K?i,(i{1,2,…,n})。
(2)系統(tǒng)隨機(jī)生成n個密鑰,為劃分的每一塊數(shù)據(jù)選取一個密鑰K?i(i{1,2,…,n}),將密鑰與數(shù)據(jù)塊索引信息一一對應(yīng)地添加到索引目錄中。
(3)對稱加密。使用步驟(2)中生成的對稱密鑰K?i加密第i個數(shù)據(jù)塊,分別得到密文Cipher?i。系統(tǒng)生成n個隨機(jī)值R?i,并將這個隨機(jī)參數(shù)添加到密文Cipher?i后面。
在此以AES算法為例說明:AESEncrypt(M?i,K?i)→CT?i:輸入數(shù)據(jù)塊M?i,其對稱密鑰K?i,輸出密文Cipher?i。在密文Cipher?i后面加上參數(shù)R?i,分別得到CT?i,依次組合n塊數(shù)據(jù)得到密文cipher。數(shù)據(jù)屬主上傳數(shù)據(jù)密文cipher到云端存儲。
n?個對稱密鑰按隨機(jī)排列組成的消息為:
(4)為實現(xiàn)數(shù)據(jù)共享,使用CP-ABE算法對所有?n?個對稱密鑰進(jìn)行加密[18?19]。設(shè)定云服務(wù)供應(yīng)商、設(shè)備提供商都不可信,且用戶存在因私利泄露密鑰等情況,因此除了加密數(shù)據(jù)外還要有針對用戶的撤銷機(jī)制,以實時撤銷用戶的訪問權(quán)限,抵御來自內(nèi)部的攻擊,保護(hù)數(shù)據(jù)。主要算法[20]如下:
ABESetup(λ,U)→PK,MSK:輸入安全參數(shù)λ,通過群生成算法得到一個N階循環(huán)群G。隨機(jī)選取U個(U是整個系統(tǒng)中的屬性集合)群元素h?1,h?2,…,h?U∈G,將這U個隨機(jī)群元素與U個屬性相關(guān)聯(lián)。算法隨機(jī)選取α,a∈Z?N以及群G的生成元g,最終得到主密鑰:MSK=;系統(tǒng)公鑰:PK={N,g,e(g,g)α,ga,ga?2,H?x=gh?x}。
ABEKeyGen(id, PK, MSK, S)→SK:S表示一個用戶的屬性集合,系統(tǒng)通過計算得出該用戶的私鑰。算法選取隨機(jī)值t∈Z?N以及隨機(jī)群元素R,R′,R″,{R?x}?x∈S∈G?p?3,計算得到用戶私鑰如下:
由合數(shù)階群的定義可知,不同子群之間存在兩兩正交關(guān)系,因此隨機(jī)值R可以被約去。
ABEEncrypt(MS, A, PK, RU)→C?1:數(shù)據(jù)屬主設(shè)置一個訪問策略A,用線性秘密共享方案[21]實現(xiàn);MS是步驟(3)中對稱密鑰消息,RU是被撤銷權(quán)限的用戶的id集合。最終輸出加密后的密文C?1。
該算法中,令(M,ρ)表示訪問結(jié)構(gòu)A,其中M是一個l×m矩陣,矩陣M的第i行M?i通過ρ映射到屬性集合U中的一個屬性:ρ(i)。注:ρ只能映射到一個屬性上。
隨機(jī)選取向量v=(s,v?1,v?2,…,v?m)∈Z?m?N,對矩陣的每一行M?i計算內(nèi)積λ?i=M?i·v;選取隨機(jī)值r?i∈Z?N,其中i∈{1,2,…,l};令Q=|RU|表示被撤銷的用戶數(shù)量,選取Q個隨機(jī)值s?1,s?2,…,s?Q,并令s=s?1+s?2+…+s?Q,令I(lǐng)D?i表示其中第i個被撤銷用戶的id,最后得到的密文如下:
生成的密文為:?C?1={C′,C?0,C?i,1,C?i,2,C?j,D?j}。
(5)每次撤銷某一個用戶時,RU集合更新,需要使用對稱加密算法對C?1進(jìn)行重新加密,算法如下:
ReEncrypt(Key, C?1)→C?2。算法隨機(jī)生成一個對稱密鑰Key,使用密鑰Key加密密文C?1生成新密文C?2。將Key分發(fā)給未被撤銷的用戶;如果RU集合更新,那么對稱密鑰Key也要更新,未被撤銷的用戶便會得到一個最新的對稱密鑰,而已被撤銷的用戶則沒有。只有擁有這個最新的對稱密鑰Key的用戶才可解密C?2,再解密C?1,所以用戶擁有的密鑰應(yīng)為:SK={K, K′, L, Kx, Key}。
系統(tǒng)加密過程如圖1所示。
數(shù)據(jù)解密:解密過程即是加密過程的逆操作,主要步驟如下:
(1)用戶請求解密數(shù)據(jù)。首先客戶端系統(tǒng)驗證用戶身份,系統(tǒng)解析用戶私鑰后若得到最新對稱加密密鑰Key,則可?解密得到密文C?2。
ReDecrypt(Key, C?2)→C?1。重對稱解密算法ReEncrypt的逆操作、解密C?2。
(2)解密密文C?2后系統(tǒng)將執(zhí)行ABEDecrypt算法。
ABEDecrypt(C?1, SK, RU)→MS:輸入私鑰,連同步驟(1)得到的密文C?1,檢測用戶是否在被撤銷用戶集合中。若不在,解密得到密鑰消息MS。計算過程如下:
由?C=MS·e(g,g)αs可以得到MS=CF。
注意:用戶不能獲取對稱密鑰消息MS,MS是解密數(shù)據(jù)的過渡階段,用戶得到的是解密后的數(shù)據(jù),即便是合法用戶也得不到加密數(shù)據(jù)的密鑰消息,排除了來自系統(tǒng)內(nèi)部用戶的安全隱患。
(3)步驟(2)中,用戶通過系統(tǒng)身份驗證后,系統(tǒng)將根據(jù)索引目錄中密鑰與數(shù)據(jù)塊的對應(yīng)關(guān)系一一解密數(shù)據(jù)塊。
AESDecrypt(K?i, CT?i)→MS?i:系統(tǒng)根據(jù)密鑰K?i和密文數(shù)據(jù)塊CT?i,解密得到明文數(shù)據(jù)塊MS?i。
(4)系統(tǒng)根據(jù)索引目錄中的信息將數(shù)據(jù)塊合并,恢復(fù)為原始數(shù)據(jù)。解密過程如圖2所示。
3?結(jié)語
本文將數(shù)據(jù)分塊技術(shù)與CP?ABE加密機(jī)制結(jié)合起來實現(xiàn)云數(shù)據(jù)共享,將數(shù)據(jù)的加解密與數(shù)據(jù)共享分開實現(xiàn)。先使用對稱密碼對數(shù)據(jù)加密,然后使用屬性基密碼共享數(shù)據(jù),實際上是通過共享對稱密鑰共享數(shù)據(jù)。在使用屬性基密碼算法中加入了用戶撤銷機(jī)制,從而實現(xiàn)對用戶權(quán)限的靈活控制。
參考文獻(xiàn):
[1]?馮登國,張敏,張妍,等. 云計算安全研究[J]. 軟件學(xué)報,2011,22(1):49?52.
[2]?GUPTA R. Above the clouds: a view of cloud computing[J]. Eecs Department University of California Berkeley, 2009,53(4):50?58.
[3]?俞能海,郝卓,徐甲甲,等.云安全研究進(jìn)展綜述[J].電子學(xué)報,2013,41(2):371?381.
[4]?馮登國,陳成.屬性密碼學(xué)研究[J].密碼學(xué)報,2014,1(1):1?12.
[5]?蘇金樹,曹丹,王小峰,等.屬性基加密機(jī)制[J].軟件學(xué)報,2011,22(6):1299?1315.
[6]?劉雪艷.基于屬性加密的數(shù)據(jù)訪問控制方法研究[D].蘭州:蘭州理工大學(xué),2016.
[7]?馬瀟瀟,于剛.可公開定責(zé)的密文策略屬性基加密方案[J].計算機(jī)科學(xué),2017,44(5):160?165.
[8]?姚文斌,韓司,李小勇.云存儲環(huán)境下的密文安全共享機(jī)制[J].通信學(xué)報,2015(10):1211?1216.
[9]?張桂榕.云存儲數(shù)據(jù)安全訪問與共享機(jī)制研究[D].北京:北京交通大學(xué),2015.
[10]?王意潔,孫偉東,周松,等.云計算環(huán)境下的分布存儲關(guān)鍵技術(shù)[J].軟件學(xué)報,2012,23(4):2021?2029.
[11]?張薇,馬建峰. LPCA——分布式存儲中的數(shù)據(jù)分離算法[J].系統(tǒng)工程與電子技術(shù), 2007(3):453?458.
[12]?徐小龍,周靜嵐,楊庚. 一種基于數(shù)據(jù)分割與分級的云存儲數(shù)據(jù)隱私保護(hù)機(jī)制[J]. 計算機(jī)科學(xué), 2013 (2):98?102.
[13]?王保兵. 電子數(shù)據(jù)分離存儲與安全恢復(fù)系統(tǒng)的研究及實現(xiàn)[D]. 南京:南京郵電大學(xué), 2009.
[14]?GHEMAWAT S, GOBIOFF H, LEUNG S T. The Google file system[J]. Acm Sigops Operating Systems Review, 2003(37):29?43.
[15]?唐勇.基于屬性加密的云數(shù)據(jù)訪問控制研究[D]. 武漢:華中科技大學(xué), 2013.
[16]?姚亮,楊超,馬建峰,等.云端數(shù)據(jù)訪問控制中基于中間代理的用戶撤銷新方法[J]. 通信學(xué)報, 2015, 36(11):92?101.
[17]?KIM J, NEPAL S. A cryptographically enforced access control with a flexible user revocation on untrusted cloud storage[J]. Data Science & Engineering, 2016,1(3):149?160.
[18]?牛德華,馬建峰,馬卓,等.基于屬性的安全增強(qiáng)云存儲訪問控制方案[J]. 通信學(xué)報, 2013(S1): 276?284.
[19]?宋開波,羅軍,孫金濤.基于CP?ABE算法的云存儲數(shù)據(jù)保護(hù)機(jī)制[J]. 華中科技大學(xué)學(xué)報:自然科學(xué)版, 2012(S1):266?269.
[20]?LI Y, ZHU J, WANG X, et al. Optimized ciphertext?policy attribute?based encryption with efficient revocation[J]. International Journal of Security & Its Applications, 2013(7):281?287.
[21]?WATERS B. Ciphertext policy attribute?based encryption: an expressive, efficient, and provably secure realization[J]. Lecture Notes in Computer Science, 2008(8):321?334.