顧 磊,李永忠
(江蘇科技大學 計算機學院,江蘇 鎮江 212003)
云計算技術的快速發展為數據存儲帶來了極大便利,使得越來越多的數據被存儲于云端,而隨之帶來的則是數據安全問題[1]。訪問控制是保護數據安全的關鍵技術之一[2],傳統的訪問控制技術如DAC[3]、MAC[4]、RBAC[5]等,均以服務器絕對可信為前提,數據的安全保障依賴于系統的安全性。但在復雜的云環境中,云服務器并非完全可信[6]。基于屬性加密的訪問控制技術由于兼具數據加密和訪問控制兩大特點[7],被認為最適用于云計算環境中的數據安全訪問控制技術。但屬性加密技術效率較低[8],嚴重限制其在實際中的應用。基于此,本文提出一種基于AES和改進CP-ABE 混合加密算法的訪問控制技術,即使用AES 加密算法對數據進行加密,并使用CP-ABE 算法對AES 算法所使用的加密密鑰進行加密存儲。同時,在CPABE 算法解密過程中,對訪問結構樹先行遍歷并進行剪枝處理,減少非必要節點計算。通過實驗證明,該方案能夠在保證數據安全性的同時,降低數據加解密的時間開銷。
AES 算法是將數據信息進行分組加密的算法,它可以將明文分成128 位固定長度的N 組,然后對小組內的信息進行序列加密[9]。AES 算法的參數主要有3 個:Key、Data、Mode。其中,Key 為算法加密所使用的密鑰;Data 為輸入數據,可以是明文數據也可以是密文數據,每次輸入的數據長度為128 位;Mode 為算法工作模式,即加密與解密。
CP-ABE 算法步驟[10]主要包含以下4 個部分:
(1)初始化階段Setup():輸入參數,輸出主密鑰MK=(β,gα),公鑰PK=(G0,g,gβ,Z)。其中,α,β∈ZpZ=e(g,g)α。
(2)用戶私鑰生成KeyGen()。輸入用戶屬性集合S和主密鑰MK,輸出私鑰SK。

其中,rj∈Zp,j∈S。
(3)加密Encrypt()。輸入明文M,訪問結構樹T以及PK,輸出密文CT。
加密算法根據訪問結構T對明文進行加密,對訪問結構中的每一個節點x選取多項式qx(系數為門限值減1),從根節點R開始隨機選取s∈Zp,qx(0)=s,隨機選取dR個點定義多項式qx,對于其他節點x,qx(0)=qparrent(x)(index(x)),然后隨機選取dx個點定義qx,令Y為T中葉子節點集合,對M進行加密得到:

(4)解密Decrypt()。輸入密文CT、SK,利用遞歸算法得到。
當x為葉子節點時,令i=att(x),如果i∈S,則有:

i?S,則輸出⊥。
當x為非葉子節點時,應采用遞歸算法進行解密。

最后對根節點R計算如下:

對密文進行解密得到:

本文對現有數據保護方案進行研究,提出一種基于AES 和改進CP-ABE 加密的混合加密算法。該算法主要分為兩步:第一步是利用AES 加密算法對數據進行加密,由于其加解密效率高的優點,可以對大量數據進行高效地加解密處理;第二步是利用改進的CP-ABE 算法對AES 對稱密鑰進行加密,保障了AES 密鑰共享的安全性。
在CP-ABE 算法中,用戶身份用一個屬性集表示,每一個屬性代表用戶的一個權限[11]。數據擁有者通過設定訪問控制策略對數據進行加密,只有當訪問者屬性集合滿足訪問控制策略時才能成功解密。與傳統加解密技術對比,CP-ABE 算法解密過程是在匹配用戶的屬性集合與訪問控制策略,具有隱私性及抗串聯合性等優點[12]。訪問控制策略通常由訪問樹結構表示[13]。
CP-ABE 算法解密過程中,用戶私鑰與訪問結構樹的葉子節點進行屬性匹配時需要進行兩次雙線性配對運算,從起始節點到根節點的每個內部節點都要進行一次冪運算且在最后根節點處需進行一次額外的雙線性對運算[14]。而在每個非葉子節點處的葉子節點只有其門限值對應個數的葉子節點計算是有效的。文獻[15]提供了一種解密優化策略,其原理是在對訪問樹的節點進行解密前可根據屬性和葉子節點的子樹篩選出滿足訪問策略樹的子樹,避免其他非必要節點計算。定義函數SelectMin(T,SK),對配對密鑰中每個屬性的葉子節點到根節點的一次遞歸遍歷中刪除并只保留可以滿足訪問策略樹T的最小策略樹T’,再對最小策略樹的節點進行遞歸解密。
令L?T',表示最小策略樹T’中葉子節點集合,對每一個葉子節點l∈L,l到根節點R的路徑為:

節點x的兄弟節點表示為:

對于每一個l∈L,令i=index(x),S={index(x)|y∈brs(x)},利用拉格朗日差值計算:

最后計算:

