国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于零知識(shí)證明的智能合約投票系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2023-01-07 08:50殷紅建郭光來(lái)
工程科學(xué)學(xué)報(bào) 2023年4期
關(guān)鍵詞:投票者計(jì)票選票

殷紅建,朱 巖,王 靜,郭光來(lái),陳 娥?

1) 北京科技大學(xué)計(jì)算機(jī)與通信工程學(xué)院,北京 100083 2) 海信集團(tuán)控股股份有限公司,青島 266071

智能合約作為第二代區(qū)塊鏈技術(shù)的核心,其本質(zhì)是部署在區(qū)塊鏈上的一系列可執(zhí)行數(shù)字協(xié)議.智能合約兼顧區(qū)塊鏈和合約的雙重屬性,具有去中心化、不可篡改、可編程和法律化等特征[1],已經(jīng)被廣泛應(yīng)用于金融、數(shù)字資產(chǎn)管理等諸多領(lǐng)域[2-5].近年來(lái),隨著支持智能合約開(kāi)發(fā)的區(qū)塊鏈平臺(tái)相繼提出,例如以太坊[6]、根鏈(RootStock)[7]以及Hyperledger Fabric[8],開(kāi)發(fā)人員可通過(guò)可編程的語(yǔ)言(如Solidity,Java)在這些平臺(tái)上實(shí)現(xiàn)對(duì)智能合約的開(kāi)發(fā)、部署和執(zhí)行.然而,區(qū)塊鏈平臺(tái)的開(kāi)放性使得部署在區(qū)塊鏈上的智能合約是公開(kāi)透明的,因此合約交易中的所有數(shù)據(jù)也都是公開(kāi)可見(jiàn)的,這勢(shì)必引起合約交易中敏感信息的泄露問(wèn)題.在電子投票合約中,由于合約數(shù)據(jù)涉及用戶的隱私信息且投票內(nèi)容不能公開(kāi),因此合約隱私泄露問(wèn)題尤為突出.

盡管現(xiàn)有智能合約平臺(tái)支持密碼機(jī)制(例如橢圓曲線密碼ECC)可用來(lái)保護(hù)投票合約中選票內(nèi)容的隱私,但在計(jì)票階段仍需對(duì)選票解密后再進(jìn)行統(tǒng)計(jì),這將為投票內(nèi)容的隱私帶來(lái)威脅.此外,為了避免無(wú)效選票對(duì)系統(tǒng)的干擾,需在投票之前對(duì)選票內(nèi)容的合法性進(jìn)行驗(yàn)證,并且驗(yàn)證過(guò)程不能泄露投票內(nèi)容信息.顯然,現(xiàn)有智能合約中的密碼機(jī)制不能滿足智能合約投票系統(tǒng)對(duì)數(shù)據(jù)隱私及安全性的需求.因此,設(shè)計(jì)新的能夠保護(hù)交易隱私的智能投票合約系統(tǒng)是十分必要的和迫切的.

1981 年,Chaum[9]首次提出了安全電子投票系統(tǒng)的概念,此后涌現(xiàn)出了一大批關(guān)于電子投票協(xié)議構(gòu)造以及安全性的研究[10-13].目前為止,盡管人們對(duì)其安全性仍存在一定爭(zhēng)論[14],但電子投票系統(tǒng)已在實(shí)際環(huán)境中得到廣泛應(yīng)用,甚至被用于國(guó)家選舉[15].隨著區(qū)塊鏈技術(shù)的出現(xiàn)與發(fā)展,基于區(qū)塊鏈的電子投票系統(tǒng)被相繼開(kāi)發(fā).2015 年Zhao與Chan[16]設(shè)計(jì)了第一個(gè)基于區(qū)塊鏈的電子投票方案,該方案能夠在比特幣網(wǎng)絡(luò)中直接運(yùn)行.隨后,Tarasov 與Tewari[17]基于Zcash 設(shè)計(jì)了一個(gè)新的電子投票協(xié)議,協(xié)議中投票結(jié)果的正確性由可信任第三方和投票者共同保證.2017 年,McCorry等[18]設(shè)計(jì)了第一個(gè)去中心化的能夠?qū)崿F(xiàn)自動(dòng)計(jì)票功能的投票協(xié)議,并在以太坊平臺(tái)以合約的形式進(jìn)行了實(shí)現(xiàn).然而,該系統(tǒng)僅支持小規(guī)模候選人模式,而對(duì)于大范圍投票,該協(xié)議則不再適用.Yu等[19]利用環(huán)簽名技術(shù)設(shè)計(jì)了基于智能合約的可驗(yàn)證投票系統(tǒng)并在Hyperledger Fabric 平臺(tái)上進(jìn)行了部署實(shí)現(xiàn).

