鄧建鋒,賴宇陽,馮國聰,吳昊,王依云
(南方電網(wǎng)數(shù)字電網(wǎng)研究院有限公司平臺安全分公司網(wǎng)絡(luò)安全事業(yè)部,廣東廣州 510000)
云存儲器通過網(wǎng)絡(luò)提供存儲服務(wù),在數(shù)據(jù)基礎(chǔ)管理方面,增加了關(guān)于數(shù)據(jù)訪問和數(shù)據(jù)安全的功能[1]。一些云存儲服務(wù)還提供簡單的訪問控制功能,如文件訪問等,但這些安全機制完全依賴于服務(wù)器控制,安全性基于服務(wù)提供商的信任。而在網(wǎng)絡(luò)環(huán)境中,數(shù)據(jù)的安全性并不能得到充分保證[2]。目前常用的基于訪問控制列表的加密方法是將數(shù)據(jù)存儲在信任的服務(wù)器上,通過認(rèn)證服務(wù)器身份控制不同服務(wù)器訪問[3]。然而,該方法的公鑰加密是一一對應(yīng)的,當(dāng)多個服務(wù)器共享訪問時,密鑰管理和數(shù)據(jù)加密工作比較復(fù)雜[4]。由于數(shù)據(jù)文件的類型和大小不同,解密的服務(wù)器并不固定,因此在分布式環(huán)境下,傳統(tǒng)的加密方法不安全,訪問效率較低。為此,提出了一種基于屬性代理的多層云存儲數(shù)據(jù)加密方法。
基于屬性代理的云存儲數(shù)據(jù)多層加密方法,具體工作流程可概括如下。
步驟一:參數(shù)生成。在公有域中,設(shè)置兩層密鑰,從這兩層密鑰中隨機選擇密鑰;在私有域中,僅設(shè)置一層密鑰,從這一層密鑰中隨機選擇密鑰。步驟二:生成私鑰。如果是私有域,則應(yīng)采用屬性代理方式生成密鑰[5-7]。如果是公有域,則由最高可信機構(gòu)生成密鑰,然后再授權(quán)給低可信機構(gòu)。步驟三:數(shù)據(jù)訪問。對于私有域的云存儲數(shù)據(jù)訪問請求,需向相應(yīng)服務(wù)器發(fā)送明文,該明文是經(jīng)過加密處理后得到的。在公有域中,數(shù)據(jù)訪問采用樹結(jié)構(gòu),確認(rèn)訪問需求得到滿足,然后從葉節(jié)點訪問根節(jié)點。步驟四:數(shù)據(jù)撤銷。當(dāng)請求取消數(shù)據(jù)時,數(shù)據(jù)和簽名被發(fā)送到模型終端,當(dāng)模型終端確認(rèn)請求后,數(shù)據(jù)將被取消。
基于屬性代理的云存儲數(shù)據(jù)多層加密工作流程,分為兩個主要部分,解決了私有域的隱私保護問題,并采用分層多信任機構(gòu)的方法對公有域數(shù)據(jù)進行保護[8]。
1.2.1 基于屬性代理的訪問控制規(guī)則建立
通過訪問控制樹ATree 對云存儲數(shù)據(jù)多層加密訪問[9-11],訪問樹的非葉子節(jié)點表示一個門限,每個子節(jié)點都表示數(shù)據(jù)未經(jīng)授權(quán),即遭到訪問風(fēng)險的數(shù)據(jù)屬性[12]。
針對確定的訪問控制樹,設(shè)numx為節(jié)點x的子節(jié)點數(shù)量,kx為子節(jié)點數(shù)量的閾值,并且滿足0 ≤kx≤numx。如果存在至少kx個子節(jié)點為真,那么這些節(jié)點將被賦予實際值,尤其是當(dāng)kx=1 時,這些節(jié)點為訪問控制的OR 門;當(dāng)kx=numx時,這些節(jié)點為訪 問 控 制 的AND 門[13]。
如果數(shù)據(jù)經(jīng)過授權(quán)后的集合S滿足訪問控制樹或者節(jié)點要求時,則定義ATree(S)=1 或x(S)=1。訪問控制樹使用的規(guī)則為:如果節(jié)點x表示控制樹的子節(jié)點,當(dāng)且僅當(dāng)訪問節(jié)點全部屬于經(jīng)過授權(quán)后的數(shù)據(jù)集合,此時x(S)=1;如果x表示控制樹的非子節(jié)點,子節(jié)點數(shù)量中至少有kx個子節(jié)點返回時,x(S)=1[14]。
1.2.2 全方位公鑰加密
對于云存儲數(shù)據(jù)集合Y={y1,y2,…,yn},為了實現(xiàn)全方位加密訪問,需要先構(gòu)造數(shù)據(jù)安全索引λ,如圖1 所示。

