楊小東,李雨潼,王晉利,麻婷春,王彩芬
(1. 西北師范大學計算機科學與工程學院,甘肅 蘭州 730070;2. 密碼科學技術(shù)國家重點實驗室,北京 100878)
基于身份的代理重簽名是一種具有轉(zhuǎn)換簽名功能的密碼體制,一個半可信的代理者能將 Alice的簽名轉(zhuǎn)換為Bob對同一個消息的簽名,但代理者無法獲得Alice或Bob的簽名密鑰的任何信息。在一種基于身份的代理重簽名方案中,用戶選擇如E-mail地址、手機號碼等身份標識作為公鑰,而私鑰由可信的密鑰生成中心(PKG, private key generator)生成并通過安全的信道發(fā)送給用戶?;谏矸莸拇碇睾灻w制避免了復雜的公鑰證書,簡化了密鑰管理,在云計算、大數(shù)據(jù)隱私保護等方面有廣泛的應用[1-2]。
基于文獻[3]的加密方案,Shao等[4]構(gòu)造了第一種標準模型下安全的基于身份的代理重簽名方案;Feng等[5]利用抗碰撞的散列函數(shù)設(shè)計了一種基于身份的代理重簽名方案,但該方案不滿足多用性;Hu等[6]提出了一種緊規(guī)約的基于身份的代理重簽名方案,但該方案的安全性依賴于較強的困難問題假設(shè);Shao等[7]又設(shè)計了一種隨機預言模型下安全的單向基于身份的代理重簽名方案,但該方案的驗證重簽名的計算開銷與重簽名級數(shù)呈線性增長關(guān)系;Huang等[8]提出了一種無雙線性對的基于身份的代理重簽名方案,并在隨機預言模型中證明了該方案的安全性可歸約到離散對數(shù)問題。文獻[9-10]分別構(gòu)造了格上基于身份的代理重簽名方案,但這2種方案的參數(shù)尺寸、密鑰長度和簽名長度都比較大,并且安全性依賴于理想的隨機預言機。然而,在隨機模型中被證明安全的密碼方案,當利用具體的散列函數(shù)實例化隨機預言機時,隨機預言模型并不能確保方案的實際安全性[11]。因此,研究標準模型下安全的基于身份的代理重簽名方案具有一定的現(xiàn)實意義。
在實際應用中,任何實用的密碼系統(tǒng)都面臨用戶撤銷的問題,比如用戶權(quán)限到期或用戶密鑰泄露,這就需要從密碼系統(tǒng)中撤銷用戶。為了實現(xiàn)基于身份的用戶撤銷機制,文獻[12]提出了PKG定期更新未撤銷用戶密鑰的撤銷方法,但 PKG與未撤銷用戶之間需要建立一個安全信道來傳輸更新密鑰。Boldyreva等[13]提出了PKG通過公開信道實現(xiàn)用戶撤銷的方法,隨后一些基于Boldyreva所提方法的可撤銷加密方案相繼被提出[14-15]。為了解決簽名方案中的用戶撤銷問題,Tsai等[16]提出了第一種可撤銷的基于身份簽名方案,但Liu等[17]發(fā)現(xiàn)該方案存在簽名密鑰泄露的安全風險。近年來,一些具有特殊性質(zhì)的可撤銷簽名方案[18-20]也相繼被提出,如可撤銷的屬性基簽名[21]、可撤銷的無證書簽名[22-23]、可撤銷的代理簽名[24]、可撤銷的前向安全簽名[25]等。
現(xiàn)有的基于身份的代理重簽名方案均未考慮用戶撤銷問題,而用戶撤銷功能對一種實用的基于身份的代理重簽名方案是非常重要的。例如 Alice是某公司的總經(jīng)理,負責該公司所有文件的簽名。如果Alice因公出差,由該公司的副總經(jīng)理Bob生成公司文件的簽名,利用Alice和Bob之間的重簽名密鑰,將Bob的簽名轉(zhuǎn)換為Alice對同一文件的簽名。由于工作調(diào)動或身體健康的原因,Bob離開了公司。為了公司的利益,需要撤銷Bob的簽名權(quán)限。因此,基于身份代理重簽名體制在實現(xiàn)簽名轉(zhuǎn)換的同時,還必須支持高效的用戶撤銷機制。
鑒于此,本文提出了可撤銷的基于身份代理重簽名方案,并給出了相應的形式化定義與安全模型?;赟hao等[4]提出的代理重簽名方案和二叉樹結(jié)構(gòu),本文構(gòu)造了一種可撤銷的雙向基于身份的代理重簽名方案,在標準模型下證明了所構(gòu)造方案的安全性可規(guī)約到計算性Diffie-Hellman Diffie-Hellman(CDH, computational Diffie-Hellman)困難問題。本文所提方案實現(xiàn)了用戶的撤銷與密鑰的更新,能抵抗簽名密鑰泄露攻擊,并且 PKG的工作量與用戶的數(shù)量呈對數(shù)增長關(guān)系,具有良好的延展性。
本文所使用的符號及其說明如表1所示。
令p是一個大素數(shù),G和GT是2個階為p的乘法循環(huán)群,g是G的一個生成元。如果一個可計算的映射e:G×G→GT滿足以下條件,則稱e是一個雙線性映射[4]。
1) 雙線性:對任意的a,b∈Zp,有
選擇基于二叉樹的 KUNode算法[26]來提高未撤銷用戶的密鑰更新效率。令BT表示一棵具有N個葉子節(jié)點的二叉樹,root表示樹的根節(jié)點。對于每個非葉子節(jié)點θ,用θl和θr表示θ的左孩子節(jié)點和右孩子節(jié)點。每個用戶將分配至BT上的一個葉子節(jié)點η,用path(η)表示從葉子節(jié)點η到根節(jié)點root的路徑上的所有節(jié)點集合。RL表示一個由葉子節(jié)點ηi和時間周期ti組成的撤銷列表,Y表示BT中需要更新的最小節(jié)點集合。如果η∈RL,則path(η) ∩Y=?。KUNode算法的輸入是BT、RL和時間周期t,輸出是Y。KUNode算法的具體描述如算法1所示。
表1 符號列表及其說明
算法1KUNode算法
輸入BT、RL和時間周期t
輸出需要更新的最小節(jié)點集合Y
1) 設(shè)置集合X=?,Y=?
2) ? (ηi,ti)∈ RL
3) 如果ti≤t,在X中添加 path(ηi)
4) ?θ∈X
5) 如果θl?X,在Y中添加θl
6) 如果θr?X,在Y中添加θr
7) 如果Y=?,在Y中添加root
8) 返回Y
定義1CDH假設(shè)。如果所有多項式時間算法無法解決G上CDH問題,則稱G上的CDH問題是困難的[4]。
一種撤銷的雙向基于身份的代理重簽名方案由下面9種算法構(gòu)成。
1) setup (1λ,N,T)→ (pp,msk,RL,st)是系統(tǒng)參數(shù)建立算法:輸入安全參數(shù)λ、最大用戶數(shù)N和用戶簽名密鑰有效期的最大時間周期T,輸出公開參數(shù)pp、PKG的主密鑰msk、初始化為空集的用戶撤銷列表RL和狀態(tài)st。
2) extract (pp,msk,ID)→skID是秘密密鑰生成算法:輸入pp、msk和用戶身份ID,輸出秘密密鑰skID。
3) KeyUp (pp,msk,t,RL,st)→ ukt是密鑰更新算法:輸入pp、msk、更新的時間周期t、當前的用戶撤銷列表RL和狀態(tài)st,如果t>T,輸出一個錯誤符號“⊥”;否則,輸出一個更新密鑰ukt。
4) SKGen (pp,skID,ukt)→ dkID,t是簽名密鑰生成算法:輸入pp、skID和ukt,如果用戶身份ID在時間周期t已被撤銷,輸出⊥;否則,輸出對應于ID和t的簽名密鑰dkID,t。
6) sign (pp,dkID,t,t,M)→σ是簽名生成算法:輸入pp、dkID,t、當前時間周期t(t≤T)和消息M,輸出關(guān)于M的簽名σ,其中dkID,t是用戶身份ID在時間周期t的簽名密鑰。
8) verify (pp,ID,t,M,σ)→{0,1}是簽名驗證算法:輸入pp、身份ID、時間周期t(t≤T)、消息M和簽名σ,如果σ是合法的,輸出1;否則,輸出0。
9) revoke (ID,t,RL,st)→ RL′是用戶撤銷算法:輸入時間周期t(t≤T)內(nèi),撤銷的用戶身份ID、用戶撤銷列表RL和狀態(tài)st,輸出更新后的用戶撤銷列表RL′。
借鑒基于身份的代理重簽名方案的安全模型[4,7]和可撤銷的基于身份簽名方案的安全性定義[17-19],本文通過攻擊者A和挑戰(zhàn)者C之間的安全游戲,給出可撤銷的雙向基于身份的代理重簽名方案的安全模型。
初始化C運行setup(1λ,N,T)算法,將生成的系統(tǒng)參數(shù)pp發(fā)送給A,自己秘密保存主密鑰msk。
詢問A自適應地向C發(fā)起有限次的如下詢問。
1) extract-query:對于A請求的關(guān)于身份ID的秘密密鑰詢問,C運行算法extract(pp,msk,ID),將輸出的秘密密鑰skID發(fā)送給A。
2) KeyUp-query:對于A請求的關(guān)于時間周期t(t≤T)的更新密鑰詢問,其中t不能小于以前所有詢問過的時間周期,C運行算法 KeyUp (pp,msk,t,RL,st),將生成的更新密鑰ukt發(fā)送給A。
3) SKGen-query:收到A發(fā)送的關(guān)于(ID,t)的簽名密鑰詢問后,C首先詢問關(guān)于ID的 extractquery和關(guān)于t≤T的KeyUp-query,分別獲得相應的秘密密鑰skID與更新密鑰ukt;然后運行算法SKGen(pp,skID,ukt)生成簽名密鑰dkID,t,并將dkID,t發(fā)送給A。為了不失一般性,這里要求A未進行關(guān)于t的 KeyUp-query詢問前,不能發(fā)起關(guān)于t的SKGen-query詢問。
4) ReKey-query:收到A發(fā)送的關(guān)于 2個身份(IDA,IDB)和時間周期t的重簽名密鑰詢問后,C首先詢問關(guān)于(IDA,t)和(IDB,t)的 SKGen-query,獲得對應的簽名密鑰dkA,t與dkB,t;然后將算法 ReKey(pp,dkA,t,dkB,t)生成的重簽名密鑰rkA→B,t發(fā)送給A。
5) sign-query:收到A發(fā)送的關(guān)于身份ID、時間周期t(t≤T)與消息M的簽名詢問后,C詢問關(guān)于(ID,t)的SKGen-query獲得簽名密鑰dkID,t,并運行算法sign (pp,dkID,t,t,M),將生成的M的簽名σ返回給A。
6) revoke-query:如果A在時間周期t(t≤T)發(fā)起過關(guān)于身份ID的KeyUp-query,則A在時間周期t不能發(fā)起關(guān)于ID的revoke-query。收到A發(fā)送的(ID,t)后,其中t不能小于以前所有詢問過的時間周期,C運行算法revoke(ID,t,RL,st),并將輸出的用戶撤銷列表RL′返回給A。
偽造攻擊者A最后輸出身份ID*、時間周期t*(t≤T)、消息M*和簽名σ*。如果以下5個條件均成立,則稱A在以上游戲中獲勝。
1) verify (pp,ID*,t*,M*,σ*)=1。
2) (ID*,t*)未進行過SKGen-query詢問。
3) ID*未進行過 extract-query詢問,并且t*≤T未進行過KeyUp-query詢問。
4) ID*未進行過ReKey-query詢問。
5) (ID*,t*,M*)未進行過sign-query詢問。
定義2若任何一個多項式時間攻擊者A在上述游戲中獲勝的概率是可忽略的,則稱可撤銷的雙向基于身份的代理重簽名方案在適應性選擇身份和消息攻擊下是存在不可偽造的。
定義 3如果攻擊者無法從當前時間周期t泄露的簽名密鑰dkID,t中獲取秘密密鑰skID或威脅其他時間周期簽名密鑰的安全性,則稱可撤銷的基于身份的代理重簽名方案滿足抗簽名密鑰泄露攻擊性。
在Shao方案[4]基礎(chǔ)上,本文2.3節(jié)的KUNode算法構(gòu)造了一種可撤銷的雙向基于身份的代理重簽名方案。假設(shè)用戶身份的長度和簽名消息的長度分別為mbit和nbit,可通過 2個散列函數(shù)H1:{0,1}*→ {0,1}m和H2:{0,1}*→{0,1}n,將用戶身份和簽名消息的固定長度延伸為可變長度,即對于任意長度的身份ID′和簽名消息M′,計算從而將身份ID′和消息M′分別映射為長度為m和n的比特串。為了簡化表述,假設(shè)方案中的用戶身份和消息都進行了散列函數(shù)H1和H2的預處理,即用符號ID和M分別表示長度為mbit的用戶身份和長度為nbit的簽名消息。
1) setup算法
輸入安全參數(shù)λ、最大用戶數(shù)N和最大時間周期T,PKG執(zhí)行如下操作。
① 選擇一個大素數(shù)p,2個階為p的乘法循環(huán)群G和GT,一個G的生成元g和一個雙線性映射
② 在G中隨機選取
④ 選擇一棵具有N個葉子節(jié)點的二叉樹BT,設(shè)置用戶撤銷列表RL=?和狀態(tài)st=BT。
⑤ 秘密保存主密鑰msk=α,公開參數(shù)pp=
為了表述方便,對于長度為mbit的用戶身份和長度為nbit的簽名消息和
2) extract算法
為了生成用戶身份ID的秘密密鑰,PKG執(zhí)行如下操作。
① 在BT上隨機選擇一個空的葉子節(jié)點η,并在η中保存ID。
② 對于每個節(jié)點θ∈path(η),隨機選擇gθ∈G,并在θ中保存;選擇一個隨機數(shù),計算
3) KeyUp算法
對于時間周期t、撤銷列表RL和狀態(tài)st,如果t>T,輸出⊥;否則,PKG通過如下步驟生成更新密鑰ukt。
① 對于每個節(jié)點θ∈KUNode (BT, RL,t),首先在θ中提取,然后隨機選取,計算 ukθ=
如果在時間周期t的撤銷列表 RL中包含了被撤銷的用戶身份ID,則PKG調(diào)用KUNode算法[26]生成需要更新的最小節(jié)點集合Y=KUNode (BT, RL,t),但被撤銷的用戶無法獲得PKG生成的更新密鑰ukt。下面通過一個實例來說明撤銷用戶的方法。
如圖1所示,假設(shè)4個用戶u1,u2,u3和u4被分配至 4 個葉子節(jié)點η3,η4,η5和η6。假設(shè)用戶u3被撤銷,則X=path(η5)={η5,η2, root},Y={η1,η6},path(η5)∩Y=?。除了u3外,從每個用戶對應的葉子節(jié)點到根節(jié)點的路徑上至少包含Y中的一個節(jié)點。用戶u1和u2的路徑上包含Y中的節(jié)點η1,用戶u4的路徑上包含Y中的節(jié)點η6。在時間周期t,PKG只需更新Y={η1,η6}中每個節(jié)點的密鑰,便可完成未撤銷用戶u1,u2和u4的密鑰更新,從而實現(xiàn)對用戶u3的撤銷。
圖1 KUNode算法的一個實例
4) SKGen算法
如果用戶身份ID在時間周期t≤T已被撤銷,輸出⊥;否則,一定存在一個節(jié)點θ∈KUNode (BT,RL,t)∩path(η);用戶隨機選取,利用自己的秘密密鑰和公開的更新密鑰計算簽名密鑰為
5) ReKey算法
給定 2個用戶身份IDA和IDB的簽名密鑰和,采用類似文獻[4]的安全協(xié)議,生成代理者的一個重簽名密鑰為
6) sign算法
對于當前時間周期t≤T和一個消息M,身份為IDA的簽名者隨機選取,利用簽名密鑰計算,輸出一個關(guān)于M的簽名
7) resign算法
8) verify算法
給定身份ID、消息M、時間周期t≤T和簽名,驗證者檢查以下等式是否成立。
如果等式成立,說明σ是一個合法的簽名,輸出1;否則,輸出0。
9) revoke算法
給定 BT上存儲被撤銷用戶身份ID的葉子節(jié)點η,當前時間周期t≤T、用戶撤銷列表RL和狀態(tài) st,PKG 在 RL 中添加 (η,t),即 RL′=,并輸出更新后的用戶撤銷列表RL′。
假設(shè)身份IDB的簽名密鑰對于消息M的重簽名,其中
則Bσ的正確性驗證如下
上述推導過程證明了本文方案的正確性。
通過IDA與IDB間的重簽名密鑰rkA→B,t,很容易計算出IDB與IDA間的重簽名密鑰,所以本文方案具有雙向性。
定理1 如果CDH假設(shè)成立,則本文方案滿足標準模型下自適應性選擇身份和消息攻擊的存在不可偽造性。
證明 假設(shè)攻擊者A進行了最多qsk次秘密密鑰詢問、quk次更新密鑰詢問、qdk次簽名密鑰詢問、qrk次重簽名密鑰詢問、qs次簽名詢問和qr次撤銷詢問后,以不可忽略的概率ε攻破了本文方案的存在不可偽造性,則存在一個挑戰(zhàn)者C將利用攻擊者A的偽造,以不可忽略的概率'ε解決G上的CDH問題。對于一個CDH問題實例的目標是計算gab。
初始化C設(shè)置參數(shù)和,滿足lu(m+1)<p和lm(n+1)<p。隨機選取2個整數(shù)和km(0≤km≤n),并隨機選擇。選擇一棵具有N個葉子節(jié)點的二叉樹BT,設(shè)置最大時間周期T、用戶撤銷列表RL=?和狀態(tài)st=BT,參數(shù)并發(fā)送系統(tǒng)參數(shù)給A。
詢問C回答A發(fā)起的一系列如下詢問。
1) extract-query:為了響應A請求的關(guān)于身份ID的秘密密鑰詢問,C維持一個初始化為空的列表tsk。如果F(ID)=0 modp,C退出模擬;否則,C執(zhí)行如下操作。
① 在BT上隨機選擇一個空的葉子節(jié)點η,并在η中保存ID。
② 對于每個節(jié)點θ∈path(η),隨機選擇gθ∈G,并在θ中保存gθ。如果tsk中不存在(θ,rθ,ID),隨機選取rθ∈Zp,將(θ,rθ,ID)添加到tsk中。然后提取rθ,計算
2) KeyUp-query:為了響應A請求的關(guān)于時間周期t的更新密鑰詢問,C維持一個初始化為空的列表Tuk,如果t>T,輸出⊥;否則,C執(zhí)行如下操作。
① 對于每個節(jié)點θ∈KUNode (BT, RL,t),首先在θ中提取gθ,然后在Tuk中提取sθ。如果Tuk中不存在,則選擇一個隨機數(shù),將添加到Tuk中,并計算
3) SKGen-query:為了響應A請求的關(guān)于(ID,t)的簽名密鑰詢問,C維持一個初始化為空的列表Tdk。C首先詢問關(guān)于ID的extract-query和關(guān)于t的KeyUp-query,分別獲得相應的秘密密鑰skID與更新密鑰ukt;然后在Tdk中提取(rID,sID)。如果Tdk中不存在(rID,sID,ID,t),則選擇2個隨機數(shù)rID、sID∈Zp,將(rID,sID,ID,t)添加到Tdk中;最后運行算法SKGen(pp,skID,ukt),將生成的簽名密鑰dkID,t返回給A。
4) ReKey-query:對于A請求的關(guān)于2個身份(IDA,IDB)和時間周期t的重簽名密鑰詢問,C首先詢問關(guān)于(IDA,t)和(IDB,t)的 SKGen-query,分別獲得對應的簽名密鑰dkA,t與dkB,t;然后運行算法ReKey(pp,dkA,t,dkB,t),將生成的重簽名密鑰rkA→B,t發(fā)送給A。
5) sign-query:對于A請求的關(guān)于身份ID、時間周期t(t≤T)與消息M的簽名詢問,如果F(ID)≠0 modp,C詢問關(guān)于(ID,t)的 SKGen-query獲得簽名密鑰dkID,t,然后運行算法sign(pp,dkID,t,t,M),并將輸出的關(guān)于M的簽名σ返回給A。如果F(ID)=0 modp,則考慮以下2種情況。
① 如果K(M)=0 modp,則C退出模擬。
② 如果K(M)≠0 modp,則C在Tsk、Tuk、Tdk中提取rθ、sθ和(rID,sID),并隨機選擇rm∈Zp,計算,然后將關(guān)于M的簽名發(fā)送給A。
6) revoke-query:對于A請求的關(guān)于(ID,t)的撤銷詢問,C運行算法revoke(ID,t,RL,st),并將運行結(jié)果返回給A。
偽造攻擊者A最后輸出一個對應于身份*ID和時間周期t*≤T的關(guān)于消息M*的簽名。如果F(ID*)≠0 modp或退出模擬;否則,C計算CDH值gab過程如下
因此,C利用A的偽造(ID*,t*,M*,σ*)成功求解了CDH問題實例。與文獻[3-4]的分析過程相似,C將以的概率成功解決G上的CDH問題。
定理2本文方案滿足抗簽名密鑰泄露攻擊性。
證明在 4.1節(jié)的方案中,分別用gθ和來構(gòu)造秘密密鑰和更新密鑰,并且滿足。只有未撤銷的用戶才能正確恢復出,進而生成合法的簽名密鑰。如果攻擊者獲得了未撤銷用戶ID的簽名密鑰dkID,t,則利用公開信道傳輸?shù)母旅艽aukt計算
由于在本文方案的SKGen算法中,用戶隨機選取rID,sID∈Zp對秘密密鑰和更新密鑰進行了隨機化處理,因此攻擊者即使獲得了用戶身份ID在時間周期t的更新密鑰dkID,t,但仍然無法直接從dkID,t中計算出對應的秘密密鑰skID。因為用戶的簽名密鑰dkID,t通過固定的秘密密鑰skID和定期變化的更新密鑰ukt生成,所以攻擊者在skID未知的情況下不能利用SKGen算法產(chǎn)生其他時間周期的合法簽名密鑰。
綜上所述,即使攻擊者獲得當前時間段的簽名密鑰dkID,t,攻擊者無法通過dkID,t和公開的更新密鑰ukt計算出秘密密鑰skID,也不會影響其他時間周期簽名密鑰的安全性。因此,本文方案能抵抗簽名密鑰泄露攻擊,即滿足抗簽名密鑰泄露攻擊性。
文獻[4-6]分別提出了3個標準模型下安全的基于身份的代理重簽名方案(分別將其命名為 Shao方案[4]、Feng方案[5]和Hu方案[6]),將本文方案與這些方案進行性能比較分析,如表2所示。令N表示用戶總數(shù),R表示撤銷的用戶數(shù),則由KUNode算法的計算復雜度可知[25],本文方案中 PKG更新密鑰的開銷為。假設(shè)所有方案選擇階為素數(shù)p的群G和GT,僅考慮計算開銷比較大的雙線性對和指數(shù)運算,不再討論計算量較小的乘法運算等操作。在表2中,符號|G|表示群G中一個元素的平均長度,|p|表示有限域Zp中一個元素的平均長度,Pa表示一次雙線對運算,exp表示一次指數(shù)運算。
從表2可知,與Shao方案[4]相比,本文方案的簽名長度和重簽名長度多了一個群G中的元素,并且簽名驗證算法多了一次雙線性對運算和一次指數(shù)運算。與Feng方案[5]相比,本文方案與該方案有相同的重簽名長度,但具有較高的簽名驗證效率,并滿足多用性。與 Hu方案[6]相比,本文方案具有更短的簽名長度和重簽名長度,并且簽名算法的計算效率優(yōu)于該方案。然而,對比的3種方案均沒有考慮用戶撤銷問題,本文方案實現(xiàn)了用戶撤銷功能,并且 PKG撤銷用戶的工作量隨用戶總數(shù)的增加呈對數(shù)增長,具有良好的延展性。
將本文方案、Feng方案[5]和 Hu方案[6]進行簽名算法的計算時間開銷實驗對比分析,具體結(jié)果如圖2所示。選取PBC庫的a.param初始化pairing,實驗的硬件環(huán)境為:2.5 GHz英特爾酷睿i7-6500處理器,8 GB的內(nèi)存,512 GB的硬盤空間;軟件環(huán)境為:64位 Windows 10操作系統(tǒng),密碼庫PBC-0.4.7-VC。
圖2 簽名生成的時間開銷與消息長度關(guān)系
表2 4種方案的計算開銷與安全性能比較
由于本文方案是基于Shao方案[4]設(shè)計的,因此2種方案生成簽名的計算開銷相同,均需要2次指數(shù)運算。此外,F(xiàn)eng方案[5]需要3次指數(shù)運算,Hu方案[6]需要6次指數(shù)運算。對于長度相同的簽名消息,圖 2表明本文方案生成簽名的時間開銷低于Feng 方案[5]和 Hu 方案[6]。
本文方案利用 KUNode算法[26]來實現(xiàn)用戶的撤銷,而文獻[16]通過PKG直接更新未撤銷用戶的密鑰來實現(xiàn)用戶的撤銷。下面將2種方案進行密鑰更新的性能比較,結(jié)果如圖3所示。假設(shè)用戶總數(shù)為32個,被撤銷的用戶數(shù)分別為1個、2個、4個、8個和16個。
圖3 密鑰更新的性能比較
本文方案和文獻[16]方案生成每個用戶的更新密鑰均需要執(zhí)行2次指數(shù)運算,所需的時間開銷約為15 ms。由圖3可知,當被撤銷的用戶數(shù)小于用戶總數(shù)的一半時,本文方案需要更新密鑰的用戶個數(shù)小于文獻[16]方案。因此,本文方案具有更低的用戶撤銷開銷。
本文基于 Shao方案[4]和 KUNode算法[26],構(gòu)造了一種可撤銷的基于身份的代理重簽名方案,并在標準模型下證明了其安全性依賴于 CDH假設(shè)。本文方案支持用戶撤銷功能,滿足雙向性和多用性,可有效抵抗簽名密鑰泄露攻擊,具有良好的延展性。但本文方案無法抵抗量子計算攻擊,下一步的任務(wù)是設(shè)計格上可撤銷的基于身份的代理重簽名方案。