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


對于無證書簽名方案,我們一般考慮兩種類型的攻擊,一種是公鑰替換攻擊,指攻擊者可以通過查詢用戶的公鑰或者替換用戶的公鑰來偽造簽名;另一種是惡意的KGC(秘鑰生成中心)偽造攻擊,指KGC事先知道要偽造的目標用戶,然后根據其生成特殊的系統參數,最后偽造簽名。



(3)簽名階段:設需要簽名的消息為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),目標是計算出abP,并且在下面游戲中充當挑戰者與A1進行交互。在證明中假設A1是驗證者B,此時xBPi為固定值,如果B不能偽造簽名,則任何人都不能偽造簽名。以下是攻擊的幾個階段:
(1)C建立系統參數params={G,q,P,Ppub,H1,H2}。其中Ppub=sP,將參數params發送給敵手A1,保密系統的主密鑰。
(2)查詢階段:設A1攻擊的目標ID為ID*,C要維護以下列表來保存詢問結果:
PK—list(IDi,xi,Pi)
H1—list(IDi,Pi,Qi)
H2—list(Pi,mi,h)
SK—list(IDi,xi,Di)
①公鑰查詢
A1向C詢問IDi的公鑰,若在公鑰列表中已經存在,則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列表,當對應的(IDi,Pi,Qi)在H1列表中時,則將其返回給AI,否則根據公鑰查詢先建立PK列表,然后隨機選擇ri,令Qi=ri,并將(IDi,Pi,Qi)加入到H1列表。
③部分私鑰查詢
當A1向C詢問IDi的私鑰,并且IDi≠ID*時,C首先檢查已建立的SK列表,若(IDi,xi,Di)在列表中,則將其返回,否則,建立PK列表和H1列表,然后計算Di=sri,并將(IDi,xi,Di)加入到SK列表;如果IDi=ID*,則終止。
④查詢
當AI向C詢問消息mi所對應的H2時,C首先檢查(Pi,mi,hi)是否在H2列表中,若存在,則將其返回,否則當mi≠m*時,C隨機選取ui,計算hi=uiP返回給AI,并添加(Pi,mi,hi)到H2列表中,當mi=m*時,選擇b,計算hi=bP返回給AI,并添加(Pi,m*,⊥)到H2列表中。
⑤公鑰替換查詢

⑥簽名查詢
當AI想要詢問IDi對消息mi的簽名時,首先檢查IDi是否等于ID*。
(a) 如果IDi≠ID*,則C首先查找IDi的私鑰和mi對應的hi,然后計算σi=xiDihi。
(b) 如果IDi=ID*,則算法終止。
⑦簽名驗證查詢
當A1想要驗證簽名(mi,σi,IDB)是否正確時,C首先查找H1列表,PK列表和H2列表,找到IDi相應的Qi和Pi以及mi、Pi對應的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問題,并充當游戲中的挑戰者。游戲開始時,C設置系統參數為params={G,q,P,Ppub,H1,H2},其中Ppub=sP,然后將系統主密鑰s和參數params發送給AⅡ,設IDA,IDB是目標簽名者和目標驗證者,根據定義,攻擊者AⅡ擁有系統的主密鑰,但不能替換用戶的公鑰,同樣,在證明中AⅡ假設是驗證者B,此時xBPA為固定值,如果B不能偽造簽名,則任何人都不能偽造簽名,AⅡ同定理1一樣進行PK、H1、H2及SK詢問。
簽名詢問:
當AⅡ想對消息mi進行簽名詢問時,執行
(a)當IDi=ID*時,拒絕,終止游戲;
(b)當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.解決了離散對數問題。
概率分析同定理1,得證。
本文所提出的具有指定驗證者的無證書簽名方案,因為沒有雙線性對的運算,所以具有更高的效率,且在隨機預言模型下將方案的安全性規約到了DLP和CDH困難問題上,因此具有更高的安全性。可以更好地將其應用到寬帶受限的網絡環境中。