圖1 索引矩陣
圖1 中的α、β分別表示輸入關(guān)鍵字集合和數(shù)據(jù)索引,基于此設(shè)計全方位公鑰加密步驟如下所示。
步驟一:初始化
通過循環(huán)群生成一個雙線性對映射e,從數(shù)據(jù)經(jīng)過授權(quán)后的集合S中選擇元素s1,s2,s3,s4,在循環(huán)群中隨機選取兩個密鑰生成元素a、b[15]。結(jié)合這兩個密鑰,生成一個私有域云存儲密鑰R(r1,r2),其中r1、r2表示偽隨機密鑰,由此獲取主密鑰
步驟二:本地代理屬性密鑰生成
隨機從數(shù)據(jù)經(jīng)過授權(quán)后的集合S中選擇元素,并計算每個元素對應(yīng)的生成元,有:
依據(jù)每個元素對應(yīng)的生成元Di,1,可得到輸出數(shù)據(jù)經(jīng)過授權(quán)后的密鑰
步驟三:數(shù)據(jù)加密
數(shù)據(jù)經(jīng)過授權(quán)后,擁有對稱密鑰、加密數(shù)據(jù)生成加密文件。為了加密密鑰R,結(jié)合訪問控制樹ATree,從云存儲數(shù)據(jù)集合Y={y1,y2,…,yn}中隨機選擇數(shù)據(jù),如果數(shù)據(jù)出現(xiàn)在訪問控制樹ATree 上,那么說明數(shù)據(jù)是安全數(shù)據(jù),否則不安全。輸出安全數(shù)據(jù),并上傳到公共服務(wù)器上。
等級多信任機構(gòu)是一種組織形式,其將公有域、私有域中的云服務(wù)器分成多層。各級別的組織都擁有自己的權(quán)力,并由一個可信組織管理,而父可信組織則負(fù)責(zé)子組織的關(guān)鍵任務(wù)[16]。多信任機構(gòu)通過一個密鑰分配過程來管理權(quán)限級別,從而能夠處理每一級別的數(shù)據(jù)。
采用代理重加密技術(shù)對敏感數(shù)據(jù)進行進一步加密,實現(xiàn)敏感數(shù)據(jù)脫敏處理。加密后的敏感數(shù)據(jù)一方面不能與業(yè)務(wù)數(shù)據(jù)形成清晰的映射關(guān)系,另一方面在保證數(shù)據(jù)主體隱私權(quán)的前提下實現(xiàn)業(yè)務(wù)數(shù)據(jù)的應(yīng)用。
基于代理重加密的數(shù)據(jù)脫敏處理方法如圖2所示。

圖2 基于代理重加密的數(shù)據(jù)脫敏處理方法
由圖2 可知,數(shù)據(jù)脫敏具體步驟為增加敏感數(shù)據(jù)和查詢敏感數(shù)據(jù)。該數(shù)據(jù)由屬性數(shù)據(jù)模型、業(yè)務(wù)數(shù)據(jù)模型、關(guān)系數(shù)據(jù)模型組成,如圖3 所示。

