李 聰,楊曉元,王緒安
1(武警工程大學(xué) 網(wǎng)絡(luò)與信息安全武警部隊重點實驗室,西安 710086)2(武警工程大學(xué) 密碼工程學(xué)院,西安 710086)
大數(shù)據(jù)時代,大量的數(shù)據(jù)快速產(chǎn)生于不同的來源(例如,智能手機(jī),傳感器,社交網(wǎng)絡(luò)等),傳統(tǒng)的計算機(jī)系統(tǒng)已無法完成對這些數(shù)據(jù)的存儲和處理.隨著云計算的快速發(fā)展,用戶端可以將他們的數(shù)據(jù)存儲到云端,并依靠云服務(wù)器與其他用戶共享數(shù)據(jù).當(dāng)數(shù)據(jù)外包到云端時,終端用戶會失去對數(shù)據(jù)的物理控制,同時,云服務(wù)提供商也不可完全信任.Qin et al.[6]提出了可驗證的外包解密方案,通過建立驗證標(biāo)簽,可有效檢驗云計算結(jié)果的正確性.但因訪問策略以明文形式附加在密文中,訪問策略可能泄露用戶隱私.例如,Alice加密她的數(shù)據(jù)給“眼科醫(yī)生”訪問,那么訪問策略可能包含屬性“眼科”和“醫(yī)生”.如果有人看到這些數(shù)據(jù),雖然無法解密數(shù)據(jù),但是仍然可以猜測,Alice可能是遭受了一些眼科疾病,這就泄漏了Alice的隱私.為了使終端用戶能夠有效控制自己的數(shù)據(jù)訪問,支持隱私保護(hù)的訪問控制方案被提出.
現(xiàn)有的基于屬性訪問控制方案可以處理屬性撤銷問題[3-5].Nishide et al.[8]提出進(jìn)行部分屬性隱藏的訪問策略,但其只能應(yīng)用在特殊的與門結(jié)構(gòu)中.Li et al.[9]應(yīng)用屬性的哈希值代表屬性值,進(jìn)行訪問策略的部分信息隱藏.Lai et al.[11]提出了一個完全安全的部分隱藏訪問策略的CP-ABE方案,該方案僅限于一個特定的訪問策略.Boneh et al.[10]提出隱藏矢量加密的策略隱藏方案.然而,所有這些現(xiàn)有的方案只是運用通配符隱藏了屬性的值,或隱藏加密向量.隱藏屬性值可以在某種程度上保護(hù)用戶隱私,但屬性名也會泄露隱私信息.此外,大多數(shù)部分策略隱藏方案只支持特定的策略結(jié)構(gòu).Yang Kan et al.[7]提出了一個有效隱私保護(hù)的大數(shù)據(jù)訪問控制方案,利用屬性布魯姆過濾器可檢測定位屬性的位置,很好的實現(xiàn)了屬性策略的隱私保護(hù),但是該方案加解密密文隨著策略復(fù)雜性而增加,加密解密數(shù)率慢不適用于小型移動設(shè)備.
針對CP-ABE訪問結(jié)構(gòu)的隱私性和計算效率問題,本文提出了一個支持隱私保護(hù)和減少用戶解密代價的訪問控制方案,利用屬性布魯姆過濾器,簡單的移除屬性匹配函數(shù)來隱藏屬性,實現(xiàn)對訪問策略屬性的完全隱藏(包括屬性名及屬性值),即使解密者也不知道自己的哪些屬性可以解密密文.同時將計算代價大的解密操作外包給云服務(wù)器執(zhí)行,以降低用戶的計算量,為防止云端的錯誤行為或惡意攻擊,提供了轉(zhuǎn)換密文的驗證功能,確保轉(zhuǎn)換密文的正確性.本文運用線性秘密共享方案LSSS中訪問結(jié)構(gòu),不局限在特定的訪問結(jié)構(gòu).此外,在保護(hù)政策隱私下沒有增加任何遠(yuǎn)程訪問的開銷.
定義1.當(dāng)滿足以下兩個條件時,參與方P上的秘密共享方案Π在ZP域上是線性的[6].
1)各方共享的秘密形成一個ZP域上的矩陣;
布魯姆過濾器(BF)是由m位的數(shù)組和k個獨立的哈希函數(shù)組成[7].定義:hi:{0,1}*→[1,m],1≤i≤k.最初設(shè)置所有數(shù)組的位為0,當(dāng)給集合增加一個元素e時,布魯姆過濾器構(gòu)造算法計算元素e的所有位置指數(shù),并設(shè)置數(shù)組中相應(yīng)位置的值為1.如圖1,例如布魯姆過濾器設(shè)置集合{x,y},位上的值通過哈希函數(shù)h1(x),h2(x),h3(x),h1(y),h2(y),h3(y)等的索引設(shè)置為1.
當(dāng)檢測一個元素x是否在集合S中時,ABFQuery算法計算所有的哈希函數(shù)的值{hi(x)}i∈[1,k],獲得數(shù)組中k個位置,如果這k個位置的值都是0,那么,元素x不在集合S中,如果所有位的值都是1,則元素x是可能在集合S中.也有可能元素x?S,但是hi(x)相應(yīng)位的數(shù)值也是1,這稱為假陽性.如圖1中元素w,w?{x,y}但是其相應(yīng)的位也都是1.
圖1 布魯姆過濾器Fig.1 An example bloom filter
定理1.當(dāng)H∞(X|Z)≥log|Y|+2log|1/|時,成對獨立的哈希函數(shù)H:(h:X→Y)是平均(H∞(X|Z),)的強(qiáng)提取器[6].
定義2.大數(shù)據(jù)訪問控制方案由以下五個算法組成:
1)Setup(1λ):該算法輸入安全參數(shù)λ,輸出共公參數(shù)MPK和主私鑰MSK.
2)KeyGen′(MPK,MSK,S):該算法輸入主私鑰MSK、共公參數(shù)MPK和一組屬性S,輸出相應(yīng)私鑰SK′.
3)Encrypt(PK,m,(M,ρ)):該加密算法包括:加密子算法·Enc和屬性布魯姆過濾器構(gòu)造子算法·ABFBuild.
·Enc(MPK,m,(M,ρ)):該算法輸入共公參數(shù)MPK、明文消息m和訪問結(jié)構(gòu)(M,ρ),輸出驗證密鑰VK=Lab和密文CT.
·ABFBuild(M,ρ):該算法輸入訪問策略(M,ρ),輸出屬性布魯姆過濾器ABF.
4)KeyGenout(MPK,MSK,S):該算法輸入共公參數(shù)MPK,主私鑰MSK和屬性集S,輸出轉(zhuǎn)換私鑰為SK=z,轉(zhuǎn)換公鑰為TK.
5)Decrypt(M,ABF,TK,SK,CT):該解密算法是由三個子算法組成·ABFQuery,·Tranformout和·Dec.
·ABFQuery(ABF,MPK,S):該ABF詢問算法輸入屬性集S、屬性布魯姆過濾器和共公參數(shù)MPK.輸出重構(gòu)的屬性映射函數(shù)ρ′={(rownum,att)}S,ρ′可以展現(xiàn)所有屬性att∈S在訪問矩陣中的行數(shù).
·Tranformout(TK,CT,(M,ρ′)):該數(shù)據(jù)解密算法輸入密鑰TK和密文CT,還有訪問矩陣和重構(gòu)的映射函數(shù)ρ′.可以獲得轉(zhuǎn)換密文CTout=(U,Q,CSE,C).
·Dec(SK,CTout):該數(shù)據(jù)解密算法輸入密鑰SK和密文CTout,然后驗證轉(zhuǎn)換結(jié)果的正確性,輸出⊥或者恢復(fù)明文得m.
本文方案是不可區(qū)分的選擇明文攻擊安全,定義安全游戲模型,敵手A和挑戰(zhàn)者模擬器B.
Init:敵手選擇一個挑戰(zhàn)訪問結(jié)構(gòu)(M*,ρ*),M*是l*×n*的矩陣,ρ*是將矩陣M*中的每一行映射給某一屬性.
Setup:挑戰(zhàn)者運行初始化算法,把共公參數(shù)PK傳給敵手A.
Phase1:敵手發(fā)布與屬性Satt有關(guān)的相關(guān)私鑰的詢問.
1)假如Satt滿足(M*,ρ*),則終止詢問.
2)如果Satt不滿足(M*,ρ*),則挑戰(zhàn)者生成屬性相關(guān)的私鑰發(fā)送給敵手A.
Challenge:敵手A提交兩個等長的消息m0和m1給挑戰(zhàn)者,挑戰(zhàn)者B選擇隨機(jī)數(shù)b∈{0,1},并在挑戰(zhàn)訪問結(jié)構(gòu)(M*,ρ*)下加密消息mb,最后生成挑戰(zhàn)密文CT*發(fā)送給敵手A.
Phase2:階段2繼續(xù)進(jìn)行階段1相同的詢問.
Guess:敵手輸出猜測的b′,敵手成功的優(yōu)勢為Adv(A)=|Pr[b′=b]-1/2|.
本文訪問控制方案是在方案[6]的基礎(chǔ)上構(gòu)造的,本文的訪問策略隱私保護(hù)方法,可以保護(hù)任何的CP-ABE方案(基于LSSS結(jié)構(gòu)的訪問策略).
1)初始化算法
2)密鑰生成算法
每一個數(shù)據(jù)使用者都應(yīng)該在屬性權(quán)威中心登記和身份鑒定,如果有數(shù)據(jù)使用者不合法,則該算法立刻終止.若合法,則屬性權(quán)威中心會根據(jù)使用者的角色,在屬性空間U中設(shè)置一組屬性S,并產(chǎn)生相應(yīng)的私鑰SK′.
3)加密算法
C=R·e(g,g)αs,C′=gs,
傳統(tǒng)的布魯姆過濾器只提供了成員查詢,我們不僅需要評估一個屬性是否在訪問策略中,還需要定位屬性在訪問矩陣中的精確行數(shù).此外,由于假陽性性能,傳統(tǒng)布魯姆過濾器不能應(yīng)用于屬性定位.為此,我們采用了亂碼布魯姆過濾器[7]作為我們的屬性定位算法.
圖2 LSSS訪問結(jié)構(gòu)和屬性布魯姆過濾器Fig.2 LSSS access policy and attribute bloom filter
雖然亂碼屬性布魯姆過濾器實現(xiàn)假陽性低得多,它仍然是只對成員查詢.為了精確地將屬性定位到相應(yīng)訪問矩陣中的行數(shù),我們使用一個特定的字符串作為的亂碼布魯姆過濾器元件.如圖3,元素是兩個固定長度字符串的串聯(lián):Lrownum表示行數(shù),Latt表示屬性,Lrownum+Latt=λ.
圖3 屬性字符串Fig.3 Attribute string
ABFBuild(M,ρ):該算法輸入訪問策略(M,ρ),然后,結(jié)合訪問策略中的屬性和該屬性所在的行數(shù),構(gòu)造Se={i‖atte}i∈[1,l],即atte=ρ(i),行數(shù)和屬性的二進(jìn)制位的左邊添加0字符串達(dá)到最大位.在屬性布魯姆過濾器中,每次在Se中添加一個元素e,該算法首先利用(k,k)秘密共享方案,隨機(jī)生成k-1個λ位的字符串r1,e,r2,e,…,rk-1,e,并設(shè)置rk,e=r1,e⊕r2,e⊕…⊕rk-1,e⊕e,來共享屬性e.然后計算:
H1(atte),H2(atte),…,Hk(atte)
每一個Hi(atte)(i∈[1,k])代表屬性e在ABF中的一個位置索引.如圖4,在ABF中存儲第i個屬性,通過Hi(atte)索引共享的ri位置如下:
r1,e→H1(atte),…,rk,e→Hk(atte)
假如繼續(xù)在ABF增加元素e2,當(dāng)新增加的屬性位置與已經(jīng)存在的屬性的位置相同時,如圖4,即Hi(atte1)與Hj(atte2)相同,那么令ri,e1=rj,e2.如果改變屬性e2的位置,解密時就不能恢復(fù)出屬性e2.
圖4 ABE的例子Fig.4 An example of ABF
最后,終端用戶將密文數(shù)據(jù)(CT,ABF,(M,ρ))外包存儲在云服務(wù)器上.
4)外包密鑰生成算法
5)解密算法
ABFQuery(ABF,MPK,S):該ABF詢問算法輸入屬性集S、屬性布魯姆過濾器ABF和共公參數(shù)PK.對于所有數(shù)據(jù)使用者擁有的屬性att∈S,該算法在首先經(jīng)過哈希計算其位置目錄,得H1(att),H2(att),…,Hk(att).然后,從ABF中獲得與Hi(att)相對應(yīng)的位置字符串,
H1(atte)→r1,e,…,Hk(atte)→rk,e
然后,計算e:
e=r1,e⊕r2,e⊕…⊕rk-1,e⊕rk,e
=r1,e⊕r2,e⊕…⊕rk-1,e⊕r1,e⊕r2,e⊕…⊕rk-1,e⊕e
屬性e的格式如圖3一樣,e=i‖atte,去除Latt左邊的所有0位,得到屬性atte的字符串,如果屬性atte與屬性att不相同,則此屬性不在訪問結(jié)構(gòu)中.否則,屬性att在訪問策略中,再去除Lrownum左邊所有的0位,得到屬性att在訪問矩陣中的行數(shù),如圖5.然后輸出重構(gòu)的屬性映射ρ′={rownum,att}att∈S.
圖5 元素抽象的字符串Fig.5 String abstraction from the element
Q=e(C′,g)
可以獲得轉(zhuǎn)換密文CTout=(U,Q,CSE,C).
定理2.在q-BDHE假設(shè)下,多項式時間敵手不能利用挑戰(zhàn)訪問矩陣選擇性攻擊我們的大數(shù)據(jù)訪問控制方案.
證明:本文是在方案[6]的基礎(chǔ)上建立的,在q-BDHE假設(shè)下,方案[6]已經(jīng)證明是(選擇性)CPA安全.在方案[6]中,假如有敵手A在選擇性安全游戲中有不可忽略的優(yōu)勢ε=AdvA.可以在q-BDHE假設(shè)下,通過構(gòu)建模擬器B計算其不可忽略優(yōu)勢.
因此,證明本文大數(shù)據(jù)訪問控制方案的安全性.假如有敵手A在選擇性安全游戲中有不可忽略的優(yōu)勢ε=AdvA,我們同樣可以通過構(gòu)建模擬器B′來計算敵手的不可忽略優(yōu)勢.B′的結(jié)構(gòu)與B相同,B′選擇一些屬性布魯姆過濾器的隨機(jī)預(yù)言模型.在密鑰詢問階段,階段與B.Phase1相同,階段與B.Phase2相同,不同點在挑戰(zhàn)階段,B′的加密算法是由兩個子算法組成,對于布魯姆過濾器構(gòu)建算法的模擬,模擬器B′在ABFBuild的預(yù)言模型下詢問;而加密算法相同.由于敵手是在初始化階段之前選擇挑戰(zhàn)矩陣,所以,構(gòu)建ABF與明文的選擇無關(guān).這說明,ABFBuild不會增加敵手在安全游戲中的優(yōu)勢.類似方案[6]的證明,我們可以證明敵手在q-BDHE假設(shè)下安全攻擊的優(yōu)勢可忽略.
定理3.多項式時間敵手具有安全參數(shù)λ的攻擊情況下,我們的大數(shù)據(jù)訪問控制方案具有隱私保護(hù)安全.
證明:在本文方案中,只有數(shù)據(jù)使用者可以從屬性空間U獲取屬性字符串,敵手是不知道加密策略中的屬性串的,也不可能在多項式時間內(nèi)進(jìn)行蠻力攻擊猜測屬性字符串.所以,敵手不能獲得私鑰信息,通過由矩陣?和布魯姆過濾器ABF組成的訪問策略.
數(shù)據(jù)使用者僅可以檢測他們的屬性是否在訪問策略中,但是他們不可以檢測系統(tǒng)屬性空間中的所有屬性,除非數(shù)據(jù)使用者擁有屬性空間中的所有屬性,或者多個數(shù)據(jù)使用者進(jìn)行合謀攻擊.由于ABF是由λ位字符串嵌入到布魯姆過濾器的亂碼布魯姆過濾器構(gòu)建的,所以ABF的假陽性概率可以減少到1/2λ.
本文方案與方案[6,7]加密解密的對比如表1,在表中l(wèi)表示LSSS訪問結(jié)構(gòu)中行數(shù),lH表示CRH大小,P-P Policy表示
表1 方案性能對比
Table 1 Programme performance comparison
schemeP-P PolicyOut CT SizeOut Key OpLocal Dec DC[6]×(1+2l)|G|+lH12[7]W-H-P(1+2l)|G|×2n+1OursW-H-P(1+2l)|G|+lH11
策略隱私保護(hù),W-H-P表示訪問策略全部隱藏,Out CT Size表示外包密文大小,Out Key Op表示計算生成外包密鑰的模指數(shù)運算量,Local Dec Op 代表當(dāng)?shù)亟饷茈p線性對運算量,Ver表示部分解密密文結(jié)果的驗證.
本文提出了一個高效和細(xì)粒度數(shù)據(jù)訪問控制方案,利用方案[7]的屬性布魯姆過濾器,可以隱藏整個屬性的訪問策略.由于屬性基加密方案的缺點,解密計算量隨著屬性增加而線性增加,這給合法用戶解密帶來巨大的挑戰(zhàn)和困難.為了提高解密效率,本文提出把解密過程外包給云服務(wù)器進(jìn)行部分解密,然后通過驗證密鑰驗證部分解密的正確性.本文證明是(選擇性)CPA安全.