柳欣,徐秋亮,張斌,張波
(1. 山東青年政治學院信息工程學院,山東 濟南 250103;
2. 山東省高校信息安全與智能控制重點實驗室(山東青年政治學院),山東 濟南 250103;3. 山東大學軟件學院,山東 濟南 250101;4. 濟南大學信息科學與工程學院,山東 濟南 250022)
當前,云服務模式因其在運算能力強、存儲空間無限、容易擴展和按需提供服務[1]等方面的優勢而逐漸贏得企業和個人用戶的青睞。在各類云應用系統(如分布式醫療系統[2-3]、企業計算[4]等)的設計中,需要著重考慮用戶的隱私保護和細粒度訪問控制問題。對此,屬性認證技術提供了較好的解決方案。在屬性認證方案中,認證過程通常由用戶對某項服務的請求觸發。一旦服務提供商(SP, service provider)接收到該項請求,就會返回認證所需的屬性要求(或稱為訪問結構)。此時,用戶向SP提供自己掌握這些屬性的證明。若證明有效,用戶將得到后者的訪問授權。在整個認證過程中,用戶不需要揭示自己具體使用的屬性集合。相對于傳統的基于公鑰的認證[5-7],屬性認證的最大優勢是允許系統管理者根據用戶屬性為用戶群體中的每個成員定制訪問權限,使不同用戶可以利用屬性私鑰訪問不同的敏感數據或服務。
在文獻[3]中,Zhou等提出一個病人自我可控的隱私保護屬性認證方案。該方案定義了3個隱私保護等級。1)得到病人直接授權的醫生既能訪問病人健康信息,也能實現對病人的身份認證。2)得到病人間接授權的醫生和研究機構僅能訪問病人健康信息。3)未得到授權的人將無法獲得病人的健康信息。然而,Zhou等的方案僅支持d-out-of-n門限認證策略。2014年,Lian等[8]指出在許多情況下,認證策略并非總是靜態的。為此,提出一個支持動態認證策略的屬性認證方案。該方案可視為Maji等[9]屬性簽名(ABS, attribute-based signatures)方案的直接應用。此后,Li等[4]指出某些應用要求將用戶集合劃分為多個不同的小組,同時為組內用戶分配不同的屬性。在認證過程中,要求同組的多個成員對各自的屬性私鑰進行合并。為此,通過對Maji等[9]ABS方案做出擴展,Li等提出一個適合于企業計算環境的合作屬性認證方案。2015年,Yang等[10]提出基于一次性屬性樹的屬性認證方案,但缺點是:1) 用戶群體是采用靜態方式建立的,因此不允許動態增加新的用戶;2) 屬性權威(AA,attribute authority)有能力從認證協議副本中恢復用戶的身份,因此用戶必須完全信任AA。此外,Yang等[11]還提出一個基于動態屬性樹的屬性認證方案。然而,該方案與文獻[10]方案具有相同的缺點。此外,用戶必須在認證過程中明確地向 SP揭示自己使用的屬性子集,即不滿足屬性匿名性。在文獻[12]中,Li等指出在實際應用中有必要利用分布式AA取代單一的中央權威,并且提出一個多權威屬性認證方案。然而,該方案的缺點是:1) 僅支持 d-out-of-n門限認證策略;2) 在密鑰發布階段,用戶總共需要執行N(N-1)次兩方密鑰協商子協議,其中,N表示系統中的 AA數量;3) 當需要增加或刪除某個AA時,所有剩余的AA需要重新執行系統建立協議,而且用戶需要分別與每個AA重新執行低效的密鑰協商子協議。
最近,Yuen等[13]提出第一個k次屬性訪問控制方案模型以及一個具體方案。Yuen等指出,此類方案可以同時解決按次付費的云服務模式關于“靈活的匿名訪問控制”和“用戶訪問次數受限”的應用需求。然而,該方案的缺點如下所示。1) 該方案是在標準PC平臺上設計的。一旦PC被攻破,該用戶即被完全攻破,從而無法體現其安全模型中關于“用戶部分被攻破”的情況。2) 在注冊協議中,用戶無法對AA提供的屬性私鑰進行驗證,即用戶必須完全信任 AA。3) Yuen等指出,為了防止惡意AA進行陷害,用戶需要在注冊協議中選取用戶私鑰。然而,該方案的安全模型定義卻遺漏了可開脫性。4) 在認證過程中,用戶與SP的運算量線性依賴于訪問結構的規模。5) 為了實施對訪問次數的控制,要求用戶在認證期間向 SP提供已執行的認證次數。然而,這種方式在某些情況下不滿足無關聯性。盡管 Yuen等指出可以通過引入區間證明技術加以改進,但并未提供具體方案。
本文認為,Yuen等的方案可視為一種k次屬性認證(k-TABA,k-times attribute-based authentication)方案。相對于基于傳統公鑰認證技術的k-TAA(k-times anonymous authentication)方案[5-7],k-TABA方案因支持細粒度訪問控制而更適合于當前的云應用環境。本文的研究目標是設計認證過程更為高效的k-TABA方案,同時克服已有屬性認證方案[3-4,8,10-13]的諸多缺點,主要包括:1) 用戶群體以靜態方式建立,且用戶無法在注冊過程中對屬性私鑰進行驗證;2) 用戶在認證階段的運算耗費與底層屬性認證策略滿足線性依賴關系;3) 既不允許AA對泄露的用戶私鑰執行廢除,也不允許用戶申請更新特定屬性值。為此,本文基于可信計算領域的直接匿名證明[14-18]、Zhang等[19]的密文策略屬性加密方案和區間證明技術[20]構造了新的k-TABA方案。需要指出的是,Zhang等的方案是采用屬性樹方式描述的。本文方案采用了基于線性秘密分享方案的描述方式,從而能更好地與Green等[21]的密鑰綁定技術相結合。借助此項技術,本文提出Zhang等方案的外包解密版本,并將其安全性由 CPA(chosen plaintext attack)安全性增強至 RCCA(replayable chosen-ciphertext attack)安全性。此外,本文對Chen[15]的直接匿名證明安全模型進行擴展,從而得出新的k-TABA方案安全模型。同時,在該模型下為新方案提供了安全性證明。與 Yuen等的k-TABA方案相比,本文方案具備以下優勢。1) 用戶端運算由主機平臺(Host)和可信的TPM(trusted platform module)芯片協同完成,使得即使敵手控制了Host,仍然無法以用戶的身份通過認證過程。2) 引入了直接匿名證明方案的驗證者本地廢除和Zhang等的屬性更新機制,從而滿足了現實應用中對泄露的用戶私鑰實施廢除和允許用戶申請更新特定屬性值的需要。3)在用戶注冊過程中,允許用戶對AA提供的屬性私鑰進行驗證,從而無需假設AA完全可信。4) 在認證階段,允許用戶借助云服務器完成復雜的屬性解密運算,而且用戶端 TPM芯片與 Host的絕大部分運算任務均能預先以離線方式執行。于是,用戶端無需執行雙線性對運算(簡稱為對運算)且運算開銷獨立于用戶屬性集合或訪問結構。作為總結,本文的主要貢獻體現在以下方面。1) 克服了上述已有k-TABA方案的多個缺陷,并提出改進的安全模型。2) 結合直接匿名證明技術增強了用戶端的安全性。3) 結合無需執行對運算的知識證明、預計算和外包解密等技術在最大程度上優化了用戶在認證、屬性更新階段的運算效率。4)去除了已有方案中關于“AA在注冊階段完全可信”的較強假設。
本文使用了對稱的雙線性群環境 (G0,GT,p,e?),其中,G0,GT表示素數p階循環群,且表示雙線性映射,使
q- SDH (theq-strong Diffie-Hellman)假設[6]:對于任何的概率多項式時間(PPT, probabilistic polynomial time)算法A,以下的概率是可忽略的,即

