劉 曉 紅
(運(yùn)城學(xué)院 數(shù)學(xué)與信息技術(shù)學(xué)院,山西 運(yùn)城 044000)
Al-Riyami等人于2003年首次提出了無(wú)證書(shū)公鑰密碼體制的思想[1],引起了學(xué)術(shù)界的廣泛關(guān)注,許多新的無(wú)證書(shū)簽名方案被相繼提出[2-4]。1996年歐密會(huì)議上Jakobsson等人首次提出了具有指定驗(yàn)證者的簽名方案[5],它是指簽名的人可以指定其簽名的驗(yàn)證者,只有指定的驗(yàn)證者才能判斷簽名的正確與否,所以近年來(lái)不少指定驗(yàn)證者的簽名方案被提出[6-8]。2001年亞洲密碼學(xué)會(huì)上Boneh, Lynn和Shacam提出了一個(gè)短簽名方案[9],但他們是在超橢圓曲線上利用雙線性對(duì)運(yùn)算進(jìn)行簽名的,從而導(dǎo)致了昂貴的計(jì)算代價(jià)。
左黎明等人在Inv-CDH困難問(wèn)題假設(shè)和隨機(jī)預(yù)言機(jī)模型下提出了一種改進(jìn)的高效無(wú)證書(shū)短簽名方案并對(duì)其進(jìn)行了安全性分析[10]。楊小東等人在標(biāo)準(zhǔn)模型下提出了一種安全的無(wú)證書(shū)簽名方案[11]。李祖猛等人對(duì)樊愛(ài)苑等人提出的無(wú)雙線性對(duì)運(yùn)算的無(wú)證書(shū)簽名方案進(jìn)行了分析并改進(jìn)[12]。在此基礎(chǔ)上,本文提出了一個(gè)無(wú)雙線性對(duì)運(yùn)算,且具有指定驗(yàn)證者的可證安全的無(wú)證書(shū)簽名方案,并在CDH和DLP困難問(wèn)題假設(shè)以及隨機(jī)預(yù)言模型下證明了該方案的安全性。


對(duì)于無(wú)證書(shū)簽名方案,我們一般考慮兩種類型的攻擊,一種是公鑰替換攻擊,指攻擊者可以通過(guò)查詢用戶的公鑰或者替換用戶的公鑰來(lái)偽造簽名;另一種是惡意的KGC(秘鑰生成中心)偽造攻擊,指KGC事先知道要偽造的目標(biāo)用戶,然后根據(jù)其生成特殊的系統(tǒng)參數(shù),最后偽造簽名。



