盧宏才
(甘肅工業(yè)職業(yè)技術(shù)學(xué)院,甘肅 天水741025)
隨著現(xiàn)代通信的快速發(fā)展,云計(jì)算技術(shù)(Cloud Computing)發(fā)展較為迅速,很多用戶已經(jīng)使用云計(jì)算,從概念上把云計(jì)算變成了實(shí)際的應(yīng)用,得到了極大的推廣。
云存儲(chǔ)是在云計(jì)算技術(shù)上的分支領(lǐng)域,是一個(gè)讓網(wǎng)絡(luò)中的存儲(chǔ)設(shè)備提供數(shù)據(jù)共享存儲(chǔ)和協(xié)同工作,并且提供業(yè)務(wù)訪問(wèn)的系統(tǒng)。云存儲(chǔ)在解決傳統(tǒng)技術(shù)性能瓶頸問(wèn)題的同時(shí),又為用戶節(jié)省了投資,降低了成本[1]。但是,云存儲(chǔ)快速發(fā)展的同時(shí),在實(shí)際應(yīng)用中還存在很多安全問(wèn)題[2],比如云存儲(chǔ)環(huán)境下的數(shù)據(jù)共享安全等問(wèn)題,阻礙了云服務(wù)的發(fā)展與推廣[3-4]。
為解決云存儲(chǔ)環(huán)境下的數(shù)據(jù)安全共享問(wèn)題,很多學(xué)者提出了相應(yīng)的密鑰管理方案:一是以解決密鑰托管問(wèn)題多授權(quán)機(jī)構(gòu)的層次型CP-ABE屬性密鑰管理方案[5],該方案將單個(gè)密鑰管理中心的信任和工作量分散到多個(gè)密鑰管理中心。但是,在多機(jī)構(gòu)CP-ABE方案中,每個(gè)授權(quán)機(jī)構(gòu)使用相同的主密鑰為用戶生成私鑰。當(dāng)聯(lián)合足夠多屬性后,用戶將能夠重構(gòu)主密鑰,從而訪問(wèn)非授權(quán)數(shù)據(jù)。二是基于CP-ABE算法的相應(yīng)的安全共享方案[6],以解決主密鑰重構(gòu)問(wèn)題,當(dāng)新増加授權(quán)機(jī)構(gòu)時(shí),需要重新進(jìn)行初始化計(jì)算及系統(tǒng)公鑰的生成,動(dòng)態(tài)開(kāi)銷隨用戶數(shù)量呈線性増長(zhǎng)。以上2種方案中均缺乏對(duì)用戶的身份認(rèn)證過(guò)程,無(wú)法抵抗來(lái)自非法用戶的偽裝攻擊。有學(xué)者提出了一種云存儲(chǔ)環(huán)境下的數(shù)據(jù)安全共享算法SAPDS[7],該算法結(jié)合屬性加密和門限算法進(jìn)行數(shù)據(jù)的機(jī)密性保護(hù),在不依賴可信第三方的條件下完成了共享密鑰的管理,但是其密鑰分發(fā)的通信開(kāi)銷較大[6-7]。
針對(duì)云存儲(chǔ)環(huán)境下的信任依賴問(wèn)題,本文提出了無(wú)可信中心的屬性密鑰分發(fā)算法,并使用仿真軟件對(duì)算法性能進(jìn)行了仿真。
設(shè)G1和G2是p階的循環(huán)群,p是素?cái)?shù)。如果有映射e:G1×G1→G2有以下性質(zhì):
① 雙線性(Bilinear):對(duì)任意a,b∈Z,任意的P,Q∈G1,e(aP,bQ)=e(P,Q)ab;
② 非退化性(Non-Degenerate):對(duì)于任意a,b∈G1,使e(a,b)≠1,其中1是G2的單位元;
③ 可計(jì)算性(Computable):對(duì)任意P,Q∈G1,都存在有效算法來(lái)計(jì)算e(P,Q)。
屬性組:P={P1,P2,...,Pn}為系統(tǒng)中的屬性集合,則每個(gè)用戶的屬性集合A是P的一個(gè)非空子集。
訪問(wèn)結(jié)構(gòu):訪問(wèn)結(jié)構(gòu)T是{P1,P2,...,Pn}全集的一個(gè)非空子集。T是屬性判斷條件,在T中的稱為授權(quán)集,不在T中的稱為非授權(quán)集。
訪問(wèn)樹(shù):訪問(wèn)樹(shù)用來(lái)描述訪問(wèn)結(jié)構(gòu),屬性由葉子節(jié)點(diǎn)來(lái)表示,每一個(gè)內(nèi)部節(jié)點(diǎn)都表示一個(gè)關(guān)系函數(shù)。關(guān)系函數(shù)是子節(jié)點(diǎn)和邏輯運(yùn)算符組成的門限。子節(jié)點(diǎn)從1~n編碼并且非葉子節(jié)點(diǎn)的門限值kx小于子節(jié)點(diǎn)的總數(shù)nx,即0 CP-ABE算法具體描述如下[8-9]: ① 系統(tǒng)初始化。生成主密鑰MK,生成系統(tǒng)公開(kāi)參數(shù)PK。 ②CT=Encrypt(PK,M,T)。該算法使用PK,訪問(wèn)T,對(duì)明文M加密,最后生成密文CT。 ③SK=KeyGen(MK,A)。該算法使用主密鑰MK和用戶屬性集合A,生成私鑰SK。 ④M=Decrypt(CT,SK)。該算法使用生成的私鑰SK,解密密文CT,得到明文M。 首先有云存儲(chǔ)服務(wù)商(CSC)和用戶之間通過(guò)密鑰屬性分發(fā)算法屬性分發(fā)和完成認(rèn)證[10-11],屬性公鑰的生成在密鑰產(chǎn)生過(guò)程中生成,屬性私鑰參數(shù)由密鑰授權(quán)中心(KAC)根據(jù)屬性生成[12]。 用戶得到屬性密鑰生成算法計(jì)算的屬性密鑰。屬性密鑰分發(fā)模型如圖1所示。 圖1 屬性密鑰分發(fā)模型 屬性分發(fā)算法由4個(gè)子算法構(gòu)成:初始化算法、用戶屬性切分算法、屬性還原算法和用戶屬性驗(yàn)證算法。初始化算法主要功能是由云存儲(chǔ)服務(wù)商(CSC)為注冊(cè)用戶分發(fā)一對(duì)公私密鑰對(duì){PK,SK},同時(shí)生成用戶的共同屬性[13];然后使用秘密共享算法將共同屬性分發(fā)成若干個(gè)屬性塊S,并生成屬性塊的驗(yàn)證參數(shù)v;將生成的屬性塊、驗(yàn)證參數(shù)分別用公鑰加密后在公共信道上分發(fā),共同屬性由用戶的屬性塊和其他交互屬性塊來(lái)還原。 1.4.1 初始化算法 在初始化算法中,相同屬性的用戶{U1,U2,...,Un}由CSC為其發(fā)一對(duì)公私密鑰{PKi,SKi},并創(chuàng)建一個(gè)二進(jìn)制屬性代碼att給分發(fā)屬性。 1.4.2 用戶屬性切分算法 給具有相同屬性的用戶分發(fā)att,CSC把a(bǔ)tt分成多個(gè)屬性塊s1,s2,...,sn。然后將si使用用戶Ui的公鑰加密后發(fā)給Ui。 ① 定義參數(shù)a0,a0=att。生成與a0相同長(zhǎng)度的參數(shù)a1,a2,...,an和一個(gè)n-1維的多項(xiàng)式F(x),F(xiàn)(x)=a0+a1x+a2x2+...+an-1xn-1。 ② 計(jì)算屬性塊s1,s2,...,sn:s1=F(1),s2=F(2),...sn=F(n)。 ③ 計(jì)算驗(yàn)證函數(shù)V和驗(yàn)證參數(shù)v:V=s1×s2×...×sn,v=Vmoda0。 ④ 加密屬性塊si:Cipher(si)=ENC(si,PKi,RSA)。 ⑤ 發(fā)送加密后的屬性塊Cipher(si)、驗(yàn)證函數(shù)V和驗(yàn)證參數(shù)v給相應(yīng)的用戶Ui。 1.4.3 屬性還原算法 用戶Ui接收到加密屬性塊Cipher(si)后,使用私鑰SKi通過(guò)解密而獲取自己的屬性si。用戶Ui把自己收到的屬性si使用公鑰PK(i+1)MODn加密后發(fā)給U(i+1)MODn。經(jīng)過(guò)n-1次操作后,用戶擁有n個(gè)屬性塊,用拉格朗日插值還原屬性。 ① 用戶先獲取Cipher(si),v,V,使用私鑰SKi和公式Cipher(si)=DEC(si,SKi,RSA)=si解密得到屬性si。 ② 使用公鑰PK(i+1)MODn和公式Cipher(si)=ENC(si,PKi,RSA)加密屬性塊si,將加密后數(shù)據(jù)發(fā)給用戶U(i+1)MODn。 ③ 用戶U(i+1)MODn獲取Ui發(fā)送來(lái)的si,使用私鑰SK(i+1)MODn解密屬性si。讓j+1滿足j≤n,重復(fù)執(zhí)行步驟②和步驟③。 1.4.4 用戶屬性驗(yàn)證算法 用戶使用公式Vmodatti=vi來(lái)計(jì)算自己的驗(yàn)證參數(shù)副本vi。如果vi=v,則屬性正確,否則屬性分發(fā)過(guò)程失敗。通過(guò)該算法,相同屬性的合法注冊(cè)用戶能分發(fā)到正確的屬性,從而完成了身份認(rèn)證,對(duì)非法用戶的偽裝攻擊起到了防御作用。 屬性密鑰生成算法由2個(gè)子算法構(gòu)成:初始化算法和屬性參數(shù)生成算法。KGC生成公開(kāi)屬性密鑰,CSC為合法用戶分發(fā)屬性集合和屬性標(biāo)識(shí),用戶向KAC發(fā)出屬性密鑰申請(qǐng)。KAC接收到屬性和標(biāo)識(shí)后,計(jì)算生成參數(shù)后,分發(fā)給請(qǐng)求用戶。 1.5.1 初始化算法 算法中由KGC產(chǎn)生公共參數(shù)。首先隨機(jī)產(chǎn)生p階,元為g的雙線性群G和雙線性映射e:G×G→G1,隨后隨機(jī)選擇哈希函數(shù)H和β∈Zp,生成公鑰為PK=(G,g,gβ),保存主密鑰MK=β。用戶接收到CSC為它分發(fā)的屬性Si和標(biāo)識(shí)i。 1.5.2 屬性參數(shù)生成算法 用戶KAC發(fā)送屬性密鑰生成請(qǐng)求,通過(guò)KAC完成得到對(duì)應(yīng)屬性的參數(shù),具體過(guò)程如下: 用戶聯(lián)合接收到的來(lái)自各個(gè)屬性中的屬性參數(shù)計(jì)算得到自己的屬性私鑰,具體步驟如下: ② 同理可計(jì)算用戶的分屬性密鑰,用戶得到屬性私鑰。 屬性分發(fā)算法中使用了RSA加密屬性塊,RSA算法是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA是被研究的最廣泛的公鑰算法,從提出到現(xiàn)今的30多年里,經(jīng)歷了各種攻擊的考驗(yàn),逐漸為人們接受,截止2017年被普遍認(rèn)為是最優(yōu)秀的公鑰方案之一。根據(jù)對(duì)RSA分析,非授權(quán)用戶無(wú)法獲取用戶屬性,該算法保護(hù)了用戶屬性在分發(fā)過(guò)程中的機(jī)密性[14-15]。 假設(shè)一個(gè)惡意用戶P準(zhǔn)備對(duì)屬性分發(fā)算法發(fā)動(dòng)攻擊。P偽裝成合法用戶向Pi發(fā)送篡改后的Cipheri-1(si)。經(jīng)過(guò)算法計(jì)算以后,用戶Pi通過(guò)計(jì)算得到不正確的用戶屬性atti。那么Pi通過(guò)驗(yàn)證算法驗(yàn)證時(shí)發(fā)現(xiàn)attimodV≠v,Pi告知屬性分發(fā)過(guò)程失敗。所以該算法可以有效保護(hù)合法用戶屬性在分發(fā)過(guò)程中的完整性。 CSC在屬性密鑰分發(fā)中僅對(duì)用戶屬性分發(fā),不參與屬性密鑰的生成具體過(guò)程,無(wú)法獲取到用戶屬性密鑰,從而降低了CSC泄露用戶信息的風(fēng)險(xiǎn)。 通過(guò)以上分析無(wú)可信中心的屬性密鑰分發(fā)算法大大降低了屬性密鑰分發(fā)對(duì)KAC的信任依賴問(wèn)題,且有效地保護(hù)了密鑰分發(fā)過(guò)程安全性。 為模擬無(wú)可信中心的屬性密鑰分發(fā)算法,由一臺(tái)計(jì)算機(jī)模擬服務(wù)器模擬多個(gè)密鑰授權(quán)中心,完成屬性參數(shù)的生成與分發(fā)。另一臺(tái)計(jì)算機(jī)模擬共享用戶,接受多線程發(fā)送的屬性參數(shù),計(jì)算得到最終的屬性密鑰。實(shí)驗(yàn)通過(guò)對(duì)密鑰授權(quán)中心、用戶屬性數(shù)量調(diào)整,來(lái)完成不同參變量條件下屬性密鑰生成時(shí)間測(cè)試。 實(shí)驗(yàn)分別從屬性生成和屬性分發(fā)2個(gè)階段對(duì)所提算法使用的時(shí)間與SAPDS算法進(jìn)行了統(tǒng)計(jì)分析。屬性生成時(shí)間主要受屬性生成數(shù)量和密鑰長(zhǎng)度的影響。在屬性長(zhǎng)度為64 bit情況下用戶屬性生成時(shí)間與用戶數(shù)量間的變化關(guān)系如圖2所示,在屬性長(zhǎng)度為128 bit情況下用戶屬性生成時(shí)間與用戶數(shù)量間的變化關(guān)系如圖3所示。從圖2和圖3可以看出,屬性生成時(shí)間受用戶數(shù)量影響較大,而屬性長(zhǎng)度對(duì)其影響稍弱。SAPDS算法大致需要15 s的時(shí)間完成1 400個(gè)用戶的屬性生成,而屬性分發(fā)算法僅需要145 ms,大約節(jié)省了98%的生成時(shí)間。 圖2 屬性長(zhǎng)度為64 bit時(shí)用戶屬性生成時(shí)間與用戶數(shù)量間的變化關(guān)系 圖3 屬性長(zhǎng)度為128 bit時(shí)用戶屬性生成時(shí)間與用戶數(shù)量間的變化關(guān)系 圖4對(duì)比了2個(gè)算法的屬性分發(fā)時(shí)間,屬性分發(fā)主要包括屬性塊的加密和屬性的還原2個(gè)過(guò)程。在實(shí)驗(yàn)中,假設(shè)為用戶分發(fā)的公有密鑰長(zhǎng)度為128 bit。如圖4所示,屬性分發(fā)算法的時(shí)間消耗要高于SAPDS。這是因?yàn)樵诠行诺乐羞M(jìn)行屬性分發(fā),需要對(duì)分發(fā)的屬性進(jìn)行解密操作,因此屬性分發(fā)算法相對(duì)于SAPDS花費(fèi)更多的時(shí)間。 圖4 用戶屬性分發(fā)時(shí)間與用戶數(shù)量間的變化關(guān)系 用戶屬性分發(fā)算法與SAPDS算法的總耗時(shí)如圖5所示。由于用戶屬性分發(fā)算法中需要完成屬性塊的加密操作,故多消耗了43%的屬性分發(fā)時(shí)間,但是仍比SAPDS算法節(jié)省了95%的總耗時(shí)。 圖5 用戶屬性密鑰分發(fā)總時(shí)間與用戶數(shù)量間的變化關(guān)系 用戶屬性分發(fā)算法在公有信道中進(jìn)行屬性的分發(fā),并且由云存儲(chǔ)服務(wù)商完成了用戶的身份認(rèn)證操作。仿真實(shí)驗(yàn)結(jié)果數(shù)據(jù)表明屬性分發(fā)算法在保護(hù)屬性分發(fā)安全性的同時(shí)提高了屬性分發(fā)效率。 針對(duì)云存儲(chǔ)環(huán)境下的第三方信任依賴問(wèn)題,在CP-ABE算法基礎(chǔ)上提出了無(wú)可信中心的屬性密鑰分發(fā)算法。首先由云存儲(chǔ)服務(wù)商CSC在公共信道完成身份認(rèn)證和用戶屬性分發(fā),保證了用戶屬性在分發(fā)過(guò)程中的保密性。該算法也解決了第三方信任依賴在密鑰管理中存在的問(wèn)題。安全性分析表明,該算法保護(hù)了密鑰在分發(fā)過(guò)程中的安全性,解決了第三方信任依賴在密鑰管理中存在的問(wèn)題,提升了云存儲(chǔ)環(huán)境的安全[16]。 [1] CACHIN C,KEIDAR I,SHRAER A.Trusting the Cloud[J].ACM SIGACT News,2009,40(2):81-86. [2] 劉瑋,王麗宏.云計(jì)算應(yīng)用及其安全問(wèn)題研究[J].計(jì)算機(jī)研究與發(fā)展,2012,49(Suppl.):186-191. [3] 盧宏才,張軍平.云計(jì)算環(huán)境下任務(wù)行為訪問(wèn)控制模型研究[J].無(wú)線電工程,2016,46(11):17-21. [4] 王小明,付紅,張立臣.基于屬性的訪問(wèn)控制研究的進(jìn)展[J].電子學(xué)報(bào),2010,38(7):1660-1667. [5] DONG X,YU J,LUO Y,et al.Achieving an Effective,Scalable and Privacy-preserving Data Sharing Service in Cloud Computing[J].Computer & Security,2014(42):151-164. [6] YANG K,JIA X H,REN K.DAC-MACS:Effective Data Access Control or Mutil-Authority Cloud Storage Systems[C]∥Security for Cloud Storage Systems,Springer New York,2014:59-83. [7] PERVEZ Z,KHATTAK A M,LEE S.SAPDS:Self-healing Attribute-based Privacy Aware Data Sharing in Cloud[J].The Journal of Supercomuting,2012,62(1):431-460. [8] 熊安萍,許春香,馮浩.云存儲(chǔ)環(huán)境下支持策略變更的CP-ABE方案[J].計(jì)算機(jī)科學(xué),2016,43(1):191-194. [9] 王鵬翩,馮登國(guó),張立武.一種支持完全細(xì)粒度屬性撤銷的CP-ABE方案[J].軟件學(xué)報(bào),2012,23(10):2805-2816. [10] 趙明斌,姚志強(qiáng).基于RBAC的云計(jì)算訪問(wèn)控制模型[J].計(jì)算機(jī)應(yīng)用,2012,32(S2):267-270. [11] 霍成義.面向數(shù)據(jù)提供者的隱私保護(hù)訪問(wèn)控制模型[J].無(wú)線電工程,2014,44(2):5-8. [12] GOYAL V,PANDEY O,SAHAI A,et al.Attribute-based Encryption for Fine-grained Access Control of Encrypted Data[C]∥Proceedings of the 13th ACM Conference on Computer and Communications Security,ACM:89-98. [13] 蘇金樹(shù),曹丹,王小峰,等.屬性基加密機(jī)制[J].軟件學(xué)報(bào),2011,22(6):1299-1315. [14] 王建功,陳家松,王可人,等.基于云模型與模糊綜合評(píng)判的系統(tǒng)效能評(píng)估研究[J].無(wú)線電工程,2015,45(12):77-80. [15] SHAMIR A.How to Share a Secret[J].Communications of the ACM,1979,24(11):612-613. [16] HOHENBERGER S,WATERS B.Attribute-based Encryption with Fast Decryption[M].Berlin:Springer,2013:162-179.1.3 屬性密鑰分發(fā)模型
1.4 屬性分發(fā)算法
1.5 屬性參數(shù)分發(fā)算法
1.6 屬性密鑰生成算法
2 安全性分析
3 仿真實(shí)驗(yàn)及性能分析
4 結(jié)束語(yǔ)