DBDH(decisional bilinear Diffie-Hellman)假設[14]:對于任何的PPT算法A,以下的概率是可忽略的,即

DBDHI(decisional bilinear Diffie-Hellman inversion)假設[6]:對于任何的PPT算法A,以下的概率是可忽略的,即

首先,權威產生Boneh-Boyen簽名方案[22]的密鑰對對于集合中的每個元素k,該權威計算同時,公開集合
現在,用戶構造知識證明 π =PK{ (k):k∈Φ }等價于構造證明文獻[20]提出了避免用戶執行對運算的技術,即用戶選 取l,ν ∈Zp, 設 置,并將π轉換為的形式。此外,驗證者需要額外檢查是否滿足
本文稱在Zp上構造的秘密分享方案Π是關于P的線性秘密分享方案(LSSS, linear secret sharing schemes)[21],條件是以下性質同時得到滿足:1) 參與方的秘密份額構成了Zp上的秘密向量;2) 存在l行列矩陣M,且該矩陣稱為方案Π的份額產生矩陣。存在函數ρ,該函數能將矩陣M的第i行Mi映射到參與方ρ(i)。定義列向量=(s,r2,r3,… ,rn),其中,s∈ Zp表示待分享的秘密元素,r2,r3, … ,rn∈Zp為隨機元素,則稱λ=→構成由參與方ρ(i)掌握i的關于元素s的秘密份額。
屬性加密(ABE, attribute-based encryption)方案是屬性密碼學的一個重要分支,具體可細分為密鑰策略屬性加密(KP-ABE, key-policy ABE)方案和密文策略屬性加密(CP-ABE, ciphertext-policy ABE)方案[2]。相對于標準的ABE方案,支持外包解密的 ABE方案需要額外定義 3個算法,即KeyGenout,Transformout,Decryptout[21]。其中,KeyGenout算法的作用是產生用戶的解密私鑰ASK和轉換鑰TK;Transformout算法的作用是利用TK對密文CT執行解密,得到部分解密的結果CT′;Decryptout算法的作用是利用ASK將CT′轉換為真正的明文m。
文獻[21, 23]指出,支持外包解密的ABE方案應當滿足RCCA安全性和可驗證性。其中,RCCA安全性是一個強度介于 CCA(chosen-ciphertext attack)安全性和CPA安全性之間的概念。在本質上,RCCA安全性允許在“不以有意義方式改變消息內容”的條件下對密文做出修改[21]。本文著重考慮支持外包解密的CP-ABE方案的安全性。具體地,本文稱支持外包解密的CP-ABE方案滿足選擇性的RCCA安全性[21],條件是任何的 PPT算法A都無法以不可忽略的概率在以下的實驗中獲勝:在初始化階段,敵手A向模擬器S發送用于產生挑戰密文的訪問結構 A*。在系統建立階段,S向A提供APK。在詢問 1階段,允許A提出預言詢問Create(S),Corrupt(i),Decrypt(i,Cha)。其中,預言機Create(·)產生關于屬性集合S的解密私鑰ASK和轉換鑰TK,并且返回TK。預言機Corrupt(·)返回第i次Create詢問中產生的ASK。預言機Decrypt(·,·)利用第i次Create詢問中產生的ASK解密密文Cha,并且返回解密結果m。在挑戰階段,A輸出消息M0,M1,條件是A并不掌握能滿足訪問結構 A*的解密私鑰。此時,S向A返回利用 A*產生的關于消息Mb(b∈{0, 1} )的挑戰密文Cha*。在詢問2階段,允許A繼續提出上述類型的詢問。但是,不允許A通過Corrupt詢問獲得能滿足 A*的解密私鑰,也不允許A直接將Cha*作為Decrypt詢問的內容。最終,若A能對秘密比特做出正確猜測,則判定它在實驗中獲勝。
可驗證性是指用戶可以驗證由服務器執行的密文轉換過程是否正確[23]。可驗證性實驗與上述實驗的區別如下:1) 去除初始化階段;2) 在詢問 1和詢問 2階段,同樣允許A提出預言詢問Create(S),Corrupt(i),Decrypt(i,Cha),但不對A的詢問內容做出限制;3) 在挑戰階段,A輸出M*,A。此時,返回Cha*=Encrypt(APK,M*,A );4) 在最終的輸出階段,輸出屬性集合S*和部分解密結果Cha*′。若滿足Decryptout(APK,Cha*,Cha*′,則判定在實驗中獲勝。
直接匿名證明(DAA, direct anonymous attestation)[14-18]是一類可用于實現可信平臺模塊遠程證明的匿名簽名方案,且所得簽名可以確保用戶的隱私。在DAA方案中,簽名者角色可劃分為主要簽名者和輔助簽名者。前者由運算能力受限的 TPM芯片充當,后者則由具有冗余計算能力但安全等級更低的Host充當。由于TPM掌握簽名私鑰f,因此 Host無法在 TPM 不參與的情況下獨立產生簽名。最新研究表明,許多DAA方案中的TPM可被作為靜態Diffie-Hellman預言機使用,即給定群元素B,TPM輸出Bf。于是,若Host被攻破,敵手可以利用 Brown-Gallant算法提取出私鑰f[17-18]。因此,在DAA方案的設計與應用中,必須破壞靜態 Diffie-Hellman預言機的存在條件,從而確保方案的基礎安全性。
首先,本文定義的k-TABA方案包含以下參與方,即用戶User、屬性權威AA和服務提供商SP,其中,User可劃分為TPM和Host。此類方案由以下的算法/協議構成。
TSetup這是一個可信的系統建立算法,用于產生方案的系統參數TPK。
ASetup該算法由AA執行,用于產生方案的公鑰APK和AA的主密鑰MSK。
USetup該算法由User執行,用于產生密鑰對(upk,usk) ,(hpk,hsk)。
AttGen這是由User與AA執行的協議。通過該協議,User獲得AA提供的偽名nym,成員證書cre以及關于屬性集合S的屬性私鑰ASK。
Auth這是由User與SP共同執行的屬性認證協議。
AUpdate當特定屬性值發生改變(如由j更新為w),User可以通過該協議向AA申請更新鑰UKj→w,從而對ASK中對應于屬性j的部分進行更新。同時,AA為其他擁有該屬性且并未執行屬性更新的用戶提供更新鑰UK′j。
在本文安全模型下,安全的k-TABA方案應當同時滿足以下性質。
正確性:假設TPK是利用TSetup算法產生的,(MSK,APK) 是利用ASetup算法產生的,(upk,usk) ,(hpk,hsk)是誠實用戶User利用USetup算法產生的。User通過與AA執行AttGen協議而獲得偽名nym,成員證書cre以及關于屬性集合S的屬性私鑰ASK。當User利用(nym,cre,ASK)與誠實的SP執行Auth協議時,只要S滿足SP在底層CP-ABE方案密文Cha中嵌入的訪問結構A(此后標記為S|=A)且已執行的認證次數count不超過上界n,則User必然能通過此次認證過程。此外,當自己的特定屬性值由j更新為w時,User可以通過與AA執行AUpdate協議而獲得更新后的屬性私鑰ASK′。
隱私性:若User的認證次數count不超過上界n,則包括AA與SP在內的任何參與方都無法對該用戶執行Auth協議的過程進行關聯。另外,對于2個擁有相同屬性集合S的用戶User1,User2,包括AA與SP在內的任何參與方都無法對他們執行Auth協議的過程進行關聯。
可靠性:若User的認證次數上界為n,則它無法與SP成功地執行n+1次Auth協議而不被發覺。
抗合謀攻擊:對于每個被攻破的用戶,在其屬性集合S并不滿足給定訪問結構A(此后標記為S|≠A)的情況下,即使他們聯合起來,也無法與SP成功地執行Auth協議。
可追蹤性:假設User擁有能滿足給定訪問結構A的屬性集合,即使敵手能攻破User的主機平臺,也無法在繞開TPM的情況下獨立執行Auth協議,或實現對User的陷害。
敵手A與模擬器S共同執行以下過程。
初始化執行TSetup算法,產生TPK。執行ASetup算法,產生MSK,APK。初始化列表,并且向發送TPK,APK,MSK。
詢問1允許向提出以下類型的預言詢問。
-USetup( )產生(usk,upk) ,(hsk,hpk),執行(*表示未知元素),并且返回upk,hpk。
-AttGen(S,upk)以用戶upk的身份與執行AttGen協議,并且獲得后者產生的nym,cre和ASK。最終,將中的表目(upk,usk,hpk,hsk, *,*,*,*,*,*)更新為(upk,usk,hpk,hsk,nym,cre,ASK,S,c= 0 ,count=0),其中,c=0表示未攻破,c=1表示已攻破,且count=0表示已執行的認證次數。
-Corrupt(nym)根據偽名nym在中找到表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。若c=0,則返回usk,hsk,并且將該表目更新為(upk,usk,hpk,hsk,nym,cre,ASK,S,c=1,count)。
-Auth(Cha,nym)根據nym在中找到表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。假設A表示嵌入在底層CP-ABE方案密文Cha中的訪問結構。若S|=A且count<n,則S以用戶nym的身份與執行Auth協議。最終,S將該表目更新為
挑戰輸出。假設 A*表示嵌入在底層CP-ABE方案密文Cha*中的訪問結構。檢查是否滿足且count*<n。若是,選取∈ {0, 1},并且以用
R戶的身份與A執行Auth協議。在該協議結束后,S將L中的表目將表目
詢問2允許A繼續提出詢問 1階段中的各類詢問,但不允許它提出詢問或
猜測最終,A輸出對的猜測結果′。若則判定A在實驗中獲勝。
初始化S執行TSetup算法,產生TPK。同時,S運行ASetup算法,產生APK,MSK。S初始化列表L,并且向A發送TPK,APK。
詢問允許A向S提出以下類型的預言詢問。
-USetup( )同隱私性實驗。
-AttGen(S,upk)S以誠實AA的身份與A共同執行AttGen協議,并且為A產生nym,cre,ASK。
-Corrupt(nym)S根據偽名nym在L中找到表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。若c=0,則返回usk,hsk,并且將該表目更新為(upk,usk,hpk,hsk,nym,cre,ASK,S,c=1,count)。
-Auth(Cha,nym)同隱私性實驗。
挑戰:輸出 A*,nym*。檢查nym*是否是借助AttGen詢問產生的,若是,則以誠實SP的身份與執行n+1次Auth協議,并且利用 A*產生底層CP-ABE方案的挑戰密文Cha。最終,若這n+1次執行過程都獲得成功,則判定A在實驗中獲勝。
A與S共同執行以下過程。
初始化向提供訪問結構 A*,S運行TSetup算法,產生TPK。運行ASetup算法,產生APK,MSK。初始化列表,,并且向A發送TPK,APK。
詢問1允許A向S提出以下類型的預言詢問。
-USetup( )同隱私性實驗。
-AttGen(S,upk)同可靠性實驗,唯一的限制是要求S|≠A*。此外,S執行
-AUpdate(S,j,w)S為A產生更新鑰UKj→w,唯一的限制是S′|≠A*,其中S′表示對S執行屬性更新的結果。

挑戰輸出KSP0,KSP1,NYM,其中,NYM表示由被廢除用戶的偽名構成的集合。檢查是否滿足
詢問2允許A繼續提出詢問1階段中的各類詢問,但不允許它利用AUpdate詢問獲得可以對Cha*執行解密的屬性私鑰。同時,對于AttGen詢問,要求所產生的nym滿足nym?NYM。
該實驗的執行過程分以下2個模式。
模式1
初始化執行TSetup算法,產生TPK。同時,運行ASetup算法,產生APK,MSK。初始化列表,并且向發送TPK,APK。
-USetup()對該詢問的處理分以下2種情況。在情況1中,為用戶產生(upk,usk) ,(hpk,hsk),執行并且返回upk,hpk。在情況 2中,S接收由A產生的(upk,usk) ,(hpk,hsk),并且執行hpk,hsk, *,*,*,*,c=1, * )。
-AttGen(S,upk)S根據upk在L中找到對應的元組(upk,usk,hpk,hsk, *,*,*,*,c, * ),產生nym,cert,ASK,并且返回nym,cert,ASK。S將該元組更新為(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count=0)。
-Corrupt(nym)同可靠性實驗。此外,S額外執行
-Auth(Cha,nym)同隱私性實驗。
-Semi-Auth(Cha,nym)以誠實TPM的身份與聯合執行Auth協議中用戶端的操作。在執行過程中,向S發送Host端傳送的數據,返回TPM的應答。
模式2
初始化運行TSetup算法,產生TPK。初始化列表,向A發送TPK,并且接收后者產生的APK。
詢問 允許A向S提出以下類型的預言詢問。-USetup( )同隱私性實驗。
-AttGen(S,upk)同隱私性實驗。-Corrupt(nym) 同模式1。
-Auth(Cha,nym)同隱私性實驗。
-Semi-Auth(Cha,nym)同模式1。
本文方案可視為對DAA方案進行擴展得到的。ASetup算法相當于DAA方案的系統建立算法。在該算法中,AA共產生3個密鑰對。其中,(w1, γ1)是底層CL-SDH(Camenisch-Lysyanskaya SDH)簽名方案[6]的公私鑰對,(w2, γ2)是底層區間證明協議[20]的公私鑰對。同時,(gα,e(g,g)β,{PK} ),(α,gβ,
jj∈U分別構成底層CP-ABE方案[19]的公鑰和主密鑰,其中,U表示屬性全集。AttGen協議相當于DAA方案的成員注冊協議。在該協議中,TPM芯片產生兩個密鑰對其中,usk用于充當TPM私鑰,且hsk用于產生一次性認證令牌。同時,TPM產生知識簽名π1,使AA確信upk,hpk滿足正確性。最終,User獲得AA產生的偽名nym,關于(usk,hsk)的成員證書cre以及關于屬性集合Si的底層CP-ABE方案解密私鑰ASK。此外,AA向User提供知識簽名π2,目的是證明所提供的cre,ASK滿足正確性。
Auth協議相當于DAA方案的簽名/驗證協議。在該協議中,TPM與Host聯合產生知識簽名π3,從而向SP證明以下斷言同時成立。1)User使用的認證令牌Jk是利用hsk和公開區間 Φ =[1,n]中尚未使用過的下標k產生的。2)User掌握關于(usk,hsk)的成員證書。3)User并未因TPM私鑰usk泄露而被廢除。4)User的當前認證次數尚未超過上界n。在斷言 2) 的證明過程中,User需要證明掌握成員證書使為了
實現該項證明且不要求User執行對運算,本文借鑒了文獻[20]的技術。具體地,User將Ai盲化為的形式,并且證明掌握秘密元組(xi,δ,δf,δy) ,使得此外,該項技術要求SP額外驗證是否滿足。為了證明斷言 4),User需要在Φ中選取未曾使用的下標k,并且證明自己掌握關于k的Boneh-Boyen方案[22]簽名ok。為了避免User執行對運算,本文直接采用了第2.2節所述的區間證明技術。通過引入預計算技術[16],π3產生過程中的絕大多數運算均能在離線計算階段完成。
為了實現對User的屬性認證,本文方案借鑒了Yang等[10]在認證過程中使用帶密鑰的散列函數HK()的思想。具體地,SP自行定義 LSSS訪問結構(M,ρ)并在該結構下產生關于元素KSP的底層CP-ABE方案[19]挑戰密文Cha。同時,知識簽名π3中的挑戰串c并非Host隨機選取的,而是要求Host首先解密Cha得到KSP,然后由TPM利用HK()產生c,且該過程要求將KSP作為HK()的密鑰。顯然,若User的屬性集合Si無法滿足(M,ρ),所產生的知識簽名π3將無法通過SP的驗證過程。
此外,本文方案繼承了底層CP-ABE方案的屬性更新機制,即當User的某個屬性值由j更新為w時,AA將為其發送更新鑰UKj→w。對于其他同樣擁有該屬性且并未執行屬性更新的用戶,AA同樣為他們發送更新鑰UK′j。
在本文方案的描述中,本文定義使用了多個符號。具體含義如表1所示。
4.3.1 系統參數產生(TSetup)
該算法執行以下步驟。
1) 以安全性參數λ作為輸入,產生雙線性群參數(G0,GT,p,e?),其中e?表示雙線性映射,滿足
2) 選取生成元g,h,h1,h2∈RG0,同時選取
4.3.2 屬性權威系統建立(ASetup)
為了產生系統公鑰和主密鑰,AA執行以下步驟。

