李學(xué)俊,張丹,李暉
(西安電子科技大學(xué)網(wǎng)絡(luò)與信息安全學(xué)院,陜西 西安 710071)
隨著社會與科技的發(fā)展,人們越來越多地希望能跨平臺、跨地理位置地訪問或修改數(shù)據(jù),對外部數(shù)據(jù)云存儲的需求前所未有的高漲。然而,將具有不同敏感級別的數(shù)據(jù),存儲在外部云存儲服務(wù)器上,為人們帶來便利好處的同時,也帶來了安全問題[1]。
首先,大量數(shù)據(jù)托管存儲在第三方營運(yùn)的大型云端數(shù)據(jù)中心,而云端服務(wù)器并不完全可信,且數(shù)據(jù)的敏感程度不同,因此需要使用屬性基加密ABE(attribute-based encryption)方案加密數(shù)據(jù),實(shí)現(xiàn)高效的細(xì)粒度訪問控制[2]。其次,對敏感數(shù)據(jù)的訪問并非一成不變,比如接入云端存儲服務(wù)器的各類設(shè)備數(shù)量眾多,計(jì)算能力弱,且往往因隨機(jī)動態(tài)變化引起屬性頻繁的變化,因此需要實(shí)現(xiàn)高效的屬性撤銷機(jī)制,并盡可能減少終端的計(jì)算量。
2011年,Waters[3]首次提出基于線性秘密共享方案(LSSS, linear secret sharing scheme)型訪問結(jié)構(gòu)的CP-ABE方案(ciphertext-policy ABE)。相較于樹型訪問結(jié)構(gòu),LSSS型訪問結(jié)構(gòu)更靈活,且解密效率更高。但該方案只有一個可信中央機(jī)構(gòu)CA(central authority),由其管理所有用戶的屬性和密鑰分發(fā)工作,工作量巨大,影響系統(tǒng)效率。
在屬性基加密方案中,用戶和屬性往往是一對多或多對一的關(guān)系,復(fù)雜度較高,這增加了屬性撤銷機(jī)制的研究難度。為了實(shí)現(xiàn)屬性撤銷,一些可撤銷的ABE方案被提出[4],但這些方案均未能實(shí)現(xiàn)屬性的即時撤銷。Luan等[5]引入屬性撤銷列表和在線第三方,第一次實(shí)現(xiàn)了屬性的即時撤銷?,F(xiàn)有的基于第三方的屬性撤銷都能實(shí)現(xiàn)即時撤銷,主要方法有以下幾種:基于版本號和代理重加密[6-10]、基于屬性群和KEK(key encryption key)樹[11-12]、基于中國剩余定理[13]等。Wu等[7]通過版本號和代理重加密技術(shù)實(shí)現(xiàn)屬性撤銷,利用版本號記錄系統(tǒng)主密鑰的演化過程,并將此版本號和系統(tǒng)密鑰、用戶密鑰和重加密密文進(jìn)行關(guān)聯(lián),撤銷操作發(fā)生后,授權(quán)機(jī)構(gòu)將系統(tǒng)版本號加 1,可信第三方需更新所有與版本號相關(guān)的密鑰和密文。Li等[12]通過改進(jìn)Hur[11]的方案,基于屬性群和 KEK樹及半可信第三方為每個屬性生成相應(yīng)的屬性群密鑰,對密文進(jìn)行重加密,并生成頭部信息發(fā)送給用戶,撤銷用戶由于不能恢復(fù)屬性群密鑰,不能正確解密。但該方案中KEK樹的總節(jié)點(diǎn)會隨著用戶數(shù)量的增多而增多,高度的增長也會導(dǎo)致用戶路徑密鑰的增長。同時該方案仍需更新撤銷屬性的屬性群密鑰,需要重加密密文。強(qiáng)衡暢等[13]引入中國剩余定理求解同余式方程組的方法,替換了求解 KEK 樹上包含屬性群所有用戶的最小子樹,使得密KEK的時間復(fù)雜度降到常數(shù)階。但該方案仍需更新屬性群密鑰,重加密密文。
綜上所述,基于可信或半可信第三方實(shí)現(xiàn)CP-ABE方案的撤銷機(jī)制,大多數(shù)工作集中在密鑰更新和撤銷信息通過重加密嵌入到密文中。面對海量數(shù)據(jù)如何降低計(jì)算量,有學(xué)者[14-15]通過引入多項(xiàng)式秘密共享和廣播撤銷技術(shù)實(shí)現(xiàn)撤銷。由于多項(xiàng)式的階是固定的,限制了每個屬性的撤銷用戶上限,同時秘密值的求解時間也與多項(xiàng)式的選取有關(guān)。
本文將構(gòu)造一種基于半可信第三方、可高效撤銷的屬性基加密方案(以下簡稱本文方案),該方案不需要用戶更新密鑰和重加密密文,能夠?qū)崿F(xiàn)用戶屬性撤銷及用戶撤銷。本文主要工作與創(chuàng)新點(diǎn)如下:1) 構(gòu)造了一種基于半可信第三方的多機(jī)構(gòu)CP-ABE方案,方案中使用云存儲服務(wù)器兼任半可信第三方,可降低系統(tǒng)通信開銷;2)引入RSA密鑰管理機(jī)制實(shí)現(xiàn)屬性認(rèn)證,為每個屬性分配一對RSA密鑰。用戶在撤銷某個屬性或撤銷用戶時,只需要更新 RSA屬性認(rèn)證密鑰即可,不需要更新密文,且密鑰更新的計(jì)算量很少,極大地降低了撤銷引起的計(jì)算量;3) 在實(shí)現(xiàn)撤銷機(jī)制的同時,保證了與文獻(xiàn)[3]同樣的安全程度,并基于判定性q階雙線DH指數(shù)(q-BDHE, decisional q-parallel Bilinear Diffie Hellman exponent)假設(shè)證明了安全性,同時保證了抗串謀攻擊和前后向安全性。
假設(shè)有共享方案∏,包含P個實(shí)體用戶,若方案∏滿足下列條件,則稱其是線性秘密共享方案[16]。
1) 域ZP中的向量可以表示每個實(shí)體所擁有的秘密份額。
2) 對于每個共享方案∏,都存在一個l行n列的共享生成矩陣M。ρ(i)表示將矩陣的第i行映射為某一實(shí)體隨機(jī)選取共享,構(gòu)造向量那么實(shí)體用戶擁有的秘密定義為
上述定義的線性秘密共享方案滿足線性重構(gòu)性質(zhì),設(shè)有一種LSSS方案∏,S為合法的授權(quán)集。定義且即表示M中與屬性有關(guān)的行。假設(shè){λi}能有效分享s,那么最終一定能夠找到常數(shù)集合{wi}滿足
令ZN為模N=pq的等價(jià)類,其中p和q是大素?cái)?shù),且p≠q。對任意非零元素成立,當(dāng)且僅當(dāng)a存在一個乘法逆元b,即
首先為系統(tǒng)屬性集中的每個屬性xi選擇安全的素?cái)?shù)并且滿足然后計(jì)算qi使假設(shè)是公開參數(shù),是私有參數(shù)。
選擇隨機(jī)數(shù)h滿足2<h<N-1,并且gcd(h,N)=1。計(jì)算與用戶的屬性集A相關(guān),計(jì)算與訪問結(jié)構(gòu)中的屬性集P相關(guān)。其中當(dāng)xi∈A時;當(dāng)xi?A時ai=0。同樣,當(dāng)x∈P時,bi=1;當(dāng)xi?P時
屬性集A包含訪問結(jié)構(gòu)中的屬性集P,當(dāng)且僅當(dāng)是一個整數(shù)[17],其中且有
本文將物聯(lián)網(wǎng)技術(shù)與車輛維修管理相結(jié)合,構(gòu)造了一個車輛維修管理系統(tǒng)[18]。傳統(tǒng)維修過程中,車輛在維修時,由于維修本身所具有的私密性,無法保證車主對維修人員的相關(guān)行為實(shí)施監(jiān)督,因此營運(yùn)車輛維修質(zhì)量得不到充分的保障。本文構(gòu)造的車輛維修管理系統(tǒng)首先記錄車輛的車牌號、車主等基本信息及維修類別和接車員。車輛進(jìn)入維修區(qū)域后,系統(tǒng)使用無線射頻技術(shù)收集維修數(shù)據(jù),記錄現(xiàn)場維修人員和負(fù)責(zé)人的信息及維修工作。維修完成后進(jìn)行車輛性能檢測,記錄檢測信息,形成車輛電子維修檔案。因此車主、交通運(yùn)輸管理部門、維修企業(yè)、檢測機(jī)構(gòu)均可共享車輛維修信息,車主還可在線監(jiān)督維修過程,維修人員可提供遠(yuǎn)程維修指導(dǎo)等,極大地方便了生活。
實(shí)現(xiàn)上述系統(tǒng)必須解決以下問題[19]:1) 系統(tǒng)中的電子維修檔案存儲在云端服務(wù)器,但云服務(wù)器一般是不可信的,且數(shù)據(jù)的敏感程度不同,因此需要使用ABE加密數(shù)據(jù);2)物聯(lián)網(wǎng)具有實(shí)時性、動態(tài)性等特點(diǎn),終端節(jié)點(diǎn)會頻繁動態(tài)地變化,且用戶共享屬性。如果一個用戶撤銷了某個屬性,其他用戶對撤銷屬性的使用也會受到影響, 因此必須實(shí)現(xiàn)高效的屬性撤銷機(jī)制。
如圖1所示,車輛維修管理系統(tǒng)共有6個實(shí)體,分別如下。
1) 可信中央授權(quán)機(jī)構(gòu)CA,負(fù)責(zé)為系統(tǒng)中的用戶發(fā)布唯一的身份標(biāo)識 uid,為 AA(attribute authority)發(fā)布唯一的身份標(biāo)識aid;生成系統(tǒng)公共參數(shù),完全可信。
2)k個屬性授權(quán)機(jī)構(gòu)AA,負(fù)責(zé)生成用戶的屬性私鑰,部分AA可能被腐化。
3) 云存儲服務(wù)器CSS(cloud storage server),負(fù)責(zé)存儲TU(terminal user)上傳的數(shù)據(jù)密文。CSS是半可信的,它有可能會窺探用戶數(shù)據(jù),但是會嚴(yán)格執(zhí)行CA分發(fā)的工作。
4) 半可信第三方SM(semi-trusted mediator),負(fù)責(zé)用戶的屬性認(rèn)證。用戶訪問密文時,SM 首先認(rèn)證用戶是否擁有訪問結(jié)構(gòu)中的全部屬性,方案中使用CSS兼任半可信第三方。
5) 終端用戶TU,表示系統(tǒng)接入設(shè)備,其加密消息會上傳至CSS。
6) 數(shù)據(jù)用戶DU(data user),當(dāng)且僅當(dāng)在SM處認(rèn)證通過并滿足訪問結(jié)構(gòu)的用戶才能得到預(yù)解密密鑰。
圖1 車輛維修管理系統(tǒng)框架
設(shè)G和GT為階為素?cái)?shù)p的雙線性群,e為雙線性映射,g為生成元,為安全的散列函數(shù)。用戶集用表示,系統(tǒng)屬性集用表示,每個用戶的屬性空間為。設(shè)共有k個屬性管理中心,屬性集合中的屬性分k個不相交的集合。
1) 系統(tǒng)建立階段
CASetup(λ)→{Pk,MK,uid,aid}。CA給每個授權(quán)機(jī)構(gòu)分發(fā)唯一的身份標(biāo)識 aid,給每個用戶唯一的身份標(biāo)識 uid。CA 選擇素?cái)?shù)p且p≠q,計(jì)算N=pq,為每個屬性選擇隨機(jī)數(shù)pi使,計(jì)算qi滿足。選擇隨機(jī)數(shù)h使 2<h<N-1,且滿足再隨機(jī)選擇作為主密鑰,生成系統(tǒng)公私鑰對,如式(1)和式(2)所示。
2) 用戶身份私鑰生成階段
IDKeyGen(MK,uid)→SKuid。CA為每個用戶選擇隨機(jī)數(shù),根據(jù)每個用戶擁有的屬性計(jì)算CA根據(jù)系統(tǒng)屬性計(jì)算輸出用戶身份私鑰
3) 用戶屬性私鑰生成階段
CA 通過安全通道將S0發(fā)給每個用戶,將S1、S2、DA和每個用戶的Duid發(fā)給云存儲服務(wù)器,每個AA將SKaid,uid也發(fā)給云存儲服務(wù)器用于部分解密。
Encrypt(PK,(M,ρ) ,m)→CT 。終端對明文m隨機(jī)選取一對對稱密鑰km,用km和安全的對稱加密算法加密m得到
4) 加密明文
設(shè)訪問結(jié)構(gòu)LSSS矩陣(M,ρ(i)),M是l×n矩陣,其中,l代表屬性數(shù)量,函數(shù)ρ(i)是第i行與相應(yīng)屬性的映射函數(shù)。隨機(jī)選擇一個加密的秘密s∈ZP,隨機(jī)向量其中用來分享秘密s。對于計(jì)算,其中Mi是矩陣M的第i行。然后隨機(jī)選擇,輸入PK,利用加密km得到密文(設(shè)訪問結(jié)構(gòu)中用到的屬性集記為P),如式(5)所示。
5) 屬性認(rèn)證
IDAuth(uid,Λ)。用戶發(fā)送自己的身份標(biāo)識 uid和屬性列表即(uid,Λ)給云存儲服務(wù)器進(jìn)行屬性認(rèn)證。
服務(wù)器用從 CA處得到的用戶私鑰Duid和密文中的eP及用戶發(fā)送的屬性列表為用戶計(jì)算Kuid值,即
服務(wù)器再用從 CA處得到的DA和密文中的eP及系統(tǒng)所有屬性集A進(jìn)行如下計(jì)算。
服務(wù)器將2次計(jì)算的結(jié)果進(jìn)行比較,若相等說明用戶擁有訪問結(jié)構(gòu)中的所有屬性,則使用uid的屬性私鑰為用戶進(jìn)行部分解密;若不相等則輸出⊥。
6) 預(yù)解密
7) 用戶解密
8) 用戶撤銷
9) 屬性撤銷
定理1假定q-BDHE問題是困難的,敵手的挑戰(zhàn)訪問結(jié)構(gòu)是是**
l×n的矩陣且則不存在多項(xiàng)式時間的敵手能選擇明文攻破本方案。
證明采用反證法,假設(shè)存在概率多項(xiàng)式時間(PPT, probabilistic polynomial time)的敵手A,能夠在安全模型下以不可忽略的優(yōu)勢攻破方案,假設(shè)敵手A選擇一個行列數(shù)都不超過q的矩陣M*,構(gòu)造一個模擬器B以不可忽略的優(yōu)勢解決q-BDHE問題。
建立模擬器B隨機(jī)選取α′∈Zp,對每個屬性選擇一個隨機(jī)數(shù)zx,模擬器B按如下規(guī)則設(shè)計(jì)H。如果;如果
階段1在該階段模擬器B響應(yīng)敵手A的密鑰詢問。敵手A發(fā)送(uid,said)給模擬器 B進(jìn)行詢問,模擬器B選擇隨機(jī)數(shù)r∈Zp,計(jì)算S2=
挑戰(zhàn)敵手A給模擬器模擬器B提供2個等長的消息m0和m1,模擬器 B擲一枚硬幣查看結(jié)果b∈{0,1},返回對消息mb的加密密文,如式(8)所示。
階段2重復(fù)階段1。
猜測敵手A提交對b的猜測b′。如果T是有效的元組,那么模擬器B做出了準(zhǔn)確模擬,則式(9)所示的等式成立。
如果T是群GT中的一個隨機(jī)元素,則稱消息mb對敵手是隱藏的,并且有故有
即模擬器 B能夠以一個不可忽略的優(yōu)勢解決q-BDHE問題,但是這一問題已被證明是困難的,所以假設(shè)不成立,從而證明方案達(dá)到了選擇明文安全性,證畢。
本文方案中為每個用戶分配一個唯一的身份標(biāo)識 uid,從不同屬性管理中心獲得的屬性私鑰通過該uid綁定。當(dāng)多個用戶合謀攻擊時,即使屬性集滿足訪問結(jié)構(gòu),若不同用戶的身份標(biāo)識不同,服務(wù)器只尋找認(rèn)證用戶的 uid的私鑰進(jìn)行部分解密,因此多個用戶共謀也不能得到預(yù)解密密文。
當(dāng)撤銷/添加用戶,或用戶撤銷/添加某個屬性時,方案保證了前向安全性和后向安全性。當(dāng)某一用戶的屬性被撤銷時,CA為該屬性計(jì)算新的qj,并為該用戶和其他擁有該屬性但未撤銷的用戶更新Duid發(fā)給服務(wù)器。因此撤銷屬性的用戶在下一次進(jìn)行屬性認(rèn)證時,服務(wù)器用更新后的Duid進(jìn)行計(jì)算,若與DA計(jì)算的結(jié)果不相等則不能認(rèn)證成功,從而撤銷屬性的用戶不能解密密文,因此前向安全性得到保證。另一方面,當(dāng)系統(tǒng)新加入用戶或者用戶添加某個屬性,服務(wù)器利用更新的Duid計(jì)算的結(jié)果能通過身份認(rèn)證,從而用戶可以得到部分解密結(jié)果進(jìn)而解密得到密文,因此后向安全性得到保證。
方案性能評估從理論分析和實(shí)驗(yàn)仿真兩方面進(jìn)行[20]。理論分析方面,將本文方案與經(jīng)典的撤銷方法版本號、KEK樹和中國剩余定理進(jìn)行對比,分析各方案的存儲開銷、通信開銷和計(jì)算開銷,得到結(jié)果列表;實(shí)驗(yàn)仿真方面,在相同環(huán)境中進(jìn)行實(shí)驗(yàn)仿真,分析密文密鑰更新時間隨著撤銷屬性個數(shù)增長所需要的時間,得到結(jié)果圖。
比較各方案的功能、存儲開銷、通信開銷和計(jì)算開銷時,由于存儲開銷與用戶的私鑰長度有關(guān),通信開銷與密文長度有關(guān),只需要對比各方案的密文長度和私鑰長度;計(jì)算開銷主要對比因撤銷引起的密文密鑰更新的計(jì)算量。由于用戶使用移動終端資源有限,因此方案用戶私鑰應(yīng)越短越好,又由于在海量數(shù)據(jù)環(huán)境下,撤銷引起的更新計(jì)算量也應(yīng)越小越好。
從表1可以看出,在存儲開銷方面,上述對比方案的用戶私鑰長度都與用戶屬性個數(shù)相關(guān)。文獻(xiàn)[11]方案和文獻(xiàn)[12]方案使用KEK樹方法實(shí)現(xiàn)撤銷,因此需要存儲額外的 KEK密鑰長度。文獻(xiàn)[17]方案和文獻(xiàn)[19]方案使用版本號實(shí)現(xiàn)撤銷,文獻(xiàn)[13]方案使用中國剩余定理失效撤銷由于這些私鑰需要在用戶本地存儲,因此會給用戶帶來巨大的存儲開銷,不適合移動終端的使用環(huán)境。與上述方案不同,本文方案中引入半可信第三方,通過外包解密將用戶的一部分私鑰委托給第三方保存并解密,用戶本地只需存儲一個|P|長度的私鑰,極大地減輕了用戶存儲的負(fù)擔(dān)。在通信開銷方面,本文方案在密文長度上比文獻(xiàn)[7]方案、文獻(xiàn)[12]方案小了nc個G群元素長度,與文獻(xiàn)[11]方案、文獻(xiàn)[13]方案相比只增加了一個可以忽略不計(jì)的整數(shù)項(xiàng)便實(shí)現(xiàn)了高效的屬性撤銷,因此本文方案在實(shí)現(xiàn)撤銷功能的同時并沒有增加通信開銷。
表1 存儲開銷和通信開銷性能對比
在比較計(jì)算開銷時,由于群G和GT上模乘運(yùn)算開銷遠(yuǎn)遠(yuǎn)小于模指數(shù)運(yùn)算和雙線性對運(yùn)算開銷,因此計(jì)算開銷主要考慮群G和GT上的模指數(shù)和雙線性對運(yùn)算。由于方案重點(diǎn)在于實(shí)現(xiàn)屬性撤銷功能,以下主要對比屬性撤銷后,密鑰更新和密文更新這兩階段的計(jì)算開銷。
由表2可看出,文獻(xiàn)[7]方案和文獻(xiàn)[9]方案使用版本號實(shí)現(xiàn)撤銷,當(dāng)有屬性撤銷時,AA為該屬性選擇新的版本號,因此需要更新用版本號標(biāo)記的所有相關(guān)密鑰。文獻(xiàn)[7]方案密文只需要更新撤銷屬性的部分密文即可,而文獻(xiàn)[9]方案密文更新階段相當(dāng)于重新進(jìn)行一次屬性基加密。文獻(xiàn)[11]方案和文獻(xiàn)[12]方案使用KEK樹實(shí)現(xiàn)撤銷,因此除了更新撤銷屬性相關(guān)的密鑰外,還需要尋找能重新覆蓋撤銷屬性所對應(yīng)的新屬性群的所有用戶的最小子集,更新所有的密文需要的時間復(fù)雜度為O(n)。文獻(xiàn)[13]引入中國剩余定理雖然減少了密鑰更新時間,但是密文更新階段相當(dāng)于進(jìn)行一次屬性基加密,運(yùn)算量大。本文方案在密文更新時的計(jì)算開銷為零,在密鑰更新時的計(jì)算量為撤銷屬性的模乘運(yùn)算,即更新RSA部分私鑰,其計(jì)算量可忽略不計(jì)。綜上所述,本文方案具有更高的撤銷效率。
表2 撤銷引起的計(jì)算開銷性能對比
本節(jié)實(shí)驗(yàn)仿真對本方案和文獻(xiàn)[7]方案和文獻(xiàn)[12]方案在屬性撤銷后密鑰和密文的更新時間進(jìn)行評估。實(shí)驗(yàn)環(huán)境配置:Intel(R) Core(TM) i5-7400 CPU @3.00GHz,四核,8.00 GB RAM,Windows 10操作系統(tǒng)。仿真程序基于JPBC庫,采用Java語言。撤銷屬性數(shù)目選取2、4、6、8、10共5個參考點(diǎn),并編寫時間測量函數(shù)測量這些參考點(diǎn)的密鑰和密文的更新時間。具體仿真結(jié)果如圖2和圖3所示。
圖2 密鑰更新時間
圖2和圖3描述的是屬性撤銷后,隨著撤銷屬性個數(shù)的增長,更新密鑰和密文所需要的時間變化情況。由圖可看出,本方案的密鑰更新時間比文獻(xiàn)[7]方案和文獻(xiàn)[12]方案的時間大大減少,只需要更新RSA部分私鑰即可。文獻(xiàn)[12]方案由于引入KEK樹密鑰,因此比文獻(xiàn)[7]方案的版本號密鑰需要更多的計(jì)算量。在密文更新方面,本文方案不需要更新密文,文獻(xiàn)[7]更新撤銷屬性部分密文,文獻(xiàn)[12]方案全部更新,因此從3圖可看出文獻(xiàn)[12]方案密文更新時間更長。綜上所述,本文提出的撤銷方案相比較現(xiàn)有的版本號和KEK重加密方案具有更高的效率。
圖3 密文更新時間
海量數(shù)據(jù)托管存儲在第三方營運(yùn)的大型云端數(shù)據(jù)中心,帶來便利的同時,也帶來安全問題。針對這個問題,本文構(gòu)造了一種基于半可信第三方的高效撤銷的屬性基加密方案,實(shí)現(xiàn)了撤銷用戶和用戶屬性級別的撤銷。所提方案的特點(diǎn)是引入 RSA屬性認(rèn)證,不需要用戶更新密鑰,也不需要重加密密文,適用于屬性變更頻繁的海量數(shù)據(jù)的網(wǎng)絡(luò)環(huán)境。撤銷權(quán)限由CA控制,屬性認(rèn)證由半可信第三方執(zhí)行。屬性撤銷后,CA只需更新RSA屬性認(rèn)證部分密鑰即可,極大地減少了撤銷帶來的計(jì)算量,用戶不需要參與密鑰更新,因此也減少了接入設(shè)備的計(jì)算量,同時保證了前后向安全性和抗串謀攻擊。最后給出了所提方案的理論分析和實(shí)驗(yàn)分析,說明了本文提出的撤銷方法更適用于海量數(shù)據(jù)環(huán)境。