張興蘭,崔遙
(北京工業(yè)大學信息學部,北京 100124)
隨著計算機技術的發(fā)展和分布式技術的應用,人們將越來越多的數(shù)據(jù)存儲到云端[1],基于屬性的加密(ABE,attribute based encryption)在這種背景下應運而生。ABE最早由Sahai等[2]提出,由于ABE具有內在的一對多的良好性質,能夠對密文進行細粒度的訪問控制,被廣泛應用于云存儲環(huán)境,它解決了復雜信息系統(tǒng)中的細粒度訪問控制和大規(guī)模用戶動態(tài)擴展問題,為開放的網(wǎng)絡環(huán)境提供了比較理想的訪問控制方案[3]。之后,Goyal等[4]進一步明確了ABE的概念,將ABE分為基于密鑰策略的屬性加密(KP-ABE,key-policy attribute-based encryption)和基于密文策略的屬性加密(CP-ABE,cipher text-policy attribute-based encryption)。在基于密鑰策略的屬性加密機制中,密鑰與訪問策略相關,密文與屬性集相關;而在基于密文策略的屬性加密機制中,密鑰與屬性集相關,密文與訪問策略相關[5]。然而訪問策略同樣包含敏感信息,當惡意用戶獲得訪問策略時,就可以根據(jù)訪問策略判斷出密文信息,如對一份病例通過ABE機制進行加密,它對應的訪問策略中要求心理醫(yī)生訪問,這樣容易暴露該病例對應的病人很可能是位心理疾病患者[6]。在這種情況下,隱藏策略中的敏感信息顯得十分重要。
Kapadia等[7]提出一種叫作PEAPOD(privacyenhanced attribute-based publishing of data)策略隱藏的 CP-ABE方案,該方案需要引入一個在線的半可信服務器進行密文的重加密,這種引入方式會導致安全和性能的提升受限。Nishide等[8]介紹了兩種CP-ABE方案來實現(xiàn)策略隱藏,在多值屬性之間通過與門邏輯表示訪問結構,將訪問結構隱藏在加密的信息中。Muller等[9]在Nishide的成果上,使用了樹形訪問控制技術,使用布爾表達式來表示訪問結構,從而實現(xiàn)訪問結構的隱藏。文獻[10]同樣是將訪問結構嵌入密文中[10]。文獻[11]提出了一種半策略隱藏屬性加密方案,將屬性表示為屬性名和屬性值的對應關系,對屬性值進行隱藏,用以保護用戶隱私,主要針對屬性經(jīng)常變更和變更涉及隱私信息的情況,但將大量的計算工程外包給云服務器,外包計算的安全性是一個重要問題[12]。Lai等[13]通過系統(tǒng)加密機制實現(xiàn)訪問結構的隱藏,在基于密文的屬性加密機制的基礎上構造了隱藏訪問結構的方案,密文長度以及雙線性對運算都與屬性數(shù)量成正相關,大大增加了方案的運算和存儲開銷,導致系統(tǒng)運行效率低。Chase等[14]引入了多權威中心的CP-ABE來提高安全性。
本文在 CP-ABE訪問樹結構的基礎上,通過群簽名的方式,實現(xiàn)了策略中屬性的隱藏,同時使策略支持多樣化的表達。在傳統(tǒng)的CP-ABE訪問結構中[15-16],樹形訪問結構以屬性作為葉子節(jié)點,門限節(jié)點(與、或、非、門限)作為非葉子節(jié)點,這種結構比較清晰,但直接將屬性作為葉子節(jié)點可能會泄露隱私信息,所以在 CP-ABE中加入群簽名,將樹形訪問結構最底層的葉子節(jié)點放入群中。傳統(tǒng)的訪問結構如圖1所示??梢詫、B和C、D分別作為一個群G1和G2,如圖2所示,這樣如果用戶的訪問條件成立,驗證者只能知道訪問者符合訪問控制規(guī)則,無法知道群中的具體成員。
圖1 傳統(tǒng)訪問結構
圖2 基于群簽名的訪問結構
在CP-ABE中,用戶可以用一系列屬性來描述,訪問結構可以定義為相關屬性的邏輯表達式,表示數(shù)據(jù)允許被訪問的范圍[17-18]。定義{a1,a2,… ,an}是一個屬性的集合,如果訪問結構A包含于 2{a1,a2,…,an}是單調的,那么任取集合B和集合C,若B∈A,且B?C,則C∈A。
訪問結構A是 {a1,a2,… ,an}的非空子集,即A包含于 2{a1,a2,…,an}/? 。A中的集合稱為授權集,否則稱為非授權集。
在本文方案中,訪問結構樹為一顆多叉樹,該樹中,用與或門限的布爾操作給內部節(jié)點賦值,用屬性給葉子節(jié)點賦值。訪問結構樹即為訪問策略,指定了可以解密密文的屬性組合。
設置兩個階為素數(shù)p的乘法循環(huán)群G1和G2,若存在一個映射e:G1×G1->G2滿足如下特征,則是雙線性映射[19]。
1) 雙線性:對 ?a,b∈Zq, ?g,h∈G1,都有(ega,hb)=e(g ,h)ab,則稱映射e:G1×G1->G2是雙線性的。
2) 非退化性: ?g∈G1,使(eg,g)≠ 1。
3) 可計算性: ?g,h∈G1,存在一個有效的算法來計算(eg,h)。注意:e(*,*)是對稱操作,即 (ega,hb) = (eg,h)ab=(egb,ha) 。
一般地,一個有秘密分發(fā)者D和參與者{p1,p2,p3,… ,pn}構成的(t,n)秘密分享機制包含下面兩個協(xié)議[5,20-21]。
1) 秘密分發(fā)協(xié)議:在這個協(xié)議中,秘密分發(fā)者D在n個參與者中分享秘密s,每個參與者Pi獲得一個碎片Si,i=1,…,n。
2) 秘密重構協(xié)議:在這個協(xié)議中,任意不少于t個參與者一起合作,以自己的碎片為輸入,重構原秘密s。
Shamir秘密共享機制是一個安全的(t,n)秘密分享機制:一方面,任意t個參與者通過提供自己的碎片能夠協(xié)作恢復出原秘密s;另一方面,任意少于t個參與者即使擁有自己的碎片也無法計算關于原秘密s的任何信息。這里的t一般為門限值。該機制實現(xiàn)如下。
3) 秘密分發(fā)者D在n個參與者之間分享秘密s,D選擇一個素數(shù)q> max(s,n),隨機選擇定義以 及t-1次的多項式參與者p獲得秘密碎片i
4) 秘密恢復:已知任意不少于t個點(x,y)= (i,si),根據(jù)拉格朗日差值定理,可以確定唯一的其中拉格朗日系數(shù)定義為
群簽名的概念是由Chaum和Heyst在1991年聯(lián)合提出的[9,13]。在一個群簽名體制中,群體中的成員可代表整個群體進行匿名簽名。一方面,驗證者只能確定簽名是由群體中的某個成員產(chǎn)生的,但不能確定是哪個成員,即匿名性;另一方面,在必要的時候群管理者可以打開簽名來揭示簽名成員身份,使簽名成員無法否認,即可追蹤性[22-23]。
通過挑戰(zhàn)者與敵手的游戲定義方案的安全性,分為以下5個游戲階段。
1) 建立階段,挑戰(zhàn)者運行setup算法,并發(fā)布公開參數(shù)。
2) 階段一,敵手針對訪問結構A1、A2…Aq進行查詢Ω= {a1,a2,a3,… ,an}的密鑰,該查詢?yōu)樽赃m應的查詢,敵手每次在之前返回結果的基礎上進行查詢,每次挑戰(zhàn)者通過運行密鑰生成算法對查詢進行回答。
3) 挑戰(zhàn),敵手提交兩個等長的明文m0、m1給挑戰(zhàn)者,挑戰(zhàn)者投擲公平的硬幣b,為0則用屬性集Ω對m0進行加密,為1則用屬性集Ω對m1進行加密,且訪問結構A1、A2…Aq不滿足屬性集Ω,然后將密文發(fā)送給敵手。
4) 階段二,重復階段一密鑰詢問。
5) 猜測,敵手輸出b的猜測值b'。
本文的系統(tǒng)架構包含如下實體:可信中心、數(shù)據(jù)擁有者、云服務器、用戶、屬性群、群組管理者,如圖3所示。
可信中心:發(fā)布系統(tǒng)公鑰和私鑰。
數(shù)據(jù)所有者:定制策略,分發(fā)屬性至屬性群,加密數(shù)據(jù),將密文發(fā)送到云服務器。
云服務器:負責存儲密文,接受用戶的訪問請求。
用戶:用戶向云服務器提出訪問請求,當且僅當用戶包含的屬性滿足訪問結構才能解密獲得明文。
G1,G2,G3,…,Gm:屬性群,根據(jù)用戶的屬性生成群簽名發(fā)送給群組管理者。
群組管理者:驗證群簽名,合成最終簽名。
本文方案描述如下。
1) 初始化算法:輸出系統(tǒng)公鑰PK和主密鑰MK。
2) 密鑰生成:根據(jù)MK和屬性集合生成屬性私鑰。
3) 加密算法:數(shù)據(jù)所有者根據(jù)訪問控制結構使用公鑰PK加密明文m,生成密文CT。
4) 解密算法:根據(jù)屬性集、CT、PK計算得出密文m,否則為⊥。
本文方案的設計思路是將CP-ABE與群簽名的技術相結合,在屬性層面完成屬性的不可見性。系統(tǒng)中,用戶的屬性集合為Ω= {a1,a2,a3, … ,an},n為屬性的個數(shù),IDi(1 ≤i≤n)為每個屬性的ID。方案分為系統(tǒng)初始化、密鑰生成算法、加密算法、解密算法。
選定一個大素數(shù)p,G是階為p的乘法循環(huán)群,雙線性映射e:G×G→G1,g為G的生成元。生成一個橢圓曲線和b滿足 4a3+ 27b2≠ 0(modp)。E為曲線上的一個生成元,可信中心選擇一個單向散列函數(shù)h(),選擇隨機元素計算如下。
輸出系統(tǒng)公鑰
保存主密鑰
輸入公鑰PK、主密鑰MK,訪問控制結構T、輸出密文CT。
輸入樹形訪問控制結構T,根節(jié)點為s,子樹分別為與或門等邏輯關系,運用Shamir秘密共享機制進行秘密分發(fā)。當該節(jié)點為或門節(jié)點,則子樹對應的群或節(jié)點的秘密值均為s,否則,對于該節(jié)點的子樹,從左到右進行分發(fā)秘密值,假設該節(jié)點對應的群或者節(jié)點的范圍為(h,k),隨機選擇直到該節(jié)點的最后一個子樹,為最后一個子樹計算秘密值其中,s'為該節(jié)點對應的秘密值。
將屬性值加入對應的群中,對于群Gl(1 ≤l≤m) ,秘密值為sl,設計(t,n)門限函數(shù),選擇一個素數(shù)q> max(sl,n),隨機選擇a1,a2,定義和次的多項式
對每一個加入該群的屬性ai(1 ≤i≤n),選擇隨機數(shù)計算并發(fā)送U和至屬性群Gl。
輸入明文m,計算
輸入PK、MK、訪問控制策略T、密文CT,輸出明文。
對于群Gl(1 ≤l≤m) ,本群的屬性集合為ω′,根據(jù)用戶的屬性,計算本群的群簽名如下。
計算
將計算結果Sign發(fā)送給用戶,否則返回⊥。用戶收到Sign,計算如下。
從而得到m。
下面證明本文方案在 DBDH假設下滿足密文的不可區(qū)分性。若敵手A以不可忽略的優(yōu)勢攻破本文方案,那么存在一個算法能夠以相同的優(yōu)勢攻破DBDH假設。
證明:若敵手A在一個多項式時間內以不可忽略的優(yōu)勢ε贏得游戲,則證明能夠以不可忽略的優(yōu)勢解決DBDH困難問題。具體描述過程如下。
挑戰(zhàn)者指定 DBDH的挑戰(zhàn)元組(ga,gb,gc,Z),其中,Z在群G中的取值概率與 (e g,g)abc相同。
Step1敵手 A提供給挑戰(zhàn)者兩個訪問結構W1、W2,挑戰(zhàn)者C運行初始化算法,C輸出系統(tǒng)公鑰PK={e,g,y,Tj(1 <j≤n),E,h()},保存主密鑰
Step2敵手 A 提供一個屬性列表Ω= {a1,a2,a3,… ,an}作為私鑰詢問的輸入列表,要求屬性列表Ω同時不滿足訪問結構W1和W2,所以必定存在一個屬性i∈ [1 ,2,3,… ,n],ai?W1,選擇隨機數(shù)如果或者計算否則返回返回給敵手
Step3敵手A提交兩個明文m0、m1給挑戰(zhàn)者,挑戰(zhàn)者C投擲一枚公平的硬幣b∈ {0 ,1},得到隨機的一個值b,選擇隨機數(shù)計算
Step4敵手A重復Step2和Step3,繼續(xù)私鑰詢問。
Step5敵手A給出對b的猜測值b′∈ {0,1},若b'=b,表明敵手A能以不可忽略的優(yōu)勢攻破方案,即Z=(e g,g)abc,否則,Z為隨機值。
在上述DBDH游戲中,若b'≠b,那么Z為一個隨機值,敵手 A沒有獲得關于消息mb的信息,所以
當敵手A猜測成功,根據(jù)定義知道敵手有ε的優(yōu)勢攻破本方案,所以
綜合敵手的優(yōu)勢為
綜上可知,如果敵手A按照以上的安全模型以不可忽略的優(yōu)勢ε攻破了本文方案,則存在一種能以不可忽略的優(yōu)勢解決 DBDH問題的多項式時間算法。因為不存在一種多項式時間算法能以不可忽略的優(yōu)勢解決DBDH問題,所以不存在能以不可忽略的優(yōu)勢攻破本方案的敵手A,即證明本文所提方案達到了CPA安全。
本文提出了一種基于群簽名的 CP-ABE方案,可以有效解決訪問結構導致的隱私泄露問題。該方案在DBDH困難問題假設下實現(xiàn)CPA安全,可有效保護策略中的隱私信息。但是方案基于訪問結構控制樹的設定有一定的局限性,下一步的研究將就此展開。