?

基于訪問樹的策略隱藏文件層次屬性加密方案

2021-02-25 07:48許盛偉郭春銳任雄鵬
計算機應用與軟件 2021年2期
關鍵詞:私鑰密文密鑰

許盛偉 郭春銳 袁 峰 任雄鵬 楊 森

1(北京電子科技學院 北京 100070)2(西安電子科技學院通信工程學院 陜西 西安 710071)

0 引 言

近年來,隨著云計算的流行,大量計算以及存儲從物理本機被挪至云端[1],為用戶節約了大量的存儲空間,受到了廣大用戶的喜愛。但是將數據存儲在云服務器上,并不是特別安全,可能會由于云提供商搜集用戶存儲的消息,導致重要信息的泄露。怎樣解決云存儲中數據的安全問題,已經成為人們急需解決的重要問題之一[2]。近年來,基于屬性加密方案的出現不僅解決了云中所存數據的安全問題,同時也實現了用戶的細粒度授權,因此受到了越來越多的關注。

Sahai等[3]最先提出了基于屬性的加密方案(Attributed-Based Encryption,ABE)。在該方案中,數據屬主通過設定訪問策略,根據屬性完成加密,在解密過程中,不用獲得數據訪問者的具體身份信息,只用關注解密者的屬性是否滿足加密者設定的加密策略。Goyal等[4]又將ABE劃分為兩種加密方案,一種是基于密文策略,簡稱CP-ABE,另一種是基于密鑰策略,簡稱KP-ABE[5]。最早提出的CP-ABE加密體制中,訪問結構直接以明文形式存在,從而導致重要信息暴露。Nishide等[6]提出了一種加密方案,可以實現數據屬主將數據加密的同時,也完成了策略隱藏,防止了敏感信息的泄露。近年來,文獻[7-8]又結合已有方案提出了新的方案,解決了隱藏策略過程中遇到的問題。

在大多數CP-ABE加密體制中,密鑰只是由單一的可信的權威機構生成,這種做法不僅非常不安全,同時也不能實現用戶的跨域訪問,一旦權威機構被攻破,敵手獲得密鑰后,就可以從密文中獲得明文數據。Chase[9]提出了一種ABE加密方案,將單個權威機構變為多個授權機構,很好地解決了上述問題。Waters[10]提出了一種分布式的CP-ABE加密方案,首次通過LSSS矩陣完成了ABE加密。后續文獻[11-12]提出了分布式的屬性基加密方案,其優點是密文為定長的。文獻[13]在多機構授權的基礎上,將策略進行了隱藏。

在現有的針對云文件屬性加密的方案中,針對多個層次結構文件的研究還不是特別深入,但是也有學者們提出了一些方案[14-18],但是加解密效率不是特別理想。文獻[19]提出了一種多級層次結構的CP-ABE方案。該方案通過使用分層的訪問結構模型解決多層次文件共享的難題,但是其將樹形的訪問結構以明文的形式發送給用戶,容易造成一些敏感信息的泄露。

本文針對具有多級層次結構特點的文件,提出一種采用分層級的樹形結構且策略隱藏的屬性加密方案,同時在本方案中有多個授權機構共同工作。采用分層級的樹形結構可以減少加密成本,同時訪問策略的隱藏防止了敏感信息的泄露。文中用戶密鑰是由中央授權機構和多個屬性授權機構共同生成,防止了單個授權機構被攻擊導致密鑰泄露的難題。

1 預備知識

1.1 雙線性映射

設G和GT分別是階為素數p,生成元為g的乘法循環群,其雙線性映射e:G×G→GT,e滿足以下性質:

(1) 雙線性。對?μ,ν∈G,a,b∈Zp,都有e(μa,νb)=e(μ,ν)ab。

(2) 非退化性。存在μ,ν∈G,使得e(μ,ν)≠1。

(3) 可計算性。對所有μ,ν∈G,存在有效計算e(μ,ν)≠1。

1.2 復雜性假設DBDH

設群G、GT為乘法群,階為p,生成元為g∈G,隨機整數a,b,c∈Zp,并將四元組g,ga,gb,gc∈G和隨機數T∈GT發送給敵手A,由敵手A判定T是否等于e(g,g)abc。當T=e(g,g)abc時,A輸出1;否則輸出0。

