李 村, 李志華, 辛 平
(江南大學 物聯網工程學院 計算機科學系,江蘇 無錫 214122)
在實際應用中,經常會遇到轉交簽名權的情況,代理簽名[1]的概念應運而生。在當授權人因故無法簽名時,可以將簽名權轉交指定代理人,驗證人可以驗證并區分授權人簽名和代理人簽名。Zhang K[2]將秘密分享技術應用到了代理簽名中,提出了門限代理簽名,將原始簽名人的簽名密鑰分成多份子密鑰,分發給多個代理簽名人,每個代理簽名人使用自己的子密鑰產生部分代理簽名,當部分代理簽名的數目大于門限值時,即可生成有效的門限代理簽名[3]。
隨著研究的深入,門限代理簽名也得到了快速的發展,出現了一些門限代理簽名方案[4~8]。但大都存在簽名易被偽造的弊端。文獻[9]提出了基于身份的門限代理簽名方案,無法有效抵抗合謀攻擊,代理簽名人在進行一次代理簽名后,當惡意代理成員數目大于等于門限值時,可以獲得足夠的信息,從而偽造其他代理簽名人簽名;文獻[10~12]分別提出了一種基于身份的門限代理簽名方案,但并不具有前向安全性,因為一旦簽名密鑰泄漏,則會嚴重影響到簽名的有效性;文獻[13]提出了另外一種基于身份的前向安全的代理簽名方案,但方案易遭受線性攻擊且不具有后向安全性。另外,以上方案均需要可信中心的支持,而在某些實際應用場景下,可信中心并不存在。
針對上述問題,本文提出了一種前向安全的門限代理簽名方案,無需可信中心,且可以抵抗合謀攻擊,并具有前向安全性的特點。
設G1,G2分別為具有素數q階的循環加法群和循環乘
法群。且G1,G2中的離散對數是難解的。e:G1×G1→G2是一個雙線性映射,符合以下特性[14]

e(P+Q,R)=e(P,R)e(Q,R)
e(P,Q+R)=e(P,Q)e(P,R)
e(aP,bQ)=e(abP,Q)=e(P,abQ)=e(P,Q)ab
2)非退化性:存在P∈G1,使e(P,P)≠1;
3)可計算性:設P,Q∈G1,則一定存在算法計算e(P,Q)結果。
假設G1為一個階數為素數q的加法群。有基于G1的困難問題:



對于群G1,如果DDHP問題易解,而CDHP問題難解,則將G1稱為GDH群。
本文提出的前向安全的門限代理簽名(forward secure threshold proxy signature,FSTPS)方案包括以下部分:
1)系統初始化:輸出系統參數params。
2)生成用戶密鑰:輸入用戶的身份IDi、系統參數params,xi,輸出IDi的公鑰PIDi、私鑰SIDi。
3)生成委托證書:分成產生代理權和驗證代理權兩個環節。產生代理權,輸入委托證書mw、系統參數params,輸出對mw的簽名σw=(mw,δ,V,U)。驗證代理權,輸入原始簽名人公鑰Q0和系統參數params驗證簽名σw,驗證通過,輸出1;否則,輸出0。
4)生成代理簽名密鑰:分為生成門限密鑰和更新代理簽名密鑰兩個環節。生成門限密鑰,輸入系統參數params、原始簽名人產生的ki、mw的簽名σw、用戶的身份IDi輸出代理私鑰Xi和代理公鑰Yi。更新代理簽名密鑰,輸入原始簽名人在第L時段生成的隨機數rL、系統參數params、mw,輸出代理簽名密鑰(βL,Xi)。
5)生成代理簽名:分為生成部分簽名、驗證部分簽名、合并部分簽名3個環節。生成部分簽名,由t個門限代理簽名人分別執行。輸入門限代理簽名人身份IDi、代理密鑰Xi、消息m,輸出部分簽名gi。驗證部分簽名,由任意門限代理簽名人執行,輸入部分簽名gi、代理公鑰Yi、系統參數params,驗證通過,輸出1;否則,輸出0。合并部分簽名,由任意門限代理簽名人執行。輸入部分簽名gi、消息m,mw的簽名σw、代理公鑰Yi、時段L、參數T。輸出對m的簽名σm=(m,mw,U,y,k,g,L,T)。
6)驗證代理簽名:可由任何人執行。輸入原始簽名人公鑰Q0、系統參數params輸入、對m的簽名σm。驗證通過,輸出1;否則,輸出0。
設群G1為循環加法群,G2為循環乘法群,G1,G2的階均為素數q。e為一個雙線性映射,如式 (1)。定義H1,H2,H3為3個安全的哈希函數,分別如式(2)~式(4)。公開參數params如式(5)
e:G1×G1→G2
(1)
H1:{0,1}*→G1
(2)
(3)
H3:{0,1}*×G1→G1
(4)
params={G1,G2,e,q,P,H1,H2,H3}
(5)

