康 佳,李 育,黃紫涵,蔣夢埡
(南京工程學院,江蘇 南京 211100)
隨著信息技術的快速發展,越來越多的信息被廣泛收集和傳播,使得網絡中的信息數量以指數形式增長。網絡信息技術使得世界范圍的信息交流日益方便快捷,人們在享受這種便利的同時,也越來越關注網絡信息安全方面的問題。近年來,云存儲服務商多次出現數據泄露問題,致使大量用戶隱私信息泄露。因此,對數據進行加密處理是當前信息化背景下極為重要的研究課題。
自第三次科技革命以來,電子計算機領域高速發展,在20 世紀70 年代中后期更是進入一個嶄新的階段。隨著物聯網、云計算等新型計算環境的出現,傳統的訪問控制模型已經難以繼續使用。研究者們提出了一種較為理想的基于屬性的訪問控制(Attribute-Based Access Control, ABAC),ABAC是根據主體的屬性、客體的屬性、環境條件以及與這些屬性和條件相關的一組策略來判斷主體是否有權限對客體進行訪問的一套控制系統。但隨著云計算和物聯網等新型計算環境產生的敏感隱私信息日益增多,單一的ABAC 訪問模型不再適應于新環境。
2005 年,Sahai 等人[1]提出了基于屬性加密(Attribute-Based Encryption, ABE)的概念,將訪問控制機制同保護機制相結合,實現了細粒度的訪問控制,在一定程度上保護了信息數據。2006 年,在Sahai 等人的研究基礎上,Goyal 等人[2]又將ABE 劃分為2 類,即密鑰策略的屬性加密(Key-Policy Attribute Based Encryption, KP-ABE)和密文策略的屬性加密(Ciphertext-Policy Attribute Based Encryption, CPABE)方案,并在提出的第一個KP-ABE 模型中首次引入了訪問樹結構,允許對屬性進行單調的“與”“或”訪問控制操作,實現了訪問策略的可視化。2007年,Bethencourt 等人[3]構造出了第一個CP-ABE 方案,成功將解密規則蘊含于加密算法,適用于云端解密方不固定的情況。該方案中依舊是采用有界的訪問樹結構,可以實現對屬性的“與”“或”操作,缺點在于該方案的安全性證明僅僅基于一般群模型,實際可用性不強[4]。
2010 年,Lewko 等人[5]相繼提出了合數階雙線性群的CP-ABE 方案和素數階雙線群的CP-ABE 方案,并給出相應的自適應安全性證明,這些方案都可以保證數據在云端的安全性的前提下實現細粒度的訪問控制,但由于都涉及到大量線性配對運算,計算開銷仍然較大。在此之后,有研究者從算法本身角度降低加解密的計算開銷,提出了基于橢圓曲線的CP-ABE 方案,使用橢圓曲線上相對輕量級的標量乘法替代復雜的雙線性配對運算,到達了效率與安全性兼得的效果[6]。2012 年,馬丹丹等人[7]提出了基于多授權機構的CP-ABE 機制,在訪問樹結構中植入隨機化參數,這一改進有效地抵抗了合謀攻擊。2018 年,鄧宇喬等人[8]基于ABE 提出了一種新的加密方式即流程加密(Process Based Encryption, PBE)。到目前為止,仍有大量的研究者在原有方案的基礎上,對屬性加密進行拓展延伸,進行更加深入的研究。
本文從現代密碼的密碼體系與基礎知識出發,主要介紹基于密文策略的屬性加密并測試了3 種訪問控制方式,通過對其時間開銷的比較,選擇一種最適用的訪問控制方法,并提出一種新的屬性加密方案。該方案采用了混合加密體制,在雙重密碼保障的安全性前提下,又降低了加解密的時間開銷,即提供了細粒度、高安全的訪問控制。
首先介紹現代密碼體系的基礎知識,對于群與階,設G是一個非空集合,“*”是G上的一個代數運算,該運算為乘法,對所有的該集合中的任意兩個元素ɑ、b有ɑ*b∈G。除此之外,如果滿足以下3 個條件:(1)對所有的ɑ,b,c∈G有(ɑ*b)*c=ɑ*(b*c);(2)G中存在元素e,使得對于每一個G中的元素ɑ都有e*ɑ=ɑ*e;(3)對G中的每個元素ɑ,存在另一個元素b使得ɑ*b=b*ɑ=e,則稱G關于運算“*”構成一個群,記為(G,*)。其中,稱e為單位元,一個群的單位元是唯一的;稱b為元素ɑ的逆元,對各個元素來說,也是唯一的。群的階即為群內的元素個數,也稱為群的基數。群中元素的階:ɑ為群G中的一個元素,規定ɑ0=e為單位元,使ɑn=e的最小正整數n叫做元素ɑ的階,記為|ɑ|,如果這樣的n不存在,則ɑ的階為無限或為0。循環群中所有元素都是由一個元素生成,也就是所有的元素都形如gn=g·g…g(n個g),n為任意整數,這個生成所有元素的元素g稱為生成元。
雙線性配對(Bilinear Pairing)也叫雙線性映射,設G0和G1為素數階p的兩個乘法循環群[9]。設g為G0的生成元,e為雙線性映射e:G0×G0→G1。
雙線性映射e具有以下屬性:
(1)雙線性:對于所有u,v∈G0和ɑ,b∈zp有e(uɑ,vb)=e(u,v)ɑb。
(2)非簡并性:e(g,g)≠1。
(3)可計算性:對于所有的u,v∈G0都存在對應的多項式時間算法,可以計算出e(u,v)。
密碼學中使用的橢圓曲線并非標準數學意義上的橢圓曲線,數學意義上橢圓周長的計算可以轉化為積分,兩邊平方即可得到橢圓曲線方程,曲線故而得名橢圓曲線。一條橢圓曲線是在射影平面上滿足威爾斯特拉斯方程(Weierstrass)所有點的集合,射影Weierstrass 方程為:
式中:ɑi∈Fq,Fq是q元有限域。
對普通平面上的點,令x=X/Z,y=Y/Z,Z≠0,得到如下方程:
同時約掉Z3可得:
簡化版的Weierstrass 方程即為:
式中,Δ≠0,保證了曲線的光滑性,0∞是曲線唯一的無窮遠點。
在最小屬性集合策略中,給定兩個參數x、y,用(x,y)的形式表示,x代表所有屬性的個數,y代表解密消息時最少需要滿足的屬性個數。若給定的屬性元素集合為{信息與通信工程學院,藝術與設計學院,能源與動力工程學院,材料科學與工程學院,材料科學與工程專業,信息工程專業,大三},設定條件為(7,3),則表示在7 個屬性中,用戶至少要滿足3 個,才可以達到訪問消息的權限。張同學是信息與通信工程學院中一名信息工程專業的大三學生,他的屬性集合滿足最小屬性集合的要求,可以訪問成功;李同學是材料科學與工程學院材料科學與工程專業的一名大二學生,他只滿足“材料科學與工程學院”和“材料科學與工程專業”這兩個屬性,不滿足最小3 個的屬性個數要求,因此他無法訪問成功。
在布爾公式訪問策略下,采用布爾公式來實現,通過布爾表達式的計算結果(最簡單的布爾表達式是等式(equality),這種布爾表達式用來測試一個值是否與另一個值相同)來判斷用戶是否具有解密消息的資格,計算結果返回值為true 時,表示可以訪問消息;返回值為false 時,則不能訪問。
假設訪問某個消息的策略為{(信息與通信工程學院OR材料科學與工程學院)AND(信息工程專業OR 材料科學與工程專業)AND(學生OR 老師)},訪問樹如圖1 所示。

