榮靜 殷新春 徐明 張蕾
摘要:為解決云存儲(chǔ)中數(shù)據(jù)共享與數(shù)據(jù)安全問題,通過使用數(shù)據(jù)分塊技術(shù)將數(shù)據(jù)分割,對(duì)得到的每一塊數(shù)據(jù)作對(duì)稱加密,將加密后的密文存儲(chǔ)在云上,實(shí)現(xiàn)數(shù)據(jù)安全存儲(chǔ)。為達(dá)到數(shù)據(jù)分享的目的,使用密文策略的屬性基加密技術(shù)對(duì)上述過程中對(duì)稱加密的一系列密鑰進(jìn)行加密,通過共享密鑰實(shí)現(xiàn)數(shù)據(jù)共享;當(dāng)用戶需要解密數(shù)據(jù)時(shí),客戶端系統(tǒng)會(huì)先驗(yàn)證用戶身份,驗(yàn)證通過則解密得到數(shù)據(jù)。同時(shí)通過將用戶ID存入權(quán)限撤銷列表中,實(shí)現(xiàn)撤銷用戶功能,在實(shí)現(xiàn)數(shù)據(jù)共享的同時(shí)保證數(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?引言
云計(jì)算[1?2]應(yīng)用因其便捷、靈活、費(fèi)用合理等優(yōu)勢發(fā)展迅速,用戶將大量數(shù)據(jù)存儲(chǔ)在云端,利用云端豐富的計(jì)算資源完成大規(guī)模的計(jì)算工作。與此同時(shí),將數(shù)據(jù)存儲(chǔ)在云端也帶來了諸多安全威脅,如何安全高效地存取以及分享存儲(chǔ)在云端的數(shù)據(jù)越來越受到關(guān)注[3]。
屬性基加密機(jī)制[4?7](Attribute-Based Encryption, ABE)可以為云數(shù)據(jù)共享提供安全、可靠、便捷的服務(wù)。ABE原理是在加密時(shí)將訪問策略與用戶屬性分別嵌入到密鑰和密文中,只有當(dāng)用戶的屬性滿足設(shè)定的訪問策略時(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è)定更加符合實(shí)際應(yīng)用需求。通過屬性基加密算法實(shí)現(xiàn)云數(shù)據(jù)共享的方案很多,如文獻(xiàn)[8]提出了一種在云存儲(chǔ)環(huán)境下的共享方案,該方案使用了兩個(gè)半可信中心進(jìn)行密鑰的生成與分發(fā),降低第三方依賴性;文獻(xiàn)[9]通過外包解密的方法降低用戶解密的計(jì)算量大等問題。
數(shù)據(jù)量很可能十分龐大,雖然云存儲(chǔ)采用的是分布式存儲(chǔ)[10],但為了其安全性,可先將數(shù)據(jù)按一定的規(guī)則分塊[11?13],然后將分塊后的數(shù)據(jù)再加密上傳到云端進(jìn)行分布式存儲(chǔ),同時(shí)在用戶請(qǐng)求數(shù)據(jù)時(shí)可根據(jù)規(guī)則將數(shù)據(jù)恢復(fù)。
1?方案概述
在此將云服務(wù)[14]供應(yīng)商及存儲(chǔ)設(shè)備提供商等都視為不可信的,所有加解密工作都在客戶端實(shí)現(xiàn)。當(dāng)用戶需要共享全部數(shù)據(jù)時(shí),用戶將數(shù)據(jù)在客戶端加密后再上傳給云服務(wù)供應(yīng)商。
數(shù)據(jù)屬主首先將數(shù)據(jù)分塊,然后對(duì)每一塊數(shù)據(jù)分別使用對(duì)稱加密算法加密。?密鑰為:{K?0,K?1,…,K?n},隨后數(shù)據(jù)屬主將加密好的數(shù)據(jù)上傳到云存儲(chǔ)設(shè)備上。對(duì)于對(duì)稱加密的密鑰[15]{K?0,K?1,…,K?n},系統(tǒng)使用數(shù)據(jù)屬主設(shè)置的訪問策略進(jìn)行加密。根據(jù)所擁有的屬性為用戶生成屬于自己的解密密鑰K?u?,只要用戶所擁有的屬性能夠滿足這個(gè)訪問策略,用戶的私鑰便可以解密,最終得到數(shù)據(jù)明文,實(shí)現(xiàn)密鑰共享。使用CP-ABE算法加密密鑰主要是為了實(shí)現(xiàn)用戶共享數(shù)據(jù),此外還增加了撤銷機(jī)制[16?17]以便靈活地控制用戶權(quán)限。
2?方案實(shí)現(xiàn)
數(shù)據(jù)加密:數(shù)據(jù)加密包括兩種方式:①使用對(duì)稱加密算法加密每一塊數(shù)據(jù);②使用CP-ABE算法對(duì)稱密鑰。加密過程如下:
(1)在客戶端,數(shù)據(jù)屬主先進(jìn)行數(shù)據(jù)分塊。本文采用固定大小分割法,即每一個(gè)數(shù)據(jù)塊的長度相同且固定。數(shù)據(jù)屬主輸入分塊數(shù)n,根據(jù)n的值系統(tǒng)將數(shù)據(jù)均勻劃分為等長的數(shù)據(jù)塊(設(shè)數(shù)據(jù)塊的大小為m),若最后一個(gè)數(shù)據(jù)塊不足,則需補(bǔ)充字節(jié)。
將數(shù)據(jù)分塊后在本地生成一個(gè)數(shù)據(jù)塊索引目錄,索引目錄的主要作用是恢復(fù)數(shù)據(jù)。索引目錄中包括數(shù)據(jù)塊的索引信息(序號(hào)):i、n個(gè)隨機(jī)值R?i及n個(gè)密鑰K?i,(i{1,2,…,n})。
(2)系統(tǒng)隨機(jī)生成n個(gè)密鑰,為劃分的每一塊數(shù)據(jù)選取一個(gè)密鑰K?i(i{1,2,…,n}),將密鑰與數(shù)據(jù)塊索引信息一一對(duì)應(yīng)地添加到索引目錄中。
(3)對(duì)稱加密。使用步驟(2)中生成的對(duì)稱密鑰K?i加密第i個(gè)數(shù)據(jù)塊,分別得到密文Cipher?i。系統(tǒng)生成n個(gè)隨機(jī)值R?i,并將這個(gè)隨機(jī)參數(shù)添加到密文Cipher?i后面。
在此以AES算法為例說明:AESEncrypt(M?i,K?i)→CT?i:輸入數(shù)據(jù)塊M?i,其對(duì)稱密鑰K?i,輸出密文Cipher?i。在密文Cipher?i后面加上參數(shù)R?i,分別得到CT?i,依次組合n塊數(shù)據(jù)得到密文cipher。數(shù)據(jù)屬主上傳數(shù)據(jù)密文cipher到云端存儲(chǔ)。
n?個(gè)對(duì)稱密鑰按隨機(jī)排列組成的消息為:
(4)為實(shí)現(xiàn)數(shù)據(jù)共享,使用CP-ABE算法對(duì)所有?n?個(gè)對(duì)稱密鑰進(jìn)行加密[18?19]。設(shè)定云服務(wù)供應(yīng)商、設(shè)備提供商都不可信,且用戶存在因私利泄露密鑰等情況,因此除了加密數(shù)據(jù)外還要有針對(duì)用戶的撤銷機(jī)制,以實(shí)時(shí)撤銷用戶的訪問權(quán)限,抵御來自內(nèi)部的攻擊,保護(hù)數(shù)據(jù)。主要算法[20]如下:
ABESetup(λ,U)→PK,MSK:輸入安全參數(shù)λ,通過群生成算法得到一個(gè)N階循環(huán)群G。隨機(jī)選取U個(gè)(U是整個(gè)系統(tǒng)中的屬性集合)群元素h?1,h?2,…,h?U∈G,將這U個(gè)隨機(jī)群元素與U個(gè)屬性相關(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表示一個(gè)用戶的屬性集合,系統(tǒng)通過計(jì)算得出該用戶的私鑰。算法選取隨機(jī)值t∈Z?N以及隨機(jī)群元素R,R′,R″,{R?x}?x∈S∈G?p?3,計(jì)算得到用戶私鑰如下:
由合數(shù)階群的定義可知,不同子群之間存在兩兩正交關(guān)系,因此隨機(jī)值R可以被約去。
ABEEncrypt(MS, A, PK, RU)→C?1:數(shù)據(jù)屬主設(shè)置一個(gè)訪問策略A,用線性秘密共享方案[21]實(shí)現(xiàn);MS是步驟(3)中對(duì)稱密鑰消息,RU是被撤銷權(quán)限的用戶的id集合。最終輸出加密后的密文C?1。
該算法中,令(M,ρ)表示訪問結(jié)構(gòu)A,其中M是一個(gè)l×m矩陣,矩陣M的第i行M?i通過ρ映射到屬性集合U中的一個(gè)屬性:ρ(i)。注:ρ只能映射到一個(gè)屬性上。
隨機(jī)選取向量v=(s,v?1,v?2,…,v?m)∈Z?m?N,對(duì)矩陣的每一行M?i計(jì)算內(nèi)積λ?i=M?i·v;選取隨機(jī)值r?i∈Z?N,其中i∈{1,2,…,l};令Q=|RU|表示被撤銷的用戶數(shù)量,選取Q個(gè)隨機(jī)值s?1,s?2,…,s?Q,并令s=s?1+s?2+…+s?Q,令I(lǐng)D?i表示其中第i個(gè)被撤銷用戶的id,最后得到的密文如下:
生成的密文為:?C?1={C′,C?0,C?i,1,C?i,2,C?j,D?j}。
(5)每次撤銷某一個(gè)用戶時(shí),RU集合更新,需要使用對(duì)稱加密算法對(duì)C?1進(jìn)行重新加密,算法如下:
ReEncrypt(Key, C?1)→C?2。算法隨機(jī)生成一個(gè)對(duì)稱密鑰Key,使用密鑰Key加密密文C?1生成新密文C?2。將Key分發(fā)給未被撤銷的用戶;如果RU集合更新,那么對(duì)稱密鑰Key也要更新,未被撤銷的用戶便會(huì)得到一個(gè)最新的對(duì)稱密鑰,而已被撤銷的用戶則沒有。只有擁有這個(gè)最新的對(duì)稱密鑰Key的用戶才可解密C?2,再解密C?1,所以用戶擁有的密鑰應(yīng)為:SK={K, K′, L, Kx, Key}。
系統(tǒng)加密過程如圖1所示。
數(shù)據(jù)解密:解密過程即是加密過程的逆操作,主要步驟如下:
(1)用戶請(qǐng)求解密數(shù)據(jù)。首先客戶端系統(tǒng)驗(yàn)證用戶身份,系統(tǒng)解析用戶私鑰后若得到最新對(duì)稱加密密鑰Key,則可?解密得到密文C?2。
ReDecrypt(Key, C?2)→C?1。重對(duì)稱解密算法ReEncrypt的逆操作、解密C?2。
(2)解密密文C?2后系統(tǒng)將執(zhí)行ABEDecrypt算法。
ABEDecrypt(C?1, SK, RU)→MS:輸入私鑰,連同步驟(1)得到的密文C?1,檢測用戶是否在被撤銷用戶集合中。若不在,解密得到密鑰消息MS。計(jì)算過程如下:
由?C=MS·e(g,g)αs可以得到MS=CF。
注意:用戶不能獲取對(duì)稱密鑰消息MS,MS是解密數(shù)據(jù)的過渡階段,用戶得到的是解密后的數(shù)據(jù),即便是合法用戶也得不到加密數(shù)據(jù)的密鑰消息,排除了來自系統(tǒng)內(nèi)部用戶的安全隱患。
(3)步驟(2)中,用戶通過系統(tǒng)身份驗(yàn)證后,系統(tǒng)將根據(jù)索引目錄中密鑰與數(shù)據(jù)塊的對(duì)應(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é)合起來實(shí)現(xiàn)云數(shù)據(jù)共享,將數(shù)據(jù)的加解密與數(shù)據(jù)共享分開實(shí)現(xiàn)。先使用對(duì)稱密碼對(duì)數(shù)據(jù)加密,然后使用屬性基密碼共享數(shù)據(jù),實(shí)際上是通過共享對(duì)稱密鑰共享數(shù)據(jù)。在使用屬性基密碼算法中加入了用戶撤銷機(jī)制,從而實(shí)現(xiàn)對(duì)用戶權(quán)限的靈活控制。
參考文獻(xiàn):
[1]?馮登國,張敏,張妍,等. 云計(jì)算安全研究[J]. 軟件學(xué)報(bào),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é)報(bào),2013,41(2):371?381.
[4]?馮登國,陳成.屬性密碼學(xué)研究[J].密碼學(xué)報(bào),2014,1(1):1?12.
[5]?蘇金樹,曹丹,王小峰,等.屬性基加密機(jī)制[J].軟件學(xué)報(bào),2011,22(6):1299?1315.
[6]?劉雪艷.基于屬性加密的數(shù)據(jù)訪問控制方法研究[D].蘭州:蘭州理工大學(xué),2016.
[7]?馬瀟瀟,于剛.可公開定責(zé)的密文策略屬性基加密方案[J].計(jì)算機(jī)科學(xué),2017,44(5):160?165.
[8]?姚文斌,韓司,李小勇.云存儲(chǔ)環(huán)境下的密文安全共享機(jī)制[J].通信學(xué)報(bào),2015(10):1211?1216.
[9]?張桂榕.云存儲(chǔ)數(shù)據(jù)安全訪問與共享機(jī)制研究[D].北京:北京交通大學(xué),2015.
[10]?王意潔,孫偉東,周松,等.云計(jì)算環(huán)境下的分布存儲(chǔ)關(guān)鍵技術(shù)[J].軟件學(xué)報(bào),2012,23(4):2021?2029.
[11]?張薇,馬建峰. LPCA——分布式存儲(chǔ)中的數(shù)據(jù)分離算法[J].系統(tǒng)工程與電子技術(shù), 2007(3):453?458.
[12]?徐小龍,周靜嵐,楊庚. 一種基于數(shù)據(jù)分割與分級(jí)的云存儲(chǔ)數(shù)據(jù)隱私保護(hù)機(jī)制[J]. 計(jì)算機(jī)科學(xué), 2013 (2):98?102.
[13]?王保兵. 電子數(shù)據(jù)分離存儲(chǔ)與安全恢復(fù)系統(tǒng)的研究及實(shí)現(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é)報(bào), 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)云存儲(chǔ)訪問控制方案[J]. 通信學(xué)報(bào), 2013(S1): 276?284.
[19]?宋開波,羅軍,孫金濤.基于CP?ABE算法的云存儲(chǔ)數(shù)據(jù)保護(hù)機(jī)制[J]. 華中科技大學(xué)學(xué)報(bào):自然科學(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.