云存儲環境下數據加密與訪問控制功能模塊如圖1 所示,包括客戶端模塊、數據處理模塊及存儲模塊。數據處理模塊包括密鑰分配中心、加密子模塊、解密子模塊及授權中心,存儲模塊包括數據密文存儲模塊及系統數據庫。各模塊功能如下:①密鑰分配中心[16]。為用戶上傳的數據加密分配密鑰,由于云環境下數據信息量非常大,設立密鑰分配中心可有效進行密鑰分配管理;②加密子模塊。加密模塊功能主要有兩個,即為用戶數據進行對稱加密并從系統數據庫中獲取系統公鑰對使用的對稱密鑰進行加密;③解密子模塊。解密模塊功能同樣有兩個,即使用用戶私鑰解密密鑰密文,用得到的密鑰解密數據密文;④授權中心。在系統運行時生成系統主密鑰與公鑰、根據用戶屬性為用戶生成私鑰并存儲到系統數據庫中。
數據加解密及訪問控制流程:①用戶數據上傳。數據擁有者請求上傳數據,為數據設定相應的訪問結構T,密鑰分配中心生成用戶加密所需的加密密鑰KA,加密模塊對相應的數據進行加密操作得到相應的數據密文以及密鑰密文,數據密文存儲到云存儲中心而密鑰密文存儲到系統數據庫中;②用戶訪問數據。由授權中心對用戶的訪問請求進行處理,首先從系統數據庫中獲取用戶私鑰,若不具有則根據數據庫中用戶所具有的屬性為用戶生成私鑰,并將用戶私鑰發送至解密模塊,解密模塊獲取對應的密鑰密文并根據用戶私鑰進行匹配解密,若用戶私鑰屬性滿足解密密文則解密密文并返回數據,若不滿足解密條件則返回解密失敗。
對使用的算法進行性能仿真分析,實驗環境為:Win?dows10 64 位,處理器AMD A6 4400M(2.7GHz),內存6Gb,仿真軟件為MyEclipse2017 CI、MySQL,云存儲為阿里公有云OSS,依賴外部JPBC2.0 庫實現。

Fig.1 Data encryption and decryption system in cloud environment圖1 云環境下數據加解密系統
以單個文件為例,圖2 為云存儲中的文件密文,圖3、圖4 為隨機生成的對稱密鑰key 加密前的表達和從數據庫中導出的密鑰密文,由圖可知加密成功。

Fig.2 File ciphertext in cloud storage圖2 云存儲中文件密文

Fig.3 Key plaintext圖3 密鑰明文
云存儲環境下的數據存儲安全極為重要。AES 算法的缺點在于其密鑰共享過程中安全性較差[17],而CP-ABE 算法為非對稱加密,在安全性方面優勢明顯。本文從如下方面分析混合加密算法的安全性:

Fig.4 Key ciphertext圖4 密鑰密文
(1)權限管理。數據加密密鑰由數據擁有者產生及管理,并對其他用戶訪問進行授權。
(2)端到端的加密[18]。用戶在客戶端對數據進行加/解密操作,提高了數據在傳輸信道中的機密性。
(3)密鑰管理[19]。采用混合加密算法確保數據加密密鑰傳輸和存儲安全性。混合算法繼承了CP-ABE 算法的安全性,即雖然采用了AES 與CP-ABE 相結合的方法,但并沒有對安全性造成太大影響。幾種加密方法的安全性對比如表1 所示。

Table 1 Security comparison of several encryption algorithms表1 幾種加密算法安全性對比
針對CP-ABE 解密算法優化性能進行分析測試。設置圖5 所示的訪問策略樹對算法解密效率進行測試,圖6 為不同葉子節點數下典型算法解密耗時與改進算法解密耗時。可以看出,改進后的算法在解密耗時上有所減少。

Fig.5 Access policy tree圖5 訪問策略樹
對混合加密算法性能進行實驗仿真,設置屬性個數為10,AES 算法加密使用128 位密鑰進行性能測試,其加密解密時間如圖7 和圖8 所示。
通過實驗對比可發現,混合加密算法的加解密性能與單純使用AES 算法加密的性能十分接近,而CP-ABE 算法的加解密時間開銷很大,而且隨著用戶屬性增加,訪問結構也越復雜,CP-ABE 算法的性能遠遠落后于其他兩種加密方式。在云環境中使用混合加密方式進行加解密,既能保證數據安全性,同時還能實現用戶對數據的訪問控制。

Fig.6 Comparison of algorithm decryption time圖6 算法解密時間對比

Fig.7 Comparison of algorithm encryption time圖7 加密時間對比

Fig.8 Comparison of algorithm decryption time圖8 解密時間對比
通過對云環境下數據安全問題研究,采用改進的CPABE 與AES 混合加密算法對云環境下的數據進行加解密操作,解決了云環境下的數據安全訪問控制問題,很好地保護了云環境中用戶數據的機密性,同時提高了數據加解密效率。但CP-ABE 算法在應用中還存在一些如密鑰撤銷[20]等問題,針對這些問題將作進一步研究,使其更好地運用于云計算環境中。