圖1 給定布爾訪問策略下的訪問樹
張同學是信息與通信工程學院中信息工程專業的一名學生,他具有此消息的訪問資格;李同學是材料科學與工程學院中高分子材料與工程專業的一名學生,但他的屬性集并沒有完全滿足訪問條件,不符合訪問策略,因此訪問不成功。
與前兩種方案通過判斷一個用戶的屬性是否滿足策略的表達式不同,門限樹訪問策略是對前兩種方案的進一步改進和拓展,采用了帶門限值的訪問策略。門限樹方案本質是一種多門限的集合,是方案一的一種拓展;同時,把方案二中的AND 和OR 門限換為(t,n)門限,就構成了本方案門限樹的模型。給定的屬性集合元素為{ɑ,b,c,d,e,f,g,h,i,j},訪問策略為(((ɑ,b,c, 2), (d,e,f, 2), 2), (g,h,i,j, 1), 2),用戶具有的屬性集合為{ɑ,b,d,e,g},代入到訪問樹中,得到的結果為true,證明該用戶滿足訪問消息的要求,如圖2 所示。

圖2 給定策略下的門限樹訪問樹
通過對上述3 種訪問策略進行時間測試,可發現最小屬性集合策略雖然是最容易實現的策略,但其在時間開銷上并不理想,波動不穩定。對于布爾公式訪問策略,從測試結果來看,其波動起伏較大,時間開銷不穩定。但是門限樹訪問策略不同,從圖3 中的測試結果可以看出,它的波動起伏小,比較穩定,且時間開銷相對來說也比較小,所以是3 種策略中最適用的。門限樹訪問策略明顯優于另外2 種策略,相比之下時間開銷比較小且穩定。

