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