此外,為防止無(wú)效選票對(duì)投票系統(tǒng)帶來(lái)的干擾,需對(duì)選票有效性進(jìn)行驗(yàn)證.零知識(shí)集合成員關(guān)系證明協(xié)議(Zero-knowledge set membership proof protocol,ZSMPP)[20]可為選票有效性驗(yàn)證提供技術(shù)支持,通過(guò)零知識(shí)證明技術(shù),ZSMPP 協(xié)議允許在不泄露選票內(nèi)容的情況下對(duì)公開(kāi)候選人集驗(yàn)證選票.2008 年,Camenisch 等[20]提出了集合成員關(guān)系判定問(wèn)題,并基于Strong Diffie-Hellman (SDH)假設(shè)在雙線性群下構(gòu)造了第一個(gè)ZSMPP 協(xié)議.隨后,Morais 等[21]利用數(shù)字簽名方案[22]對(duì)文獻(xiàn)[20]的證明階段進(jìn)行優(yōu)化,使計(jì)算開(kāi)銷(xiāo)降低到常數(shù)級(jí)別.最近,Yin 等[23]基于聚合函數(shù)構(gòu)造了同時(shí)支持屬于和不屬于關(guān)系的ZSMPP 協(xié)議,其安全性同樣依賴于SDH 假設(shè).然而,上述協(xié)議功能復(fù)雜且執(zhí)行過(guò)程中均需多次雙線性配對(duì)運(yùn)算,因此不宜直接移植到資源受限的智能合約投票系統(tǒng)中.

本文主要目標(biāo)是設(shè)計(jì)并實(shí)現(xiàn)基于零知識(shí)證明的智能合約投票系統(tǒng).通過(guò)構(gòu)造輕量化ZKDMP協(xié)議來(lái)驗(yàn)證選票內(nèi)容的有效性;通過(guò)對(duì)選票進(jìn)行同態(tài)加密操作從而保障選票內(nèi)容的隱私.該系統(tǒng)的以合約形式自動(dòng)執(zhí)行,無(wú)需第三方機(jī)構(gòu)參與.本文主要貢獻(xiàn)可總結(jié)如下:

(1)設(shè)計(jì)了智能合約投票系統(tǒng),該系統(tǒng)可對(duì)投票內(nèi)容的有效性進(jìn)行驗(yàn)證,以避免無(wú)效選票對(duì)投票系統(tǒng)的影響.投票過(guò)程無(wú)需第三方機(jī)構(gòu)參與,實(shí)現(xiàn)去中心化投票以及自動(dòng)化計(jì)票.此外,通過(guò)Java開(kāi)發(fā)工具將投票合約編譯成JAR 包文件,并將投票系統(tǒng)以合約代碼的形式部署到區(qū)塊鏈,通過(guò)智能合約實(shí)現(xiàn)整個(gè)投票過(guò)程自動(dòng)化執(zhí)行.

(2)為了在選票內(nèi)容有效性驗(yàn)證過(guò)程中保護(hù)投票內(nèi)容的隱私,本文構(gòu)造了一個(gè)新的交互式零知識(shí)集合成員關(guān)系證明協(xié)議.該協(xié)議通過(guò)兩輪交互過(guò)程,實(shí)現(xiàn)證明者在不泄露投票內(nèi)容具體信息的情況下,向驗(yàn)證者證明投票內(nèi)容的有效性,即,投票內(nèi)容是候選者集合中的一個(gè).此外,安全性分析表明,所提協(xié)議在離散對(duì)數(shù)困難假設(shè)下具有零知識(shí)性.

1 基于零知識(shí)證明的智能合約投票系統(tǒng)

1.1 系統(tǒng)框架

本文設(shè)計(jì)的智能合約投票系統(tǒng)是基于支持虛擬機(jī)的區(qū)塊鏈環(huán)境下進(jìn)行開(kāi)發(fā)運(yùn)行的,投票過(guò)程通過(guò)合約控制實(shí)現(xiàn),并通過(guò)在智能合約中引入交互式零知識(shí)證明來(lái)保證投票數(shù)據(jù)驗(yàn)證過(guò)程的隱私性.智能合約投票系統(tǒng)框架如圖1 所示,整個(gè)投票系統(tǒng)框架主要分為實(shí)現(xiàn)層、技術(shù)層和合約層三部分.

圖1 智能合約投票系統(tǒng)框架Fig.1 Framework of the smart-contract voting system

(1)實(shí)現(xiàn)層:實(shí)現(xiàn)層由區(qū)塊鏈與基于Java 的雙線性配對(duì)密碼庫(kù)(Java pairing based cryptography library,JPBC[24])兩部分組成,其中區(qū)塊鏈為智能合約的部署和執(zhí)行提供了運(yùn)行環(huán)境,JPBC 庫(kù)則為基于配對(duì)的密碼方案的實(shí)現(xiàn)提供了底層環(huán)境.

