湯鵬志,楊俊芳*,張慶蘭
(華東交通大學(xué) a.理學(xué)院; b.系統(tǒng)工程與密碼學(xué)研究所,江西 南昌 330013)
盲簽名的概念是由Chaum[1]1982年首次提出,即簽名者對自己所簽信息的內(nèi)容不僅無法獲取,而也無法追蹤自己的簽名,該特性使得盲簽名在電子現(xiàn)金和電子投票等需要匿名的場合中得到了廣泛的應(yīng)用.盲簽名的這一特性也是其缺點(diǎn),當(dāng)簽名者完成簽名后由于無法追蹤簽名的使用,這給非法分子濫用簽名提供了便利.1996年Abe等人[2]提出了部分盲簽名概念.部分盲簽名是允許簽名人在簽名過程中嵌入與用戶事先協(xié)商好的公共信息,如簽名時(shí)間與有效期等信息,并且這些公共信息是不能被刪除或非法修改的,同時(shí)又保持了盲簽名中的盲性.1984年,Shamir[3]提出了基于身份的公鑰密碼體制,用戶把姓名、身份證號(hào)、電話號(hào)碼等作為公鑰,簡化了復(fù)雜的證書管理,然而一個(gè)新的安全隱患出現(xiàn)了密鑰托管問題.2003年,Ai-Riyami等人[4]提出了無證書公鑰密碼體制,解決了基于身份公鑰密碼體制中的密鑰托管問題.由于無證書部分盲簽名既繼承了部分盲簽名的特性又保持了無證書公鑰密碼學(xué)解決了密鑰托管問題的優(yōu)點(diǎn),因此無證書部分盲簽名就成了一個(gè)研究熱點(diǎn).2008年,榮維堅(jiān)[5]首次提出了一個(gè)無證書部分盲簽名方案;2009年,蘇萬力等人[6]提出了一個(gè)可證安全的無證書部分盲簽名方案,然而都沒有嚴(yán)格地證明不可偽造性.2009年,Zhang等人[7]利用自己定義的安全模型提出了一個(gè)可證安全的無證書部分盲簽名方案.近年來,多種無證書部分盲簽名方案[8-10]被提出,但大多數(shù)方案存在公共信息被篡改問題.最近,何俊杰等人[11]提出了一個(gè)無證書的部分盲簽名方案,但是同樣存在惡意用戶可以非法篡改公共信息的缺陷,本文提出了一種改進(jìn)方案,新方案可以有效地抵抗公共信息被篡改的問題,并給出了隨機(jī)預(yù)言機(jī)模型下的安全性證明.
設(shè)G1和G2分別為q階循環(huán)加法群和循環(huán)乘法群,稱映射e:G1×G1→G2為雙線性對,若映射滿足下面3條性質(zhì),其中P是G1的生成元.
(2)非退化:存在A,B∈G1,使得e(A,B)≠1.
(3)可計(jì)算:對于所有的A,B∈G1,總存在一個(gè)有效的算法來計(jì)算e(A,B)的值.
限于篇幅,原文具體方案請參考文獻(xiàn)[11].
通過分析發(fā)現(xiàn),文獻(xiàn)[11]方案中的雙方協(xié)商好的公共信息能夠被惡意的用戶篡改.假設(shè)惡意的用戶將雙方協(xié)商好的公共信息c修改為c1,且c≠c1,用戶利用自己偽造的公共信息c1執(zhí)行原來的簽名協(xié)議,而簽名者繼續(xù)按原來的公共信息c執(zhí)行原來的簽名協(xié)議,具體操作如下:
(3)簽名:簽名者計(jì)算S′=(xH3(c)+h1)SKA,將S′發(fā)送給用戶.
(4)脫盲:用戶計(jì)算S1=H3(c1)H3(c)-1S′,S=αS1,并輸出最終的部分盲簽名σ=(S,r,m,c1).
驗(yàn)證過程:
計(jì)算h′=H2(m,c,r);
e(S,H1(IDA,PKA)XA+YA)=
xA(H1(IDA,PKA)+s)P)=
e(SKA,xA(H1(IDA,PKA)+s)P)α(xH3(c1)+h)=
e((xA(H1(IDA,PKA)+
s))-1P,xA(H1(IDA,PKA)+s)P)α(xH3(c1)+h)=
e(P,P)α(xH3(c1)+h)=gα(xH3(c1)+h)=
gαxH3(c1)gαh=rH3(c1)gh′
因此驗(yàn)證者可以驗(yàn)證簽名的有效性和合法性,而惡意用戶就在不被察覺的情況下,利用偽造的公共信息c1執(zhí)行原有的簽名協(xié)議.
為了抵抗惡意用戶對雙方協(xié)商好的公共信息的篡改,本文提出了一個(gè)對文獻(xiàn)[11]的改進(jìn)方案.方案由7個(gè)算法構(gòu)成,其中,系統(tǒng)初始化、用戶密鑰設(shè)置、公鑰設(shè)置、部分私鑰提取協(xié)議和私鑰提取5個(gè)算法和文獻(xiàn)[11]方案相同,本文只對簽名協(xié)議和驗(yàn)證過程稍作修改:
(1)系統(tǒng)初始化
(2)用戶密鑰生成
(3)公鑰生成
計(jì)算XA=xAP,YA=xAPpub,公鑰PKA=(XA,YA),任何人可以通過e(XA,Ppub)=e(YA,P),驗(yàn)證簽名者公鑰的正確性與有效性.
(4)部分私鑰生成
輸入系統(tǒng)的主密鑰s,簽名者的身份IDA和公鑰信息PKA,輸出簽名者的部分私鑰,過程如下:
(5)私鑰生成
簽名協(xié)議:
假設(shè)待簽名消息為m,簽名者與請求簽名的用戶事先商量好的公共信息為c.它們之間的交互如下:
3)簽名:簽名者計(jì)算S′=(xH3(c)+z+h)SKA,將S′發(fā)送給用戶.
4)脫盲:用戶計(jì)算S=αS′,并輸出最終的部分盲簽名σ=(S,m,c,R1,R2).
5)驗(yàn)證過程:接收者收到部分盲簽名σ=(S,m,c,R1,R2)后,計(jì)算h′=H2(m,c,R1,R2),驗(yàn)證等式e(S,H1(IDA,PKA)XA+YA)=R1H3(c)R2gh′是否成立.如果成立,則接收簽名,否則拒絕.
定理1 本文所提出的無證書部分盲簽名是可驗(yàn)證正確的.
證明由于
e(S,H1(IDA,PKA)XA+YA)=e(α(xH3(c)+
z+h)SKA,xA(H1(IDA,PKA)+s)P)=
e(SKA,xA(H1(IDA,PKA)+
s)P)α(xH3(c)+z+h)=e(P,P)α(xH3(c)+z+h)=
gαxH3(c)gαzgαh=R1H3(c)R2gh′,
其中h′=H2(m,c,R1,R2),這說明部分盲簽名是有效的.證畢.
定理2 本文提出的無證書部分盲簽名是滿足部分盲性的.
證明對于任意給定的一個(gè)有效的部分盲簽名σ=(S,m,c,R1,R2),并且給出任一組有效的部分盲簽名發(fā)布的過程中簽名者所觀察到的中間變量(S′,r1,h,c),接下來我們只要證明存在唯一的盲化因子對(α,β),使得σ=(S,m,c,R1,R2)映射到(S′,r1,h,c).考慮下列等式:
R1=r1αgβ,
(1)
h=α-1(h′+βH3(c)),
(2)
S=αS′,
(3)
由式(3)計(jì)算得唯一α=logS′S,從而由式(2)得唯一β=(αh-h′)H3(c)-1.下面證明由式(2)和(3)所確定的α,β也滿足式(1).
r1αgβ=gαx+(αh-h′)H3(c)-1=
e(logS′S((logSKAS′-h-z)H3(c)-1+
(e((logPS)P,(logPSKA)-1P)R2-1g-h′)H3(c)-1=
(e(S,xAH1(IDA,PKA)+
s)P)R2-1g-h′)H3(c)-1=R1,
因此由式(2)和(3)所確定的α,β是滿足式(1).故任意給定的一個(gè)有效的部分盲簽名σ=(S,m,c,R1,R2)和任一組中間變量(S′,r1,h,c),存在唯一的盲化因子對(α,β),使得σ=(S,m,c,R1,R2)映射到(S′,r1,h,c),所以即使是存在無限計(jì)算能力的簽名者也不能將用戶獲得的簽名與簽名者的簽名過程聯(lián)系起來,所以本簽名方案是滿足部分盲性的.證畢.
4.3.1 不可偽造性
文獻(xiàn)[4]中無證書密碼體制定義了兩種類型的攻擊者:
類型1(AI):AI可以將任意用戶的公鑰替換成AI自己所選的值,但是不能獲得系統(tǒng)主密鑰.
類型2(AII):AII可以獲得系統(tǒng)主密鑰(相當(dāng)于惡意KGC),但是不能替換任何用戶的公鑰.
定理3 對類型1(AI)在隨機(jī)預(yù)言機(jī)模型下,本文提出的部分盲簽名方案對適應(yīng)性選擇消息和身份攻擊是存在性不可偽造的.
證明假設(shè)存在概率多項(xiàng)式時(shí)間的攻擊者算法AI,以一個(gè)不可忽略的概率ε成功偽造一個(gè)有效的部分盲簽名,下面構(gòu)造一個(gè)挑戰(zhàn)者算法C解決k-CAA問題.
(2)H1詢問:當(dāng)C收到AI對H1(IDi,PKi)的詢問時(shí),若(IDi,PKi)已經(jīng)存在L1表中,則直接返回相應(yīng)的值h1i,否則:
(a) 若i=k,令h1i=t0;
(b) 若i≠k,令h1i=ti.
(5)公鑰詢問:當(dāng)C收到關(guān)于身份IDi標(biāo)識(shí)的公鑰查詢時(shí):
(a) 若i≠k,C首先檢索(IDi,Yi,Xi,xi)是否存在LPK中,若不存在,則隨機(jī)選擇xi,計(jì)算Yi=sxiP,Xi=xiP,并將(IDi,Yi,Xi,xi)添加到LPK,將(Yi,Xi)返回給AI.
(b) 若i=k,C直接將(Yk,Xk)返回給AI.
(6)部分私鑰詢問:當(dāng)C收到AI關(guān)于身份IDi標(biāo)識(shí)的部分私鑰詢問時(shí)(前提是已經(jīng)執(zhí)行過對H1的詢問):
(a) 若i=k,算法終止.
(b) 若i≠k,C查詢列表L1找到(IDi,PKi,h1i),并計(jì)算Di=(s+ti)-1P返回給AI.
(7)秘密值詢問:當(dāng)C收到AI關(guān)于身份IDi標(biāo)識(shí)的私鑰詢問時(shí):
(a) 若i≠k,C查詢LPK列表,若找到相應(yīng)的(IDi,Yi,Xi,xi),將xi返回給AI,否則隨機(jī)選擇xi,計(jì)算Yi=sxiP,Xi=xiP,并將(IDi,Yi,Xi,xi)添加到LPK,將xi返回給AI.
(b) 若i=k,算法立即終止.
(9)簽名詢問:當(dāng)C收到AI關(guān)于(IDi,mi,ci)的簽名詢問時(shí),C要通過維護(hù)列表Lsig來響應(yīng)AI的簽名詢問.C首先查詢L1表,得到h1i.查詢L3表,得到h3i.查詢LPK表,得到(Yi,Xi,xi).
C對AI的所有簽名詢問的回答是有效的,事實(shí)上,
e(Si,H1(IDi,PKi)Xi+Yi)=
e(γixi-1P,h1ixiP+xi(sP))=
定理4 對類型2(AII)在隨機(jī)預(yù)言機(jī)模型下,本文提出的部分盲簽名方案對適應(yīng)性選擇消息和身份攻擊是存在性不可偽造的.
證明假設(shè)存在概率多項(xiàng)式時(shí)間的攻擊者算法AII,以一個(gè)不可忽略的概率ε成功偽造一個(gè)有效的簽名,下面構(gòu)造一個(gè)挑戰(zhàn)者算法C解決ICDH問題.
(5)公鑰提取詢問:當(dāng)C收到關(guān)于身份IDi標(biāo)識(shí)的公鑰查詢時(shí):
(a) 若i≠k,C首先檢索(IDi,Yi,Xi,xi)是否存在LPK中,若不存在,則隨機(jī)選擇xi,計(jì)算Yi=sxiP,Xi=xiP,并將(IDi,Yi,Xi,xi)添加到LPK,將(Yi,Xi)返回給AII.
(b) 若i=k,C直接將(Yk,Xk)返回給AII.
(6)秘密值詢問:當(dāng)C收到AII關(guān)于身份IDi標(biāo)識(shí)的私鑰詢問時(shí):
(a) 若i≠k,C查詢LPK列表,若找到相應(yīng)的(IDi,Yi,Xi,xi),將xi返回給AII,否則隨機(jī)選擇xi,計(jì)算Yi=sxiP,Xi=xiP,并將(IDi,Yi,Xi,xi)添加到LPK,將xi返回給AII.
(b) 若i=k,算法立即終止.
C對AII的所有簽名詢問的回答是有效的,事實(shí)上,
e(Si,H1(IDi,PKi)Xi+Yi)=
本文對何俊杰等人[11]提出的無證書部分盲簽名方案進(jìn)行安全性分析,發(fā)現(xiàn)該方案中的公共信息容易被惡意用戶篡改.在該方案的基礎(chǔ)上提出了一種改進(jìn)的方案,經(jīng)過對其安全性分析,有效地抵抗了公共信息被篡改的風(fēng)險(xiǎn).