Qi=xiH1(IDi)
(6)

U=rwH1(ID0)
(7)
W=H3(mw,U,ID0)
(8)
Hw=H1(W)
(9)
V=x0W
(10)
δ=rwHw+V
(11)
產生mw的簽名為σw=(mw,δ,V,U)。將σw發送給每個代理簽名人。
2)驗證代理權。每個代理簽名人Pi收到原始簽名人的簽名σw后,驗證等式是否成立
e(V,H1(ID0))=e(H3(mw,U,ID0),Q0)
(12)
e(δ,H1(ID0))=e(H3(mw,U,ID0),Q0)+
e(H1(H3(mw,U,ID0)),U)
(13)
若等式成立,接受簽名;反之,要求重發委托證書簽名。
1)生成門限密鑰

Ki=kiP
(14)
(15)
ai,0=xiδ+kiH3(mw,U,ID0)
(16)
fi(x)=ai,0+ai,1x+ai,2x2+…+ai,t-1xt-1
(17)
Pi通過式(18)計算并廣播Ai,j,然后將fi(IDj)秘密發送給Pj,j=1,2,…,j≠i
Ai,j=ai,jP,j=1,2,…,t-1
(18)
Pi接收到fj(IDi)后,驗證等式(19)是否成立。如果Pi全部通過驗證,Pi通過式(20)、式(21)分別計算出代理私鑰Xi和代理公鑰Yi,并廣播Yi
(19)
(20)
Yi=XiP
(21)
2)更新代理簽名

β0=x0H1(r0P)+r0H1(mw)
(22)
當進入L時段,P0利用第L-1時段的βL-1計算βL:

(23)
(24)
(25)
將(βL,mw,T)發送給所有代理簽名人后立刻刪除rL和βL-1。
代理簽名人收到(βL,mw,T)后,驗證式(26)
e(βL,P)=e(H1(mw),T)e(H1(T),Q0)
(26)
如果成立,則得到代理簽名密鑰為(βL,Xi)。
m為需要簽名的消息,P1,P2,…,Pt為t個對消息m簽名的代理簽名人。簽名步驟如下:
1)生成部分簽名:每個代理簽名人Pi(i=1,2,…,t)通過式(27)計算di,再通過式(28)使用代理簽名密鑰產生消息m的部分代理簽名gi。隨機選擇一名代理簽名人作為門限簽名合成者。向門限密鑰合成者發送(gi,IDi),其中IDi用于確定代理簽名者的身份
(27)
gi=XidiH1(m)H2(m)+kiHw
(28)
2)驗證部分簽名:門限簽名合成者驗證式(29)是否成立,如果成立,則輸出1;否則,輸出0
e(P,gi)=e(Yi,H1(m))diH2(m)e(Ki,Hw)
(29)
3)合并部分簽名:當所有的部分簽名有效時,通過式(30)、式(31)計算y,g,則(m,mw,U,y,k,g,L,T)是對消息m的門限代理簽名
(30)
(31)
驗證人在獲得對m的簽名(m,mw,U,y,k,g,L,T)后,驗證等式(32),如果等式成立,則該簽名合法
(32)
為方便分析方案的效率,假設代理人共n個,門限值為t,配對運算記為Ep,乘法運算記為Mu,加法運算記為Ad,Hash函數運算記為Ha,更新代理簽名密鑰的時段編號為L,方案對比如表1。

表1 方案的性能對比
可以看出,本文方案在生成用戶密鑰、生成代理簽名、驗證代理簽名階段性能優異,均高于對比方案;在生成代理簽名密鑰階段,當更新代理簽名密鑰的時段數較少時,由更新代理簽名帶來的運算次數較少,此時該階段的計算復雜度與他方案相近。
硬件加密相對于軟件加密具有加密性能好、加密強度高的特性[15]。在數據加密技術的應用中,逐漸成為關注的焦點。FSTPS方案具有前向安全的特性,并且無需可信中心,因此,方案可以很好的應用于密碼卡的場景。
密碼卡的硬件結構如圖1所示,包括:FPGA芯片、SM1芯片、SM3芯片、SM9芯片、ARM處理器模塊、CPLD模塊、SDRAM、FLASH存儲器、物理噪音發生器等。密碼卡通過PCI-E接口與主機連接,FPGA芯片通過有限狀態機控制SM1,SM9等算法芯片。FPGA和ARM模塊直接通過CPLD隔離數據總線連接。