表1 本文方案使用的符號
4) 初始化用戶廢除列表RL←?。
4.3.3 屬性密鑰產生(AttGen)
若Useri( Host+ T PM)希望獲得關于屬性集合Si的底層CP-ABE方案屬性私鑰,他需要與AA共同執行以下步驟。同時,假設TPM已經利用簽署密鑰與AA建立了安全的認證信道。
1) Host向AA發送請求的屬性集合Si,后者返回隨機消息
2) TPM設置cnt=cnt+1,計算f=H1(DAASeedTPM選取y∈Z ,計算RpTPM產生知識簽名 π =SPK{ (f,y) :F=
3) 對于每個f′∈RL,AA檢查是否滿足若是,則AA終止協議。否則,AA進一步驗證π1的有效性。
4) 若π1有效,則AA選取xi∈RZp,設置偽名同時,對于每個屬性j∈S,AA選取i
5)AA向TPM發送以及知識簽名π2,即

Useri與AA在AttGen協議中的主要交互過程如圖1所示。
4.3.4 屬性認證(Auth)
用戶Useri( TPM+Host)與SP執行以下交互過程。

2)SP定義LSSS訪問結構(M,ρ),其中M為矩陣,ρ為映射,即將M的第i行Mi映射為屬性ρ(i)。SP選取定義隨機列向量
3) 對于i=1,…,l,SP計算