(2)技術(shù)層:技術(shù)層主要是提供了一種交互式零知識(shí)證明以及同態(tài)加密技術(shù).零知識(shí)證明技術(shù)用于投票內(nèi)容的有效性驗(yàn)證,確保投票過(guò)程中投票內(nèi)容的隱私性.同態(tài)加密方案用于對(duì)選票加密,在計(jì)票階段利用同態(tài)性直接對(duì)密文進(jìn)行操作,避免解密運(yùn)算,確保投票內(nèi)容的隱私性.

(3)合約層:通過(guò)智能合約語(yǔ)言將投票系統(tǒng)以條款的形式進(jìn)行描述,并通過(guò)Java 開(kāi)發(fā)工具將投票合約編譯成計(jì)算機(jī)可執(zhí)行的合約代碼形式,最終實(shí)現(xiàn)智能合約投票系統(tǒng)按照預(yù)定規(guī)則自動(dòng)化執(zhí)行.

1.2 系統(tǒng)模型

本文設(shè)計(jì)的智能合約投票系統(tǒng)模型如圖2 所示,整個(gè)投票系統(tǒng)是基于支持虛擬機(jī)的區(qū)塊鏈系統(tǒng)進(jìn)行設(shè)計(jì)開(kāi)發(fā)的,取代了以往的第三方投票機(jī)構(gòu),從而實(shí)現(xiàn)投票系統(tǒng)的去中心化.

圖2 智能合約投票系統(tǒng)模型Fig.2 Model of the smart-contract voting system

智能合約投票系統(tǒng)執(zhí)行流程如下:首先,投票發(fā)起者創(chuàng)建投票合約,并在合約中指定候選者名單,之后將合約部署到區(qū)塊鏈中;投票者在完成注冊(cè)后,可從區(qū)塊鏈中調(diào)用投票合約來(lái)進(jìn)行投票,并且在投票之前對(duì)選票內(nèi)容的合法性進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)后將投票結(jié)果加密并按合約規(guī)定上傳選票;當(dāng)所有投票者完成投票后,合約開(kāi)始計(jì)票并將密文狀態(tài)的計(jì)票結(jié)果上傳至區(qū)塊鏈;計(jì)票結(jié)束后,投票發(fā)起者將從鏈上獲取密文狀態(tài)下的計(jì)票結(jié)果,利用自身私鑰解密后,將計(jì)票結(jié)果公布到區(qū)塊鏈上.

投票系統(tǒng)是通過(guò)智能合約控制實(shí)現(xiàn)的,投票合約在開(kāi)始執(zhí)行后,整個(gè)投票流程會(huì)被自動(dòng)觸發(fā)執(zhí)行,智能合約投票的每一步都會(huì)被日志記錄.投票系統(tǒng)可分為初始化、注冊(cè)、投票和計(jì)票四個(gè)階段.

(1)初始化階段:系統(tǒng)初始化階段首先借助JPBC 庫(kù)完成對(duì)系統(tǒng)參數(shù)的生成,隨后投票發(fā)起者制定投票智能合約并指定候選者名單,隨后將投票合約以JAR 包的形式部署到區(qū)塊鏈.

(2)注冊(cè)階段:發(fā)起者在區(qū)塊鏈上完成合約部署之后,投票者需完成系統(tǒng)注冊(cè),注冊(cè)完成后,投票者名單會(huì)被上傳至區(qū)塊鏈.

(3)投票階段:在投票之初,發(fā)起者需對(duì)投票者的投票內(nèi)容進(jìn)行有效性驗(yàn)證,只有驗(yàn)證通過(guò),投票才能繼續(xù)進(jìn)行.最后,投票者利用同態(tài)加密技術(shù)對(duì)驗(yàn)證通過(guò)的選票進(jìn)行加密,按合約規(guī)定以交易的形式上傳密文狀態(tài)的投票結(jié)果.

(4)計(jì)票階段:所有投票者完成投票后,投票合約進(jìn)行計(jì)票并將結(jié)果上傳至區(qū)塊鏈.投票發(fā)起者可從區(qū)塊鏈中獲取密文狀態(tài)的計(jì)票結(jié)果,利用自身私鑰進(jìn)行解密后以交易的形式公布到區(qū)塊鏈上.

2 零知識(shí)集合成員關(guān)系證明協(xié)議