圖3 三種不同訪問策略下的時間開銷
雙向加密算法通常分為對稱性加密算法和非對稱性加密算法,在對稱加密算法中常用的算法有:DES 和AES。相較于DES 算法而言,AES 算法具有更高的速度和資源使用效率,安全級別也有所提高,被稱為下一代加密標準。AES 使用分組加密法,將明文一組組分開,每組長度保持相等,每次只對一組數據加密,直到整個明文都被加密,如此使得密文強度更高。AES 加密的基本單位是字節,按字節加密,每個分組可以有16 個字節、24 個字節和32 個字節,所以密鑰的長度有128 位、192 位和256 位3 種形式。這導致加密的輪速會隨密鑰長度變化而變化,一般來說,密鑰越長,運行的速度就越慢。AES 算法的主要優點有速度快、算法公開、計算量小、加密速度快、加密效率高等,由于對稱加密和解密的密鑰相同,就需要收發雙方協商好密鑰并且都要保存好密鑰;另外,每對用戶每次使用對稱加密算法時,都需要使用唯一的密鑰,這導致收發雙方密鑰數量過大、數據過多,進而造成效率降低且管理困難,給用戶帶來一定的負擔。
密文策略的屬性加密方案(CP-ABE)的基本算法如下:
(1)Setup(ζ)→(PK, MSK):只接受隱式的安全參數ζ作為輸入,輸出公開參數PK(即公鑰)和一個主密鑰MSK。
(2)Encrypt(PK, M, A)→CT:輸入消息M、訪問結構A、公開參數PK,產生密文CT。
(3)Key Generation(MSK, S)→:SK 輸入描述密鑰的屬性集合S、主密鑰MSK、輸出私鑰SK,其中SK 由屬性來確定。
(4)Decrypt(PK, CT, STK)→M:輸入基于訪問結構A加密的密文CT,對應屬性組S 的解密密鑰SK,公開參數PK。若S 可以滿足A,則對CT 進行解密并返回對應的消息M[10]。
CP-ABE 根據屬性加密消息,只有符合屬性要求的用戶才能解密密文,保證了數據的安全性。此外,用戶密鑰與隨機數和隨機多項式有關,不同用戶的密鑰無法聯合,有效防止了用戶合謀攻擊。其主要缺點是時間開銷大、算法復雜性較高、加密效率較低。
綜合上述兩種加密算法的分析,兩種算法在不同的環境下都有一定的局限性,要想保證數據加解密的高效性且兼顧密鑰和數據的安全性,可以采用混合體制的加密,此加密體制既結合了對稱加密體制的加解密高效性,又結合了基于密文的屬性加密的數據管理安全性。即對數據擁有者所提供的數據采用AES 對稱加密算法來實現,對于對稱加密產生的加密密鑰再采用CP-ABE 加密。混合加密算法流程如圖4所示。

圖4 混合加密算法的加密過程
按圖4 流程計算密文組件時,隨機選取GT 群上元素t,得到密文組件,公式為:
再將t元素由Hash 函數H(t)導出為對稱密鑰,將獲得的明文和對稱密鑰進行AES 加密,得到對稱密文并保存。然后對對稱密鑰進行公鑰加密,隨機生成多項式,將多項式常數項設置為根節點需要共享的秘密值,記作s。接著沿訪問樹進行拆分,使得葉子結點屬性i對應的秘密分片為λi。若當前結點不是葉子結點,則生成一個隨機多項式,多項式的常數項為當前節點的秘密值(這個值將被用于分享),多項式的次數由節點的門限值決定;若當前節點是葉子節點,則不需要繼續向下拆分。最后計算每個子節點的拉格朗日多項式值(即對應的秘密分片),并將公共參數寫入密文。
相對應地,恢復秘密的過程中,從根節點開始進行遞歸運算,若訪問者擁有的屬性集合和密文訪問樹中的葉子節點屬性集合,有重合屬性i時,則將對應的密文組件和密鑰組件配對結果作為秘密分片。秘密分片的計算公式如下:
再對葉子節點秘密分片進行恢復,對非葉子節點進行Lagrange 插值計算;遞歸完成之后,最終根節點的秘密值可以用e(g,g)βtS的形式恢復,從而可恢復GT 群上隨機生成元素t進行Hash 運算,導出對稱密鑰,與獲取的對稱密文進行AES 解密,即可獲得明文。
與最小屬性集合策略和布爾訪問策略相比,門限樹訪問策略更適應于當今時代的實際應用,本研究組將最優的訪問策略—門限樹策略作為基于密文的屬性加密的訪問策略,并將這種訪問策略下的CP-ABE 算法與AES 對稱加密算法相結合,得出一種新的混合加密算法,分析了此混合加密算法的加密和解密過程,證明了混合加密算法的可行性與安全性。