圖1 AttGen協議的交互過程
4) 假設當前RL的內容為對 于 ι =1,… ,|RL|,SP設 置
5)SP選取nSP∈R{0, 1}t,并且向Host發送
6) Host將Cha分離為的形式。若則Host輸出⊥,并終止當前協議。
7) 令I= {i:ρ(i) ∈Si}。Host計算常量集合Host設置D′ =Dgα,計算

8) Host選取新鮮下標k∈RΦ,計算認證令牌
9) Host選 取 δ∈RZp, 計 算Host選取l,ν ∈RZp,計算并且與TPM聯合產生以下形式的知識簽名

然后,Host向SP發送
10)SP將σ分離為E2,E3)的形式,并且執行以下的驗證過程。①對于每個f′∈RL,驗證是否滿足②驗證π3的有效性。③驗證是否滿足④驗證o~k是否并非群G0的單位元。若上述驗證都通過,則接受用戶的認證過程。
Useri與SP在Auth協議中的主要交互過程如圖2所示。
4.3.5 屬性更新(AUpdate)
假設Useri( TPM+Host)希望將屬性j更新為w。為此,他需要與AA執行以下交互過程。
1) Host向AA發送更新請求reqj→w,后者返回隨機消息nAA∈R{0, 1}t。
2) Host選 取 δ ∈RZp, 計 算然后,Host與TPM聯合產生知識簽名
3) 對于每個f′∈RL,AA檢查是否滿足K=Bf′。若是,則AA終止協議。否則,AA檢查π4的有效性以及是否滿足
4) 若上述檢查通過,AA選取向Host返回同時,AA向其他同樣擁有屬性j且并未執行屬性更新的用戶Useri′發送并將APK中的元素PKj=H0(j)vj更新為

圖2 Auth協議的交互過程
5) 在接收到UKj→w之后,Host將ASKi中的元素D=gxiH(j)rjvj,D′ =(gα)rj更 新 為D=D·
j0jwj對于其他用戶Useri′,則可以利用UK′j將其ASKi′中的對應元素更新為
4.3.6 用戶廢除(Revoke)
假設Useri被攻破且(Ai,xi)均遭泄露。此時,AA執行以下步驟。
在上一節的方案描述中,共涉及4個知識簽名。其中,π1與π2分別由TPM和AA采用標準方式產生,π3, π4是由TPM與Host聯合產生的。限于篇幅,本節僅詳細介紹π3的產生和驗證過程。需要指出的是,在π1的產生過程中,TPM 向 Host提供數對在π3, π4的產生過程中,TPM向Host提供數對(B,K=Bf)。由于h1是群參數中的公開元素且B是由TPM隨機選取的元素。因此,Host無法對h1與B的取值進行控制,從而有效地去除了靜態 Diffie-Hellman預言機[17-18]。此外,為了進一步優化運算效率,本文采用了文獻[16]中的預計算技術,即π3產生過程的步驟1)~步驟3)可以預先以離線方式執行,從而減輕了用戶端的在線運算負擔。
π3的具體產生步驟如下所示。
2)TPM選取B∈RGT,計算K=Bf,其中,此外,TPM選取并且向Host返回R2t,B,K。
π3的具體驗證步驟如下所示。

