曾麗,李旭東
(西華大學(xué)理學(xué)院,成都610039)
部分盲簽名的定義首次被Abe和Fujisaki[1]在1996年提出,次年,Abe等人[2]中又給出了具體的基于RSA和Schnorr算法的部分盲簽名方案。部分盲簽名不僅是盲簽名的進(jìn)一步發(fā)展,更是很好地解決了盲簽名存在的問題。與盲簽名的不同之處在于,它可以填加一些雙方已經(jīng)協(xié)商好的信息,如簽名周期、簽名時(shí)間等。這樣即保證了代簽消息的部分盲性,也保證了簽名者的合法權(quán)益。
2008年,榮維堅(jiān)[3]結(jié)合無(wú)證書密碼體制,第一次提出無(wú)證書的部分盲簽名方案,但未證明該方案的不可偽造性。2010年,余丹等人[4]榮方案的存在的問題,提出了改進(jìn)的部分盲簽名方案。在此期間,一些基于不同算法的無(wú)證書部分盲簽名的方案相繼被提出[5-9],這部分方案中,大多是都采用了雙線性對(duì),這種運(yùn)算計(jì)算開銷大。2012年,邵國(guó)金等人[10]提出一種基于橢圓曲線DLP的無(wú)證書部分盲簽名方案,該方案大大降低了簽名和簽名驗(yàn)證過程中的計(jì)算開銷。2016年,趙振國(guó)[11]針對(duì)文獻(xiàn)[10]所提出的方案不能提供不可偽造性這一問題,提出了新的無(wú)證書部分盲簽名方案。
本文對(duì)文獻(xiàn)[11]通過公共信息被篡改具體的攻擊,指出該方案存在安全問題:惡意用戶可以在毫不被察覺的情況下,更改公共信息(雙方事先協(xié)商好的部分),讓簽名者的權(quán)益受到威脅,失去對(duì)消息的可控性。本文針對(duì)這個(gè)問題,提出了一個(gè)改進(jìn)的方案,改進(jìn)的方案不僅能夠抵抗公共信息被篡改,在滿足部分盲性、不可偽造性等安全性需求的同時(shí),計(jì)算效率還得到了進(jìn)一步提高。
(1)橢圓曲線的離散對(duì)數(shù)問題
給定定義于有限域Fq上的橢圓曲線E,選擇一個(gè)點(diǎn)P∈E(Fq)作為基點(diǎn),P的階數(shù)為素?cái)?shù)n,Q∈P,對(duì)于任意的a∈,給定P,由Q=aP計(jì)算a。整數(shù)a稱為Q的基于P的離散對(duì)數(shù),表示為a=。
(2)計(jì)算Diffie-Hellman問題
文獻(xiàn)[11]中的無(wú)證書部分盲簽名方案由以下四個(gè)協(xié)議構(gòu)成:
(1)設(shè)置
設(shè) p、q是兩個(gè)大素?cái)?shù),G是由E(Fp)是橢圓曲線上的點(diǎn)組成的階為q加法群;
P0=sP為KGC的公鑰,其中,s∈是KGC的主密鑰,P是G是的一個(gè)基點(diǎn)。H1、H2、H3是安全的單向散列函數(shù),H1:{0 ,1}?×G→,H2:{0 ,1}?×{0 ,1}?×G→,H3:{0 ,1}?×{0 ,1}?×G×G×G→。 系統(tǒng)公布參數(shù){p,q,E(Fp),G,P0,H1,H2,H3}。
(2)密鑰設(shè)置
簽名者B將其身份IDB發(fā)送給KGC,KGC隨機(jī)選擇 yB∈,計(jì) 算YB=yBP ,qB=H1(IDB,YB)和dB=yB+sqB,KGC 返回dB、YB,dB、YB分別作為 B的部分私鑰、部分公鑰。B選擇任意的xB∈作為其私有秘密,計(jì)算XB=xBP,并且輸出B的私鑰SB=(xB,dB)和公鑰PB=(YB,XB)。
(3)簽名協(xié)議
用戶A請(qǐng)求簽名者B對(duì)消息m簽名,c是雙方共同協(xié)商的公共信息,簽名過程如下:
Step3.簽名(階段2):簽名者B計(jì)算k=H3(c,IDB,XB,YB,P0),v=r-u(kxB+dB),將v返回給A;
Step4.去盲:A收到 v后,計(jì)算 w=βv+α,則(h,w)是(m,c)的部分盲簽名。
(4)簽名驗(yàn)證
驗(yàn)證者通過計(jì)算qB=H1(IDB,YB),k=H3(c,IDB,XB,YB,P0)和T=h(kXB+YB+qBP0)+wP來驗(yàn)證等式h=H2(m,c,T)是否成立。如果等式成立,則接受簽名,反之亦然。
通過分析,文獻(xiàn)[11]方案存在公共信息被惡意篡改的問題。假設(shè)攻擊者將公共信息c修改為c1(c≠c1),利用自己偽造的c1執(zhí)行簽名過程,如下:
用戶A請(qǐng)求簽名者B對(duì)消息m簽名,c1是雙方共同協(xié)商的公共信息,簽名過程如下:
Step3.簽名(階段2):簽名者B計(jì)算k?=H3(c1,IDB,XB,YB,P0),w?=r-u?(k?xB+dB),將 v?返回給A;
Step4.去盲:A收到 v?后,計(jì)算 w?=βv?+α,輸出對(duì)(m,c1)的部分盲簽名 (h?,w?)
驗(yàn)證過程:
因此,驗(yàn)證者也可以驗(yàn)證(m,c1)的部分盲簽名(h?,w?)是有效合法的,在不被察覺的情況下,惡意的用戶就將協(xié)商好的公共信息進(jìn)行了篡改。
針對(duì)文獻(xiàn)[11]中存在的問題——任意篡改公共信息,本文在原方案的基礎(chǔ)上進(jìn)行了改進(jìn),改進(jìn)方案的密鑰產(chǎn)生算法與文獻(xiàn)[11]相同,在設(shè)置中增加了安全的散列函數(shù)H4。密鑰設(shè)置、簽名協(xié)議和簽名驗(yàn)證如下。
設(shè) p、q是兩個(gè)大素?cái)?shù),G是由E(Fp)是橢圓曲線上的點(diǎn)組成的階為q加法群;
P0=sP為KGC的公鑰,其中,s∈是KGC的主密鑰,P是G是的一個(gè)基點(diǎn)。H1~H4是安全的散列函數(shù) , H1:{0 ,1}?×G→, H2:{0 ,1}?×{0 ,1}?×G→,H3:{0 ,1}?×{0 ,1}?×G×G×G→,H4:E(Fp)→。系統(tǒng)公布參數(shù){p,q,E(Fp),G,P0,H1,H2,H3,H4}。
簽名者B將其身份IDB發(fā)送給KGC,KGC隨機(jī)選擇yB∈,計(jì) 算YB=yBP ,qB=H1(IDB,YB)和dB=yB+sqB,KGC返回dB、YB,dB作為B的部分私鑰,YB作為B的部分公鑰。B隨機(jī)選擇xB∈Zq*作為其私有秘密,計(jì)算XB=xBP,并且輸出B的私鑰SB=(xB,dB)和公鑰PB=(YB,XB)。
用戶A請(qǐng)求B對(duì)消息m簽名,c是雙方共同協(xié)商的公共信息,簽名過程如下:
Step3.簽名(階段2):簽名者B計(jì)算k=H3(c,IDB,XB,YB,P0),v=rz-u(kxB+dB),將v返回給A;
Step4.去盲:用戶收到 v后,計(jì)算w=βv+α,輸出對(duì)(m,c)的部分盲簽名(h,w)。
驗(yàn)證者計(jì)算qB=H1(IDB,YB),k=H3(c,IDB,XB,YB,P0)和 z=H4(c),驗(yàn)證等式wP+h(kBXB+YB+qBP0)=L是否相等。若相等,則接受簽名,否則拒絕。
新方案的正確性證明如下:
針對(duì)本文使用的兩個(gè)盲化因子α,β∈Zq*,如果簽名者私自保留了u,由于H2是一個(gè)安全的哈希函數(shù),簽名者不能從h=H2(m,c,L)中恢復(fù)出信息m??紤]到以下三個(gè)式子:
一定存在唯一的 β=hu-1使式(2)成立。如果任意一個(gè)簽名(h,w)是有效的,可以計(jì)算出唯一的α=w-hu-1v,使得 wP+h(kBXB+YB+qBP0)=L=αP+zβR成立。因此,盲因子α,β一直存在于在部分盲簽名中。根據(jù)文獻(xiàn)[11]中定義1,由于α,β一直存在,所以攻擊者贏得游戲的優(yōu)勢(shì)可以忽略。因此,改進(jìn)的方案能夠滿足部分盲性。
一般情況下,簽名者的私鑰只有自己知道,假設(shè)攻擊者AI通過訪問獲取了系統(tǒng)的三個(gè)參數(shù)(s,dB,PB),但是他不知道xB。攻擊者 AI如果想從XB=xBP獲取xB,則他需要解決DLP困難問題。因此不可能獲取SB,無(wú)法偽造出有效簽名。
假設(shè)攻擊者將公共信息c修改為c1(c≠c1),攻擊者利用自己偽造的公共信息c1執(zhí)行改進(jìn)方案的簽名協(xié)議。由于協(xié)商的公共信息和簽名人的私鑰綁定在一起,如果想篡改c,那么他需要解決CDHP困難問題,顯然也是不可性的,所以改進(jìn)后的方案能夠抵擋攻擊者惡意篡改公共信息c。
改進(jìn)的方案與文獻(xiàn)[10-11]中的方案進(jìn)行比較,求解時(shí)作出以下假設(shè):p為1024比特;q為160比特;n為1024比特;安全單向哈希函數(shù)的輸出大小為160比特;H、M和E分別表示哈希函數(shù)計(jì)算時(shí)間、橢圓曲線點(diǎn)加的計(jì)算時(shí)間和點(diǎn)乘的計(jì)算時(shí)間。在計(jì)算機(jī)仿真實(shí)驗(yàn)中,操作系統(tǒng)采用Windows 7系統(tǒng),CPU主頻率為3.40GHz,內(nèi)存為4GB。通過編程實(shí)現(xiàn)了橢圓曲線密碼所需要的各種運(yùn)算,其中:H≈0.0001ms,E≈0.442ms,M≈0.0018ms。結(jié)果見表1。由于多次使用哈希生成值來代替橢圓曲線上的點(diǎn)乘運(yùn)算,所以計(jì)算性能優(yōu)于文獻(xiàn)[10]和文獻(xiàn)[11]。
表1 改進(jìn)后的方案與其他方案的計(jì)算效率比較
本文對(duì)趙振國(guó)提出的可證安全的無(wú)證書部分盲簽名機(jī)制進(jìn)行了分析,發(fā)現(xiàn)該方案并不安全,不能夠承受公共信息被篡改的攻擊,本文為了解決這個(gè)問題,在文獻(xiàn)[11]的基礎(chǔ)上,提了一個(gè)改進(jìn)的方案,通過分析表明,新提出的方案是正確的,滿足不可偽造性和部分盲性,方案的總體安全級(jí)別高于同類方案,并且在效率上比邵的方案和趙的方案更具有優(yōu)勢(shì),具有廣泛的應(yīng)用。