零知識(shí)證明是指證明者在不向驗(yàn)證者透露秘密值的前提下,使驗(yàn)證者相信自己確實(shí)持有該秘密.基于此,將零知識(shí)證明引入智能合約可保證合約中數(shù)據(jù)的隱私性,同時(shí)由于智能合約具有觸發(fā)自動(dòng)執(zhí)行的特點(diǎn),合約狀態(tài)總是可以被保留下來(lái),這就為交互式零知識(shí)證明的實(shí)現(xiàn)提供了運(yùn)行平臺(tái).

2.1 提出的協(xié)議

本文基于離散對(duì)數(shù)假設(shè)構(gòu)造一個(gè)新的零知識(shí)集合成員關(guān)系證明協(xié)議(ZSMPP).該協(xié)議涉及證明者和驗(yàn)證者兩方,通過(guò)兩方交互,實(shí)現(xiàn)證明者在不透露任何消息的情況下,向驗(yàn)證者證明其擁有的元素屬于一個(gè)公開(kāi)的集合,具體協(xié)議描述如下.

設(shè) Zp是 階數(shù)為p的 整數(shù)群,H為 哈希算法,g是橢圓曲線上一個(gè)隨機(jī)生成元,公開(kāi)集合M表示為M={m1,m2,···,mn}.證明者P 欲向驗(yàn)證者V 證明自己持有的元素m是 公開(kāi)集中的某一個(gè),即m∈M,但是不透露元素m本身的信息.

初始條件,證明者P 和驗(yàn)證者V 共享消息集M,V 擁有安全哈希算H,交互過(guò)程如圖3 所示:

圖3 零知識(shí)集合成員關(guān)系證明協(xié)議Fig.3 Zero-knowledge set membership proof protocol

(1)P→V:證明者P 首先選取兩個(gè)隨機(jī)數(shù)ω,α ∈Zp作為自己的私鑰,計(jì)算Commit=(x,y),其中x=gω,y=gαgm,然后將x和y發(fā)送給驗(yàn)證者;

如果驗(yàn)證結(jié)果失敗,驗(yàn)證者輸出結(jié)果為“0”,則表示驗(yàn)證者V 將駁回P 的證明并且結(jié)束方案;如果檢驗(yàn)成功,結(jié)果返回為“1”,則表示V 將接收證明者的證明.經(jīng)過(guò)上述雙方交互過(guò)程,P 向V 證明了自己擁有秘密m但 未向V 透露關(guān)于m任何信息.

2.2 協(xié)議安全性分析

(1)完全性.

在提出的交互式證明協(xié)議中,若證明者P 的消息m確實(shí)屬于消息集M且P 能夠遵守協(xié)議指令完成交互,那么V 總是能夠接受P 的證明.

證明:設(shè)g是 橢圓曲線群的一個(gè)生成元,由協(xié)議中步驟(4)可知:

在步驟(3)中計(jì)算時(shí)aj規(guī)定mj∈M且mj≠m,又由于P 能夠遵守協(xié)議指令完成交互,則必有m=mn,又由于y=gαgm以及 γn=ω-αμn,則有

從而可以得出步驟(6)中驗(yàn)證等式成立.

(2)零知識(shí)性.

證明者P 的私鑰 (ω,α)僅自己持有,在交互式證明過(guò)程中,證明者將包含消息的承諾y=gαgm發(fā)送給驗(yàn)證者V,由于計(jì)算離散對(duì)數(shù)問(wèn)題是困難的,因此在交互過(guò)程中,除了關(guān)于消息m的承諾之外,證明者無(wú)法獲取其他任何信息,這保證了整個(gè)交互過(guò)程中消息m的零知識(shí)性.

3 投票智能合約

在設(shè)計(jì)和實(shí)現(xiàn)智能合約投票系統(tǒng)之前,我們首先給出具體投票合約.本節(jié)將采用智能合約規(guī)范語(yǔ)言SPESC[25],對(duì)投票系統(tǒng)的初始化、注冊(cè)、投票和計(jì)票四個(gè)階段的觸發(fā)條件以及執(zhí)行過(guò)程進(jìn)行合約化描述.

如圖4 所示,投票智能合約包括發(fā)起者(Initiator)和投票者(Voter)兩個(gè)參與方.該合約包含5 個(gè)條款(Term),條款1 表示在投票發(fā)起人進(jìn)行參數(shù)初始化(initParam)之后,可指定候選者名單(對(duì)應(yīng)candidateForm 算法);條款2 表示在發(fā)起者指定候選者名單之后,投票者進(jìn)行注冊(cè)(voterRegist);條款3 描述的是在投票者注冊(cè)完成之后,必須與發(fā)起者進(jìn)行交互式ZSMPP 來(lái)驗(yàn)證選票的有效性;條款4 表示當(dāng)ZSMPP 輸出為“1”時(shí)投票者利用Boneh、Goh 和Nissim 提出的 加密算 法[26](簡(jiǎn) 稱BGN 算法)對(duì)投票內(nèi)容進(jìn)行加密;條款5 表示發(fā)起人在所有投票者完成投票之后,合約進(jìn)行計(jì)票(對(duì)應(yīng)voteResult 算法),最終發(fā)起者對(duì)計(jì)票結(jié)果進(jìn)行解密獲取投票最終結(jié)果.合約中條款僅描述了投票各個(gè)階段的觸發(fā)條件以及執(zhí)行的算法,具體算法描述將在下節(jié)中給出.