3)SP驗證是否滿足若是,則接受;否則,拒絕。
在改進方案中,為了將底層CP-ABE方案[19]解密過程中的主要運算外包給云服務器Server,需要對第 4節的TSetup算法和Auth協議進行修改。同時,增加算法AttGenout,Transformout,Decryptout。其中,AttGenout算法的作用是允許User利用屬性私鑰ASK自行產生轉換鑰TK。Transformout算法的作用是允許Server利用TK對Cha執行解密,得到部分解密的密文Cha′。Decryptout算法的作用是允許User利用ASK將Cha′轉換為最終的明文KSP。
在第4節TSetup算法的基礎上,需要補充定義以下的散列函數,即即將TPK擴充為的形式。
與第 4節的Auth協議相比,需要做出以下修改。在步驟 1),SP額外選取R∈RGT,設置在步驟 2)SP額外設置并且計算在步驟5),SP向Host發送tag),nSP。在步驟7),Host向Server發送TK,Cha,后者調用Transformout算法并返回部分解密結果Cha′。然后, Host調用Decryptout算法,從而得到KSP。
假設Useri( Host+ T PM)通過執行第 4節AttGen協議得到的屬性私鑰符合以下形式,即為了獲得轉換鑰TK,Useri執行以下步驟。
2) Host保存ASKi=(z,TK)。
在接收到Host提供的Cha,TK之后,Server執行以下步驟。
1) 將Cha分離為
2) 假設Si|= (M,ρ),否則Server將輸出⊥。定義I= {i:ρ(i) ∈Si}。計算常量集合{ωi∈ Zp}i∈I,

