王杰昌,張 平,高 遠(yuǎn),劉玉嶺
(1.鄭州大學(xué)體育學(xué)院 體育大數(shù)據(jù)中心,鄭州 450000;2.河南科技大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,河南 洛陽(yáng) 471023;3.國(guó)網(wǎng)三門(mén)峽供電公司,河南 三門(mén)峽 472000;4.中國(guó)科學(xué)院 信息工程研究所,北京 100190)
區(qū)塊鏈技術(shù)[1]具有去中心化[2]、公開(kāi)透明、可追溯[3]等諸多優(yōu)點(diǎn),無(wú)需任何可信中心即可在陌生網(wǎng)絡(luò)節(jié)點(diǎn)間搭建可信的價(jià)值傳遞渠道,可廣泛應(yīng)用于醫(yī)療、物聯(lián)網(wǎng)等各個(gè)領(lǐng)域[4]。區(qū)塊鏈2.0 以以太坊為代表實(shí)現(xiàn)了更復(fù)雜的分布式合約記錄——智能合約[5],雖然智能合約的概念早在1994 年就被提出[6],但直到近年來(lái)得益于區(qū)塊鏈技術(shù)的發(fā)展,其利用價(jià)值才被逐步發(fā)掘。
電子投票是一種新型網(wǎng)絡(luò)投票系統(tǒng),較傳統(tǒng)方式更具經(jīng)濟(jì)性,其使用密碼學(xué)確保投票過(guò)程公正、公平、公開(kāi)、透明[7]。它所用到的密碼學(xué)知識(shí)主要包括環(huán)簽名、同態(tài)加密、混合網(wǎng)絡(luò)、零知識(shí)證明等,其中環(huán)簽名[8]是一種簡(jiǎn)化的群簽名,只有環(huán)成員、沒(méi)有管理者,無(wú)需環(huán)成員之間的合作,對(duì)驗(yàn)證者來(lái)說(shuō)簽名者完全是匿名的。可鏈接環(huán)簽名[9-11]是指若某個(gè)環(huán)成員產(chǎn)生2 個(gè)消息簽名對(duì),存在有效算法使得簽名驗(yàn)證者可以確定這2 個(gè)消息簽名對(duì)是由環(huán)中同一成員產(chǎn)生的[12-13]。
為同時(shí)確保數(shù)據(jù)的機(jī)密性和可認(rèn)證性,傳統(tǒng)方法通常對(duì)數(shù)據(jù)進(jìn)行先簽名后加密或者先加密后簽名的操作,這類(lèi)方法的計(jì)算量和通信成本是加密和簽名的代價(jià)之和。而簽密[14]在一個(gè)邏輯步驟內(nèi)實(shí)現(xiàn)加密和簽名,也能達(dá)到傳統(tǒng)方法的效果,同時(shí)具有以下優(yōu)點(diǎn):低于傳統(tǒng)方法的計(jì)算量及通信代價(jià);允許部分高代價(jià)密碼運(yùn)算的并行計(jì)算;若設(shè)計(jì)恰當(dāng)可更安全;簡(jiǎn)化了同時(shí)需要認(rèn)證性與機(jī)密性的密碼算法設(shè)計(jì)[15]。
ZHAO 等[16]在電子投票方案中應(yīng)用區(qū)塊鏈技術(shù),但該方案只支持2 個(gè)候選者。MCCORRY 等[17]提出使用智能合約實(shí)現(xiàn)的開(kāi)放投票協(xié)議,但該協(xié)議使用的前提是不能出現(xiàn)投票者棄權(quán)的情況,不切實(shí)際。BISTARELLI 等[18]提出一個(gè)基于比特幣的端到端投票系統(tǒng),充分保護(hù)投票者的隱私,但該系統(tǒng)過(guò)于集中,方案不夠公開(kāi)透明。ZHEGN 等[7]提出一個(gè)以太坊電子投票方案,利用一次性環(huán)簽名及匿名地址技術(shù),解決了部分投票隱私性等問(wèn)題,但缺乏安全性證明和仿真實(shí)驗(yàn)。LYU 等[19]設(shè)計(jì)一個(gè)基于智能合約的去中心化、無(wú)信任的電子投票系統(tǒng),在投票階段對(duì)其選票加密后進(jìn)行環(huán)簽名,確保了投票結(jié)果的可信度,解決了投票過(guò)程中的部分安全問(wèn)題,但該系統(tǒng)沒(méi)有任何安全性證明,且計(jì)算消耗的gas 較多,運(yùn)行時(shí)間較長(zhǎng)。
針對(duì)上述問(wèn)題,本文通過(guò)構(gòu)造可鏈接環(huán)簽密,提出一個(gè)基于智能合約的電子投票協(xié)議,并在一個(gè)邏輯步驟內(nèi)實(shí)現(xiàn)選票的加密和簽名,在確保協(xié)議具有相關(guān)安全特性的同時(shí),從總體上降低協(xié)議運(yùn)行時(shí)間和計(jì)算消耗的gas。
引理1選擇消息的環(huán)分叉引理[20]?!苧ing為一般的環(huán)簽名方案,k為安全參數(shù),n為環(huán)成員數(shù)量。A為一個(gè)概率多項(xiàng)式時(shí)間的圖靈機(jī),輸入僅包含公共參數(shù),Q和W分別表示A詢(xún)問(wèn)隨機(jī)預(yù)言機(jī)的次數(shù)以及詢(xún)問(wèn)一些真實(shí)環(huán)簽名者的次數(shù)。假設(shè)A在時(shí)間T內(nèi),以不可忽略的優(yōu) 勢(shì)ε≥生成一個(gè)有效的環(huán)簽名(m,R1,…,Rn,h1,…,hn,σ),其 中VQ,n=Q×(Q-1)×…×(Q-n+1)。假定在不知道任何環(huán)密鑰的情況下,有效的環(huán)簽名在時(shí)間Ts內(nèi)能以不可區(qū)分的概率被模擬,那么就存在另一個(gè)概率多項(xiàng)式時(shí)間的圖靈機(jī),通過(guò)模擬替代與真實(shí)簽名者的交互從A中獲得對(duì)機(jī)器的控制權(quán),在預(yù)期的時(shí)間T′≤內(nèi)生成2 個(gè)有效的環(huán)簽名(m,R1,…,Rn,h1,…,hn,σ)和(m,R1,…,Rn,′,σ′)。其中:對(duì)于某個(gè)j∈{1,2,…,n},hj同時(shí),對(duì)于所有的i=1,2,…,n(i≠j),hi=
在橢圓曲線構(gòu)成的阿貝爾群Ep(a,b)上考慮方程Q=k×P,其中P,Q∈Ep(a,b),k<p,由k和P容 易求得Q,但由P和Q求k較困難,這就是橢圓曲線上的離散對(duì)數(shù)問(wèn)題[21]。
在門(mén)限加密系統(tǒng)[22-24]中,加密組的n個(gè)成員共享一對(duì)系統(tǒng)公私鑰,所有的成員都知道系統(tǒng)公鑰,然而在無(wú)可信中心[25]參與的情況下,系統(tǒng)私鑰分成若干個(gè)秘密份額,每個(gè)秘密份額由1 個(gè)成員保存,最少需要t名成員才能重構(gòu)系統(tǒng)私鑰。
群{Pi|i∈[1,n]}包含n個(gè)成員,F(xiàn)p表示階為p且生成元為g的有限循環(huán)群,門(mén)限值k是重構(gòu)私鑰的最小人數(shù)。無(wú)可信中心的門(mén)限加密具體步驟如下:
1)群Pi隨機(jī)選擇xi∈Fp,計(jì)算hi=,公鑰h是所有hi之和。
2)群Pi隨機(jī)選擇一個(gè)度至多為k-1 且fi(0)=xi的多項(xiàng)式fi(c)∈Zq(c),fi(c)=fi+fi1c+…+fi,k-1ck-1,Pi計(jì)算Fij=,其中j=0,1,…,k-1。
3)當(dāng)每位成員公布這些k值后,Pi秘密地將sij=fi(j)發(fā)送給Pj,其中j=1,2,…,n。
4)使用Pi驗(yàn)證從Pj處得到的sij,為了確保和先前公布的值一致,Pj計(jì)算若不成立,則中止。
5)Pi計(jì)算 其份額si并作為x的 一份,f表 示多項(xiàng)式f(c)=f1(c)+f2(c)+…+fn(c),si為f(0)=x的一份,通過(guò)構(gòu)建si=f(i),使其能夠很容易地重構(gòu)出系統(tǒng)私鑰x。
系統(tǒng)模型使用三元組<admin,users,contract >表示,包含3 個(gè)實(shí)體:投票管理員,投票者和智能合約,如圖1 所示,該3 個(gè)實(shí)體的具體描述如下:
圖1 電子投票模型Fig.1 E-voting model
1)投票管理員(admin):創(chuàng)建投票進(jìn)程,編寫(xiě)投票合約代碼;通過(guò)公鑰參數(shù)鑒定投票者的資格;公布投票者公鑰列表、投票問(wèn)題及候選項(xiàng);設(shè)定并公布投票相關(guān)時(shí)間節(jié)點(diǎn)(注冊(cè)截止時(shí)間tfr、投票者上傳密鑰參數(shù)截止時(shí)間tfg、開(kāi)始投票時(shí)間tbν、結(jié)束投票時(shí)間tfν、投票者上傳秘密份額開(kāi)始時(shí)間tbss、投票者上傳秘密份額截止時(shí)間tfss、公布投票結(jié)果時(shí)間tp);發(fā)起創(chuàng)建投票智能合約請(qǐng)求。
2)投票者users:Ui為投票者之一,具有以太坊賬戶和公私鑰對(duì),在預(yù)設(shè)的時(shí)間節(jié)點(diǎn)前完成注冊(cè)和投票。
3)智能合約contract:智能合約并不是協(xié)議中的真正實(shí)體,但所有實(shí)體都與智能合約進(jìn)行交互,故將其定義為“虛擬實(shí)體”;其由投票管理員admin 請(qǐng)求創(chuàng)建,包括可鏈接環(huán)簽密函數(shù)LinkableRingSigncryption()、計(jì)算系統(tǒng)私鑰函數(shù)computeSystemPrivateKey()、驗(yàn)證環(huán)簽密函數(shù)verifyLinkableRingSigncryption()、計(jì)票函數(shù)winningProposal()等,其具有的功能包括:按照admin編寫(xiě)的總體投票流程運(yùn)行、檢驗(yàn)所接收的消息是否來(lái)自合法的Ui、保存門(mén)限加密的有關(guān)信息、重構(gòu)系統(tǒng)私鑰、解密選票并驗(yàn)證簽密、統(tǒng)計(jì)有效選票并公布獲勝提案等。
區(qū)塊鏈的結(jié)構(gòu)如圖2 所示,主要包括合約創(chuàng)建交易、上傳參數(shù)交易、合約調(diào)用交易被打包進(jìn)區(qū)塊并加入?yún)^(qū)塊鏈。
圖2 投票區(qū)塊鏈結(jié)構(gòu)示意圖Fig.2 Schematic diagram of voting blockchain structure
上述交易的上鏈過(guò)程為:
1)合約創(chuàng)建交易。投票管理員admin 發(fā)起創(chuàng)建電子投票智能合約請(qǐng)求,內(nèi)容包括發(fā)送賬戶地址(即admin 賬戶地址)、接受賬戶地址(為0,表示該交易為創(chuàng)建智能合約的交易)、本次轉(zhuǎn)移的以太幣數(shù)量、用于完成交易的gas 數(shù)量、承諾支付的gas 單價(jià)等;接著,網(wǎng)絡(luò)節(jié)點(diǎn)驗(yàn)證交易請(qǐng)求,并爭(zhēng)取到打包權(quán)的礦工,遵循admin 發(fā)送的交易費(fèi)用與合約代碼,創(chuàng)建合約賬戶,在賬戶空間中部署合約,同時(shí)將智能合約賬戶地址返回給admin,并將admin 的請(qǐng)求打包進(jìn)區(qū)塊,全網(wǎng)傳播該區(qū)塊,令區(qū)塊加入共識(shí)區(qū)塊鏈。
2)上傳參數(shù)交易。投票者Ui發(fā)起上傳參數(shù)交易請(qǐng)求,內(nèi)容包括投票者用戶地址、接收賬戶地址(admin 創(chuàng)建的智能合約賬戶地址)、本次轉(zhuǎn)移的虛擬貨幣數(shù)量、用來(lái)完成交易的gas數(shù)量、交易中愿意付出的gas單價(jià)、發(fā)送給接收地址的消息(密鑰參數(shù)、秘密份額、選票簽密等);接著,網(wǎng)絡(luò)節(jié)點(diǎn)驗(yàn)證交易請(qǐng)求,交易被礦工打包進(jìn)區(qū)塊,并將區(qū)塊加入共識(shí)區(qū)塊鏈。
3)合約調(diào)用交易。在需要計(jì)算系統(tǒng)私鑰、驗(yàn)證簽密、計(jì)票時(shí),admin 發(fā)起合約調(diào)用交易請(qǐng)求,交易內(nèi)容包括發(fā)送賬戶地址、接收合約賬戶地址、本次轉(zhuǎn)移的“虛擬貨幣”數(shù)量、用來(lái)完成交易的gas 數(shù)量、交易中愿意付出的gas 單價(jià)、執(zhí)行智能合約或其某功能函數(shù)的指令,該請(qǐng)求被傳播到區(qū)塊鏈上;接著,網(wǎng)絡(luò)節(jié)點(diǎn)驗(yàn)證交易請(qǐng)求,爭(zhēng)取到打包權(quán)的礦工將在本地節(jié)點(diǎn)運(yùn)行被調(diào)用的合約代碼,直至代碼運(yùn)行結(jié)束或gas消耗殆盡后,將該區(qū)塊加入本地區(qū)塊鏈,并在全網(wǎng)傳播該區(qū)塊,令區(qū)塊加入共識(shí)區(qū)塊鏈。
本文協(xié)議將已有協(xié)議中選票的“加密+環(huán)簽名”方式改進(jìn)為選票的可鏈接環(huán)簽密,在保證安全性的同時(shí),降低協(xié)議運(yùn)行時(shí)間和計(jì)算消耗的gas。同時(shí)因簽密是在一個(gè)邏輯步驟內(nèi)實(shí)現(xiàn)了解密和簽名驗(yàn)證,本協(xié)議將選票簽密的驗(yàn)證放至最后的計(jì)票階段,而非像已有投票協(xié)議那樣在投票階段驗(yàn)證簽名。改進(jìn)后,本協(xié)議分為注冊(cè)、創(chuàng)建、密鑰生成、投票、秘密份額上傳、計(jì)票6 個(gè)階段,G是階為l的橢圓曲線E的基點(diǎn)。
每一個(gè)投票者Ui根據(jù)公共參數(shù)計(jì)算自己的公私鑰對(duì)(yi,xi),其中:yi=xiG;xi∈(為了方便起見(jiàn),本文中類(lèi)似xiG的表達(dá)式,皆表示取xiG的縱坐標(biāo)值),admin 對(duì)投票者進(jìn)行認(rèn)證,收集通過(guò)認(rèn)證的Ui(i∈[1,n])的公鑰yi(i∈[1,n])并組成公鑰列表,設(shè)定門(mén)限密鑰重構(gòu)的最小份額數(shù)為k。
admin 設(shè)定一個(gè)時(shí)間節(jié)點(diǎn)列表來(lái)觸發(fā)相應(yīng)的投票進(jìn)程,然后將公鑰列表、時(shí)間節(jié)點(diǎn)、整體投票進(jìn)程等寫(xiě)入合約代碼,發(fā)出智能合約創(chuàng)建請(qǐng)求。在合約創(chuàng)建后,admin 將智能合約賬戶地址及其他相關(guān)信息公布。
每一個(gè)投票者Ui隨機(jī)選擇λi∈Fq,并且計(jì)算ηi=λiG,Ui按如下方法分發(fā)λi:
1)投票者Ui隨機(jī)選擇一個(gè)階為k-1 的多項(xiàng)式,如式(1)所示:
其中:fi(0)=fi,0=λi。
2)投票者Ui首先計(jì)算Fi,j=fi,jG(其中j=0,1,…,k-1),并利用私鑰xi對(duì)(Fi,j,i,j)簽名后發(fā)起上傳密鑰參數(shù)請(qǐng)求,然后公鑰參數(shù)被礦工上傳至admin 創(chuàng)建的智能合約賬號(hào),智能合約利用公鑰yi列表驗(yàn)證簽名是否合法,若合法則保存該信息作為合約參數(shù),否則丟棄。投票者Ui計(jì) 算其 中j=1,2,…,n。接著,投票者Ui用xi對(duì)(si,j,i,j)簽名后發(fā)起上傳請(qǐng)求,然后(si,j,i,j)及其簽名被礦工上傳至admin 創(chuàng)建的智能合約賬號(hào),智能合約驗(yàn)證簽名,若合法則保存該信息作為合約參數(shù),否則丟棄。投票者必須在tfg之前完成這些計(jì)算及發(fā)送工作。
這里,每位投票者均可獲得所有的si,j和Fi,j,投票者Ui可 通過(guò)xi計(jì)算并獲得系統(tǒng)公鑰η通過(guò)式(2)進(jìn)行計(jì)算:
投票者Ui根據(jù)編碼規(guī)則及自己的選擇生成選票Vi,然后投票者Us(1≤s≤n)利用LinkableRingSigncryption()對(duì)其選票Vs進(jìn)行可鏈接環(huán)簽密。
3.4.1 簽密初始化
H1:{0,1}*→Zq和H2:{0,1}*→Fq是2 個(gè)安全的哈希函數(shù),環(huán)中有n個(gè)成員,即U={U1,U2,…,Un}。投票者Ui(i∈[1,n]) 的公私鑰對(duì)為(yi,xi),其中yi=xiG,G∈E。
3.4.2 簽密生成
簽密生成的步驟如下:
1)投票者Us計(jì)算θ=H2(y1,…,yn),t=xs×θ;
2)對(duì)于i∈{1,2,…,n},i≠s,隨機(jī)選擇互不相同的ai∈,計(jì)算Ri=aiG;
3)隨機(jī)選取a∈Zq,計(jì)算Rs=
4)計(jì)算σ=
5)投票者Us計(jì)算
6)計(jì) 算hi=H1(Vs,Ri,t),i=1,2,…,n,生成簽密Ω=
3.4.3 選票上傳
投票者發(fā)出上傳選票簽密Ω 請(qǐng)求,礦工將簽密Ω 上傳至區(qū)塊鏈上admin 創(chuàng)建的智能合約賬號(hào),作為計(jì)票階段成員函數(shù)調(diào)用的參數(shù),投票者必須在tfν之前完成本階段工作。
投票者Ui根據(jù)式(3)對(duì)其之前獲得的進(jìn) 行驗(yàn)證。
Ui發(fā)起秘密份額上傳請(qǐng)求,同時(shí)(si,i)及其對(duì)應(yīng)的簽名被礦工上傳至admin 創(chuàng)建的智能合約賬號(hào),且投票者必須在tfss之前完成上傳工作。
當(dāng)至少有t名投票者上傳秘密份額時(shí),智能合約中的函數(shù)computeSystemPrivateKey()通過(guò)式(5)計(jì)算獲得系統(tǒng)私鑰:
對(duì)智能合約中的驗(yàn)證環(huán)簽密函數(shù)verifyLinkableRingSigncryption()進(jìn)行如下操作:
1)有任意2 個(gè)環(huán)簽密:
由于部署在區(qū)塊鏈上的智能合約式是公開(kāi)透明的,無(wú)法篡改,因此在區(qū)塊鏈上進(jìn)行電子投票,同時(shí)也可以確保投票公開(kāi)、公正、公平。
本文僅論證選票簽密及驗(yàn)證的正確性,根據(jù)式(6)進(jìn)行驗(yàn)證:
當(dāng)式(6)所示的驗(yàn)證方程成立時(shí),選票簽密有效。
引理2在隨機(jī)預(yù)言機(jī)模型下,若橢圓曲線離散對(duì)數(shù)問(wèn)題是困難的,則環(huán)簽名Ω′是不可偽造的。
定理1若橢圓曲線離散對(duì)數(shù)問(wèn)題是困難的,則本協(xié)議的環(huán)簽密是不可偽造的。
證明:假設(shè)某用戶能偽造合法的投票環(huán)簽密,那么其肯定可以利用環(huán)簽名的轉(zhuǎn)換算法,將偽造的環(huán)簽密轉(zhuǎn)換成環(huán)簽名,即在橢圓曲線離散對(duì)數(shù)問(wèn)題是困難的情況下,得到一個(gè)偽造的環(huán)簽名。這顯然與引理1 相矛盾,定理得證。
本節(jié)著重探討Ui和Vi的隱私。從Ui隱私方面來(lái)說(shuō),由于可鏈接環(huán)簽名的特性,在具有n個(gè)元素的公鑰環(huán)上進(jìn)行的環(huán)簽名,任意環(huán)外的攻擊者確定出真正簽名者的概率不超過(guò)如果攻擊者為環(huán)內(nèi)某一非簽名者,那么其不能以大于的概率確定出真正的簽名者。從Vi隱私的方面來(lái)說(shuō),任何人都無(wú)法在3.6 節(jié)以前解密選票。
本文設(shè)計(jì)的投票協(xié)議采用可鏈接環(huán)簽密,其可鏈接性能夠確保一位投票者只可投一次票,若重復(fù)投票將被驗(yàn)證出來(lái),則作廢處理,以保證協(xié)議的唯一性。
本文協(xié)議融合了無(wú)可信中心的門(mén)限加密、可鏈接環(huán)簽密及智能合約,在3.6 節(jié)以前,投票者只掌握其本人的投票內(nèi)容,任何人都不可能獲取中間結(jié)果或最終結(jié)果,以確保本協(xié)議的公正性。
選舉結(jié)束后,任何投票者均可查看選票及系統(tǒng)私鑰,以查看自己的選票是否被正確記錄,且擁有合約地址的任何人均可查看所有選票并驗(yàn)證計(jì)票結(jié)果。
選票簽名或簽密的可鏈接性都將被進(jìn)行驗(yàn)證,這一點(diǎn)對(duì)于本文協(xié)議和Lyu 協(xié)議來(lái)說(shuō)沒(méi)有差別。但是對(duì)于加密選票簽名,Lyu 協(xié)議需要在投票階段和計(jì)票階段分別進(jìn)行驗(yàn)證和解密,而本文協(xié)議在3.6 節(jié)計(jì)票階段第2 步的一個(gè)邏輯步驟內(nèi)實(shí)現(xiàn)了選票簽密的驗(yàn)證和解密,降低了計(jì)算量,進(jìn)而降低了gas 消耗,最終gas 消耗總量也隨之降低。
在電子投票協(xié)議中,除了選票的驗(yàn)證、統(tǒng)計(jì)等工作由智能合約完成外,仍有很多操作需要投票者運(yùn)行,包括生成公私鑰、計(jì)算Fi,j與fi(j)、驗(yàn)證來(lái)自其他投票者的fj(i)、計(jì)算系統(tǒng)公鑰、恢復(fù)秘密份額、生成選票簽名或簽密等操作。對(duì)于生成公私鑰、計(jì)算Fi,j與fi(j)、驗(yàn)證來(lái)自其他投票者的fj(i)、計(jì)算系統(tǒng)公鑰、恢復(fù)秘密份額等操作,兩協(xié)議沒(méi)有差別。但是Lyu 協(xié)議需要對(duì)選票進(jìn)行加密后才能簽名,而本文協(xié)議生成了選票簽密,在一個(gè)邏輯步驟內(nèi)實(shí)現(xiàn)了簽名和加密,降低了計(jì)算量和運(yùn)行時(shí)間,進(jìn)而操作總時(shí)間也隨之降低。
本文在本地部署以太坊私有網(wǎng)絡(luò),通過(guò)truffle將智能合約部署到以太坊私有網(wǎng)絡(luò)上,同時(shí)進(jìn)行挖礦并確認(rèn)交易。本文協(xié)議從確認(rèn)交易的信息中獲得交易消耗的gas,投票者或管理員可以在rpc 模式使用web3.js 與區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行通信。
本地投票計(jì)算機(jī)配置為Win10系統(tǒng),四核2.9 GHz的CPU,8 GB 內(nèi)存。系統(tǒng)中的功能函數(shù)均用Python編寫(xiě),所有時(shí)間單位均為ms,每gas的價(jià)格定為1 Gwei,在t=0.7n的情況下進(jìn)行測(cè)試。
表1 展示了在n=30 的情況下投票者和管理員每個(gè)交易的gas 消耗,其中,由管理員admin 發(fā)起的交易只發(fā)起一次,由投票者Ui發(fā)起的交易每名一次。
表1 交易或計(jì)算的gas 消耗Table 1 Consumption of transaction and computation in gas
對(duì)比本文協(xié)議與Lyu 協(xié)議,從表1 可看出投票者上傳數(shù)據(jù)至區(qū)塊鏈的gas 消耗基本一樣,而本文協(xié)議admin 建立合約及設(shè)置相關(guān)信息的gas 消耗要低于Lyu 協(xié)議的消耗。這是因?yàn)長(zhǎng)yu 協(xié)議中智能合約執(zhí)行的是選票環(huán)簽名驗(yàn)證函數(shù)和加密選票解密函數(shù),而本文協(xié)議中智能合約執(zhí)行的是選票簽密的驗(yàn)證(解密)函數(shù),能夠在一個(gè)邏輯步驟內(nèi)實(shí)現(xiàn)驗(yàn)證和解密;同時(shí),Lyu 協(xié)議及本文協(xié)議執(zhí)行這些功能函數(shù)所消耗的gas 均包含在admin 建立合約及設(shè)置相關(guān)信息交易中。
為研究選舉時(shí)各實(shí)體的gas 消耗與投票者人數(shù)之間的關(guān)系,分別對(duì)n=10、20、30、40 的情況進(jìn)行測(cè)試,再利用python 畫(huà)出兩協(xié)議不同實(shí)體的gas 消耗對(duì)比圖,結(jié)果如圖3 所示。
圖3 本文協(xié)議與Lyu 協(xié)議的gas 消耗對(duì)比Fig.3 Comparison of gas consumption between this protocol and Lyu protocol
從圖3 可以看出,隨著投票者人數(shù)的增加,本文協(xié)議和Lyu 協(xié)議中admin 和投票者的交易或計(jì)算消耗的gas 都在增加。但是無(wú)論投票者人數(shù)如何變化,本文協(xié)議投票者的gas 消耗和Lyu 協(xié)議投票者的基本一樣,本文協(xié)議admin 的gas 消耗始終要比Lyu 協(xié)議admin 的低,降低了約1×107gas,每gas 的價(jià)格為1 Gwei,即節(jié)省了1×107Gwei 的計(jì)算消耗,其原因與n=30 的情況一樣,所以最終本文協(xié)議的gas 消耗總量低于Lyu 協(xié)議的gas 消耗總量。
表2 展示了在n=30 時(shí)在投票者本地運(yùn)行的操作所花費(fèi)的時(shí)間。
表2 投票者操作運(yùn)行時(shí)間Table 2 Voter operation run time
從表2 可以看出本文協(xié)議與Lyu 協(xié)議在投票者本地運(yùn)行的生成公私鑰、計(jì)算Fi,j與fi(j)及簽名、驗(yàn)證來(lái)自其他投票者的fj(i)、計(jì)算系統(tǒng)公鑰、恢復(fù)秘密份額等所花費(fèi)的操作時(shí)間都一樣,但本協(xié)議投票者生成選票簽密的時(shí)間要低于Lyu 協(xié)議投票者生成加密選票及簽名的時(shí)間,這是由簽密的性質(zhì)決定的。另外,當(dāng)n=30 時(shí)本文協(xié)議投票者本地運(yùn)行的操作總時(shí)間也低于Lyu 協(xié)議所花費(fèi)的時(shí)間。
對(duì)投票者運(yùn)行的操作總時(shí)間進(jìn)行測(cè)試并統(tǒng)計(jì),再利用python 繪制出本文協(xié)議與Lyu 協(xié)議在這方面的對(duì)比圖,結(jié)果如圖4 所示。
圖4 本文協(xié)議與Lyu 協(xié)議投票者的操作總時(shí)間對(duì)比Fig.4 Comparison of total voter operation time between this protocol and Lyu protocol
由圖4 可知,隨著投票者人數(shù)的增加,本協(xié)議和Lyu 協(xié)議中投票者運(yùn)行的操作總時(shí)間均在增加,但是無(wú)論投票者人數(shù)如何變化,本文協(xié)議投票者的操作總時(shí)間始終比Lyu 協(xié)議的低,少了約450 ms,其原因與n=30 時(shí)的情況相同。
本文提出一種新的智能合約電子投票協(xié)議,融合可鏈接環(huán)簽密,在一個(gè)邏輯步驟內(nèi)實(shí)現(xiàn)了選票的加密及簽名,分析得出協(xié)議具有正確性、唯一性、隱私性、公正性、可驗(yàn)證性等特性,并對(duì)協(xié)議的不可偽造性進(jìn)行了形式化證明。實(shí)驗(yàn)結(jié)果表明,本文協(xié)議的運(yùn)行時(shí)間和gas 消耗較Lyu 協(xié)議均有所降低,但隨著投票人數(shù)的增加,上傳至區(qū)塊鏈的數(shù)據(jù)量也有所增加。下一步將引入IPFS 文件系統(tǒng),使密鑰參數(shù)、選票、簽名等數(shù)據(jù)存儲(chǔ)至IPFS 文件系統(tǒng),且在區(qū)塊鏈上只存儲(chǔ)這些數(shù)據(jù)的指針或索引,以降低上傳至區(qū)塊鏈的數(shù)據(jù)量。