李 莉,李 濤,杜慧娜
(東北林業(yè)大學(xué) 信息與計(jì)算機(jī)工程學(xué)院,黑龍江 哈爾濱 150040)
隨著區(qū)塊鏈技術(shù)[1]的快速發(fā)展,區(qū)塊鏈溯源技術(shù)得到了廣泛的應(yīng)用。然而,在區(qū)塊鏈溯源系統(tǒng)中,傳統(tǒng)的群簽名、環(huán)簽名和代理簽名等簽名算法并不適用。
目前對(duì)數(shù)字簽名的研究主要集中在基于公鑰密碼體制。文獻(xiàn)[2]和文獻(xiàn)[3]研究了區(qū)塊鏈系統(tǒng)中的門限ECDSA方案,兩種門限ECDSA方案都無(wú)需可信中心參與。Schnorr提出了Schnorr簽名方案[4],相比較ECDSA簽名算法明顯縮短了簽名長(zhǎng)度,文獻(xiàn)[5,6]提出了兩種基于Schnorr簽名的門限簽名協(xié)議,但是未應(yīng)用于區(qū)塊鏈場(chǎng)景中。文獻(xiàn)[7-9]所提簽名方案,需可信第三方進(jìn)行密鑰分配。文獻(xiàn)[10]提出了基于Asmuth-Bloom秘密共享的簽名方案,允許簽名成員加入和退出,但是簽名驗(yàn)證效率較低。文獻(xiàn)[11]提出了基于Pedersen承諾和Schnorr協(xié)議的安全多方計(jì)算協(xié)議,然而惡意節(jié)點(diǎn)可通過(guò)合謀攻擊獲取用戶的私鑰,從而導(dǎo)致簽名信息的可信度受到威脅。文獻(xiàn)[12]所提出的門限RSA簽名方案,允許節(jié)點(diǎn)的動(dòng)態(tài)加入,但沒有考慮節(jié)點(diǎn)退出問(wèn)題。以上方案適配于區(qū)塊鏈溯源場(chǎng)景時(shí)具有一定的效率問(wèn)題和安全性問(wèn)題。
針對(duì)上述問(wèn)題,本文基于Schnorr門限簽名算法和Pedersen可驗(yàn)證秘密共享方案,提出了一種適用于區(qū)塊鏈溯源系統(tǒng)的門限簽名方案。該方案摒棄了依賴可信中心的設(shè)計(jì),而是通過(guò)節(jié)點(diǎn)之間的相互協(xié)作來(lái)生成子密鑰并進(jìn)行簽名生成,設(shè)計(jì)了符合區(qū)塊鏈溯源場(chǎng)景的成員加入和成員退出機(jī)制。本文方案在縮短簽名時(shí)間和簽名驗(yàn)證時(shí)間的同時(shí),可以有效地預(yù)防抗合謀攻擊和簽名偽造。
Schnorr數(shù)字簽名算法的安全性基于離散對(duì)數(shù)的困難性[13],此外,該算法大部分計(jì)算可以在簽名前的預(yù)處理階段完成。其具體方案定義如下:
(2)簽名算法:設(shè)待簽名的消息為m,簽名者選擇隨機(jī)數(shù)k∈Zq, 計(jì)算e=gkmodp,r=H(m‖e),s=k+xrmodq, 則得到對(duì)消息m的數(shù)字簽名 (r,s)。
(3)簽名算法驗(yàn)證:簽名驗(yàn)證者收到簽名 (r,s,m) 后首先計(jì)算e′=gsy-rmodp, 然后驗(yàn)證等式r=H(m‖e′) 是否成立,若成立則簽名有效。
秘密共享[14]的提出是為了解決密鑰管理的安全問(wèn)題。Shamir提出的基于拉格朗日插值多項(xiàng)式的 (t,n) 門限方案中n為成員個(gè)數(shù),t(t≤n) 為閾值。秘密被分享為n個(gè)子密鑰分發(fā)給n個(gè)成員,只有不少于t個(gè)子密鑰才能恢復(fù)秘密。Pedersen可驗(yàn)證秘密共享方案是將承諾方案與Shamir方案[15]相結(jié)合。假設(shè)有n個(gè)成員 {P1,P2,…,Pn}, 要共享的秘密為s,p為一個(gè)大質(zhì)數(shù)。q為p-1的一個(gè)大質(zhì)數(shù)因子,選取階數(shù)為p生成元為g的循環(huán)群G。Pedersen方案具體過(guò)程描述如下:
(1)秘密分發(fā)階段:秘密分發(fā)者D在Zq上隨機(jī)選擇n個(gè)非零元素x1,x2,…,xn構(gòu)造兩個(gè)t-1階多項(xiàng)式
f(x)=a0+a1x+a2x2+…+at-1xt-1
(1)
g(x)=b0+b1x+b2x2+…+bt-1xt-1
(2)
其中,f(0)=a0=s。 然后分發(fā)者D計(jì)算每個(gè)子密鑰si=(f(xi),g(xi)), 將si作為Pi的秘密份額。同時(shí)分發(fā)者計(jì)算并廣播承諾Cj=gajhbj,j=0,…,k-1。 每個(gè)參與者Pi在收到自己的子密鑰后判斷等式(3)是否成立,若成立則說(shuō)明子密鑰有效
(3)
(2)秘密恢復(fù)階段:秘密恢復(fù)者根據(jù)拉格朗日插值多項(xiàng)式的存在唯一性定理,通過(guò)t個(gè) (xi,f(xi)) 可以確定唯一的t-1階多項(xiàng)式f(x), 以此來(lái)進(jìn)行秘密恢復(fù),得到秘密s=f(0)
(4)
本文提出的適用于區(qū)塊鏈溯源系統(tǒng)的Schnorr門限簽名方案由n個(gè)成員 {U1,U2,…,Un} 組成,在區(qū)塊鏈系統(tǒng)中n個(gè)成員通過(guò)安全的點(diǎn)對(duì)點(diǎn)通道以及廣播通道進(jìn)行通信。假設(shè)門限簽名方案中的閾值為t,簽名者集合為T∈{U1,U2,…,Un},|T|=t。 具體的安全目標(biāo)如下:
(1)實(shí)現(xiàn)完全去中心化。整個(gè)方案不需要借助第三方可信機(jī)構(gòu)進(jìn)行密鑰生成和密鑰管理,而是由成員之間通過(guò)安全通信通道交互完成密鑰生成、密鑰分發(fā)和數(shù)字簽名等協(xié)議。
(2)數(shù)字簽名的不可偽造性。在區(qū)塊鏈溯源系統(tǒng)中對(duì)于已經(jīng)上鏈的商品溯源信息,任何惡意節(jié)點(diǎn)都不能偽造合法節(jié)點(diǎn)所生成的簽名信息。
(3)抗合謀攻擊。當(dāng)成員人數(shù)少于門限值t時(shí),無(wú)法生成門限簽名,只有當(dāng)至少t個(gè)成員共同參與時(shí),才能生成有效的門限簽名。本文方案允許惡意敵手A可以腐敗的成員個(gè)數(shù)最大為t-1。 保證在少于t個(gè)成員的私鑰泄露時(shí),簽名者對(duì)溯源信息進(jìn)行數(shù)字簽名的有效性。
本文方案實(shí)現(xiàn)在區(qū)塊鏈溯源系統(tǒng)中溯源信息的安全上鏈,保證溯源信息的真實(shí)性、透明性和不可抵賴性。通過(guò)Schnorr門限簽名方案實(shí)現(xiàn)鏈下對(duì)簽名所需信息的生成與交互。采用Pedersen可驗(yàn)證秘密共享方案實(shí)現(xiàn)無(wú)可信中心分配組私鑰。根據(jù)溯源系統(tǒng)中的溯源信息上傳場(chǎng)景設(shè)置4種角色,分別是溯源信息上傳者、門限簽名成員、簽名合成者和簽名驗(yàn)證者。其中門限簽名成員為溯源信息所涉及到的各個(gè)企業(yè)和供應(yīng)商。區(qū)塊鏈門限簽名方案是一種通過(guò)節(jié)點(diǎn)間的相互協(xié)作來(lái)生成秘密份額的方案。在該方案中,節(jié)點(diǎn)之間共同參與驗(yàn)證信息的計(jì)算,確保驗(yàn)證結(jié)果的正確性。當(dāng)驗(yàn)證結(jié)果正確時(shí),會(huì)生成每個(gè)區(qū)塊鏈節(jié)點(diǎn)的組公鑰和個(gè)人私鑰。這種基于門限簽名的機(jī)制保證了系統(tǒng)的安全性和可信度。通過(guò)節(jié)點(diǎn)之間的協(xié)作,每個(gè)節(jié)點(diǎn)都承擔(dān)一部分計(jì)算和驗(yàn)證的責(zé)任,使得整個(gè)過(guò)程更加安全可靠。其方案邏輯如圖1所示。
圖1 方案邏輯
如圖1所示,溯源信息上傳者上傳溯源信息M。門限簽名成員使用個(gè)人私鑰生成部分簽名。簽名合成者驗(yàn)證每個(gè)部分簽名,并合成部分簽名形成最終的門限簽名。簽名驗(yàn)證者進(jìn)行簽名驗(yàn)證,并將溯源信息上鏈,上鏈過(guò)程在本文不作描述。其中由于門限簽名成員為溯源信息的相關(guān)者,在實(shí)際生產(chǎn)環(huán)節(jié)中可能會(huì)發(fā)生變動(dòng),因此本文方案允許門限簽名成員的動(dòng)態(tài)加入和退出。
本文方案共包括5個(gè)算法,分別為密鑰生成算法TGenkey、門限簽名算法TSign、簽名驗(yàn)證算法Verify、簽名成員加入算法UserAdd和簽名成員退出算法UserDelete。
2.3.1 密鑰生成:TGenkey
(1)區(qū)塊鏈溯源系統(tǒng)參數(shù)初始化
(2)簽名成員之間相互協(xié)作產(chǎn)生秘密份額
假設(shè)在區(qū)塊鏈系統(tǒng)中溯源信息有n個(gè)相關(guān)成員Pi,i=1,2,…,n,t為閾值,每個(gè)成員節(jié)點(diǎn)都有其唯一的標(biāo)識(shí)符IDi。Pi表示執(zhí)行操作的一方,Pj表示與Pi進(jìn)行交互的另一方。此環(huán)節(jié)產(chǎn)生用戶Pi的公私鑰對(duì) (uski,upki), 以及子密鑰di和組公鑰mpk。具體過(guò)程如下:
1)每個(gè)門限簽名成員節(jié)點(diǎn)Pi,i=1,2,…,n選擇隨機(jī)數(shù)x∈[1,q-1] 作為他的用戶私鑰uski, 則對(duì)應(yīng)的用戶公鑰upki=yi=xiG。Pi廣播其公鑰upki。
fi(x)=xi+ai,1x+ai,2x2+…+ai,t-1xt-1modq
(5)
節(jié)點(diǎn)Pi計(jì)算Ci,k并向其它節(jié)點(diǎn)廣播
Ci,k=ai,kGmodq,k=1,…,t-1
(6)
同時(shí)Pi為其它n-1個(gè)成員計(jì)算共享子密鑰si,j, 并通過(guò)點(diǎn)對(duì)點(diǎn)通道發(fā)送給Pj,j=1,2,…,n,j≠i
si,j=fi(IDj)
(7)
3)區(qū)塊鏈節(jié)點(diǎn)Pj接收到Pi發(fā)送的si,j后,通過(guò)Pi廣播的Ci,k對(duì)其進(jìn)行驗(yàn)證,核實(shí)共享子密鑰是否有效。如果下述等式成立則接收消息,否則將終止密鑰生成算法
(8)
4)節(jié)點(diǎn)Pj驗(yàn)證所有其它節(jié)點(diǎn)發(fā)送給它的共享子密鑰后,通過(guò)下述公式生成其子密鑰dj,并廣播其子公鑰djG
(9)
5)在所有成員計(jì)算完dj后,組私鑰為
(10)
任意t個(gè)門限簽名成員可以根據(jù)拉格朗日差值公式恢復(fù)組私鑰d,并且由此計(jì)算出組公鑰mpk
(11)
2.3.2 門限簽名:TSign
每次門限簽名由集合P={P1,P2,…,Pn} 中的t個(gè)成員Pi,i=1,2,…,t完成簽名。簽名成員通過(guò)其子密鑰di對(duì)溯源信息M進(jìn)行部分簽名,將生成的部分簽名發(fā)送給指定的簽名合成者,由該合成者對(duì)每個(gè)部分簽名進(jìn)行驗(yàn)證,并合成最終的簽名 (M,r,s)。門限簽名具體過(guò)程如下:
(1)Pi,i=1,2,…,t生成隨機(jī)數(shù)ki∈[1,q-1], 計(jì)算Wi=kiG,Qi=diG是Pi的子公鑰。Pi廣播Wi。
(2)當(dāng)Pj接收到其它t-1個(gè)成員的Wi,i=1,2,…t,i≠j后,由此計(jì)算W和它的橫坐標(biāo)x
(12)
(3)Pj計(jì)算e=xmodq, 再通過(guò)要簽名的溯源信息M計(jì)算r=H(e‖M)。 接下來(lái)Pj計(jì)算sj, 并將部分簽名 (M,r,sj) 通過(guò)安全點(diǎn)對(duì)點(diǎn)通信通道發(fā)送給簽名合成者
sj=kj+djrmodq
(13)
(4)簽名合成者在接收到Pj發(fā)送的部分簽名后對(duì)其進(jìn)行驗(yàn)證下述等式是否成立,若不成立則終止門限簽名算法
Wj=sj-H(e‖M)·Qj
(14)
2.3.3 簽名驗(yàn)證:Verify
簽名驗(yàn)證者在接收到 (M,r,s) 后對(duì)門限簽名進(jìn)行驗(yàn)證。具體過(guò)程如下:
(1)簽名驗(yàn)證者通過(guò)組公鑰Q對(duì)簽名進(jìn)行驗(yàn)證,依次計(jì)算 (x′,y′),e′和r′
(x′,y′)=sG-rQe′=x′modqr′=H(e′‖M)
(15)
(2)若r′=r, 則簽名正確,若等式不成立則簽名失敗。
2.3.4 簽名成員加入:UserAdd
當(dāng)溯源信息涉及的簽名成員集合P需要新成員Pr加入時(shí),Pr需要滿足以下幾點(diǎn)條件。①已存在的成員節(jié)點(diǎn)的子密鑰di(i=1,2,…,n) 不會(huì)發(fā)生改變。②新加入的節(jié)點(diǎn)不會(huì)改變組公鑰Q。③新節(jié)點(diǎn)可以生成自己的子密鑰dr且不暴露其它成員的子密鑰。假設(shè)Pr的身份標(biāo)識(shí)為IDr, 具體過(guò)程如下:
gi(x)=bi,0+bi,1x+bi,2x2+…+bi,t-1xt-1modq
(16)
Pi計(jì)算相應(yīng)的C′i,k并廣播它
C′i,k=bi,kGmodq,k=0,1,…,t-1
(17)
同時(shí),Pi為其它n-1個(gè)成員計(jì)算共享子密鑰s′i,j, 并通過(guò)安全通道將其發(fā)送給Pj
s′i,j=gi(IDj)
(18)
(2)Pj收到Pi發(fā)送的s′i,j后,核實(shí)其是否有效。如果等式(19)成立,則接收該消息
(19)
(3)Pj在核實(shí)s′i,j后通過(guò)下述公式計(jì)算臨時(shí)子密鑰d′j, 并通過(guò)安全通信通道將d′j發(fā)送給新加入的節(jié)點(diǎn)Pr
(20)
(4)新節(jié)點(diǎn)Pr在接收到至少t個(gè)成員Pi,i=1,2,…,t發(fā)送的d′j后,計(jì)算自己的子密鑰dr
(21)
2.3.5 簽名成員退出:UserDelete
當(dāng)溯源信息所涉及的簽名成員集合P有成員退出時(shí),Pi(i=1,2,…,n-1) 需要重新構(gòu)建每個(gè)成員的子密鑰di(i=1,2,…,n-1), 同時(shí)確保組私鑰和組公鑰保持不變。假設(shè)退出的成員為Pw,其身份標(biāo)識(shí)為IDw,成員退出具體過(guò)程如下:
hi(x)=ci,1x+ci,2x2+…+ci,t-1xt-1modq
(22)
(23)
(24)
(25)
(26)
最后,Pj重構(gòu)并更新其它成員的共享子密鑰,即刪除節(jié)點(diǎn)Pw的共享子密鑰,實(shí)現(xiàn)節(jié)點(diǎn)Pw的退出。
本文所提出的動(dòng)態(tài)Schnorr門限簽名方案的正確性分析包括門限簽名、動(dòng)態(tài)添加成員和動(dòng)態(tài)刪除成員。分別為簽名驗(yàn)證者可以驗(yàn)證有效的Schnorr門限簽名;新加入的門限簽名成員可以計(jì)算有效的子密鑰,并計(jì)算組公鑰;當(dāng)門限簽名成員退出時(shí),組私鑰和組公鑰不會(huì)發(fā)生變化。
(1)門限簽名正確性分析
簽名驗(yàn)證者在接收到關(guān)于溯源消息M的門限 (M,r,s) 后,通過(guò)等式(15)驗(yàn)證簽名的有效性。等式(15)成立的證明過(guò)程如下:
由于上述證明,所以簽名驗(yàn)證者計(jì)算e′=x′modq,r′=H(e′‖M) 后,若簽名正確則e′=e,r′=r, 證明了簽名的有效性。
(2)成員動(dòng)態(tài)添加的正確性
節(jié)點(diǎn)Pi,i=1,2,…,n發(fā)送給新加入成員Pr的d′j符合拉格朗日插值多項(xiàng)式模型,那么新加入的節(jié)點(diǎn)Pr在收到其它t個(gè)成員的臨時(shí)秘密份額d′j后,可以通過(guò)式(21)計(jì)算出其秘密份額dr。
證明
因?yàn)?/p>
ηi(IDj)=fi(IDj)+gi(IDj)=(xi+bi,0)+(ai,1+bi,1)x+…+(ai,t-1+bi,t-1)xt-1modq
又因?yàn)楦鶕?jù)式(20)得gi(IDr)=0, 所以
(27)
根據(jù)式(10)和式(27),可以得出新加入的節(jié)點(diǎn)Pr的臨時(shí)子密鑰d′r和dr相等,所以Pr在未暴露其它成員的子密鑰的同時(shí)有效地生成了其子密鑰dr, 并可以通過(guò)式(11)計(jì)算組公鑰。
(3)成員動(dòng)態(tài)退出的正確性
集合P中有成員退出后組私鑰d不發(fā)生改變。
因?yàn)閔i(0)=0, 所以根據(jù)式(26)可得
(28)
由式(28)可知,成員退出后組私鑰未發(fā)生改變,所以通過(guò)式(11)計(jì)算的組公鑰也不會(huì)發(fā)生改變。
3.2.1 去中心化
實(shí)現(xiàn)門限Schnorr門限簽名的常用方法是將組私鑰分為n份,并由可信第三方分發(fā)給每個(gè)成員。通過(guò)將子密鑰交由可信第三方完成數(shù)字簽名,t個(gè)成員即可實(shí)現(xiàn)門限簽名。然而,該方法存在一個(gè)潛在的問(wèn)題,即一旦可信第三方出現(xiàn)故障,就無(wú)法進(jìn)行數(shù)字簽名的操作。本文所提方案在區(qū)塊鏈溯源系統(tǒng)中,簽名集合P中的成員通過(guò)安全通信通道進(jìn)行通信,交互式生成子密鑰和部分門限簽名。在本文方案中,為了確保簽名的有效性,采用了由簽名合成者進(jìn)行部分驗(yàn)證和簽名合成的步驟。這個(gè)過(guò)程可以保證簽名的正確性和一致性。最終,由簽名驗(yàn)證者對(duì)簽名進(jìn)行驗(yàn)證,并將驗(yàn)證通過(guò)的簽名廣播到區(qū)塊鏈溯源系統(tǒng)中。具體而言,本文方案實(shí)現(xiàn)了完全去中心化的目標(biāo),主要包括以下幾個(gè)步驟:
在密鑰生成算法中,門限簽名成員節(jié)點(diǎn)Pi通過(guò)式(6)計(jì)算Ci,k并向其它節(jié)點(diǎn)廣播,同時(shí)Pi為其它n-1個(gè)成員通過(guò)式(7)計(jì)算共享子密鑰si,j, 并通過(guò)點(diǎn)對(duì)點(diǎn)通道發(fā)送給Pj,j=1,2,…,n,j≠i。Pj以此無(wú)需可信中心便可通過(guò)si,j計(jì)算其子密鑰dj。
在簽名算法中,集合P中的t個(gè)成員將其對(duì)溯源消息M生成的部分簽名 (M,r,sj) 發(fā)送給簽名合成者進(jìn)行簽名合成和部分簽名驗(yàn)證。
同理,在簽名成員加入和退出時(shí)集合P中的節(jié)點(diǎn)通過(guò)式(17)、式(18)、式(23)和式(24)計(jì)算需給其他成員發(fā)送的信息。經(jīng)過(guò)點(diǎn)對(duì)點(diǎn)通道和廣播的形式無(wú)需可信第三方完成簽名成員加入和退出時(shí)子密鑰的新增和更新操作。
3.2.2 不可偽造性分析
不可偽造性是動(dòng)態(tài)Schnorr門限簽名重要的安全要求之一。不可偽造攻擊模型及具體分析如下。
(1)假設(shè)敵手A是第三方攻擊者,偽裝成合法簽名者。其目的是通過(guò)偽造門限簽名算法Tsign過(guò)程中所需要的子密鑰dA的值來(lái)與其他參與者共同生成有效的簽名。
敵手A在獲取到系統(tǒng)公共參數(shù) (Fq,E,G,q,a,b,H) 后,被敵手A腐敗的成員S計(jì)算敵手A的公私鑰對(duì) (uskA,upkB) 和其子密鑰dA。 在簽名階段,S將簽名 (M,r,s) 發(fā)送給敵手A,敵手A對(duì)溯源消息M構(gòu)造一個(gè)有效簽名。在敵手A偽造簽名階段,為了保證偽造簽名的有效性,隨機(jī)數(shù)k必須被偽造。隨機(jī)數(shù)k是由集合P中的t個(gè)成員隨機(jī)生成的隨機(jī)數(shù)ki相加而得,無(wú)法被公開獲取。而且ki在簽名過(guò)程過(guò)沒有被重新生成過(guò),因此A只能從kiG中嘗試獲取隨機(jī)數(shù)。此問(wèn)題是橢圓曲線離散對(duì)數(shù)問(wèn)題,該問(wèn)題是橢圓曲線密碼安全理論的基礎(chǔ),屬于非確定性多項(xiàng)式完備問(wèn)題,因此敵手A無(wú)法成功地偽造簽名。
(2)假設(shè)敵手A是簽名成員集合P中的一個(gè)不誠(chéng)實(shí)的成員,并且破壞了其它一些成員節(jié)點(diǎn)以生成有效的共享私鑰來(lái)偽造簽名。它的目的是破壞門限簽名算法Tsign過(guò)程中所需要的子密鑰,從而與其它參與者生成一個(gè)有效的簽名。
3.2.3 抗合謀攻擊
Schnorr門限簽名方案的不可偽造性決定本文方案至少t個(gè)成員才能生成數(shù)字簽名,而少于t個(gè)則不能。
假設(shè)簽名集合P中有t-1個(gè)惡意簽名者進(jìn)行合謀攻擊,偽造門限簽名。
在簽名階段每個(gè)成員Pi(i∈[1,t-1]) 生成隨機(jī)數(shù)ki∈[1,q-1], 并偽造第t個(gè)成員的隨機(jī)數(shù)kt和子密鑰dt。 惡意簽名者Pi通過(guò)式(12)和式(13)計(jì)算對(duì)溯源信息M的部分簽名信息。在簽名驗(yàn)證階段,由于其偽造的子密鑰dt在驗(yàn)證階段無(wú)法通過(guò)式(15)的驗(yàn)證,致使簽名失敗。惡意簽名者無(wú)法通過(guò)重新構(gòu)造多項(xiàng)式f(xi) 以獲得子密鑰dt, 因離散對(duì)數(shù)難題也無(wú)法通過(guò)組公鑰獲取到組私鑰d。所以子密鑰dt被正確偽造的概率與直接偽造組私鑰d成功的概率相等,這意味著,攻擊者無(wú)法通過(guò)偽造子密鑰來(lái)突破門限簽名的安全性。又因?yàn)閿?shù)字簽名具有不可偽造性,t-1個(gè)成員無(wú)法聯(lián)合生成任何交易的簽名。因此本文方案可以有效地抵御成員間的合謀攻擊。
3.3.1 方案對(duì)比分析
本節(jié)從簽名方式、去中心化、是否能驗(yàn)證份額以及是否允許節(jié)點(diǎn)動(dòng)態(tài)加入和退出4個(gè)方面與其它方案進(jìn)行方案對(duì)比。
如表1所示,本文所提方案滿足去中心化、對(duì)溯源信息的不可抵賴性和對(duì)簽名的不可偽造性,且允許簽名成員的動(dòng)態(tài)加入和退出。本文方案在區(qū)塊鏈溯源應(yīng)用中更具有優(yōu)勢(shì)。
表1 方案對(duì)比
3.3.2 效率分析
表2展示了本文提出的Schnorr門限簽名方案與其它簽名方案在門限簽名階段和簽名驗(yàn)證階段的計(jì)算成本對(duì)比結(jié)果。其中Td表示簽名算法在橢圓曲線上進(jìn)行標(biāo)量乘法運(yùn)算或模冪運(yùn)算的計(jì)算成本,Tm表示模乘運(yùn)算的計(jì)算成本,Th表示哈希函數(shù)SHA256運(yùn)算的計(jì)算成本,Tc表示模求逆運(yùn)算的計(jì)算成本,t為閾值。模加法、模減法運(yùn)算的計(jì)算量與模冪運(yùn)算、模乘運(yùn)算以及標(biāo)量乘法運(yùn)算相比可忽略不計(jì),因此本文不統(tǒng)計(jì)模加法和模減法運(yùn)算的計(jì)算成本。
表2 門限簽名計(jì)算成本對(duì)比
如表2所示,在簽名階段和簽名驗(yàn)證階段,本文方案的計(jì)算成本小于文獻(xiàn)[3]和文獻(xiàn)[12]中所提方案。由于文獻(xiàn)[10]中所提方案的計(jì)算成本較為接近。但是,由于文獻(xiàn)[10]所提方案在簽名階段和在簽名驗(yàn)證階段進(jìn)行的模冪運(yùn)算更為復(fù)雜,因此本文所提方案的計(jì)算成本實(shí)際小于文獻(xiàn)[10]所提方案。且文獻(xiàn)[3]所提方案缺少簽名節(jié)點(diǎn)動(dòng)態(tài)加入和退出機(jī)制。文獻(xiàn)[12]所提方案缺少節(jié)點(diǎn)動(dòng)態(tài)退出機(jī)制。
對(duì)于本文方案的門限簽名算法和簽名驗(yàn)證算法的計(jì)算成本進(jìn)行仿真對(duì)比實(shí)驗(yàn)。門限簽名階段主要由閾值t決定計(jì)算開銷。實(shí)驗(yàn)環(huán)境為64位ubuntu-20.04.2.0系統(tǒng),CPU為lntel Core i7-6500U @2.50 GHz,采用GO語(yǔ)言進(jìn)行代碼編寫。實(shí)驗(yàn)結(jié)果如圖2和圖3所示。
圖2 簽名時(shí)間對(duì)比
圖3 簽名驗(yàn)證時(shí)間對(duì)比
在實(shí)驗(yàn)環(huán)境和閾值相同的情況下,分別測(cè)試100次不同方案的簽名時(shí)間,實(shí)驗(yàn)結(jié)果取平均值。由圖2可知,相對(duì)于文獻(xiàn)[3]、文獻(xiàn)[10]和文獻(xiàn)[12]所提門限簽名方案,本文方案的簽名時(shí)間較短,在閾值為20時(shí),簽名時(shí)間約為247 ms,具有較高的簽名效率。
在實(shí)驗(yàn)環(huán)境相同的條件下,分別對(duì)本文方案、文獻(xiàn)[3]所提方案、文獻(xiàn)[10]所提方案和文獻(xiàn)[12]所提方案中的簽名驗(yàn)證階段進(jìn)行100次測(cè)試,實(shí)驗(yàn)結(jié)果如圖3所示。測(cè)試結(jié)果表明,相對(duì)于文獻(xiàn)[3]、文獻(xiàn)[10]和文獻(xiàn)[12]所提方案,本文方案在簽名驗(yàn)證階段具有較高的簽名驗(yàn)證效率。并且本文方案有簽名節(jié)點(diǎn)動(dòng)態(tài)加入和退出機(jī)制,更適用于區(qū)塊鏈溯源場(chǎng)景。
根據(jù)區(qū)塊鏈溯源場(chǎng)景需求,本文提出了一種Schnorr門限簽名方案。解決了溯源信息相關(guān)者對(duì)溯源信息進(jìn)行簽名的不可抵賴性、抗合謀攻擊和簽名效率問(wèn)題。簽名成員協(xié)作生成子密鑰和簽名,實(shí)現(xiàn)了區(qū)塊鏈溯源系統(tǒng)在簽名環(huán)節(jié)的完全去中心化。在抗合謀攻擊中只有大于t個(gè)成員進(jìn)行合謀才能進(jìn)行簽名偽造。方案允許簽名成員動(dòng)態(tài)加入和退出,具有良好的可調(diào)整性,且在成員加入和退出時(shí),組私鑰和組公鑰不會(huì)發(fā)生改變。
本文提出的Schnorr門限簽名方案基于Pedersen可驗(yàn)證秘密共享,在門限簽名階段和簽名驗(yàn)證階段的計(jì)算效率較高,其安全性使其適用于涉及簽名成員動(dòng)態(tài)加入和退出的溯源系統(tǒng)。