當接收到Server返回的Cha′,Host執行以下步驟。
1) 將Cha分離為的形式,同時將Cha′分離為的形式。
定理1第4節方案滿足正確性。
證明過程見本文附錄。
定理 2在隨機預言模型下,只要群G0,GT上的DBDH,DBDHI和q-SDH假設成立,則第4節方案在新的k-TABA模型下是安全的。
證明在本文方案的證明過程中,模擬器S需要定義多個列表,用于對各類預言機進行模擬。具體地,LK用于對散列預言機HK(·)進行模擬, Li(i=2,3)用于對散列預言機Hi(·)(i=2,3)進行模擬,L用于對預言機USetup( ),AttGen( ·,·),Corrupt(·)進行模擬。LAuth用 于對 預 言機Auth( ·,·),Semi-Auth( ·,·)進行 模擬 。Lnym用于對預言機AttGen(·,·)進行模擬。
隱私性當前實驗的執行過程分以下兩種模式。
模式 1S以DBDH問題實例作為輸入,其目標是對以下情況進行分辨:1)滿足滿足其中,在初始化階段,S設置并且采用TSetup算法中的方式產生TPK中的剩余元素。S執行ASetup算法,產生MSK,APK。同時,S選取 α , β ∈R{1,… ,m},其中,m表示系統中的最大用戶數量。S初始化列表為 L , LK, L2, L3,并且向A發送TPK,MSK,APK。在詢問1階段,S采用以下方式對各類預言機進行模擬。
-HK(m)若(m,hK) ∈LK,則S返回hK。否則,S選取并且返回hK。同時,S執行
-H2(m)若(m,h2) ∈L2,則S返回h2。否則,S選取并且返回h2。同時,S執行L2← L2∪(m,h2)。
-H3(m).若(m,h3) ∈L3,則S返回h3。否則,S選取并且返回h3。同時,S執行
-USetup( )對該詢問的模擬分以下3種情況。
情況 1 若當前為第α次詢問,則S選取uα∈RZ*p,設置S選取y∈ Z*,
αRp設置同時,S執行顯然,uskα=auα為未知元素。
情況 2若當前為第β次詢問,則S選取設置選取設置并且返回同時,S執行顯然,uskβ=auβ為未知元素。
情況 3在其他情況下,S選取設置并且返回upk,hpk。同時,*,*,*,*)。
-AttGen(S,upk).對該詢問的模擬分以下 3種情況。
情況 1若upk=upkα,則S采用模擬方式產生知識簽名π1。在AttGen協議結束后,S獲得由A產生的S將用戶upkα在L中的對應表目更新為
情況 2若upk=upkβ,則S采用模擬方式產生知識簽名π1。在AttGen協議結束后,S獲得由A產生的nymβ,creβ,ASKβ。S將用戶upkβ在L中的對 應 表 目 更 新 為(upkβ,uskβ,hpkβ,hskβ,nymβ,creβ,ASKβ,S,cβ= 0 ,count=0)。
情況 3若upk? {upkα,upkβ},則S根據upk在L中找到對應的表目,并利用usk,hsk以誠實方式產生知識簽名π1。剩余操作同情況1和情況2。
-Corrupt(nym)S根據nym在L中找到對應的表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。若upk∈ {upkα,upkβ},則S模擬失敗。否則,若c=0,S返回usk,hsk,并且將該表目更新為(upk,usk,hpk,hsk,nym,cre,ASK,S,c= 1,count)。
-Auth(Cha,nym)S根據nym在L中找到表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。同時,S從密文Cha中分離出訪問結構(M,ρ),并且檢查是否滿足S|=(M,ρ)且count<n。若是,則S利用ASK從密文Cha中恢復出秘密元素KSP。接下來的模擬過程分以下3種情況。
情況1若nym=nymα,則S選取設置從底層知識證明中提取出知識并且設置S選 取E3∈RG0,Jk∈RGT, 選 取sν∈RZp,并且采用知識簽名π3驗證過程中的方式計算返回
情況2若nym=nymβ,則S采用類似的方式模擬產生σ。2種情況的區別是,S設置
情況3若nym? {nymα,nymβ},則S采用誠實方式產生并返回σ。
無論屬于哪種情況,S都需要在認證過程結束后將表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)更新為(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count+1)。
最終,A輸出對b的猜測結果則S判定則S判定否則,S輸出 failure,即求解給定的DBDH問題實例失敗。
模式 2S以DBDHI問題實例作為輸入,其目標是對以下兩種情況做出分辨:1)在初始階段,S選取 α ∈R{1,…,m},且m的含義同模式1。S設置并且構造集合然后,S采用TSetup算法中的方式產生TPK中的剩余元素。S執行ASetup算法,產生MSK,APK。S初始化列表L, LK, L2, L3,并且向A發送TPK,MSK,APK。在詢問1階段,S采用以下方式對各類預言機進行模擬。
-HK(m),H2(m),H3(m)模擬方式同模式1。
-USetup()對該詢問的模擬分以下2種情況。
情況 1若當前為第α次詢問,則S選取S選取并且返回同 時 ,S執 行顯然,hskα為未知元素。
情況 2若當前并非第α次詢問,S選取并且返回upk,hpk。同時,S執行hsk, *,*,*,*,*,*)。
-AttGen(S,upk)對該詢問的模擬分以下 2種情況。
情況 1若upk=upkα,則S采用模擬方式產生知識簽名π1。在AttGen協議結束后,S獲得由A產生的nymα,creα,ASKα。S將用戶upkα在L中的對應表目更新為ASKα,S,cα= 0 ,count=0)。
情況 2若upk≠upkα,則S根據upk在L中找到對應的表目,并利用usk,hsk以誠實方式產生知識簽名π1。剩余操作同情況1。
-Corrupt(nym)S根據upk在L中找到對應的表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count),若upk=upkα,則S模擬失敗。否則,若c=0,S返回usk,hsk,并且將該表目更新為(upk,usk,hpk,hsk,nym,cre,ASK,S,c= 1,count)。
-Auth(Cha,nym).S根據nym在L中找到表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。同時,S從密文Cha中分離出訪問結構(M,ρ),并且檢查是否滿足S|=(M,ρ)且count<n。若是,則S利用ASK從密文Cha中恢復出秘密元素KSP。此后的模擬過程分以下2種情況。
情況 1若則S在集合中選取一個未曾使用的元素,并將其作為Jk。S選取選取B,K∈RGT,并且采用與模式1下Auth詢問情況1中的方式模擬產生元素E1,E2和知識簽名π3。最后,S向A發送
情況2若nym≠nymα,則S采用誠實方式產生知識簽名π3,并且向A返回
無論屬于哪種情況,S都需要在認證過程結束后將表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)更新為(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count+1)。
可靠性在初始化階段,S執行TSetup算法,產生TPK。同時,S執行ASetup算法,產生MSK,APK。S初始化列表 L , LK, L2, L3,并且向A發送TPK,APK。在詢問階段,S為A提供以下類型的預言服務。
-HK(m),H2(m),H3(m)模擬方式同隱私性實驗。
-USetup( )模擬方式同隱私性實驗模式 1下的情況3。
-AttGen(S,upk)S以誠實AA的身份與A執行AttGen協議,并且返回nym,cre,ASK。
-Corrupt(nym)S根據nym在L中找到對應表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。
若c=0,則返回usk,hsk,并將該表目更新為(upk,usk,hpk,hsk,nym,cre,ASK,S,c= 1,count)。
-Auth(Cha,nym)模擬方式同隱私性實驗模式1下的情況3。
在該階段的末尾,A輸出nym*, (M*, ρ*)。S檢查在L中是否存在與nym*對應的表目。若是,則以誠實SP的身份與A執行n+1次Auth協議,并且根據 (M*, ρ*)產生底層CP-ABE方案的挑戰密文。最終,S獲得A在這些協議中的輸出 σ1, σ2, … ,σn+1。假設這n+1次執行過程都獲得成功,顯然S可以利用重繞技術分別從知識簽名 π3,1,π3,2, … , π3,n+1中提取出秘密元素且它們都位于區間[1,n]。根據底層區間證明協議的有效性,顯然存在即A在第i次和第j次Auth協議中使用了相同的令牌由于S充當誠實SP,因此這兩次協議不可能都獲得成功,即得到矛盾假設。
抗合謀攻擊S以底層CP-ABE方案的公鑰為輸入,其目標是借助與A的交互過程攻破該方案的選擇性CPA安全性。在初始化階段,A首先向S提供訪問結構 (M*, ρ*)。S設置g=,并且采用TSetup和ASetup算法中的方式產生TPK和APK中的剩余參數。最后,S初始化列表 L, Lnym, LK, L2, L3,并且向A發送TPK,APK。在詢問1階段,S為A提供以下類型的預言服務。
-HK(m),H2(m),H3(m)模擬方式同隱私性實驗。
-USetup()模擬方式同隱私性實驗模式 1下的情況3。
-AttGen(S,upk)S以AA的身份與A執行AttGen協議。S根據upk在L中找到對應的表目(upk,usk,hpk,hsk, *,*,*,*,*,*)。S檢查是否滿足S|≠(M*, ρ*),若是,則借助底層CP-ABE方案的密鑰產生預言機為該用戶產生ASK,并且自行為該用戶產生nym,cre=(A,x)。S向A發送nym,cre,ASK,并且將表目(upk,usk,hpk,hsk,*,*,*,*,*,*)更新為(upk,usk,hpk,hsk,nym,cre,ASK,S,c=0,count=0)。同時,S設置 Lnym← Lnym∪(nym)。
-AUpdate(S,j,w)S檢查是否滿足S|≠(M*, ρ*)且將屬性j更新為w后,更新后的屬性集合S′ 是否滿足S′ |≠(M*, ρ*)。若是,則S借助底層CP-ABE方案的屬性更新預言機為A產生UKj→w,并且對APK中的元素PKj以及L中其他用戶屬性私鑰中的元素Dj,D′j進行更新。
-Corrupt(nym)模擬方式同可靠性實驗。
-Auth(Cha,nym)模擬方式同隱私性實驗模式1下的情況3。
在該階段的末尾,A輸出KSP0,KSP1,NYM。S檢查是否滿足NYM?Lnym,若是,則以SP的身份與A執行Auth協議。在Auth協議執行過程中,S向底層CP-ABE方案的加密預言機發送KSP0,KSP1,RL,并且向A返回由該預言機產生的關于元素的密文在詢問2階段,允許A繼續提出上述類型的詢問。
但是,不允許A利用AUpdate詢問獲得能滿足訪問結構 (M*, ρ*)的屬性私鑰。同時,不允許A提出AttGen詢問,使得對于所產生的nym,滿足nym?NYM。最終,A輸出猜測結果則表明S已經借助A攻破了底層CP-ABE方案的選擇性CPA安全性。
可追蹤性當前實驗的執行過程分以下 2種模式。
模式 1S以底層CL-SDH簽名方案[6]的公鑰作為輸入,其目標是借助與A的交互過程攻破該方案的不可偽造性。S設置并且采用TSetup,ASetup算法中的方式產生TPK,MSK,APK中的剩余參數。S初始化列表 L , Lauth,LK, L2, L3,并且向A發送TPK,APK。在詢問階段,允許A提出以下類型的預言詢問。
-HK(m),H2(m),H3(m)模擬方式同隱私性實驗。
-USetup()對當前詢問的模擬分以下2種情況。在情況 1中,S為用戶選取S執行L←L∪(upk,usk,hpk,hsk, *,*,*,*,c=0,*),并且返回upk,hpk。在情況 2中,S接收由A產生的upk=F,hpk=Y,π1。S采用重繞技術從π1中提取出usk,hsk, 并 且 執 行 L ← L ∪(upk,usk,hpk,hsk, *,*,*,*,c=1, * )。
-AttGen(S,upk)S根據upk在L中找到對應的表目(upk,usk,hpk,hsk, *,*,*,*,c, * )。S通過調用預言機H2(upk)產生nym。S自行產生ASK,向底層CL-SDH簽名預言機提出詢問(upk,hpk),并且獲得后者返回的cert=(A,x)。S返回nym,cre,ASK,并將該表目更新為(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count=0)。
-Corrupt(nym)模擬方式同可靠性實驗。此外,S執行RL←RL∪ (usk,nym)。
-Auth(Cha,nym)模擬方式同隱私性實驗模式 1下的情況 3。此外,S額外設置LAuth←LAuth∪(nym,σ)。
-Semi-Auth(Cha,nym)S以誠實TPM的身份與A(充當Host)聯合產生User在Auth協議中的輸出。在該過程中,S接收到A發送的數據,并且返回同時,S執行
最終,A輸出nym*, (M*, ρ*)。S以SP的身份與A執行Auth協議,并且利用 (M*, ρ*)產生底層CP-ABE方案挑戰密文Cha*。最終,S獲得A的輸出σ*。若σ*能通過驗證,則S檢查是否滿足若是,則S利用重繞技術從σ*中提取出秘密知識 (A*,x*),從而攻破了底層CL-SDH方案的不可偽造性。
模式 2S以q-SDH問題實例(P,Q,Qx,…,作為輸入,其目標是輸出數對S設置設置S采用TSetup算法中的方式產生TPK中的剩余元素。S初始化列表L, Lauth,LK, L2, L3,向A發送TPK,并且獲得后者產生的APK。此外,S事先選取 α ∈R{1,…,m},其中,m的含義同隱私性實驗。在詢問階段,允許A提出以下類型的預言詢問。
-HK(m),H2(m),H3(m)模擬方式同隱私性實驗。
-USetup()對當前詢問的模擬分以下2種情況。情況 1:若當前是第α次詢問,S設置upkα=Qx,uskα=x。其中,uskα為未知元素。S選取設置S返回upkα,hpkα,并且設置 L ← L ∪ (upkα,uskα,hpkα,hskα,*,*,*,*,c=0,*)。情況2:若當前并非第α次詢問,S采用誠實方式產生upk,usk,hpk,hsk,返回upk,hpk,并且設置L ← L ∪ (upk,usk,hpk,hsk, *,*,*,*,c=0, *)。
-AttGen(S,upk)對當前詢問的模擬分以下2種情況。情況 1:若upk=upkα,則S采用模擬方式產生π1,并獲得A產生的nymα,certα,ASKα。S將表目(upkα,uskα,hpkα,hskα, * ,*,*,*,c=0, * )更新為(upkα,uskα,hpkα,hskα,nymα,certα,ASKα,S,c= 0 ,count=0)。情況2:若upk≠upkα,則S采用誠實方式產生π1,并且獲得A產生的nym,cert,ASK。S將表目(upk,usk,hpk,hsk, *,*,*,*,c=0 , *)更新為(upk,usk,hpk,hsk,nym,cert,ASK,S,c= 0 ,count=0)。
-Corrupt(nym) 若nym=nymα,則S模擬失敗。否則,模擬方式同當前實驗的模式1。
-Auth(Cha,nym)若nym=nymα,則S在不掌握uskα的條件下模擬產生σ。若nym≠nymα,則S采用誠實方式產生σ。剩余模擬方式同隱私性實驗模式1下的情況3。無論屬于哪種情況,S都額外設置LAuth← LAuth∪(nym,σ)。
-Semi-Auth(Cha,nym)S采用模式1下Semi-Auth詢問中的方式進行模擬。區別在于,當nym=nymα時,S采用模擬方式產生R2t,π3。否則,S采用誠實方式產生R2t,π3。
最終,A輸出nym*, (M*, ρ*)。S以SP的身份與A執行Auth協議,并且利用 (M*, ρ*)產生底層CP-ABE方案的挑戰密文Cha*。最終,S獲得A的輸出σ*。若σ*能通過驗證,則S檢查是否滿足(nym*, σ*)∈ / L。若是,則S利用重繞技術從σ*中
Auth提取出秘密知識f*。S檢查是否滿足f*∈L。若否,則S模擬失敗。在的概率下,f*恰好等于x。此時,S選取e∈RZp,輸出從而求解了給定的q-SDH問題實例。
證畢。
需要指出的是,本文第6節改進方案與第4節方案的唯一區別是,利用服務器外包解密技術對底層CP-ABE方案進行改進。為了證明改進方案的安全性,僅需證明所提出的外包解密版本不會降低原有CP-ABE方案的安全性即可。
結論1第4節方案中采用的底層CP-ABE方案滿足選擇性CPA安全性[19]。
定理3在隨機預言模型下,可以證明第6節的底層CP-ABE方案外包解密版本滿足選擇性RCCA安全性和可驗證性。
證明選擇性RCCA安全性。假設模擬器S以底層CP-ABE方案公鑰為輸入,其目標是通過與敵手A執行以下的選擇性RCCA安全性實驗攻破該方案的選擇性CPA安全性。在當前實驗中,S需要維護列表 Lc, Ld,L4,L5, L6,從而實現對預言機Create( ·),Corrupt(·),Decrypt(·,·),H4(·,·),H5( ·),H6( ·)的模擬。
在初始化階段,A向S提供作為挑戰的訪問結構 (M*, ρ*)。在系統建立階段,S向A提供S初始化列表L4, L5, L6,并且初始化計數器count′←0。
在詢問1階段,S為A提供以下類型的預言服務。
-H4(R,m)若(R,m,s)∈L4,則S返回s。否則,并且返回s。同時,S執行
-H5(R)若則S返回。否則,S選取并且返回同時,S執行 L5←
-H6若則返回tag。否則,S選取并且返回tag。同時,S執行
-Create(S)S設置count′ ←count′+1,并且分以下兩種情況進行模擬。
情況 1若S|=(M*,ρ*),則S選取設置對于每個屬性j∈S,S選取rj∈RZp,設置
情況2若為輸入調用底層CP-ABE方案的密鑰產生預言機,并且獲得后者返回的設置
最后,無論屬于哪種情況,S均設置Lc← Lc∪(count′,S,ASK,TK),并且返回TK。
-Corrupt(i)S根據序號i在列表Lc中找到對應表目(i,S,ASK,TK) ,并且檢查是否滿足S|= (M*, ρ*)。若是,則S返回⊥。否則,S返回ASK,并且設置 Ld← Ld∪(S)。
-Decrypt(i,Cha) .S根據序號i在列表Lc中找到對應的表目(i,S,ASK,TK)。然后,S從Cha中分離出訪問結構(M,ρ)。若S|≠(M,ρ),S返回⊥。否則,S分以下兩種情況進行模擬。
情況 1滿足 (M, ρ) ≠ (M*, ρ*)。S將ASK分離為ASK=(z,TK)的形式,并執行以下步驟。
1) S利用Cha和TK調用Transformout算法,并得到部分的解密結果Cha′ = (T0,T1,T2)。