圖4 SPESC 語(yǔ)言編寫(xiě)的投票智能合約Fig.4 Voting contracts written in SPESC language

智能合約最終將被部署到區(qū)塊鏈平臺(tái)進(jìn)行自動(dòng)化執(zhí)行,如圖5 所示,部署過(guò)程可分成兩個(gè)階段:首先利用Java 開(kāi)發(fā)工具將投票系統(tǒng)中的相關(guān)算法編譯成Java Archive (JAR)格式的智能合約代碼;隨后,將JAR 包上傳至區(qū)塊鏈網(wǎng)絡(luò).在發(fā)起者和投票者的共同參與下,最終合約按照預(yù)定規(guī)則自動(dòng)執(zhí)行.

圖5 智能合約部署流程Fig.5 Deployment process of smart contract

4 智能合約投票系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

本節(jié)將具體介紹智能合約投票系統(tǒng)以及實(shí)現(xiàn)過(guò)程,為了便于后續(xù)敘述,首先給出投票系統(tǒng)中涉及的部分符號(hào)及其相關(guān)說(shuō)明,具體如表1 所示.

表1 符號(hào)說(shuō)明表Table 1 Notation declaration

本節(jié)將基于區(qū)塊鏈系統(tǒng)環(huán)境,根據(jù)投票系統(tǒng)所需的初始化、注冊(cè)、投票以及計(jì)票四個(gè)部分,對(duì)智能合約投票系統(tǒng)的設(shè)計(jì)以及實(shí)現(xiàn)流程進(jìn)行詳細(xì)的闡述.

4.1 初始化階段

初始化階段由合約發(fā)起者執(zhí)行,如圖6 所示.首先需要完成系統(tǒng)參數(shù)生成,生成橢圓曲線乘法循環(huán)群G和整數(shù)群 Z,再根據(jù)群G產(chǎn)生生成元g∈G.群G和 Z的生成是基于JPBC 庫(kù)實(shí)現(xiàn)的,其中JPBC中的橢圓曲線選取Type A 類(lèi)型,如表2 中算法所示.

圖6 智能合約投票系統(tǒng)初始化階段Fig.6 Initialization of the smart-contract voting system

表2 initParam 算法Table 2 initParam algorithm

該算法以群G的階數(shù)rbit和 Z的階數(shù)qbit作為輸入,通過(guò)TypeACurveGenerator()生成TypeA 生成器,利用TypeA 生成器得到雙線性對(duì)參數(shù),再通過(guò)getPairing()獲取雙線性對(duì),最后由雙線性對(duì)生成橢圓曲線乘法循環(huán)群和整數(shù)群,生成元g是在橢圓曲線群上隨機(jī)生成的.

接下來(lái),合約發(fā)起者需在合約中指定候選者名單,如表3 所示.該算法輸入一個(gè)數(shù)組params,數(shù)組中的每個(gè)元素對(duì)應(yīng)候選者wj的地址,該地址是候選者的唯一標(biāo)識(shí).假設(shè)有n個(gè)候選者,則算法newNum 返回一個(gè)整數(shù)z且滿足 2z>n,第k位候選者的投票編號(hào)為 2k·z,例如,當(dāng)投票者選擇候選者1 時(shí),對(duì)應(yīng)的候選者的編號(hào)是 2z,算法返回候選者的候選列表candidateList,大小為n,候選列表中包括候選者的地址,編號(hào)以及所得的票數(shù)(初始化值為0),并且會(huì)在結(jié)果集resultMap 中存放所有候選者及對(duì)應(yīng)的票數(shù).

表3 candidateForm 算法Table 3 candidateForm algorithm

候選者名單指定完成后,合約發(fā)起者需將投票合約以JAR 包的形式部署到區(qū)塊鏈上.圖7 為智能合約發(fā)布的結(jié)果,其中“address”表示合約地址字段,“txid”表示合約交易id 字段.

圖7 智能合約發(fā)布結(jié)果Fig.7 Results of smart contract release

圖8 描述了初始化合約結(jié)果,合約部署完成且初始化后,可看到當(dāng)前投票者和候選者的信息.字段“votersData”代表投票者數(shù)據(jù),其中字段“voter-Txid”為投票者交易的id,從交易中可獲取投票者名單的信息,在合約初始后,投票者名單為空.字段“candidateData”代表候選者信息,“candidateTxid”代表候選者交易id,查看交易id 可獲取候選者名單信息.