定義敵手判斷出上述問題的優勢是:

AdvDBDH=Pr[A(g,ga,gb,gc,e(g,g)abc)=1]-

Pr[A(g,ga,gb,gc,T)=1]

式中:Pr表示概率或者優勢。

如果沒有時間多項式算法通過不能忽略AdvDBDH打破DBDH假設,則該假設成立。

1.3 具有層次結構的訪問樹

假設用T表示具有分層結構的訪問樹,在T中,具有k個訪問層次,樹中的節點用(x,y)表示,其中:x表示節點在樹中的行位置(從上而下);y表示節點在樹中的列位置(從左到右)。R(x,y)表示根節點,att(x,y)表示葉子節點。

圖1為具有2個層次結構的訪問樹,樹中圓圈表示閾值門限,如“OR”“AND”“n-of-m(n

圖1 具有2個層次結構的訪問樹

針對訪問樹,有如下定義:

(xi,yi):表示訪問樹中的級節點,最高節點為根節點R(x1,y1),其余的依次遞減。parent(x,y):表示節點(x,y)的父節點。child(x,y):表示節點(x,y)的子節點。att(x,y):表示與葉子節點相關聯的屬性。index(x,y):表示返回一個與節點(x,y)相關聯的唯一值。

2 系統模型及安全模型

2.1 系統模型

在本方案中,主體包括5部分,分別為中央授權機構(Central Authority,CA)、屬性授權機構(Attribute Authority,AA)、數據屬主 (Data Owner,DO)、用戶(User)和云服務提供商(Cloud Service Provider,CSP)[7]。

各主體的主要功能如下:

1) CA為可信機構,通過輸入安全參數,產生主公鑰和主私鑰,同時為AA和User生成身份標簽,當用戶注冊完成后,為User生成密鑰組件。

2) AA根據User屬性生成部分密鑰組件。

3) DO在本地加密需要共享的文件,由于直接采用CP-ABE加密文件,會花費比較長的時間,因此在本文中,DO首先通過AES或SM4算法生成文件密文,再采用CP-ABE算法加密文件密鑰,最終把完整的密文上傳至云端。

4) User 用戶從云服務端下載完密文數據,當用戶屬性滿足數據屬主定義的屬性時獲得屬性加密的密鑰,再解密文件數據。

5) CSP是“誠實但好奇”的文件存儲機構,能夠為用戶提供足夠的文件存儲空間,然而,為了獲取利益,還是會盡可能多地收集所存儲的數據信息。

2.2 安全模型

在本方案中,由敵手Adversary和挑戰者Challenger二者通過交互式的游戲,構建敵手挑戰模型[20],具體描述如下:

1) 初始化操作(Initialization)。Adversary將選擇的訪問結構W發送給Challenger。

2) 系統建立(Setup)。Challenger在游戲過程中通過方案中的初始化算法得到系統公鑰和密鑰主私鑰,主私鑰由Challenger保存,將公鑰發送給Adversary。

3) 查詢階段1(QueryPhase1)。Adversary選擇屬性Si,Si?W,并重復從Challenger處獲得私鑰SK,同時Challenger通過運行KeyGen生成私鑰SK。

4) 挑戰階段(Challenge)。Adversary選擇兩條等長的消息M0和M1,Challenger通過訪問結構W加密消息Mη,其中η∈{0,1},再將密文CT發送給Adversary。

5) 查詢階段2(QueryPhase2)。重復查詢階段1。

3 方案構造

3.1 初始化算法

(1) CA初始化。CA輸入安全參數1λ,生成群G,由第1節可知,g為其生成元,CA隨機選擇α,β∈Zp,計算Y=e(g,g)α和h=gβ,并根據相應的簽名方案,生成簽名密鑰Signkey和驗證密鑰Verifykey。

公鑰GPK=(p,g,G,GT,e,Y,h,Verifykey)

(1)

主私鑰GSK=(β,gα)

(2)