3) S根據R在列表L4中找到對應的表目(R,m,s)。根據R在列表L5中找到對應的表目同時,根據在列表L6中找到對應的表目若S無法在L4或L5或L6中找到對應表目,則S返回⊥。若所找到的匹配表目數量超過1個,則S模擬失敗。
情況 2滿足 (M, ρ) = (M*, ρ*)。S將ASK分離為的形式,并執行以下步驟。
1) S利用Cha和TK調用Transformout算法,并得到部分的解密結果Cha′ = (T0,T1,T2)。此時,滿足同時,

2) S計算
3) S在列表L4中尋找是否存在元組若查找失敗,則S返回⊥。若匹配的元組數量超過1個,則S模擬失敗。假設(R,m,s)為唯一匹配元組。然后,S根據R在列表L5中尋找匹配的元組。若查找失敗,則返回⊥。若匹配的元組數量超過1個,則S模擬失敗。假設為唯一匹配元組。類似地,S根據在列表L6中尋找匹配的元組。假設為唯一匹配的元組。
回解密結果m,否則,S返回⊥。
可驗證性S采用TSetup算法和ASetup算法中的方式產生底層CP-ABE方案的公鑰APK和MSK。在詢問1階段,S利用MSK實現對預言機Create( ·),Corrupt( · ),Decrypt(·,·)的模擬。在挑戰階段,A輸出此時,S返回Cha*=在詢問2階段,允許A繼續提出上述類型的詢問。最終,A輸出假設S此前已經產生關于S*的ASKS*和TKS*。否則,S自行執行Create(S*)詢問,從而產生這些元素。現在,S根據此前產生的ASKS*執行Decryptout算法,從cha*′中恢復滿足則表明A成功地進行了欺詐,即cha*′是關于另一個明文′的部分解密結果。S利用TKS*執行Transformout算法,得到關于Cha*的正確的部分解密結果進而恢復得到滿足。于是,從而違背了散列預言機H6( ·)的抗碰撞性。證畢。
本文提供了對第 6節方案與相關方案[3-4,8,10-13]的性能比較。在表 2,對本文方案與這些方案進行了主要性質的比較。本文方案是基于DAA技術構造的,因此可以部署于可信平臺之上,而其他方案都是在標準PC平臺上設計的。包括本文方案在內的多數方案都支持可表述性的認證策略(expressive policy)。相反,文獻[3,12]方案僅支持受限制的門限認證策略(threshold policy)。文獻[11]方案是唯一的不滿足屬性匿名性的方案,因為該方案要求用戶在認證階段向驗證者揭示所使用的屬性子集,顯然會有損用戶的隱私。本文方案和文獻[13]方案均采用區間證明技術實現了對用戶認證次數的限制,因此較其他方案更適合于按需付費的云服務模式。本文方案滿足注冊過程的可驗證性,使用戶可以對所得成員證書和屬性私鑰進行有效性驗證。相反,其他方案[3-4,8,10-13]并未考慮此項驗證,即用戶必須完全信任AA。此外,本文方案繼承了底層DAA方案的驗證者本地廢除機制和底層 CP-ABE方案的屬性更新機制,從而更好地滿足了應用系統的實際需求。
在表3中,提供了本文方案與相關方案在用戶注冊(即屬性私鑰產生)和認證子協議中的通信性能比較。在比較過程中,符號|Si|表示用戶屬性集合的規模。|des(Γ)|表示由SP(或驗證者)定義的屬性樹(或訪問結構)的規模。d與k表示文獻[3]中默認屬性集合的規模和系統門限值。n′表示文獻[3,12]方案的公開屬性集合的規模。l與n分別表示文獻[4,8,13]方案和本文方案的訪問結構中矩陣M的行數和列數,且l同樣等于文獻[10]方案屬性樹中的葉結點數量[21]。N表示文獻[12]方案中分布式AA的數量。文獻[12]并未提供有關底層兩方密鑰協商子協議的完整描述,因此用|2PC|U與|2PC|AA分別表示User與AA在該子協議中的通信開銷。|RL|表示本文方案中被廢除的用戶數量。對于本文方案,符號“*”標記了User在外包解密過程中與Server間的額外通信開銷。根據文獻[24]結論,在對稱的對環境下,域Zp和群G0,GT上的元素長度分別為160 bit,160 bit,960 bit。需要指出的是,文獻[3-4,8,10-11]方案的注冊階段不要求User發送任何數據。原因在于,這些方案假設AA是完全可信的,User直接接收由前者發送的屬性私鑰。

