劉 曉 紅
(運城學(xué)院 數(shù)學(xué)與信息技術(shù)學(xué)院,山西 運城 044000)
Al-Riyami等人于2003年首次提出了無證書公鑰密碼體制的思想[1],引起了學(xué)術(shù)界的廣泛關(guān)注,許多新的無證書簽名方案被相繼提出[2-4]。1996年歐密會議上Jakobsson等人首次提出了具有指定驗證者的簽名方案[5],它是指簽名的人可以指定其簽名的驗證者,只有指定的驗證者才能判斷簽名的正確與否,所以近年來不少指定驗證者的簽名方案被提出[6-8]。2001年亞洲密碼學(xué)會上Boneh, Lynn和Shacam提出了一個短簽名方案[9],但他們是在超橢圓曲線上利用雙線性對運算進行簽名的,從而導(dǎo)致了昂貴的計算代價。
左黎明等人在Inv-CDH困難問題假設(shè)和隨機預(yù)言機模型下提出了一種改進的高效無證書短簽名方案并對其進行了安全性分析[10]。楊小東等人在標(biāo)準(zhǔn)模型下提出了一種安全的無證書簽名方案[11]。李祖猛等人對樊愛苑等人提出的無雙線性對運算的無證書簽名方案進行了分析并改進[12]。在此基礎(chǔ)上,本文提出了一個無雙線性對運算,且具有指定驗證者的可證安全的無證書簽名方案,并在CDH和DLP困難問題假設(shè)以及隨機預(yù)言模型下證明了該方案的安全性。
對于無證書簽名方案,我們一般考慮兩種類型的攻擊,一種是公鑰替換攻擊,指攻擊者可以通過查詢用戶的公鑰或者替換用戶的公鑰來偽造簽名;另一種是惡意的KGC(秘鑰生成中心)偽造攻擊,指KGC事先知道要偽造的目標(biāo)用戶,然后根據(jù)其生成特殊的系統(tǒng)參數(shù),最后偽造簽名。
(3)簽名階段:設(shè)需要簽名的消息為m,A計算σ=SAH2(m,xAPB),則簽名為(m,σ,IDB)。
(4)驗證階段:B收到消息m的簽名(m,σ,IDB)后,計算
σP=QAPAH2(m,xBPA)
是否成立確定簽名的合法性,如果等式成立,則簽名有效;否則拒絕。
3.1.正確性分析
xAPB=xAxBPpub=xBPA,
σP=SAH2(m,xAPB)P
=xADAPH2(m,xBPA)
=xAsQAPH2(m,xBPA)
=QAPpubH2(m,xBPA)
證明:C在與A1交互的過程中試圖解決CDH問題,即輸入(P,aP,bP),目標(biāo)是計算出abP,并且在下面游戲中充當(dāng)挑戰(zhàn)者與A1進行交互。在證明中假設(shè)A1是驗證者B,此時xBPi為固定值,如果B不能偽造簽名,則任何人都不能偽造簽名。以下是攻擊的幾個階段:
(1)C建立系統(tǒng)參數(shù)params={G,q,P,Ppub,H1,H2}。其中Ppub=sP,將參數(shù)params發(fā)送給敵手A1,保密系統(tǒng)的主密鑰。
(2)查詢階段:設(shè)A1攻擊的目標(biāo)ID為ID*,C要維護以下列表來保存詢問結(jié)果:
PK—list(IDi,xi,Pi)
H1—list(IDi,Pi,Qi)
H2—list(Pi,mi,h)
SK—list(IDi,xi,Di)
①公鑰查詢
A1向C詢問IDi的公鑰,若在公鑰列表中已經(jīng)存在,則C返回Pi給A1,如果不存在,并且IDi≠ID*,則C隨機選擇xi,計算Pi=xiPpub,并將(IDi,xi,Pi)加入到PK列表中。如果IDi=ID*,則C隨機選擇a,計算Pi=aPpub,并將(IDi,⊥,Pi)加入到PK列表;
②H1查詢
A1詢問IDi部分私鑰,C先檢查H1列表,當(dāng)對應(yīng)的(IDi,Pi,Qi)在H1列表中時,則將其返回給AI,否則根據(jù)公鑰查詢先建立PK列表,然后隨機選擇ri,令Qi=ri,并將(IDi,Pi,Qi)加入到H1列表。
③部分私鑰查詢
當(dāng)A1向C詢問IDi的私鑰,并且IDi≠ID*時,C首先檢查已建立的SK列表,若(IDi,xi,Di)在列表中,則將其返回,否則,建立PK列表和H1列表,然后計算Di=sri,并將(IDi,xi,Di)加入到SK列表;如果IDi=ID*,則終止。
④查詢
當(dāng)AI向C詢問消息mi所對應(yīng)的H2時,C首先檢查(Pi,mi,hi)是否在H2列表中,若存在,則將其返回,否則當(dāng)mi≠m*時,C隨機選取ui,計算hi=uiP返回給AI,并添加(Pi,mi,hi)到H2列表中,當(dāng)mi=m*時,選擇b,計算hi=bP返回給AI,并添加(Pi,m*,⊥)到H2列表中。
⑤公鑰替換查詢
⑥簽名查詢
當(dāng)AI想要詢問IDi對消息mi的簽名時,首先檢查IDi是否等于ID*。
(a) 如果IDi≠ID*,則C首先查找IDi的私鑰和mi對應(yīng)的hi,然后計算σi=xiDihi。
(b) 如果IDi=ID*,則算法終止。
⑦簽名驗證查詢
當(dāng)A1想要驗證簽名(mi,σi,IDB)是否正確時,C首先查找H1列表,PK列表和H2列表,找到IDi相應(yīng)的Qi和Pi以及mi、Pi對應(yīng)的hi,然后計算σiP,并驗證等式σiP=QiPihi,如果等式成立,則返回‘1’,表示通過驗證;否則返回‘0’,表示簽名無效。
(3)偽造階段
如果攻擊者AI成功偽造了簽名(ID*,m*,σ*),且IDi≠ID*,則算法失敗,如果IDi=ID*,由驗證等式:
σ*P=QiPiH2(xBPA,m*)
=ri·asP·bP=absriPP
概率分析:要使得攻擊成功,須滿足下面三個條件:
②攻擊者以ε的概率生成一個有效的且沒有被詢問過的簽名(mi,σi,IDB);
證明:給定一個隨機的DLP問題實例(q,P,aP),算法C的目的是計算獲得a,同定理1的證明,C試圖以AⅡ為子程序解決DLP問題,并充當(dāng)游戲中的挑戰(zhàn)者。游戲開始時,C設(shè)置系統(tǒng)參數(shù)為params={G,q,P,Ppub,H1,H2},其中Ppub=sP,然后將系統(tǒng)主密鑰s和參數(shù)params發(fā)送給AⅡ,設(shè)IDA,IDB是目標(biāo)簽名者和目標(biāo)驗證者,根據(jù)定義,攻擊者AⅡ擁有系統(tǒng)的主密鑰,但不能替換用戶的公鑰,同樣,在證明中AⅡ假設(shè)是驗證者B,此時xBPA為固定值,如果B不能偽造簽名,則任何人都不能偽造簽名,AⅡ同定理1一樣進行PK、H1、H2及SK詢問。
簽名詢問:
當(dāng)AⅡ想對消息mi進行簽名詢問時,執(zhí)行
(a)當(dāng)IDi=ID*時,拒絕,終止游戲;
(b)當(dāng)IDi≠ID*時,首先進行SK詢問、H1詢問和H2詢問,然后計算ti=xisrihi,σ=tiP.返回(mi,σ,IDB)給AⅡ.
偽造簽名階段:
AⅡ成功偽造了簽名(m*,σ*,IDB),即成功找到了t*,使得
σ*=t*·s·H2(m*,xBPi)
如果IDi≠ID*,則算法失敗,如果IDi=ID*由驗證等式:
σ*P=QAPAH2(m*,xBPi),
得
t*·s·H2(m*,xBPi)·P=ri·a·s·P·H2(m*,xBPi)從而a=t*/ri.解決了離散對數(shù)問題。
概率分析同定理1,得證。
本文所提出的具有指定驗證者的無證書簽名方案,因為沒有雙線性對的運算,所以具有更高的效率,且在隨機預(yù)言模型下將方案的安全性規(guī)約到了DLP和CDH困難問題上,因此具有更高的安全性??梢愿玫貙⑵鋺?yīng)用到寬帶受限的網(wǎng)絡(luò)環(huán)境中。