圖3 主體數(shù)據(jù)模型示意圖
結(jié)合圖3 所示的主體數(shù)據(jù)模型,按照基于屬性本地化代理的全方位公鑰加密方法對敏感數(shù)據(jù)進行加密處理。查詢敏感數(shù)據(jù),獲取主體A 標(biāo)識。主體A 將訪問權(quán)限授權(quán)給B 時,需按照如下步驟進行屬性代理重加密:
通過主體A 標(biāo)識查詢屬性數(shù)據(jù),生成代理重加密秘鑰:
依據(jù)代理重加密秘鑰,解密主體B 屬性數(shù)據(jù),遍歷解密關(guān)系數(shù)據(jù),當(dāng)解密失敗時,可查找所有數(shù)據(jù),進而獲取主體A 標(biāo)識映射數(shù)據(jù)集合。加密處理后,再將數(shù)據(jù)存儲到云端。
由于無法根據(jù)業(yè)務(wù)數(shù)據(jù)準(zhǔn)確獲取云存儲屬性數(shù)據(jù),所以加密的云存儲屬性數(shù)據(jù)不能跟蹤云存儲業(yè)務(wù)數(shù)據(jù),保證了云存儲數(shù)據(jù)脫敏。在對主數(shù)據(jù)進行全部加密時,只針對敏感數(shù)據(jù),有利于統(tǒng)計、查詢與刪除,為業(yè)務(wù)數(shù)據(jù)的后續(xù)處理提供方便快捷的途徑。基于屬性代理重加密方法,允許授權(quán)多方使用主體數(shù)據(jù),該方法能夠有效地應(yīng)用于數(shù)據(jù)分析中,實現(xiàn)數(shù)據(jù)隱私保護與數(shù)據(jù)應(yīng)用的平衡。
測試基于屬性代理的云存儲數(shù)據(jù)多層加密方法[17-18],硬件配置信息為:使用Quad-Core AMD Opteron(TM)服務(wù)器,具有雙核CPU,磁盤為500 GB,內(nèi)存為8 GB。軟件環(huán)境信息為32 位Windows7 操作系統(tǒng),利用標(biāo)準(zhǔn)Miracle 密碼學(xué)庫實現(xiàn)數(shù)據(jù)多層加密。
3.2.1 訪問密文長度分析
選擇20 字節(jié)、40 字節(jié)、60 字節(jié)、80 字節(jié)、100 字節(jié)明文,分別使用基于訪問控制列表的加密方法[19-20]和基于屬性代理的云存儲數(shù)據(jù)多層加密方法對比分析不同明文下的密文長度,對比結(jié)果如圖4 所示。

圖4 兩種方法不同明文下密文長度對比
由圖4 可知,使用基于訪問控制列表的加密方法,密文隨著明文長度增加也隨之增加。當(dāng)明文為20字節(jié)時,密文長度為14字節(jié),當(dāng)明文為100字節(jié)時,密文長度為33 字節(jié);使用基于屬性代理的云存儲數(shù)據(jù)多層加密方法,密文隨著明文長度增加,密文保持不變,說明使用該方法密文不會受到任務(wù)數(shù)量增加而發(fā)生改變。不同明文下,密文保持14 字節(jié)不變。
3.2.2 訪問消耗時間分析
在20 字節(jié)、40 字節(jié)、60 字節(jié)、80 字節(jié)、100 字節(jié)明文下,分別使用基于訪問控制列表的加密方法和基于屬性代理的云存儲數(shù)據(jù)多層加密方法對比分析不同明文下的訪問消耗時間,對比結(jié)果如圖5 所示。

圖5 兩種方法不同明文下訪問消耗時間對比分析
由圖5 可知,使用基于訪問控制列表的加密方法,訪問所消耗的時間較長,當(dāng)明文為100 字節(jié)時,訪問所消耗的時間達到最長為75 s。當(dāng)明文為80 字節(jié)時,訪問所消耗的時間達到最長為65 s;使用基于屬性代理的云存儲數(shù)據(jù)多層加密方法,訪問所消耗的時間較短,當(dāng)明文為20 字節(jié)時,訪問所消耗的時間達到最長為29 s。當(dāng)明文為100 字節(jié)時,訪問所消耗的時間達到最長為26 s。
3.2.3 訪問安全性分析
分別使用基于訪問控制列表的加密方法和基于屬性代理的云存儲數(shù)據(jù)多層加密方法對比分析不同明文下的訪問安全性,如表1 所示。

表1 兩種方法不同明文下訪問安全性對比分析
由表1 可知,基于屬性代理的云存儲數(shù)據(jù)多層加密方法能夠安全訪問全部數(shù)據(jù)。
利用屬性代理技術(shù)對云存儲數(shù)據(jù)進行多層加密,可以有效地保護數(shù)據(jù)所有者的敏感數(shù)據(jù),防止惡意或未經(jīng)授權(quán)的服務(wù)器訪問數(shù)據(jù)。基于屬性代理的云存儲數(shù)據(jù)多層加密方式,在保護敏感數(shù)據(jù)主體的前提下,可廣泛應(yīng)用于高效業(yè)務(wù)處理和數(shù)據(jù)應(yīng)用場景中。
盡管該方法提出了云存儲數(shù)據(jù)的訪問安全性問題的有效處理方法,但仍存在不完善之處,還需對授權(quán)責(zé)任的處理進行進一步研究。