徐朝東,王化群
(南京郵電大學(xué) 計算機(jī)學(xué)院,江蘇 南京 210023)
隨著現(xiàn)代信息技術(shù)的飛速發(fā)展,簽署合同更多的是依賴于互聯(lián)網(wǎng)。簽署雙方可以通過電子簽名的形式,由第三方認(rèn)證來達(dá)成合同簽署,這在法律上也得到了認(rèn)可。由于電子合同在簽名過程中的異步性以及有序多重簽名方案的簽名過程較長,一旦存在簽名者拖延簽名的情況,必然造成經(jīng)濟(jì)上的損失,而且互聯(lián)網(wǎng)本身缺少一定的安全維護(hù)技術(shù),電子合同在傳播過程中面臨著被不法分子利用的危險,同時當(dāng)簽署方出現(xiàn)爭端時,也面臨著無法查證的問題。為了確保電子交易的合法性,有序多重數(shù)字簽名[1-3]在身份驗證以及交易完整性方面起著非常重要的作用。
2008 年,Nakamoto[4]第一次提出了區(qū)塊鏈的概念。區(qū)塊鏈作為一個去中心化的可信第三方以及基于共識算法的技術(shù),在完全不信任的節(jié)點(diǎn)之間建立起信任機(jī)制,同時區(qū)塊鏈也是一個分布式賬本,為每一個節(jié)點(diǎn)記錄完整的賬目,起到一個監(jiān)督交易的作用,為交易雙方提供憑證[5],構(gòu)造基于區(qū)塊鏈的有序多重簽名方案,可以有效解決合同管理的問題。區(qū)塊鏈集成P2P協(xié)議、共識機(jī)制等技術(shù),解決了數(shù)據(jù)的可信問題。區(qū)塊鏈的結(jié)構(gòu)圖如圖1所示,每個區(qū)塊中包含數(shù)據(jù)記錄、當(dāng)前區(qū)塊根哈希、前一區(qū)塊根哈希、時間戳以及其他信息,數(shù)據(jù)記錄中包含簽名記錄、智能合約等[6]。因此,構(gòu)造一個基于區(qū)塊鏈的有序多重簽名是有意義的。
圖1 區(qū)塊鏈結(jié)構(gòu)圖
Nick Szabo于1994年引入了智能合約這一概念,并將智能合約定義為“執(zhí)行合約條款的計算機(jī)化交易協(xié)議”,而在區(qū)塊鏈環(huán)境中,智能合約是記錄在區(qū)塊鏈上的腳本,是執(zhí)行合約條款的計算交易協(xié)議,具有自動執(zhí)行、代碼可讀等特性。智能合約允許達(dá)成的交易可追蹤且不可逆轉(zhuǎn),相比于傳統(tǒng)合同方法,智能合約提高了簽名的安全性以及減少了與合同相關(guān)的其他交易成本[7]。常見的智能合約平臺有以太坊、Hyperledger Fabric。只要參與多方達(dá)成協(xié)議,由礦工驗證后存儲在區(qū)塊鏈特定的區(qū)塊上,當(dāng)需要驗證時調(diào)用智能合約即可。智能合約的執(zhí)行過程如圖2所示,礦工通過編譯工具編寫代碼,由字節(jié)碼和Web3.js部署整個智能合約實例,最后由接口聲明API實現(xiàn)自動化測試。
圖2 智能合約執(zhí)行圖
多重簽名是由 Itakura[8]在 1983年提出的,Micali等[9]在2001年首次給出多重簽名方案的安全模型。隨著近年來的進(jìn)一步研究,許多研究人員更加關(guān)注多重簽名的安全性、效率和實用性,并提出了許多擴(kuò)展應(yīng)用方案[10-13]。早期的多重簽名方案是基于傳統(tǒng)密碼體制,隨著用戶不斷地增多,證書面臨著管理問題。 隨后,Al?Riyami等[14]在 2003 年提出無證書的多重簽名方案,但是最后的簽名長度過大。由于多重簽名不適合大規(guī)模分布式應(yīng)用環(huán)境,Tzongchen等[15]在1996年提出了兩種多重數(shù)字簽名方案:有序多重簽名和廣播多重簽名,但是提出的方案中簽名驗證需要花費(fèi)大量的時間。
2015年,杜紅珍等[16]提出改進(jìn)的無證書有序多重簽名方案,該方案可以抵抗敵手的攻擊,同時驗證簽名只需要2個雙線性運(yùn)算,提高了運(yùn)算效率,但是方案仍需要用戶驗證簽名的正確性。2018年,Boneh等[17]提出了基于區(qū)塊鏈的緊密多重簽名方案,方案通過聚合公鑰的處理使得驗證的運(yùn)算得到顯著的提升,但是方案未能解決有序問題。針對上述問題,本文提出了基于區(qū)塊鏈的有序多重簽名方案,通過智能合約,使得用戶簽名和智能合約驗證同時進(jìn)行。
在現(xiàn)實生活中,簽署合同已經(jīng)成為公司必不可少的一部分,而有序多重簽名需要合同的簽名者按照一定的順序才能完成簽名,例如在公司中,只有當(dāng)下屬簽署完成后,上級才會簽署。目前的商業(yè)合同由于其商業(yè)價值以及合同本身具有一定的實效性,簽名過程中每個簽名者必須控制好簽名的時間。同時,由于有序多重簽名的簽名過程是在每個簽名者之間互相傳遞的,一旦出現(xiàn)簽名者拖延簽名時間,必然引起整個合同的處理糾紛,因此,引入罰金機(jī)制也是必要的。為了解決上述問題,本文基于Boneh等提出的多重簽名方案,提出一種基于區(qū)塊鏈的有序多重簽名方案,方案的貢獻(xiàn)如下:
(1)數(shù)據(jù)擁有者規(guī)定每個簽名者的簽名時間,保證合約的時效性,同時引入罰金機(jī)制,避免合同的糾紛。
(2)區(qū)塊鏈作為去中心化的可信第三方,既保證簽署合約各方的公平性以及不可抵賴性,同時智能合約完成簽名驗證,也減輕了簽名者的計算消耗,由數(shù)據(jù)擁有者對合同加密后上傳到區(qū)塊鏈,保證合同的機(jī)密性。
(3)比較同類方案,方案的安全性和驗證時間得到了提升。本文通過實驗得到了每個階段的時間消耗,證明在實際應(yīng)用中是可行的。
設(shè)G1是一生成元為P的加法循環(huán)群,G2為乘法循環(huán)群,其階都為素數(shù)q。假設(shè)在群G1,G2中,離散對數(shù)問題是難解的,定義映射e:G1×G1→G2為雙線性對,并滿足下列性質(zhì)[18]。
非退化性:存在 P,Q ∈ G1,e(P,Q) ≠ 1。
可計算性:存在多項式時間算法計算e(P,Q)。
對于有序多重簽名方案,簽名中心應(yīng)預(yù)先設(shè)定一種簽名順序,并將簽名順序發(fā)送到每一位簽名者Ni(i∈ 1,2,…,n)[19]。 該簽名方案包括以下算法:
(1)系統(tǒng)參數(shù)生成算法。該算法生成系統(tǒng)參數(shù)params,然后每個簽名者Ni隨機(jī)選擇一個并計算相應(yīng)的公鑰 Si= siP(i∈ 1,2,…,n)。
(2)簽名算法。首先由簽名中心將消息m發(fā)送到簽名者N1,簽名者N1產(chǎn)生簽名σ1。然后將簽名σ1發(fā)送到下一個簽名者N2依次簽名;直到最后一位簽名者Nn簽名完成后,將最終簽名發(fā)送給簽名中心。
(3)驗證算法。每位簽名者Ni在收到上一簽名者Ni-1的簽名時,首先對簽名進(jìn)行驗證,如通過驗證,則接受并生成自己的簽名再發(fā)給下一個簽名者;否則,拒絕簽名。當(dāng)生成最終簽名后,最終簽名能夠通過驗證算法。
基于罰金機(jī)制的公平交換協(xié)議是搭建在區(qū)塊鏈上確保用戶公平交易的功能函數(shù),其功能是簽名過程中,保證接收方在指定時間間隔內(nèi)釋放秘密值,發(fā)送方才會將保證金返還給接收方,具體過程由以下交易構(gòu)成[20]。
(1)Deposit phase。首先由發(fā)送方生成一個deposit交易,設(shè)置保證金金額,其輸入腳本驗證為當(dāng)發(fā)送方和接收方取消交易或者當(dāng)接收方上傳簽名以及釋放秘密值時,接收方才能收到保證金。接著發(fā)送方將deposit交易作為輸入生成refund交易,為每個接收方設(shè)定時間間隔 Δt1,Δt2,…,Δtn-1, 保證在指定時間間隔內(nèi)釋放秘密值。然后將該交易發(fā)送給接收方,使得所有接收方都同意此交易。最后,發(fā)送方將deposit交易廣播全網(wǎng),此時所有接收方的賬戶已經(jīng)存有保證金,存款階段完成。
(2)Claim phase。每個接收方將 deposit交易作為輸入用于生成claim交易,在指定時間間隔內(nèi)提供簽名以及釋放秘密值才能通過腳本的驗證,拿回保證金,否則失去保證金。
(3)Refund phase。若在時間間隔內(nèi)存在接收方?jīng)]有廣播有效的claim交易,此時當(dāng)接收方為第一位簽名者時,由于簽名未開始,所有簽名者通過廣播refund交易拿回保證金;當(dāng)接收方不為第一位簽名者時,設(shè)為Ni(i≠1),其他簽名者通過廣播refund交易拿回保證金,接收方Ni將失去保證金,由前i-1已經(jīng)廣播有效的claim交易的接收方獲得Ni的保證金作為獎勵。
在本文設(shè)計的方案中,系統(tǒng)架構(gòu)包含如下實體:數(shù)據(jù)擁有者(Data Owner),簽名者(Signer),區(qū)塊鏈(Blockchain)。系統(tǒng)模型圖如圖3所示。首先,簽名者生成用于簽名的公私鑰,并將公鑰作為區(qū)塊鏈上的地址。其次,數(shù)據(jù)擁有者生成一個deposit交易,設(shè)置保證金金額以及簽名時間間隔,同時將需要簽名的簽名者公鑰進(jìn)行聚合以及生成簽名者簽名順序,并公開這些消息。然后,每個簽名者依次對合同簽名,通過生成用于此次簽名的部分公鑰來保證簽名安全性,簽名完成后發(fā)送給智能合約以及下一簽名者。當(dāng)智能合約通過簽名后,簽名者通過deposit交易用于生成claim交易,拿回保證金,下一簽名者繼續(xù)簽名。最后,由智能合約將最終的簽名發(fā)送給數(shù)據(jù)擁有者。
圖3 系統(tǒng)模型圖
其中每個實體的功能如下:
(1)數(shù)據(jù)擁有者定制策略。計算簽名者的聚合公鑰、制定簽名順序以及每個簽名者簽名的時間,將生成的公開信息傳送到區(qū)塊鏈中,同時生成一個deposit交易,設(shè)置保證金金額以及秘密值,這里的秘密值為簽名σi,σi在簽名者簽名之前是秘密的,當(dāng)上傳到區(qū)塊鏈后,對所有用戶公開。最后等待智能合約返回所有簽名者完成簽名后的簽名。
(2)簽名者依次簽名。首先生成各自的公私鑰,同時根據(jù)數(shù)據(jù)擁有者上傳的簽名順序以及簽名時間間隔簽名,完成簽名后將簽名消息發(fā)送到智能合約和下一簽名者,當(dāng)智能合約通過后,簽名者通過deposit交易作為輸入生成claim交易,拿回保證金。當(dāng)智能合約未通過簽名時,其他簽名者生成refund交易,拿回保證金,此時簽名者Ni將失去保證金,由前i-1個簽名者獲得獎勵,平分簽名者Ni的保證金(i∈2,3,…,n)。 這里的簽名者的公開參數(shù)對區(qū)塊鏈的所有用戶公開。
(3)區(qū)塊鏈。利用區(qū)塊鏈的不可篡改性、可追溯性、可自動執(zhí)行一些預(yù)先定義好的規(guī)則和條款的特點(diǎn),同時區(qū)塊鏈上的交易信息對所有用戶是公開的,但是用戶的隱私信息是高度加密的,只有在有授權(quán)的情況下才能訪問到。智能合約是基于這些可信的不可篡改的信息,驗證合約是否正確,如果簽名驗證未通過,返回未通過信息給下一簽名者,停止簽名;當(dāng)最后一位簽名者驗證通過后,由智能合約直接返回簽名給數(shù)據(jù)擁有者。
在實際應(yīng)用環(huán)境中,基于區(qū)塊鏈的有序多重簽名方案必須滿足以下安全屬性:
(1)保證簽名的有序。數(shù)據(jù)擁有者規(guī)定簽名順序,任何簽名者改變簽名順序后無法通過智能合約的驗證。簽名者也可以對上傳的簽名進(jìn)行驗證,確定簽名是否有效。
(2)保證單簽名的不可偽造性。在簽名的過程中,任何人試圖偽造該簽名者簽名,完成的簽名無法通過智能合約的驗證。
(3)保證最后生成的簽名的不可偽造性。當(dāng)最后一位簽名者完成簽名后上傳到智能合約,只有通過智能合約的簽名才會返回給數(shù)據(jù)擁有者。
基于以上安全目標(biāo),提出正式的安全定義。
定義1(不可偽造性) 假設(shè)A是概率多項式時間敵手,當(dāng)A贏得接下來的交互可以忽略時,則生成的簽名滿足不可偽造性。下面的交互來自于A和挑戰(zhàn)者C之間的相互作用[21]。
(1)初始化:創(chuàng)建系統(tǒng)參數(shù)并生成所有簽名者的公私鑰對 (si,Si)(i∈ 1,2,…,n), 系統(tǒng)參數(shù)、所有簽名者的公鑰 S1,S2,…,Sn作為公共參數(shù)發(fā)送給A。
(2)敵手A和挑戰(zhàn)者C之間的交互:在A和C的交互中,A自適應(yīng)地請求C并獲取C的響應(yīng)。請求和對應(yīng)的響應(yīng)如下。
(a)哈希請求。A向C發(fā)送哈希請求。C收到A的請求后,生成相應(yīng)的值,作為響應(yīng)發(fā)送給A(隨機(jī)預(yù)言模型)。或者C訪問實際的哈希函數(shù)并用實際的哈希值響應(yīng)A(標(biāo)準(zhǔn)模型)。A可以自適應(yīng)地請求哈希預(yù)言機(jī)并得到相應(yīng)的響應(yīng)。
(b)簽名請求。敵手A向C請求消息mi的簽名查詢,得到 (mi,δi), 其中 (mi,δi) 是消息/簽名對。在這個過程中,C創(chuàng)建簽名δi(i≠k)并將其發(fā)送給A。A可以自適應(yīng)地執(zhí)行簽名請求,并得到相應(yīng)的響應(yīng)。在此過程中,將請求/簽名集表示為{(mi,δi) |i∈ I}。
(3)偽造。A偽裝成簽名者生成消息mf的一個有效的簽名δf,其中f?I。 如果A成功偽造的概率是不可忽略的,那么A贏得這場游戲;否則,稱該簽名方案是存在不可偽造的。
定義2(智能合約的安全性) 智能合約是通過礦工節(jié)點(diǎn)參與創(chuàng)建后,將合約發(fā)布到區(qū)塊鏈中,當(dāng)觸發(fā)預(yù)設(shè)條件時,合約代碼自動執(zhí)行,并將執(zhí)行后的結(jié)果返回到區(qū)塊。同時由于鏈上執(zhí)行數(shù)據(jù)公開且存儲在分布式系統(tǒng)中以及共識機(jī)制,少數(shù)礦工更改數(shù)據(jù)不會改變執(zhí)行結(jié)果。從安全性、數(shù)據(jù)溯源、激勵機(jī)制方面,區(qū)塊鏈系統(tǒng)滿足公平性以及不可偽造性。
基于區(qū)塊鏈的有序多重簽名方案包含5個步驟:系統(tǒng)建立、密鑰生成階段、簽名生成、有序多重簽名和有序多重簽名驗證。
(1)系統(tǒng)建立階段。設(shè)G1,G2分別是階為素數(shù)q的加法循環(huán)群和乘法循環(huán)群,e為高效的雙線性映射e:G1×G1→G2,P是G1的一個生成元。 3個安全散列函數(shù) H0: {0,1} → G1,H1:, 系統(tǒng)參數(shù) params:(G1,G2,e,P,H0,H1,H2)存儲在區(qū)塊鏈并對所有用戶公開。
(2)密鑰生成階段。簽名者生成密鑰以及數(shù)據(jù)擁有者指定規(guī)則,具體步驟如下:
(a)簽名者密鑰生成。每個簽名者Ni隨機(jī)地選取一個si∈(i∈1,2,…,n) 作為私鑰,同時計算 Si= siP(i∈1,2,…,n) 作為公鑰,這里的公鑰也被簽名者用作在區(qū)塊鏈上的地址。
(3)有序多重簽名階段。簽名者依次簽名,同時將簽名完成的結(jié)果發(fā)送給智能合約,下一簽名者收到結(jié)果后,繼續(xù)簽名,直到最后一位簽名者完成簽名后,由智能合約發(fā)送給數(shù)據(jù)擁有者,具體步驟如下:
(a)每個簽名者Ni隨機(jī)地選取一個ri∈同時計算Ri=riP并上傳到區(qū)塊鏈中,對所有用戶公開。其次簽名者執(zhí)行deposit交易,只有賬戶中余額大于cash才能執(zhí)行此協(xié)議。最后每個簽名者選取一個簽名時間 ti并計算 li= H2(apki,Mi,ti)(i∈ 1,2,…,n)。
(b) 簽名者 N1計算得到簽名 δ1= (β1?s1+l1?r1)h1,σ1= δ1, 最后簽名者 N1完成后將簽名 σ1發(fā)送到智能合約以及t1發(fā)送到區(qū)塊鏈,將σ1發(fā)送給簽名者N2。
(c)簽名者 N2驗證簽名σ1是否有效,由于驗證的過程在智能合約中完成,簽名者N2只需等待智能合約返回驗證的結(jié)果,智能合約通過驗證 e(σ1,P) = e(H0(apkn,m),apk1+ l1R1) 是否成立。當(dāng)智能合約返回的結(jié)果為σ1無效時,此時簽名者N1需重新上傳t1以及簽名σ1,否則簽名者N2拒絕簽名,簽名終止,由于簽名剛開始,那么所有簽名者都生成refund交易,拿回保證金cash。當(dāng)智能合約返回的結(jié)果為σ1有效時,簽名者N1生成refund交易,拿回保證金cash,簽名者N2查看區(qū)塊鏈上簽名者N1上傳的簽名時間t1和數(shù)據(jù)擁有者上傳的時間間隔Δt1,然后計算得到簽名 δ2= (β2?s2+ l2?r2)h2,σ2= σ1+ δ1。 簽名者N2將σ2發(fā)送到智能合約,t2發(fā)送到區(qū)塊鏈并將σ2傳送給下一個簽名者。
算法1 智能合約驗證σi的有效性
定理 1(正確性) 如果簽名者 Ni(i∈ 1,2,…,n)上傳的簽名是正確的,則可以通過智能合約的驗證以及數(shù)據(jù)擁有者的驗證。
智能合約的證明:
數(shù)據(jù)擁有者的驗證:
定理 2(不可偽造性) 設(shè)群 G1為(t′,ε′)?GDH群,則在隨機(jī)預(yù)言機(jī)中,本文基于區(qū)塊鏈的有序多重簽名方案是(t,ε)存在不可偽造的,即敵手A在運(yùn)行時間不超過t時,成功的概率不高于ε,其中
式中, qH0,qs,qH1,qH2分別表示對預(yù)言機(jī) H0, 數(shù)字簽名,H1,H2的請求次數(shù),e為自然對數(shù)的底。
證明:假設(shè)C是CDHP挑戰(zhàn)者,C創(chuàng)造了模擬的攻擊環(huán)境,與真實的攻擊環(huán)境是計算不可區(qū)分的。挑戰(zhàn)者C收到三元組P,U1,U2∈,其中,設(shè)U1=aP,挑戰(zhàn)者C的目標(biāo)計算aU2。 挑戰(zhàn)者C與敵手A的交互如下。
初始化:挑戰(zhàn)者C生成系統(tǒng)參數(shù)params:(G1,G2,e,P,H0,H1,H2) 并發(fā)送給 A,挑戰(zhàn)者 C 發(fā)送給敵手簽名者Ni的公鑰U1+siP,其中si∈(1≤i≤n),并初始化表格L0。
H0?請求:挑戰(zhàn)者C利用表格L0存儲元組(vi,wi,bi,ci)。 當(dāng) A 對 vi= (apkn,mi) 請求 H0時,挑戰(zhàn)者C響應(yīng)如下。
(1)如果請求vi已經(jīng)存儲在表格L0中,則挑戰(zhàn)者 C 輸出 H0(apkn,mi) = wi。
(2)否則,挑戰(zhàn)者C隨機(jī)選取一個 ci∈{0,1}使得Pr[ci=0] =1/(qs+ 1),其中qs表示簽名請求次數(shù)。
(3)挑戰(zhàn)者C選取一個bi∈,并計算wi=(1 - ci)U2+ biP。
(4) 挑戰(zhàn)者 C 將 (vi,wi,bi,ci) 添加到表格 L0中,并將wi發(fā)送給敵手A。
H1?請求,H2?請求:當(dāng) A 向 C 請求 H1?預(yù)言機(jī)或H2?預(yù)言機(jī)時,C根據(jù)實際哈希函數(shù)計算相應(yīng)哈希值,并把相應(yīng)哈希值返回給A。
簽名請求:敵手A向C請求消息mi的簽名請求,C對該查詢的請求如下:
(1) A 對 mi和 apkn請求 H0-預(yù)言機(jī),得到 wi,設(shè) (vi,wi,bi,ci) 為 L0中的元組。 若 ci= 0, 則挑戰(zhàn)失敗并終止。
(2)否則,wi=biP,通過請求 H1-預(yù)言機(jī)和H2-預(yù)言機(jī)獲得 βi,li, C 選取隨機(jī)數(shù) ri∈并計算δi= bi(βiSi+ liriP)。 因為 δi= bi(βiSi+ liriP) =(βi(a + si) + liri)biP = (βi(a + si) + liri)wi=(βi(a +si) + liri)H0(apkn,mi), 所以 δi是 mi的有效簽名。挑戰(zhàn)者C將簽名δi發(fā)送給敵手A。
在A與C的交互中,對于H0預(yù)言機(jī),每次請求C需要1次數(shù)乘;對于簽名預(yù)言機(jī),每次請求C需要2次數(shù)乘;對于H1預(yù)言機(jī)和H2預(yù)言機(jī),僅作正常哈希函數(shù)計算即可。這樣,上述交互的時間消耗為t′+O(qH0+ 2qs+ qH1+ qH2)。
根據(jù)概率分析,得到CDHP被破解的概率為ε≥e(qs+ 1)ε′。 如果ε是不可忽略函數(shù),則ε′也是不可忽略函數(shù),這跟 G1為(t′,ε′)?GDH 群矛盾。根據(jù)反證法,ε′是一個可忽略函數(shù),本文提出的方案滿足不可偽造性。證畢。
定理3(智能合約的安全性) 如果簽名者上傳的信息是正確的,則本方案智能合約返回的結(jié)果是正確的。
在安全性方面,本方案搭建在區(qū)塊鏈中,公開信息對所有簽名者共享,同時簽名時采用哈希函數(shù)和數(shù)字簽名的方式保證了個人信息不被泄露,無法從本方案中得到的簽名σi去破解si,ri;在數(shù)據(jù)溯源方面,由于區(qū)塊鏈的不可篡改、節(jié)點(diǎn)共識以及數(shù)據(jù)加密的特點(diǎn),本方案中一旦有惡意簽名者試圖修改數(shù)據(jù)從而改變智能合約驗證結(jié)果,就會通過溯源技術(shù)找到該簽名者,收到相應(yīng)懲罰;在激勵機(jī)制方面,所有簽名用戶共同維護(hù)區(qū)塊鏈系統(tǒng),保證不被惡意用戶攻擊。以超級賬本(Fabric)中的智能合約為例,超級賬本中的智能合約也稱鏈碼,它是運(yùn)行在Docker中,執(zhí)行智能合約主要是在鏈碼實例化后通過與背書節(jié)點(diǎn)建立連接通訊,再通過背書節(jié)點(diǎn)訪問賬本中合約相關(guān)數(shù)據(jù),從而隔離了智能合約與用戶直接訪問,保證了安全性。
在本節(jié)中,將本文提出的方案和Boneh等[17]以及杜紅珍等[16]的方案做比較,如表1所示。從簽名者的角度出發(fā),在簽名計算量、驗證計算量以及簽名長度方面做比較,分析每個階段的時間消耗。令雙線性對運(yùn)算記為BP,橢圓曲線上G的標(biāo)量點(diǎn)乘運(yùn)算記為SM,G1上的一個群元素的長度記為|G1|。 在本文的方案中,簽名的正確性由智能合約來完成驗證操作,因此,簽名者的驗證計算量為0。對比發(fā)現(xiàn),本文方案在不增加簽名長度以及簽名計算量的同時實現(xiàn)了有序。同時本文的方案在智能合約驗證的過程中,減少了智能合約的驗證時間。如表1所示,本方案的驗證計算量實際上是智能合約的驗證時間。
表1 方案效率比較
我們從經(jīng)濟(jì)開銷和時間開銷兩個方面進(jìn)行了評估。在經(jīng)濟(jì)開銷方面,從罰金機(jī)制的3個階段出發(fā),分析簽名人數(shù)與經(jīng)濟(jì)開銷的關(guān)系;在時間開銷方面,從簽名方案的各個階段出發(fā),分析簽名人數(shù)與時間開銷的關(guān)系。由于罰金機(jī)制是搭建在區(qū)塊鏈上的公平協(xié)議,所以主要經(jīng)濟(jì)開銷都是來源于區(qū)塊鏈中各方之間的交易。在Deposit phase階段,簽名者確保賬戶金額大于cash就可以執(zhí)行協(xié)議,此時不產(chǎn)生任何經(jīng)濟(jì)開銷。在Claim phase階段,如果簽名者在指定時間內(nèi)上傳簽名到智能合約中并驗證成功,此時生成claim交易,拿回保證金,不產(chǎn)生經(jīng)濟(jì)開銷,但是如果簽名者未在指定時間內(nèi)完成簽名,此時由前面已經(jīng)廣播claim交易的簽名者獲得獎勵,需要進(jìn)行賬戶之間的轉(zhuǎn)賬。以以太坊為例,每筆交易的手續(xù)費(fèi)為0.1%,經(jīng)濟(jì)開銷為交易所需的手續(xù)費(fèi),并且隨著保證金的變化發(fā)生變化。當(dāng)保證金不變時,隨著已經(jīng)完成簽名人數(shù)的不斷增加,經(jīng)濟(jì)開銷也會保持不變,因為隨著完成簽名的人數(shù)增加,每個簽名者平分的總金額不變,交易手續(xù)費(fèi)仍為保證金的0.1%。在Refund phase階段,未簽名的簽名者通過refund交易拿回保證金,不產(chǎn)生經(jīng)濟(jì)開銷。在圖4中,表示存在簽名者未在指定時間內(nèi)完成簽名而產(chǎn)生的經(jīng)濟(jì)開銷。
圖4 方案交易開銷
在時間開銷方面,為了分析我們設(shè)計的有序多重簽名方案中簽名人數(shù)與加解密時間的關(guān)系,使用JPBC(Java Pairting Based Cryptography Library)密碼庫來實現(xiàn)有序多重簽名方案并獲取相關(guān)操作的運(yùn)行時間,實驗環(huán)境配置如下:Windows10, Intel(R)Core(TM)i7 8550U CPU@180 GHz 1.99 GHz,8.00 GB RAM,JDK 1.8,JPBC 2.0.0 TypeA1。為方便起見,以下列出了一些有關(guān)運(yùn)行時間的注釋。
(1)Ts:系統(tǒng)建立的運(yùn)行時間。
(2)Tg:簽名生成的運(yùn)行時間。
(3)Te:有序多重簽名的加密運(yùn)行時間。
(4)Td:智能合約的解密時間。
為了顯示不同簽名人數(shù)的不同計算成本,我們根據(jù)不同簽名人數(shù)和不同階段來分析計算性能。在本方案中,系統(tǒng)建立的運(yùn)行時間和簽名生成的運(yùn)行時間不隨簽名人數(shù)的增加而增加,所以主要是對有序多重簽名的加密運(yùn)行時間和智能合約的解密時間進(jìn)行分析。在實驗的過程中,通過增加簽名者人數(shù)來驗證本文的結(jié)果。在圖5中,每一個簽名者的簽名時間遠(yuǎn)遠(yuǎn)大于智能合約的解密時間,確保簽名和驗證的同時運(yùn)行,并且隨著簽名人數(shù)的增加,加密時間也在線性增長,而解密時間幾乎不變。在圖6中,通過與 Boneh 等[17]、杜紅珍等[16]的方案進(jìn)行對比,本文的方案在時間消耗上得到了提升。
區(qū)塊鏈利用哈希函數(shù)、分布式計算、P2P交易等技術(shù),實現(xiàn)了不可篡改性,能夠擔(dān)任可信第三方。區(qū)塊鏈上的智能合約,能夠根據(jù)條件智能執(zhí)行合約的規(guī)定,實現(xiàn)了交易中的公正性。在本方案中,將系統(tǒng)參數(shù)、公鑰、公開參數(shù)、簽名順序、簽名的時間要求等存儲在區(qū)塊鏈上,簽名者無法偽造簽名時間和簽名順序等,驗證者也可以通過訪問區(qū)塊鏈實現(xiàn)數(shù)字簽名驗證,不需要可信第三方。通過智能合約,實現(xiàn)了部分簽名的智能驗證和有序多重簽名的智能推進(jìn),同時對簽名者進(jìn)行智能獎懲。由于區(qū)塊鏈的不可篡改性和智能合約的公正性,區(qū)塊鏈在有序多重簽名方案設(shè)計中具有重要作用。
本文提出了一種新的有序多重簽名方案,該方案搭建在區(qū)塊鏈上,確保了合同的不可篡改性,同時智能合約完成簽名過程中需要的驗證時間,減少了用戶的每一次驗證成本。在簽名的過程中,將公鑰聚合,確保有序的同時減少了驗證的時間消耗,整個方案適合目前合同的完整簽署過程。通過實驗分析證明方案的優(yōu)勢,未來在本文的基礎(chǔ)上,可增加代理的性質(zhì),研究基于區(qū)塊鏈的有序多重代理簽名體制。