圖8 智能合約初始化結(jié)果Fig.8 Results of smart contract initialization

4.2 注冊(cè)階段

當(dāng)投票合約在區(qū)塊鏈上完成部署后,投票者vi若想獲得投票資格,則需進(jìn)行注冊(cè).如圖9 所示,投票者需先進(jìn)行注冊(cè)并獲取合約,投票者可從區(qū)塊鏈上查詢當(dāng)前人員信息,包括獲取到當(dāng)前投票者和候選者名單.

圖9 智能合約投票系統(tǒng)注冊(cè)階段Fig.9 Registration of the smart-contract voting system

投票者的注冊(cè)過(guò)程如表4 中算法所示,算法輸入為數(shù)組params,數(shù)組中存放著作為投票者的唯一標(biāo)識(shí)地址,最后算法返回投票者列表voterList.注冊(cè)完成之后,列表中將包含投票者地址以及投票者的投票狀態(tài)(初始值為false),此時(shí)投票者可從區(qū)塊鏈中查詢候選人名單和當(dāng)前投票者名單.

表4 voterRegist 算法Table 4 voterRegist algorithm

4.3 投票階段

投票者從區(qū)塊鏈上獲取候選人信息后,開(kāi)始進(jìn)行投票.投票過(guò)程借助于區(qū)塊鏈完成,如圖10所示,在投票的前期,投票者vi生 成公私鑰對(duì)<ski,pki>,公鑰是橢圓曲線乘法循環(huán)群G中的元素,私鑰是整數(shù)群Z 中的元素.在投票過(guò)程中,需對(duì)投票者的投票內(nèi)容進(jìn)行有效性驗(yàn)證,驗(yàn)證過(guò)程調(diào)用交互式零知識(shí)集合成員關(guān)系證明協(xié)議ZSMPP,協(xié)議經(jīng)過(guò)兩輪交互對(duì)投票內(nèi)容有效性進(jìn)行驗(yàn)證.在交互過(guò)程中,投票者相當(dāng)于協(xié)議中的證明者,合約發(fā)起者相當(dāng)于協(xié)議中的驗(yàn)證者.接下來(lái)對(duì)投票階段的參數(shù)生成、承諾生成、兩輪交互以及驗(yàn)證給出具體介紹.

圖10 智能合約投票系統(tǒng)投票階段Fig.10 Voting of the smart-contract voting system

令M={m1,m2,···,mn}投票內(nèi)容(候選者)組成的集合,其中mi是候選者的編號(hào),接下來(lái)投票者vi證 明自己的投票內(nèi)容numi屬于投票集合M.投票者首先利用自己的公私鑰生成承諾,如表5 中算法所示,輸入投票者的地址address 以及投票者的投票號(hào)num,其中地址作為投票者的身份標(biāo)識(shí),根據(jù)地址判斷投票者是否在注冊(cè)者名單內(nèi),若不在名單內(nèi),則算法終止;若在注冊(cè)名單中,則可以開(kāi)始投票.投票者生成自己的私鑰 sk=(sk1,sk2)以及公鑰 pk=(pk1,pk2),其中 pk1=gsk1,pk2=gsk2,根據(jù)投票者的投票號(hào)對(duì)應(yīng)候選者編號(hào),newNum 函數(shù)返回一個(gè)整數(shù)z且 滿足 2z>n,例如,當(dāng)投票者的投票號(hào)為2 時(shí),對(duì)應(yīng)的候選者的編號(hào)wid 為 22·z.最后,該算法生成承諾Commit=(x,y)=(pk1,pk2·gwid)并將其以交易的形式存放到區(qū)塊鏈中.

表5 generateCommit 算法Table 5 generateCommit algorithm

合約發(fā)起者在查詢區(qū)塊鏈得到承諾后,開(kāi)始執(zhí)行ZSMPP 中的第一輪交互并生成對(duì)應(yīng)挑戰(zhàn)碼其中 γj,μj∈Zp.如圖11 所示,在智能合約輸入中,generateChallenge1 為函數(shù),輸入?yún)?shù)為合約發(fā)起者的地址,在合約輸出字段中,“userResult”表示第一輪挑戰(zhàn)碼,其中R={γ1,γ2,···γn-1},U={μ1,μ2,···μn-1}.挑戰(zhàn)碼生成后將發(fā)布到區(qū)塊鏈中.

圖11 第一輪挑戰(zhàn)碼對(duì)應(yīng)的交易Fig.11 Transaction of the first challenge

