李兆斌 趙 洪 魏占禎
(北京電子科技學(xué)院 北京 100070)
隨著云計(jì)算、物聯(lián)網(wǎng)等新技術(shù)的快速發(fā)展和應(yīng)用,大量數(shù)據(jù)需要外包存儲(chǔ)在各種開放環(huán)境中,數(shù)據(jù)安全尤其是數(shù)據(jù)機(jī)密性保護(hù)已經(jīng)成為企業(yè)和個(gè)人關(guān)注的焦點(diǎn)。傳統(tǒng)的解決方法是將數(shù)據(jù)加密后再存儲(chǔ)到云服務(wù)器,但這種方法在密文授權(quán)和密鑰管理時(shí)不夠靈活。為了解決密文授權(quán)問題,Blaze 等人[1]首次提出了代理重加密方案,半可信服務(wù)器使用重加密密鑰進(jìn)行密文轉(zhuǎn)換,將授權(quán)者的密文轉(zhuǎn)換成被授權(quán)者可以解密的密文,重加密過程不會(huì)泄露明文和授權(quán)者的私鑰信息。代理重加密可以實(shí)現(xiàn)單向或雙向授權(quán),也可以實(shí)現(xiàn)單次或多次重加密操作[2-5],目前的重加密方案都是基于傳統(tǒng)公鑰或基于身份的公鑰來實(shí)現(xiàn)的,在云計(jì)算環(huán)境中的應(yīng)用已經(jīng)有很多研究成果[6-11]。但這些代理重加密方案都存在缺陷,代理服務(wù)器在得到重加密密鑰后可以將授權(quán)者的所有密文都進(jìn)行重加密,授權(quán)者無法對(duì)密文進(jìn)行細(xì)粒度的控制。因此Weng等人[12]提出了條件代理重加密方案(Conditional Proxy Re-Encryption, CPRE),只有符合條件的密文才會(huì)被代理服務(wù)器重新加密,很多文獻(xiàn)對(duì)CPRE進(jìn)行了研究,大多數(shù)的CPRE方案都是基于雙線性對(duì)[13-16]。由于雙線性對(duì)運(yùn)算效率不高,因此有研究者提出了無雙線性對(duì)的CPRE方案[17-20],但這些方案在重加密過程中只檢查原始密文的條件符合性,而忽略了重加密密鑰的條件符合性檢查,導(dǎo)致攻擊者可以發(fā)送不符合條件的重加密密鑰來讓代理服務(wù)器進(jìn)行重加密操作,從而大量消耗代理服務(wù)器的資源。這些方案也沒有對(duì)條件信息進(jìn)行保護(hù),容易造成敏感條件信息泄露。
為了解決單個(gè)代理服務(wù)器完成重加密操作帶來的信任過度集中和單點(diǎn)失效問題,有文獻(xiàn)提出了基于門限的代理重加密方案[21-24]。其中Patil等人[22]提出的方案在重加密時(shí)沒有考慮原始密文的條件,并且需要授權(quán)者和被授權(quán)者將私鑰信息提交給第三方來生成重加密密鑰,存在很大的安全隱患。同時(shí)該方案中的被授權(quán)者與代理服務(wù)器合謀可以恢復(fù)出授權(quán)者私鑰的哈希值,從而導(dǎo)致方案中授權(quán)者用該私鑰哈希值對(duì)應(yīng)公鑰加密的所有原始密文都存在被惡意恢復(fù)的安全風(fēng)險(xiǎn),方案只能達(dá)到選擇明文攻擊下的不可區(qū)分安全性。
本文是在條件代理重加密[20]和門限代理重加密方案[22]基礎(chǔ)上提出的一種新的門限條件匿名代理重加密方案,本方案不依賴雙線性對(duì),在重加密過程中同時(shí)對(duì)密文和重加密密鑰進(jìn)行條件檢查,對(duì)敏感的條件信息進(jìn)行匿名化處理,將重加密過程分布到多個(gè)代理節(jié)點(diǎn)來執(zhí)行,并能夠防止代理服務(wù)節(jié)點(diǎn)與被授權(quán)者合謀恢復(fù)出授權(quán)者的私鑰信息。
無雙線性對(duì)的門限條件匿名代理重加密方案(Threshold-Based Conditional Anonymous Proxy Re-Encryption scheme, TB-CAPRE)基于有限域中的離散對(duì)數(shù),在解決條件匿名化的同時(shí)也解決了Paul等人[20]所提方案中只檢查密文的條件信息而忽略了重加密密鑰有效性問題,具有更細(xì)粒度的密文授權(quán)能力。本文中的條件信息t∈Zq?可由用戶根據(jù)實(shí)際應(yīng)用需要進(jìn)行定義,如密文生成時(shí)間、文件類型等。方案包含如下7個(gè)算法:
(1)系統(tǒng)參數(shù)生成(Setup):輸入安全參數(shù)λ,輸出公開的系統(tǒng)參數(shù)p aram;
(2)密鑰生成(KeyGen):輸入系統(tǒng)的公開參數(shù)集p aram ,為用戶i生 成公私鑰對(duì)( PKi,SKi);
(3)加密(Encryption):輸入系統(tǒng)公開參數(shù)集param 、用戶的公鑰P Ki、 明文消息m和條件信息t,生成消息的原始密文Ci;
由于本方案中存在兩種密文,即原始密文和重加密密文,因此在安全性定義時(shí)必須考慮兩種密文的安全。
定義1 無雙線性對(duì)的門限條件匿名代理重加密方案選擇密文攻擊下的不可區(qū)分性(TB-CPAE INDistinguishablity under Chosen Ciphertext Attack,TB-CAPRE-IND-CCA),包括原始密文選擇密文攻擊下的不可區(qū)分性(Level-2 INDistinguishablity under Chosen Ciphertext Attack, L2-IND-CCA)和重加密密文選擇密文攻擊下的不可區(qū)分性 (Level-1 INDistinguishablity under Chosen Ciphertext Attack,L1-IND-CCA)。
下面通過兩個(gè)安全游戲來描述原密文和重加密密文選擇密文攻擊下的不可區(qū)分性。
2.2.1 L2- IND- CCA游戲
該游戲考慮原始密文(第2層密文)選擇密文攻擊下的不可區(qū)分性。挑戰(zhàn)者C模擬TB-CAPRE運(yùn)行環(huán)境,接收敵手A的查詢,游戲過程如下:
(1)初始化,挑戰(zhàn)者C運(yùn)行S etup(λ),獲得系統(tǒng)參數(shù)p aram ,并將p aram 返回給敵手A。
(2)查詢階段1,敵手A可進(jìn)行如下查詢:
(a)誠實(shí)用戶公鑰查詢Ou(i):輸入誠實(shí)的用戶i, 挑戰(zhàn)者C運(yùn)行K eyGen(i,param) 來獲得用戶的公私鑰對(duì)( PKi,SKi), 并將公鑰P Ki發(fā) 送給敵手A;
(b)毀壞用戶私鑰查詢Oc(i):輸入毀壞的用戶i, 挑戰(zhàn)者C運(yùn)行K eyGen(i,param) 來獲得用戶的公私鑰對(duì)( PKi,SKi), 并將公私鑰對(duì)( PKi,SKi)發(fā)送給敵手A;
(1)原始密文條件驗(yàn)證
(2)重加密密鑰條件驗(yàn)證
4.2.1 條件匿名性
本方案在原始消息加密和生成重加密密鑰過程中使用條件信息t,生成的原始密文和重加密密鑰中只包含T=gt,所以即使攻擊者得到T也無法恢復(fù)出條件信息,可以實(shí)現(xiàn)條件的匿名性。
4.2.2 重加密密鑰保護(hù)
4.2.3 抗合謀攻擊
算法C維護(hù)2個(gè)初始為空的列表Klist和Rlist來分別存儲(chǔ)公私鑰對(duì)和重加密密鑰。
查詢階段1,敵手A可進(jìn)行各種查詢,C作如下響應(yīng):
下面對(duì)本方案進(jìn)行計(jì)算效率方面的分析,表1為本方案與其他方案計(jì)算效率和特點(diǎn)的比較。由于方案的加解密、重加密和條件匿名等功能主要是由指數(shù)和哈希運(yùn)算實(shí)現(xiàn)的,因此表2統(tǒng)計(jì)了本方案各過程中包含的指數(shù)運(yùn)算和哈希運(yùn)算計(jì)算量。其中p,e,h分 別表示雙線性對(duì)運(yùn)算、群G中的指數(shù)運(yùn)算以及哈希運(yùn)算,系數(shù)為運(yùn)算次數(shù),k是門限值,n是代理服務(wù)節(jié)點(diǎn)總數(shù)量。
表1 計(jì)算效率與特點(diǎn)對(duì)比
表2 本方案計(jì)算量
從表1可以看出,除了重加密過程(ReEnc)外,本文方案的性能與文獻(xiàn)[20]相當(dāng),但本文方案使用門限的方法來解決重加密過程中信任過度集中和單點(diǎn)失效問題,因而ReEnc過程計(jì)算效率會(huì)有所下降。文獻(xiàn)[23]的方案是基于雙線性對(duì)且不支持條件重加密,考慮到雙線性對(duì)運(yùn)算效率一般只有指數(shù)運(yùn)算的一半,在代理重加密服務(wù)節(jié)點(diǎn)數(shù)量較多時(shí)((k,n) 門限中的n較大),本文方案的計(jì)算效率要優(yōu)于文獻(xiàn)[23]。文獻(xiàn)[22]的計(jì)算效率比較高,主要原因是在重加密密鑰生成過程(ReKeyGen)中沒有進(jìn)行指數(shù)運(yùn)算和雙線性對(duì)運(yùn)算,而是直接將授權(quán)者和被授權(quán)者的私鑰信息發(fā)送給一個(gè)第三方來進(jìn)行簡單的代數(shù)運(yùn)算生成重加密密鑰,這帶來了私鑰泄露的風(fēng)險(xiǎn),同時(shí)該方案也不支持條件重加密,只能達(dá)到IND-CPA安全。本文方案實(shí)現(xiàn)了隨機(jī)預(yù)言下的IND-CCA安全,從表2可以看到,為了實(shí)現(xiàn)INDCCA安全和條件信息的匿名化,本方案的計(jì)算量中引入了一定的哈希運(yùn)算。由于哈希運(yùn)算的效率比指數(shù)運(yùn)算要高得多,因此本方案在提高安全性的同時(shí)并沒有增加太大的計(jì)算量。
本文提出了無雙線對(duì)的門限條件匿名代理重加密方案的定義及安全模型,該方案在CDH問題困難性假設(shè)下能夠滿足隨機(jī)預(yù)言模型中的INDCCA安全,本文方案在原始密文和重加密密鑰中加入條件信息,能夠?qū)χ丶用苊芪倪M(jìn)行細(xì)粒度的控制。方案在重加密密鑰生成和重加密過程中引入了門限技術(shù),為重加密應(yīng)用于分布式系統(tǒng)提供了基礎(chǔ)。方案不依賴雙線性對(duì)操作,可以對(duì)敏感的條件信息進(jìn)行匿名化處理,并能夠防止代理服務(wù)節(jié)點(diǎn)與被授權(quán)者合謀恢復(fù)授權(quán)者的私鑰信息。方案目前只能支持確定的單條件信息,無法實(shí)現(xiàn)模糊條件和多條件,這是下一步需要重點(diǎn)解決的問題。