表2 相關方案的重要特性總結

表3 相關方案的通信開銷比較
在表4中,提供了本文方案與相關方案在用戶注冊(即屬性私鑰產生)和認證子協議中的運算性能比較。對于文獻[3, 10]方案,本文采用了 Goyal等[25]的估算方法,即用|Sr|表示用戶在基于屬性樹的認證過程中使用的葉結點集合規模,使對運算次數達到最小。|Li|是文獻[11]方案中的特殊參數,它表示根據Si構造的屬性樹的虛擬葉結點集合規模。此外,(2PC)U與(2PC)AA分別表示User與AA在文獻[12]方案的底層兩方密鑰協商子協議中的運算開銷。在比較過程中,本文僅統計群G0,GT上的指數運算和對運算,且認為單指數運算和多指數運算的開銷相當。對于本文方案,符號“+”與“++”分別標記了TPM和Host的運算開銷。根據文獻[26-27]結論,在對稱的對環境下,以群G0上的指數運算為基準(記為E),群GT上的指數運算開銷約為4E,且對運算的開銷約為3E。最終,本文將所有方案中各角色的運算開銷都換算為群G0上的指數運算,從而得到較為直觀的比較結果。顯然,本文方案在用戶端的認證過程運算效率方面是最優的,而且為常量。取得這個優勢的原因是:1)User對挑戰密文Cha進行了外包;2) 在π3的產生過程中,TPM與Host的絕大多數運算都采用預計算方式完成;3)User通過π3向SP證明“自己掌握合法的成員證書”且“認證令牌Jk的產生過程使用了在公開集合Φ中選取的新鮮下標k”。為了證明上述斷言,本文方案采用了無需用戶端執行對運算的知識證明技術。
與已有同類方案[3-4,8,10-13]相比,本文方案額外支持屬性更新和用戶廢除。在屬性更新協議中,User的運算可以在離線階段完成,且AA的在線運算開銷為(4|RL| +nnon+ 1 3)E,其中,nnon表示當某用戶的特定屬性發生變化后,其他擁有該屬性但屬性未發生更新的用戶數量。在用戶廢除算法中,User無需執行任何運算,且AA的運算開銷為9E。應當承認的是,本文方案在增加理想性質同時也付出了額外的運算和通信開銷。具體地,在注冊階段,User與AA的通信和運算開銷較大,這是為實現可驗證的注冊性質而付出的必要代價。在認證階段,SP端的通信和運算開銷均與|RL|有關,這是為實現用戶廢除性質而付出的必要代價。此外,為了在最大程度上降低用戶端在認證階段的運算開銷,要求User將挑戰密文Cha和轉換鑰TK轉發給Server,從而產生了一筆額外的通信開銷。因此,在AA未必完全可信、用戶屬性集合規模較大且要求支持成員廢除和屬性更新的現實應用環境下,本文方案具有明顯優勢。
本文基于DAA、支持屬性更新的CP-ABE和基于成員身份的區間證明等技術提出新的k-TABA方案。該方案可部署于可信平臺,并且采用預計算技術和服務器外包解密技術盡可能地優化了用戶端的運算性能。與 Yuen等的k-TABA方案和相關屬性認證方案相比,本文方案不但支持一般性的訪問控制策略,而且較好地解決了現實應用中的用戶私鑰廢除和用戶屬性值更新問題。相對于已有的同類方案,本文方案的顯著特點是使得用戶在認證協議中的運算耗費擺脫了對底層屬性集合和屬性樹(或訪問結構)規模的依賴。

表4 相關方案的運算開銷比較
定理1第4節方案滿足正確性。
證明為了證明本文方案的正確性,需要分別證明AttGen,Auth,AUpdate協議均滿足正確性。
AttGen協議的正確性π1是標準的“關于掌握離散對數”的知識簽名,它使AA可以確信TPM提供的upk,hpk滿足正確性,即滿足若是采用正確方式產生的,則必然滿足

顯然,式(1)等價于以下的式(2)、式(3)同時成立,即

同時,若ASKi中的元素D,D′是采用正確方式產生的,則分別滿足

顯然,式(4)和式(5)分別等價于以下的式(6)和式(7),即

π2是標準的“關于掌握離散對數”的知識簽名,它與額外的驗證等式可以確保滿足正確性。
Auth協議的正確性 π3是標準的“關于掌握離散對數”的知識簽名,它使SP可以確信User提供的元素Jk,K,B滿足正確性,即滿足同時,π3表明以下等式成立,即


顯然,根據式(8)和式(11)式,可以得出

同時,將式(12)帶入式(9),可以得出


最后,根據第5節中π3的產生和驗證過程可知,對于誠實用戶User,π3能通過SP驗證的條件是他能從挑戰密文Cha中恢復出元素KSP,并利用該元素產生π3的挑戰串c。對于密文顯然滿足


AUpdate協議的正確性 該協議的正確性可以直接根據底層CP-ABE方案屬性更新算法的正確性得出。
證畢