如表6 中算法所示,算法generateChallenge2 計(jì)算集合A中 所有元素與x的和,利用哈希函數(shù)對(duì)和求哈希,最后返回第二輪的挑戰(zhàn)碼miuN,然后發(fā)布交易到區(qū)塊鏈.投票者從區(qū)塊鏈中獲取第二輪的挑戰(zhàn)碼之后,利用自身私鑰 sk=(sk1,sk2)計(jì) 算γn=sk1-sk2μn并 生成第二輪挑戰(zhàn)碼gamaN(γn).如圖12所示,在合約輸入中,generateResponse2 為函數(shù),輸入?yún)?shù)是投票者的地址,合約將輸出第二輪的響應(yīng)碼gamaN.最后,合約發(fā)起者收到第二輪響應(yīng)碼之后,會(huì)驗(yàn)證等式

表6 generateChallenge2 算法Table 6 generateChallenge2 algorithm

圖12 第二輪響應(yīng)碼對(duì)應(yīng)的交易Fig.12 Transaction of the second response

對(duì)投票者投票內(nèi)容的有效性進(jìn)行驗(yàn)證.若驗(yàn)證失敗,則終止投票;否則,投票者對(duì)投票內(nèi)容進(jìn)行加密并將投票狀態(tài)改為true.

4.4 計(jì)票階段

當(dāng)選票有效性通過(guò)驗(yàn)證后,投票者將通過(guò)BGN 同態(tài)加密算法[26]對(duì)其進(jìn)行加密處理.如圖13所示,BGN(wj)表示第i位投票者對(duì)第j位候選者投票結(jié)果對(duì)應(yīng)的密文.當(dāng)所有投票者完成投票后,合約將執(zhí)行計(jì)票程序.

圖13 智能合約投票系統(tǒng)計(jì)票階段Fig.13 Vote-counting of the smart-contract voting system

表7 中算法描述了投票者對(duì)投票內(nèi)容加密以及合約計(jì)票過(guò)程.其中BGN 算法滿足加法同態(tài)性,即BGN(w1)+BGN(w2)=BGN(w1+w2).合約統(tǒng)計(jì)所有候選者wj的 最終投票結(jié)果表示為result(wj)=BGN1(wj)+BGN2(wj)+···+BGNs(wj)并上傳到區(qū)塊鏈上.

表7 voteResult 算法Table 7 voteResult algorithm

5 投票協(xié)議安全特性與性能分析

5.1 安全特性分析

接下來(lái)將對(duì)本文提出的基于零知識(shí)證明的智能合約投票系統(tǒng)安全特性進(jìn)行分析,具體如下:

(1)選票有效性.

指選票內(nèi)容是候選者集合中的一員,通過(guò)執(zhí)行零知識(shí)集合成員證明協(xié)議,判定選票內(nèi)容有效性,若選票內(nèi)容不屬于候選者集合,則終止投票活動(dòng).

(2)選票隱私性.

主要考慮所選候選人的隱私.在有效性驗(yàn)證階段,ZSMPP 協(xié)議的零知識(shí)性可以保證驗(yàn)證過(guò)程不泄露選票信息.此外,計(jì)票是對(duì)密文狀態(tài)下的選票進(jìn)行同態(tài)運(yùn)算,選票的隱私性基于安全的BGN同態(tài)加密算法實(shí)現(xiàn).

(3)唯一性.

每個(gè)注冊(cè)投票者初始投票狀態(tài)都是false,在完成投票之后該狀態(tài)變成true,整個(gè)過(guò)程都以交易的形式被記錄在區(qū)塊鏈中,由區(qū)塊鏈的不可篡改性保證了每個(gè)投票者只能參與一次投票.

(4)無(wú)監(jiān)督性.

投票協(xié)議以智能合約的形式被部署到區(qū)塊鏈平臺(tái)并按照預(yù)定規(guī)則自動(dòng)執(zhí)行,由于區(qū)塊鏈的不可篡改性和共識(shí)機(jī)制保證預(yù)定規(guī)則不變性和規(guī)則執(zhí)行的正確性,從而確保投票合約中僅需發(fā)起者和投票者兩個(gè)實(shí)體,無(wú)需可信監(jiān)票人參與.

(5)自計(jì)票性.

協(xié)議計(jì)票過(guò)程由智能合約按照事先制定的規(guī)則自動(dòng)化執(zhí)行,當(dāng)觸發(fā)計(jì)票條件,即所有投票者完成投票后,合約自動(dòng)執(zhí)行voteResult 算法對(duì)密文狀態(tài)的選票進(jìn)行同態(tài)運(yùn)算并將密態(tài)計(jì)票結(jié)果上傳至區(qū)塊鏈.