(3)簽名階段:設(shè)需要簽名的消息為m,A計(jì)算σ=SAH2(m,xAPB),則簽名為(m,σ,IDB)。
(4)驗(yàn)證階段:B收到消息m的簽名(m,σ,IDB)后,計(jì)算
σ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交互的過(guò)程中試圖解決CDH問(wèn)題,即輸入(P,aP,bP),目標(biāo)是計(jì)算出abP,并且在下面游戲中充當(dāng)挑戰(zhàn)者與A1進(jìn)行交互。在證明中假設(shè)A1是驗(yàn)證者B,此時(shí)xBPi為固定值,如果B不能偽造簽名,則任何人都不能偽造簽名。以下是攻擊的幾個(gè)階段:
(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要維護(hù)以下列表來(lái)保存詢問(wèn)結(jié)果:
PK—list(IDi,xi,Pi)
H1—list(IDi,Pi,Qi)
H2—list(Pi,mi,h)
SK—list(IDi,xi,Di)
①公鑰查詢
A1向C詢問(wèn)IDi的公鑰,若在公鑰列表中已經(jīng)存在,則C返回Pi給A1,如果不存在,并且IDi≠ID*,則C隨機(jī)選擇xi,計(jì)算Pi=xiPpub,并將(IDi,xi,Pi)加入到PK列表中。如果IDi=ID*,則C隨機(jī)選擇a,計(jì)算Pi=aPpub,并將(IDi,⊥,Pi)加入到PK列表;
②H1查詢
A1詢問(wèn)IDi部分私鑰,C先檢查H1列表,當(dāng)對(duì)應(yīng)的(IDi,Pi,Qi)在H1列表中時(shí),則將其返回給AI,否則根據(jù)公鑰查詢先建立PK列表,然后隨機(jī)選擇ri,令Qi=ri,并將(IDi,Pi,Qi)加入到H1列表。
③部分私鑰查詢
當(dāng)A1向C詢問(wèn)IDi的私鑰,并且IDi≠ID*時(shí),C首先檢查已建立的SK列表,若(IDi,xi,Di)在列表中,則將其返回,否則,建立PK列表和H1列表,然后計(jì)算Di=sri,并將(IDi,xi,Di)加入到SK列表;如果IDi=ID*,則終止。
④查詢
當(dāng)AI向C詢問(wèn)消息mi所對(duì)應(yīng)的H2時(shí),C首先檢查(Pi,mi,hi)是否在H2列表中,若存在,則將其返回,否則當(dāng)mi≠m*時(shí),C隨機(jī)選取ui,計(jì)算hi=uiP返回給AI,并添加(Pi,mi,hi)到H2列表中,當(dāng)mi=m*時(shí),選擇b,計(jì)算hi=bP返回給AI,并添加(Pi,m*,⊥)到H2列表中。
⑤公鑰替換查詢

⑥簽名查詢
當(dāng)AI想要詢問(wèn)IDi對(duì)消息mi的簽名時(shí),首先檢查IDi是否等于ID*。
(a) 如果IDi≠ID*,則C首先查找IDi的私鑰和mi對(duì)應(yīng)的hi,然后計(jì)算σi=xiDihi。
(b) 如果IDi=ID*,則算法終止。
⑦簽名驗(yàn)證查詢
當(dāng)A1想要驗(yàn)證簽名(mi,σi,IDB)是否正確時(shí),C首先查找H1列表,PK列表和H2列表,找到IDi相應(yīng)的Qi和Pi以及mi、Pi對(duì)應(yīng)的hi,然后計(jì)算σiP,并驗(yàn)證等式σiP=QiPihi,如果等式成立,則返回‘1’,表示通過(guò)驗(yàn)證;否則返回‘0’,表示簽名無(wú)效。
(3)偽造階段
如果攻擊者AI成功偽造了簽名(ID*,m*,σ*),且IDi≠ID*,則算法失敗,如果IDi=ID*,由驗(yàn)證等式:
σ*P=QiPiH2(xBPA,m*)
=ri·asP·bP=absriPP

概率分析:要使得攻擊成功,須滿足下面三個(gè)條件:

②攻擊者以ε的概率生成一個(gè)有效的且沒(méi)有被詢問(wèn)過(guò)的簽名(mi,σi,IDB);



證明:給定一個(gè)隨機(jī)的DLP問(wèn)題實(shí)例(q,P,aP),算法C的目的是計(jì)算獲得a,同定理1的證明,C試圖以AⅡ?yàn)樽映绦蚪鉀QDLP問(wèn)題,并充當(dāng)游戲中的挑戰(zhàn)者。游戲開(kāi)始時(shí),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)驗(yàn)證者,根據(jù)定義,攻擊者AⅡ擁有系統(tǒng)的主密鑰,但不能替換用戶的公鑰,同樣,在證明中AⅡ假設(shè)是驗(yàn)證者B,此時(shí)xBPA為固定值,如果B不能偽造簽名,則任何人都不能偽造簽名,AⅡ同定理1一樣進(jìn)行PK、H1、H2及SK詢問(wèn)。
簽名詢問(wèn):
當(dāng)AⅡ想對(duì)消息mi進(jìn)行簽名詢問(wèn)時(shí),執(zhí)行
(a)當(dāng)IDi=ID*時(shí),拒絕,終止游戲;
(b)當(dāng)IDi≠ID*時(shí),首先進(jìn)行SK詢問(wèn)、H1詢問(wèn)和H2詢問(wèn),然后計(jì)算ti=xisrihi,σ=tiP.返回(mi,σ,IDB)給AⅡ.
偽造簽名階段:
AⅡ成功偽造了簽名(m*,σ*,IDB),即成功找到了t*,使得
σ*=t*·s·H2(m*,xBPi)
如果IDi≠ID*,則算法失敗,如果IDi=ID*由驗(yàn)證等式:
σ*P=QAPAH2(m*,xBPi),
得
t*·s·H2(m*,xBPi)·P=ri·a·s·P·H2(m*,xBPi)從而a=t*/ri.解決了離散對(duì)數(shù)問(wèn)題。
概率分析同定理1,得證。
本文所提出的具有指定驗(yàn)證者的無(wú)證書(shū)簽名方案,因?yàn)闆](méi)有雙線性對(duì)的運(yùn)算,所以具有更高的效率,且在隨機(jī)預(yù)言模型下將方案的安全性規(guī)約到了DLP和CDH困難問(wèn)題上,因此具有更高的安全性。可以更好地將其應(yīng)用到寬帶受限的網(wǎng)絡(luò)環(huán)境中。