(2) 用戶注冊。User首先向CA發出申請,完成注冊。然后CA為每個User生成全局標識符GID。在本方案中,用戶不能是長期合法的,必須要有一定的期限限制,因此CA必須為User設定有效期限Tpov。最后,為了能夠辨別User身份的真偽,生成標簽Usign。Usign=(GID‖L‖Tpov,Signkey),其中L為User屬性集。

(3) AA初始化。CA為每個AA設定一個類似于用戶GID的標識符AID,為了保證每個AA都是合法的機構,CA為AA生成簽名Asign。Asign=(AID‖UAID,Signkey),其中UAID為AA負責管理的屬性集。

為屬性集中的每個屬性元素隨機選擇aij∈Zp,計算Aij=gaij。其中公鑰APK={Asign,{Aij}},私鑰ASK=aij。

3.2 加密算法

數據擁有者采用k個密鑰{k1,k2,…,kk}利用對稱加密算法加密文件M={m1,m2,…,mk},文件密文為E(M)={Ek1(m1),Ek2(m2),…,Ekk(mk)},再用CP-ABE加密文件密鑰。文件密鑰加密過程如下:

數據擁有者首先確定好分層級訪問樹T,輸入公鑰GPK、APK、k個文件密鑰,輸出密文CT。

Ci=kiYsi=kie(g,g)?si

(3)

(4)

在分級訪問樹中,每個(x,y)都對應一個多項式q(x,y),從R(x,y)開始,每個(x,y)的q(x,y)階為:d(x,y)=k(x,y)-1。對于每個分級節點,q(x,y)(0)=q(x1,y1)(0)=si,多項式q(x,y)的其他系數隨機選擇。比如根節點R,qR(0)=q(x1,y1)(0)=s1。對于非分級節點,q(x,y)(0)=qparent(x,y)(index(x,y))。

集合Y為樹中葉子節點的集合,對于任意的(x,y)∈Y,有:

(5)

(6)

對于其他節點,則有:

C(x,y)i=e(g,g)?(q(x,y)(0)+qchildj(0))

(7)

3.3 密鑰生成

用戶向AA發出私鑰請求后,AA首先驗證用戶信息檢查其是否在有效期范圍內,如果身份有效,則根據用戶屬性生成私鑰組件。

為每個屬性值隨機選擇λi∈Zp,則:

3.4 解密運算

用戶從云端下載完密文后,需要得到共享文件的密鑰K才能解密文件,首先是采用CP-ABE算法解密得到對稱密鑰,再通過對稱算法解密共享文件。

類似于CP-ABE[21],解密運算如下:

① 若節點(x,y)為葉子節點時,令i=att(x,y),如果i?S,DecryptNode(CT,SK,(x,y))=null。

如果i∈S,則有:

e(g,g)rq(x,y) (0)

(8)

② 若(x,y)為非葉子節點時,設Z為節點x的子節點,令Fz=DecryptNode(CT,SK,Z),S(x,y)為節點x的子節點集。

e(g,g)rq(x,y) (0)

(9)

③ 如果S滿足整個或者部分訪問樹,則:

DecryptNode(CT,SK,(xi,yi))=

e(g,g)rq(xi,yi)(0)=e(g,g)rsi

(10)

④ 最后得到相關的密鑰:

(11)

(12)

⑤ 利用ki解密Eki(mi)得到文件mi。若用戶滿足部分訪問樹,則可得到文件M中部分;若滿足整個訪問樹,則可得到文件M的所有內容。

4 安全性分析

4.1 密鑰的安全性

系統密鑰由CA和AA共同生成,在以往的CP-ABE方案中,系統密鑰只由CA生成,一旦CA被攻擊,就會造成密鑰泄露。在本方案中,如果CA被攻破,只會使得私鑰的部分組件D被泄露,完整的私鑰不會被泄露。如果部分AA機構被攻破,只會獲得k個Di,解密幾率還是非常小的,因此本方案中系統的密鑰是安全的。

4.2 抵抗合謀攻擊

