顧 磊,李永忠
(江蘇科技大學(xué) 計算機學(xué)院,江蘇 鎮(zhèn)江 212003)
云計算技術(shù)的快速發(fā)展為數(shù)據(jù)存儲帶來了極大便利,使得越來越多的數(shù)據(jù)被存儲于云端,而隨之帶來的則是數(shù)據(jù)安全問題[1]。訪問控制是保護數(shù)據(jù)安全的關(guān)鍵技術(shù)之一[2],傳統(tǒng)的訪問控制技術(shù)如DAC[3]、MAC[4]、RBAC[5]等,均以服務(wù)器絕對可信為前提,數(shù)據(jù)的安全保障依賴于系統(tǒng)的安全性。但在復(fù)雜的云環(huán)境中,云服務(wù)器并非完全可信[6]?;趯傩约用艿脑L問控制技術(shù)由于兼具數(shù)據(jù)加密和訪問控制兩大特點[7],被認(rèn)為最適用于云計算環(huán)境中的數(shù)據(jù)安全訪問控制技術(shù)。但屬性加密技術(shù)效率較低[8],嚴(yán)重限制其在實際中的應(yīng)用。基于此,本文提出一種基于AES和改進CP-ABE 混合加密算法的訪問控制技術(shù),即使用AES 加密算法對數(shù)據(jù)進行加密,并使用CP-ABE 算法對AES 算法所使用的加密密鑰進行加密存儲。同時,在CPABE 算法解密過程中,對訪問結(jié)構(gòu)樹先行遍歷并進行剪枝處理,減少非必要節(jié)點計算。通過實驗證明,該方案能夠在保證數(shù)據(jù)安全性的同時,降低數(shù)據(jù)加解密的時間開銷。
AES 算法是將數(shù)據(jù)信息進行分組加密的算法,它可以將明文分成128 位固定長度的N 組,然后對小組內(nèi)的信息進行序列加密[9]。AES 算法的參數(shù)主要有3 個:Key、Data、Mode。其中,Key 為算法加密所使用的密鑰;Data 為輸入數(shù)據(jù),可以是明文數(shù)據(jù)也可以是密文數(shù)據(jù),每次輸入的數(shù)據(jù)長度為128 位;Mode 為算法工作模式,即加密與解密。
CP-ABE 算法步驟[10]主要包含以下4 個部分:
(1)初始化階段Setup():輸入?yún)?shù),輸出主密鑰MK=(β,gα),公鑰PK=(G0,g,gβ,Z)。其中,α,β∈ZpZ=e(g,g)α。
(2)用戶私鑰生成KeyGen()。輸入用戶屬性集合S和主密鑰MK,輸出私鑰SK。
其中,rj∈Zp,j∈S。
(3)加密Encrypt()。輸入明文M,訪問結(jié)構(gòu)樹T以及PK,輸出密文CT。
加密算法根據(jù)訪問結(jié)構(gòu)T對明文進行加密,對訪問結(jié)構(gòu)中的每一個節(jié)點x選取多項式qx(系數(shù)為門限值減1),從根節(jié)點R開始隨機選取s∈Zp,qx(0)=s,隨機選取dR個點定義多項式qx,對于其他節(jié)點x,qx(0)=qparrent(x)(index(x)),然后隨機選取dx個點定義qx,令Y為T中葉子節(jié)點集合,對M進行加密得到:
(4)解密Decrypt()。輸入密文CT、SK,利用遞歸算法得到。
當(dāng)x為葉子節(jié)點時,令i=att(x),如果i∈S,則有:
i?S,則輸出⊥。
當(dāng)x為非葉子節(jié)點時,應(yīng)采用遞歸算法進行解密。
最后對根節(jié)點R計算如下:
對密文進行解密得到:
本文對現(xiàn)有數(shù)據(jù)保護方案進行研究,提出一種基于AES 和改進CP-ABE 加密的混合加密算法。該算法主要分為兩步:第一步是利用AES 加密算法對數(shù)據(jù)進行加密,由于其加解密效率高的優(yōu)點,可以對大量數(shù)據(jù)進行高效地加解密處理;第二步是利用改進的CP-ABE 算法對AES 對稱密鑰進行加密,保障了AES 密鑰共享的安全性。
在CP-ABE 算法中,用戶身份用一個屬性集表示,每一個屬性代表用戶的一個權(quán)限[11]。數(shù)據(jù)擁有者通過設(shè)定訪問控制策略對數(shù)據(jù)進行加密,只有當(dāng)訪問者屬性集合滿足訪問控制策略時才能成功解密。與傳統(tǒng)加解密技術(shù)對比,CP-ABE 算法解密過程是在匹配用戶的屬性集合與訪問控制策略,具有隱私性及抗串聯(lián)合性等優(yōu)點[12]。訪問控制策略通常由訪問樹結(jié)構(gòu)表示[13]。
CP-ABE 算法解密過程中,用戶私鑰與訪問結(jié)構(gòu)樹的葉子節(jié)點進行屬性匹配時需要進行兩次雙線性配對運算,從起始節(jié)點到根節(jié)點的每個內(nèi)部節(jié)點都要進行一次冪運算且在最后根節(jié)點處需進行一次額外的雙線性對運算[14]。而在每個非葉子節(jié)點處的葉子節(jié)點只有其門限值對應(yīng)個數(shù)的葉子節(jié)點計算是有效的。文獻(xiàn)[15]提供了一種解密優(yōu)化策略,其原理是在對訪問樹的節(jié)點進行解密前可根據(jù)屬性和葉子節(jié)點的子樹篩選出滿足訪問策略樹的子樹,避免其他非必要節(jié)點計算。定義函數(shù)SelectMin(T,SK),對配對密鑰中每個屬性的葉子節(jié)點到根節(jié)點的一次遞歸遍歷中刪除并只保留可以滿足訪問策略樹T的最小策略樹T’,再對最小策略樹的節(jié)點進行遞歸解密。
令L?T',表示最小策略樹T’中葉子節(jié)點集合,對每一個葉子節(jié)點l∈L,l到根節(jié)點R的路徑為:
節(jié)點x的兄弟節(jié)點表示為:
對于每一個l∈L,令i=index(x),S={index(x)|y∈brs(x)},利用拉格朗日差值計算:
最后計算:
云存儲環(huán)境下數(shù)據(jù)加密與訪問控制功能模塊如圖1 所示,包括客戶端模塊、數(shù)據(jù)處理模塊及存儲模塊。數(shù)據(jù)處理模塊包括密鑰分配中心、加密子模塊、解密子模塊及授權(quán)中心,存儲模塊包括數(shù)據(jù)密文存儲模塊及系統(tǒng)數(shù)據(jù)庫。各模塊功能如下:①密鑰分配中心[16]。為用戶上傳的數(shù)據(jù)加密分配密鑰,由于云環(huán)境下數(shù)據(jù)信息量非常大,設(shè)立密鑰分配中心可有效進行密鑰分配管理;②加密子模塊。加密模塊功能主要有兩個,即為用戶數(shù)據(jù)進行對稱加密并從系統(tǒng)數(shù)據(jù)庫中獲取系統(tǒng)公鑰對使用的對稱密鑰進行加密;③解密子模塊。解密模塊功能同樣有兩個,即使用用戶私鑰解密密鑰密文,用得到的密鑰解密數(shù)據(jù)密文;④授權(quán)中心。在系統(tǒng)運行時生成系統(tǒng)主密鑰與公鑰、根據(jù)用戶屬性為用戶生成私鑰并存儲到系統(tǒng)數(shù)據(jù)庫中。
數(shù)據(jù)加解密及訪問控制流程:①用戶數(shù)據(jù)上傳。數(shù)據(jù)擁有者請求上傳數(shù)據(jù),為數(shù)據(jù)設(shè)定相應(yīng)的訪問結(jié)構(gòu)T,密鑰分配中心生成用戶加密所需的加密密鑰KA,加密模塊對相應(yīng)的數(shù)據(jù)進行加密操作得到相應(yīng)的數(shù)據(jù)密文以及密鑰密文,數(shù)據(jù)密文存儲到云存儲中心而密鑰密文存儲到系統(tǒng)數(shù)據(jù)庫中;②用戶訪問數(shù)據(jù)。由授權(quán)中心對用戶的訪問請求進行處理,首先從系統(tǒng)數(shù)據(jù)庫中獲取用戶私鑰,若不具有則根據(jù)數(shù)據(jù)庫中用戶所具有的屬性為用戶生成私鑰,并將用戶私鑰發(fā)送至解密模塊,解密模塊獲取對應(yīng)的密鑰密文并根據(jù)用戶私鑰進行匹配解密,若用戶私鑰屬性滿足解密密文則解密密文并返回數(shù)據(jù),若不滿足解密條件則返回解密失敗。
對使用的算法進行性能仿真分析,實驗環(huán)境為:Win?dows10 64 位,處理器AMD A6 4400M(2.7GHz),內(nèi)存6Gb,仿真軟件為MyEclipse2017 CI、MySQL,云存儲為阿里公有云OSS,依賴外部JPBC2.0 庫實現(xiàn)。
Fig.1 Data encryption and decryption system in cloud environment圖1 云環(huán)境下數(shù)據(jù)加解密系統(tǒng)
以單個文件為例,圖2 為云存儲中的文件密文,圖3、圖4 為隨機生成的對稱密鑰key 加密前的表達(dá)和從數(shù)據(jù)庫中導(dǎo)出的密鑰密文,由圖可知加密成功。
Fig.2 File ciphertext in cloud storage圖2 云存儲中文件密文
Fig.3 Key plaintext圖3 密鑰明文
云存儲環(huán)境下的數(shù)據(jù)存儲安全極為重要。AES 算法的缺點在于其密鑰共享過程中安全性較差[17],而CP-ABE 算法為非對稱加密,在安全性方面優(yōu)勢明顯。本文從如下方面分析混合加密算法的安全性:
Fig.4 Key ciphertext圖4 密鑰密文
(1)權(quán)限管理。數(shù)據(jù)加密密鑰由數(shù)據(jù)擁有者產(chǎn)生及管理,并對其他用戶訪問進行授權(quán)。
(2)端到端的加密[18]。用戶在客戶端對數(shù)據(jù)進行加/解密操作,提高了數(shù)據(jù)在傳輸信道中的機密性。
(3)密鑰管理[19]。采用混合加密算法確保數(shù)據(jù)加密密鑰傳輸和存儲安全性?;旌纤惴ɡ^承了CP-ABE 算法的安全性,即雖然采用了AES 與CP-ABE 相結(jié)合的方法,但并沒有對安全性造成太大影響。幾種加密方法的安全性對比如表1 所示。
Table 1 Security comparison of several encryption algorithms表1 幾種加密算法安全性對比
針對CP-ABE 解密算法優(yōu)化性能進行分析測試。設(shè)置圖5 所示的訪問策略樹對算法解密效率進行測試,圖6 為不同葉子節(jié)點數(shù)下典型算法解密耗時與改進算法解密耗時??梢钥闯?,改進后的算法在解密耗時上有所減少。
Fig.5 Access policy tree圖5 訪問策略樹
對混合加密算法性能進行實驗仿真,設(shè)置屬性個數(shù)為10,AES 算法加密使用128 位密鑰進行性能測試,其加密解密時間如圖7 和圖8 所示。
通過實驗對比可發(fā)現(xiàn),混合加密算法的加解密性能與單純使用AES 算法加密的性能十分接近,而CP-ABE 算法的加解密時間開銷很大,而且隨著用戶屬性增加,訪問結(jié)構(gòu)也越復(fù)雜,CP-ABE 算法的性能遠(yuǎn)遠(yuǎn)落后于其他兩種加密方式。在云環(huán)境中使用混合加密方式進行加解密,既能保證數(shù)據(jù)安全性,同時還能實現(xiàn)用戶對數(shù)據(jù)的訪問控制。
Fig.6 Comparison of algorithm decryption time圖6 算法解密時間對比
Fig.7 Comparison of algorithm encryption time圖7 加密時間對比
Fig.8 Comparison of algorithm decryption time圖8 解密時間對比
通過對云環(huán)境下數(shù)據(jù)安全問題研究,采用改進的CPABE 與AES 混合加密算法對云環(huán)境下的數(shù)據(jù)進行加解密操作,解決了云環(huán)境下的數(shù)據(jù)安全訪問控制問題,很好地保護了云環(huán)境中用戶數(shù)據(jù)的機密性,同時提高了數(shù)據(jù)加解密效率。但CP-ABE 算法在應(yīng)用中還存在一些如密鑰撤銷[20]等問題,針對這些問題將作進一步研究,使其更好地運用于云計算環(huán)境中。