圖1 PCI-E密碼卡結構特征
在密碼卡的設計方案中,Pi是一組USBkey,其中P0被標注為Rootkey,具有原始簽名人權限。USBkey中存放的PID信息可以作為身份信息,并在應用中對USBkey與用戶進行綁定。


生成代理簽名階段描述如下:

2)Pi通過式(18)計算并廣播Ai,j,將fi(IDj)秘密發送給Pj,j=1,2,…,j≠i。
3)Pi接收到fj(IDi)后,驗證等式(19)是否成立。如果Pi全部通過驗證,Pi計算出其代理私鑰Xi和代理公鑰Y≠i,并公布Yi。
4)Rootkey用戶計算出代理密鑰更新初始值β0。當進入L時段,利用第L-1時段的βL-1計算βL。隨后將(βL,m,T)發送給每個代理簽名人,并立刻刪除上時段代理密鑰更新信息。代理簽名人在驗證信息有效性后,獲得代理簽名密鑰(βL,Xi),將(βL,Xi)寫入USBkey中。
每個代理簽名人使用代理簽名密鑰產生消息m的部分簽名gi。如果每個gi均驗證通過,則合并部分簽名,產生對消息m的門限代理簽名(m,mw,U,y,k,g,L,T)。
驗證人首先向代理簽名人Pi索要(PIDi,xiQi),并驗證各代理簽名人身份,隨后通過驗證式(32)是否成立,如果成立,則簽名合法;否則,簽名無效。
方案中的密鑰均由密碼卡的安全芯片生成,經加密后導入USBkey,有效防止了人為的泄漏,有效保障了密鑰的安全。另外,由于密碼卡中的敏感信息斷電即消失,可以有效杜絕密鑰被竊取。Rootkey持有者將簽名的權限分擔給多名管理員,只有不少于t名管理員同時簽名才能生成有效的代理簽名。由于代理密鑰更新算法的應用,使方案具有了前向安全性與后向安全性的特性,從而保障了簽名的有效性。由于方案不需要可信中心支持,降低了系統的實現代價和復雜度。
提出了一種前向安全的門限代理簽名方案。具有不需要可信中心支持,前向安全性、后向安全性、門限性的特性,并在一定程度上有效防止了合謀攻擊。通過對方案進行正確性和安全性分析,驗證了方案的可實用性。給出了本方案在PCI-E密碼卡方面的應用實例,說明具有良好的應用前景。
[1] Mambo M,Usuda K,Okamoto E.Proxy signatures for delegating signing operation[C]∥Proceedings of the 3rd ACM Conference on Computer and Communications Security,New York:ACM,1996:48-57.
[2] Zhang K.Threshold proxy signature schemes[C]∥Information Security Workshop,Japan,1997:91-197.
[3] 石 光.網絡安全技術綜述[J].傳感器與微系統,2007,26(9):1-3.
[4] Hsu C,Wu T.New nonrepudiable threshold proxy signature scheme with known signers[J].Journal of Systems and Software,2004,73(3):507-514.
[5] Hu J H,Zhang J Z.Cryptanalysis and improvement of a threshold proxy signature scheme[J].Computer Standards & Interfaces,2009,31(1):169-173.
[6] 張學軍,張 岳.基于身份前向安全的代理簽名方案[J].計算機工程與應用,2012,48(19):66-68.
[7] Sun Y,Xu C,Yu Y,et al.Improvement of a proxy multisignature scheme without random oracles[J].Computer Communications,2011,34(3):257-263.
[8] 于義科,鄭雪峰.標準模型下基于身份的高效動態門限代理簽名方案[J].通信學報,2011,32(8):55-63.
[9] 黃梅娟.基于RSA密碼體制的門限代理簽名方案[J].計算機工程,2012,38(4):105-107.
[10] 張建中,薛榮紅.基于身份的門限代理簽名方案[J].計算機工程,2011,37(7):171-173.
[11] 高歡歡,張建中.一種基于身份的門限代理簽名方案[J].計算機工程,2012,38(1):132-134.
[12] 田志剛,鮑皖蘇.基于身份的門限代理簽名方案[J].計算機工程與應用,2009,45(9):117-119.
[13] Liu J,Huang S.Identity-based threshold proxy signature from bilinear pairings[J].Informatica,Inst Math & Science,2010,21(1):41-56.
[14] 吳開興,張榮華.身份密碼在WSNs安全定位中的應用[J].傳感器與微系統,2012,31(7):143-145.
[15] 張永政,張 申,韓培培,等.基于無線傳感器網絡的礦震監測系統設計[J].傳感器與微系統,2009,28(1):80-82.