表8 展示了本文提出的投票協(xié)議與現(xiàn)有4 個(gè)投票方案之間關(guān)于安全特性的對(duì)比,從結(jié)果中不難發(fā)現(xiàn),僅有文獻(xiàn)[10]和本文提出的方案能夠?qū)崿F(xiàn)對(duì)投票內(nèi)容的有效性驗(yàn)證,然而該文投票過(guò)程需要在可信監(jiān)票人的參與下完成.文獻(xiàn)[11]提出的投票方案雖然能夠追蹤到實(shí)施重復(fù)投票的攻擊者,但犧牲了投票的唯一性特征.此外,本文計(jì)票過(guò)程由智能合約程序自動(dòng)完成,而文獻(xiàn)[10~12]則需要投票發(fā)起者或監(jiān)票人參與才能實(shí)現(xiàn).

表8 不同方案之間安全特性對(duì)比Table 8 Comparison of security features

5.2 性能分析

本節(jié)將通過(guò)仿真實(shí)驗(yàn)對(duì)提出的智能合約投票協(xié)議的性能進(jìn)行分析,實(shí)驗(yàn)運(yùn)行在2.6 GHz 英特爾CPU 和8 GB 內(nèi)存的64 位Ubuntu 16.04 操作系統(tǒng)上.基于交互式零知識(shí)證明的的智能合約投票系統(tǒng)運(yùn)算效率主要取決于投票階段和計(jì)票階段,本節(jié)將從以下兩方面來(lái)對(duì)投票系統(tǒng)進(jìn)行性能評(píng)估,一是針對(duì)不同的投票者數(shù)量,對(duì)投票系統(tǒng)的投票和計(jì)票階段進(jìn)行耗時(shí)對(duì)比;二是針對(duì)不同的候選人數(shù)量,對(duì)投票系統(tǒng)的投票和計(jì)票階段進(jìn)行耗時(shí)對(duì)比.

圖14 展示的是當(dāng)候選者數(shù)量為5 時(shí),對(duì)不同數(shù)量投票者在投票階段和計(jì)票階段的耗時(shí)對(duì)比圖,從圖中可以發(fā)現(xiàn),當(dāng)投票者數(shù)量達(dá)到500 時(shí),投票和計(jì)票過(guò)程均能在8000~9000 ms 之間完成.圖15 展示的是當(dāng)投票者數(shù)量為100 時(shí),針對(duì)不同數(shù)量的候選者,投票階段和計(jì)票階段的耗時(shí)對(duì)比圖,當(dāng)候選者數(shù)目為20 時(shí),投票和計(jì)票時(shí)間分別是7784 ms 和9218 ms.實(shí)驗(yàn)結(jié)果表明,隨著投票者或候選者數(shù)量的增加,投票與計(jì)票階段的耗時(shí)均呈線性增長(zhǎng),智能合約投票系統(tǒng)能夠高效實(shí)施.

圖14 不同數(shù)量投票者耗時(shí)對(duì)比Fig.14 Time cost of different numbers of voters

圖15 不同數(shù)量候選者耗時(shí)對(duì)比Fig.15 Time cost of different numbers of candidates

6 結(jié)論

本文設(shè)計(jì)了基于交互式零知識(shí)證明的智能合約投票系統(tǒng),實(shí)現(xiàn)投票過(guò)程的去中心化以及計(jì)票過(guò)程的自動(dòng)化.基于離散對(duì)數(shù)困難假設(shè),本文構(gòu)造了一個(gè)新的交互式零知識(shí)集合成員關(guān)系證明協(xié)議,通過(guò)將該協(xié)議引入到投票合約的設(shè)計(jì)中,實(shí)現(xiàn)投票者在不透露投票內(nèi)容的前提下向發(fā)起者證明投票內(nèi)容的有效性.此外,通過(guò)將投票合約編譯成JAR 包,實(shí)現(xiàn)智能合約投票系統(tǒng)在區(qū)塊鏈中的部署和自動(dòng)化執(zhí)行,保證了投票數(shù)據(jù)的有效性和隱私性.實(shí)驗(yàn)結(jié)果表明,本文提出的智能合約投票系統(tǒng)在投票和計(jì)票階段均可高效實(shí)施.

猜你喜歡
投票者計(jì)票選票
奧斯卡獎(jiǎng)的偏好投票制
微信投票亂局與治道變革
英國(guó)人家有空房少拿養(yǎng)老金
中國(guó)戲劇家協(xié)會(huì)第七屆理事會(huì)理事選舉計(jì)票人名單
中國(guó)戲劇家協(xié)會(huì)第七屆主席、副主席選舉計(jì)票人名單
塔利班割鼻懲罰投票者
美國(guó)現(xiàn)在的選舉投票方式比以往任何時(shí)候都脆弱