密文信息為Ci=kiYsi=kie(g,g)?si,若要解密密文得到明文ki,必須恢復出e(g,g)αsi。對于一個不具備屬性y的攻擊者u1,即使與具備該屬性的用戶u2共謀,也不能得到密鑰組件D;因為CA為每個用戶產生的隨機數r是不一致的。如果出現授權中心合謀攻擊的情況時,只要CA中心的私鑰組件D沒有被泄露,方案仍舊是安全的。

4.3 安全性證明

根據第2節中設計的安全模型,對本文所提出的方案進行安全性證明。

定理1如果在任意的時間多項式算法中,Adversary不可能以不可忽略的優勢ξ贏得挑戰,則稱本方案是選擇明文攻擊安全的。

選取雙線性映射e:G×G→GT,隨機選擇a、b、c,其中a,b,c∈Zp。η∈{0,1},R∈GT。若R=e(g,g)abc時,η=1,否則η=0。

1) 初始化操作(Initialization)。Adversary將選擇的訪問結構W發送給Challenger。

2) 系統建立(Setup)。Challenger通過初始化算法setup,為Adversary提供公鑰PK,Challenger隨機選擇a′∈Zp,a=a′+ab,則Y=e(g,g)a,h=gβ=B=gb。為每個屬性值隨機選擇aij∈Zp,Aij=gaij,將PK發送給Adversary。

4) 挑戰階段(Challenge)。Adversary選擇兩條等長的消息M0和M1,Challenger通過訪問結構W加密消息Mη,其中η∈{0,1},再將密文CT發送給Adversary。

C=MηYs=Mηe(g,g)as

C′=hs=gβs

5) 查詢階段2(QueryPhase2)。重復查詢階段1。

6) 猜測階段(Guess)。Adversary輸出對于η的猜測η′(η′∈{0,1})。

如果η=η′,Challenger輸出1,則R=e(g,g)abc,否則輸出1。

最后贏得挑戰游戲的優勢為:

5 性能分析

本文方案針對具有層次結構的文件提出多機構授權且隱藏樹形訪問結構的CP-ABE方案,本節從密文長度、用戶密鑰長度和加解密時間幾個方面展開,同時與文獻[7]的方案進行對比分析。

為了便于說明,定義以下符號:k表示文件分級個數;L*表示*的長度;|*|表示*的元素個數;AT表示除葉子以外的子節點集;i為AT中節點的子節點;Au為用戶的屬性集;AS為系統屬性集;S表示具有層次結構訪問樹中的最小內部節點;tb表示雙線性對運算;te表示群中的指數運算和乘法運算時間。

密文長度為(2|AS|+k)LG+(i|AT|+k)LGT。

用戶密鑰長度為(2|Au|+1)LG。

加密時間為(2|AS|+k)te+(i|AT|+2k)te。

解密時間為(2|Au|+1)tb+(2|S|+j|AT|+2k)te。

在文獻[13]中,密文長度為(2|AS|+1)LG+LGT,用戶私鑰長度為(2|Au|+1)LG,加密時間為(2|AS|+2)te,解密時間為(2|Au|+1)tb。

若解密一個文件時,文獻[13]中密文略短于本文生成的密文,用戶私鑰一樣長,加密時間和解密時間也略低于本文方案。而本文方案可以同時加密K個文件,此時,本文方案明顯優于文獻[13]。且本文方案能夠實現文件的分級訪問控制。

6 結 語

本文利用多層次的樹形訪問結構加密文件,實現了文件的分級訪問控制,同時,策略的隱藏防止了敏感信息的泄露,研究成果在DBDH假設下被證明是安全的。通過與其他方案的對比,本文方案在加密多個文件時具有明顯的優勢,同時多授權機構的使用不僅可以保護用戶密鑰的安全,也可實現用戶的跨域訪問。下一步,將重點研究如何減少解密運算量。

猜你喜歡
私鑰密文密鑰
一種支持動態更新的可排名密文搜索方案
比特幣的安全性到底有多高
幻中邂逅之金色密鑰
幻中邂逅之金色密鑰
嵌入式異構物聯網密文數據動態捕獲方法
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
程序員把7500枚比特幣扔掉損失巨大
一種新的密文策略的屬性基加密方案研究
一種抗攻擊的網絡加密算法研究
Android密鑰庫簡析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合