楊亞濤,劉德莉,劉培鶴,曾萍,肖嵩
(1.西安電子科技大學(xué)通信工程學(xué)院,陜西 西安 710071;2.北京電子科技學(xué)院電子與通信工程系,北京 100070)
電子投票為目前的紙質(zhì)投票提供了一種方便且成本效益高的替代方案。早在1981 年Chaum[1]就首次提出了電子投票技術(shù),電子投票的安全保障也被認(rèn)為是最難被解決的問(wèn)題之一[2]。當(dāng)前的電子投票系統(tǒng)大多以密碼學(xué)為基礎(chǔ)保障,根據(jù)所依據(jù)的密碼學(xué)工具不同主要分為三類:基于混合網(wǎng)絡(luò)的電子投票方案[3-5]、基于盲簽名的電子投票方案[6-8]以及基于同態(tài)加密的電子投票方案[9-11]。其中,同態(tài)加密技術(shù)逐漸被越來(lái)越多的電子投票方案所采用,其構(gòu)造過(guò)程更加清晰簡(jiǎn)單,且加密過(guò)程具有同態(tài)性,可以較好地解決遠(yuǎn)程電子投票中的隱私保護(hù)和數(shù)據(jù)安全問(wèn)題。
目前,大多數(shù)電子投票系統(tǒng)都依賴第三方機(jī)構(gòu)的管理和計(jì)票,選票面臨被黑客攻擊或被第三方機(jī)構(gòu)篡改的風(fēng)險(xiǎn),這也給投票系統(tǒng)帶來(lái)較大的安全隱患,甚至使投票失敗。區(qū)塊鏈中的存儲(chǔ)信息去中心化、不可篡改性和公開(kāi)透明等特點(diǎn),非常適合安全電子投票系統(tǒng)中公開(kāi)不可篡改的公告板的要求,因此將區(qū)塊鏈技術(shù)應(yīng)用于電子投票領(lǐng)域具有非常廣闊的應(yīng)用前景。
同態(tài)加密技術(shù)應(yīng)用于電子投票系統(tǒng)中,允許在不解密的情況下計(jì)算選票。目前,由于ElGamal和Paillier 加密算法具有加法同態(tài)特性,因此在電子投票中的應(yīng)用較多。其中,ElGamal 加密算法在Helios[12]系統(tǒng)中得到了較好實(shí)踐。文獻(xiàn)[13]提出了具有乘法同態(tài)性質(zhì)的ElGamal 加密方案的增強(qiáng)形式,乘法群生成器的使用保證了投票方案的安全性。文獻(xiàn)[14]提出了一種分布式同態(tài)簽密的電子投票方案,該方案可以快速完成簽名驗(yàn)證,同時(shí)提高選舉的可信度。文獻(xiàn)[15]利用同態(tài)加密對(duì)選民信息進(jìn)行加密來(lái)保證選民信息的隱私安全,但這種加密方式?jīng)]有發(fā)揮同態(tài)加密的最大優(yōu)勢(shì),造成算力資源的浪費(fèi)。文獻(xiàn)[16]分別將ElGamal 算法和Paillier 算法應(yīng)用于電子投票系統(tǒng),并對(duì)2 種算法的性能進(jìn)行對(duì)比。文獻(xiàn)[17]將Ducas 等[18]設(shè)計(jì)的自舉全同態(tài)加密方案應(yīng)用于電子投票系統(tǒng),將全域密文轉(zhuǎn)換成具有特定語(yǔ)義的密文,避開(kāi)了零知識(shí)證明架構(gòu)的煩瑣交互。文獻(xiàn)[19]提出的Schulze 投票方案使用BGV(Brakerski-Gentry-Vaikuntanathan)全同態(tài)加密算法來(lái)加密選票,實(shí)現(xiàn)計(jì)票過(guò)程中的隱私保護(hù)。文獻(xiàn)[11]提出一種基于SEAL 庫(kù)的同態(tài)加權(quán)電子投票系統(tǒng),使用 BFV(Brakerski-Fan-Vercauteren)全同態(tài)加密方案保證系統(tǒng)的抗量子攻擊特性和安全性,同時(shí)對(duì)電子投票方案性能也進(jìn)行了分析。
區(qū)塊鏈技術(shù)替代可信第三方應(yīng)用于電子投票系統(tǒng)中,可以避免投票系統(tǒng)出現(xiàn)單點(diǎn)故障,增強(qiáng)系統(tǒng)的安全性。文獻(xiàn)[20]展示了一個(gè)基于區(qū)塊鏈投票系統(tǒng)的概念框架,提出的方案可以解決拒絕服務(wù)攻擊問(wèn)題,但不具備抗脅迫性等安全屬性。文獻(xiàn)[21]提出了一種基于以太坊的輕量級(jí)遠(yuǎn)程區(qū)塊鏈電子投票系統(tǒng),并采用變化的哈希值來(lái)增加系統(tǒng)的抗脅迫性。文獻(xiàn)[22]使用Hyperledger Fabric 來(lái)部署投票系統(tǒng),使用Paillier 加密算法、零知識(shí)證明和可鏈接環(huán)簽名等密碼技術(shù)來(lái)提供獨(dú)立于區(qū)塊鏈平臺(tái)的安全和隱私保護(hù)功能。文獻(xiàn)[23]將區(qū)塊鏈與ElGamal算法相結(jié)合,利用ElGamal 加法同態(tài)性質(zhì)來(lái)保證選票安全。區(qū)塊鏈應(yīng)用于電子投票解決了系統(tǒng)依賴第三方機(jī)構(gòu)的弊端,而同態(tài)加密算法的引入又能保證投票過(guò)程的不可操縱性。目前,應(yīng)用在電子投票領(lǐng)域的同態(tài)加密算法多為部分同態(tài)加密算法,不滿足同時(shí)進(jìn)行加法和乘法操作的客觀需要,在安全性和運(yùn)算效率上也有所不足。
本文設(shè)計(jì)的投票系統(tǒng)使用了由我國(guó)國(guó)家密碼管理局發(fā)布的商用密碼標(biāo)準(zhǔn)算法SM2、SM4 和文獻(xiàn)[24]提出的BFV 全同態(tài)加密算法,并選擇基于SEAL庫(kù)的BFV 同態(tài)加密方案。SEAL 庫(kù)是微軟公司基于C++開(kāi)發(fā)的開(kāi)源全同態(tài)加密軟件庫(kù)。
本文的主要貢獻(xiàn)如下。
1) 提出了一個(gè)基于BFV 全同態(tài)加密和區(qū)塊鏈相結(jié)合的電子投票系統(tǒng)方案BFV-Blockchainvoting。該方案使用SM2 算法對(duì)投票者的注冊(cè)信息進(jìn)行簽名處理,使用SM4 算法加密選票,結(jié)合可以互相監(jiān)督的兩方共同監(jiān)管完成選票的獲取,可以保證投票過(guò)程具有不可操縱性、匿名性、可驗(yàn)證性、不可重用性、不可脅迫性和抗量子攻擊等安全屬性。使用BFV 全同態(tài)加密算法對(duì)選票加密,利用同態(tài)加密密文可計(jì)算的性質(zhì),實(shí)現(xiàn)計(jì)票過(guò)程的隱私保護(hù)。使用區(qū)塊鏈替代第三方機(jī)構(gòu),利用智能合約實(shí)現(xiàn)安全性驗(yàn)證和自計(jì)票功能,有效避免了因過(guò)分依賴第三方機(jī)構(gòu)而產(chǎn)生的安全隱患。
2) 對(duì)方案進(jìn)行了初步構(gòu)建和性能測(cè)試?;贕olang 編寫(xiě)的公鏈系統(tǒng)作為底層架構(gòu),通過(guò)測(cè)試分析,本文系統(tǒng)單張選票的計(jì)票時(shí)間平均為1.69 ms。相比于Pandey 等[20]提出的VoteChain 投票系統(tǒng)的計(jì)票時(shí)間減少了98.87%;相比于楊亞濤等[11]提出的基于SEAL 庫(kù)的同態(tài)加權(quán)電子投票系統(tǒng)的計(jì)票時(shí)間減少了9.62%;相比于Panja 等[25]提出的基于區(qū)塊鏈的端到端的電子投票系統(tǒng)的計(jì)票時(shí)間減少了32.4%。該方案適用于多種投票場(chǎng)景,可以滿足大型投票場(chǎng)景的效率要求。
本文系統(tǒng)由5 個(gè)主要實(shí)體組成,具體說(shuō)明如下。
投票者Vi:具有投票權(quán)的投票者集合,其中
管理員A:負(fù)責(zé)生成一組唯一且隨機(jī)的電子選票,并以匿名的方式將選票與投票者共享。
主持人M:負(fù)責(zé)保護(hù)投票者的隱私,將選票匿名后分發(fā)給投票者。
候選人Ck:合格的選舉對(duì)象集合,其中
區(qū)塊鏈網(wǎng)絡(luò):一個(gè)基于國(guó)密算法的公鏈系統(tǒng),是一個(gè)公開(kāi)、可訪問(wèn)、不可篡改的公告板,通過(guò)智能合約實(shí)現(xiàn)票據(jù)合法性檢驗(yàn)、自計(jì)票。
系統(tǒng)關(guān)鍵參數(shù)及含義如表1 所示。
表1 系統(tǒng)關(guān)鍵參數(shù)及含義
2.2.1 系統(tǒng)架構(gòu)
通過(guò)分析電子投票系統(tǒng)的基本流程,可以得到該系統(tǒng)網(wǎng)絡(luò)架構(gòu),如圖1 所示。
圖1 電子投票系統(tǒng)網(wǎng)絡(luò)架構(gòu)
傳統(tǒng)的電子投票系統(tǒng)需要依賴第三方機(jī)構(gòu)與中心服務(wù)器進(jìn)行數(shù)據(jù)管理,這種結(jié)構(gòu)容易造成第三方機(jī)構(gòu)篡改選票或中心服務(wù)器被攻擊癱瘓的潛在風(fēng)險(xiǎn)。本文系統(tǒng)采用區(qū)塊鏈的P2P 網(wǎng)絡(luò)結(jié)構(gòu),不需要第三方機(jī)構(gòu)進(jìn)行計(jì)票,通過(guò)調(diào)用智能合約實(shí)現(xiàn)票據(jù)合法性檢驗(yàn)與自計(jì)票功能,可以提升系統(tǒng)的安全性與穩(wěn)健性。
在本文系統(tǒng)中,根據(jù)權(quán)限不同,區(qū)塊鏈節(jié)點(diǎn)分為普通節(jié)點(diǎn)和特殊節(jié)點(diǎn),普通節(jié)點(diǎn)是具有投票資格的投票者,而特殊節(jié)點(diǎn)包括管理員和主持人。各節(jié)點(diǎn)通過(guò)區(qū)塊鏈網(wǎng)絡(luò)連接,共同訪問(wèn)鏈上數(shù)據(jù),并通過(guò)瀏覽器訪問(wèn)Web 前端的可視化投票界面。
2.2.2 智能合約設(shè)計(jì)
基于同態(tài)加密的智能合約架構(gòu)主要分為上下兩層:網(wǎng)絡(luò)層和智能合約層。網(wǎng)絡(luò)層是整個(gè)系統(tǒng)的核心,采用基于國(guó)密算法的公鏈系統(tǒng),鏈上的節(jié)點(diǎn)根據(jù)權(quán)限不同分為普通節(jié)點(diǎn)和特殊節(jié)點(diǎn),其中,普通節(jié)點(diǎn)是具有投票資格的投票者,而特殊節(jié)點(diǎn)包括管理員和主持人。智能合約層主要負(fù)責(zé)整個(gè)投票系統(tǒng)的運(yùn)轉(zhuǎn),包括生成BFV 同態(tài)加密算法的密鑰對(duì)、廣播BFV 算法公私鑰、收集選票、驗(yàn)證選票是否合法、計(jì)票和廣播選票結(jié)果等環(huán)節(jié)。智能合約執(zhí)行生成創(chuàng)世區(qū)塊、設(shè)置節(jié)點(diǎn)以及監(jiān)聽(tīng)端口等工作,然后被部署在鏈上,時(shí)刻監(jiān)聽(tīng)鏈上信息。一旦投票者點(diǎn)擊提交選票,區(qū)塊鏈中便會(huì)新增一個(gè)區(qū)塊,智能合約通過(guò)區(qū)塊獲取投票信息,收集選票進(jìn)行驗(yàn)證和計(jì)票,在計(jì)票時(shí)間結(jié)束后,解密選票信息同時(shí)廣播結(jié)果。
本文設(shè)計(jì)的投票系統(tǒng)BFV-Blockchainvoting的區(qū)塊鏈底層架構(gòu)為自建的基于國(guó)密算法的公鏈系統(tǒng),該系統(tǒng)是基于 REST/JSON API、TCP服務(wù)器、國(guó)密算法和工作量證明(PoW,proof of work)共識(shí)算法的區(qū)塊鏈系統(tǒng)。相比于Hyperledger Fabric 和以太坊等架構(gòu),本文系統(tǒng)使用的架構(gòu)更為安全可靠,減少了由于頻繁更新應(yīng)用系統(tǒng)經(jīng)常面臨崩潰等問(wèn)題。Blockchain.go為支撐底層架構(gòu)的主要代碼,其數(shù)據(jù)結(jié)構(gòu)如表2所示。
表2 Blockchain.go 數(shù)據(jù)結(jié)構(gòu)
Voting.go 為本文系統(tǒng)的底層智能合約,智能合約中涉及的主要方法及功能如表3 所示。
表3 智能合約方法及功能
基于BFV 全同態(tài)加密算法的智能合約主要算法如算法1 所示。首先,獲得選票bi后,初始化檢查bi是否屬于選票名單γ,如果屬于,智能合約則通過(guò)檢查投票者是否被標(biāo)記來(lái)確認(rèn)投票者是否已經(jīng)投過(guò)票,如果voters[i]=false,說(shuō)明投票者為首次進(jìn)行投票,符合計(jì)票要求,再通過(guò)調(diào)用SEAL 庫(kù)的全同態(tài)加法運(yùn)算進(jìn)行計(jì)票。其次,該選票計(jì)票結(jié)束后,對(duì)選票進(jìn)行標(biāo)記,設(shè)置voters[i]=true,避免雙重投票。最后,對(duì)全部選票計(jì)票結(jié)束后,調(diào)用SEAL 庫(kù)全同態(tài)加法的解密算法,將計(jì)票結(jié)果解密,恢復(fù)最終計(jì)票結(jié)果。
在統(tǒng)計(jì)選票時(shí),通過(guò)執(zhí)行智能合約,使用BFV 全同態(tài)加密算法進(jìn)行密文計(jì)票,最終在計(jì)票時(shí)間結(jié)束后,自動(dòng)解密選票并公布結(jié)果。智能合約主要通過(guò)全同態(tài)加密機(jī)制及其密碼協(xié)議來(lái)保障其安全性,每張選票都以密文形式計(jì)入智能合約并參與計(jì)算,在整個(gè)計(jì)票過(guò)程中選票信息始終保密,保證了計(jì)票過(guò)程的安全性。
本文提出的BFV-Blockchainvoting 方案主要包括4 個(gè)連續(xù)的階段,每個(gè)階段都發(fā)生在投票組織者預(yù)先確定的特定時(shí)間范圍內(nèi)。設(shè)G是橢圓曲線上的一個(gè)點(diǎn),其階為素?cái)?shù)q,G的坐標(biāo)為和a2是有限域上定義一條橢圓曲線的元素是消息摘要為vbit 的密碼雜湊函數(shù)。圖2 為電子投票系統(tǒng)流程。
圖2 電子投票系統(tǒng)流程
2.3.1 注冊(cè)階段
在注冊(cè)階段,管理員A使用由國(guó)家密碼管理局發(fā)布的SM2 簽名算法對(duì)投票者的公鑰進(jìn)行簽名。具體簽名過(guò)程如下。
1) 管理員簽名密鑰生成。管理員A需要一組簽名密鑰對(duì),以便將合格的投票者添加到投票者名冊(cè)時(shí)對(duì)其進(jìn)行簽名。注冊(cè)器隨機(jī)選取密鑰根據(jù)此密鑰計(jì)算出與之對(duì)應(yīng)的公鑰為
2) 投票者密鑰生成和注冊(cè)。投票者Vi必須擁有與其身份對(duì)應(yīng)的選舉密鑰對(duì),Vi選擇一個(gè)密鑰與之對(duì)應(yīng)的公鑰為PV=Gxv。在注冊(cè)階段,投票者Vi和管理員A共享其公鑰。
3) 管理員對(duì)投票者的公鑰簽名。為了授予Vi投票權(quán),管理員A事先要驗(yàn)證投票者的資格,對(duì)于符合資格的投票者,對(duì)其公鑰進(jìn)行SM2 簽名后再添加到投票者名冊(cè)中。簽名的生成過(guò)程為
其中,IDA是管理員A的可辨別標(biāo)識(shí),本文選用管理員的地址值作為標(biāo)識(shí),IDA的長(zhǎng)度為entlAbit;ENTLA是由整數(shù)entlA轉(zhuǎn)換而成的2 個(gè)字節(jié)。式(1)將橢圓曲線中各種參數(shù)的數(shù)據(jù)類型轉(zhuǎn)換為比特串,然后對(duì)投票者Vi的公鑰PV進(jìn)行簽名,計(jì)算
選擇隨機(jī)數(shù)k∈[1,q-1],計(jì)算橢圓曲線上的點(diǎn)(x1,y1)=kG,然后計(jì)算
其中,(r,s) 是簽名值。
在注冊(cè)階段結(jié)束時(shí),管理員A公布投票者名冊(cè)。
2.3.2 獲取選票
1) 選票生成。管理員A生成n個(gè)唯一且隨機(jī)的數(shù)字選票bi,i∈[1,n]。
2) 請(qǐng)求投票。投票者Vi的公鑰對(duì)主持人M公開(kāi),Vi向M請(qǐng)求投票后,M通過(guò)驗(yàn)證Vi的簽名確認(rèn)他們是否符合投票資格。
3) 驗(yàn)證投票者身份。主持人M收到投票者Vi的公鑰PV后,通過(guò)SM2 驗(yàn)簽算法進(jìn)行驗(yàn)證,檢查Vi是否存在于投票者名冊(cè)中并且驗(yàn)證簽名(r,s) 是否有效。
首先,檢查r,s∈[1,q-1]是否成立,如果成立,設(shè)計(jì)算如果t=0,則驗(yàn)證不通過(guò);否則,計(jì)算橢圓曲線上的點(diǎn)
4) 主持人請(qǐng)求選票。如果驗(yàn)證通過(guò),主持人M將投票者的公鑰PV發(fā)送給管理員A,請(qǐng)求獲得選票。
5) 選票分配和加密。管理員A收到主持人M的投票請(qǐng)求后,將選票按照特定的置換順序隨機(jī)分配給投票者Vi。
在將選票分配給主持人M以發(fā)送給Vi之前,A與Vi利用SM2 的密鑰交換協(xié)議協(xié)商出SM4 的加密密鑰ki,ki為128 bit。然后利用SM4 算法對(duì)選票進(jìn)行加密。
使用ki生成輪密鑰后對(duì)選票進(jìn)行如下加密
其中,SM4-Enc是SM4 加密函數(shù),enbi是加密后的選票。對(duì)選票進(jìn)行加密的目的是向主持人M隱藏選票,Vi拿到的選票是匿名的。管理員A將enbi發(fā)送給M。
6) 加密選票傳輸。主持人M將加密后的選票enbi打亂順序,然后發(fā)送給投票者Vi。
7) 解密選票。Vi收到enbi后,將其解密
其中,SM4-Dec 是SM4 的解密函數(shù)。
2.3.3 投票階段
持有選票的已經(jīng)登記的投票者Vi可以對(duì)候選人Ck進(jìn)行投票。
1) 智能合約生成BFV 公私鑰對(duì)
私鑰sk 是隨機(jī)生成的一個(gè)系數(shù)為-1、0 或1 的多項(xiàng)式,公鑰pk=([ -ask +e]p,a)。其中,a為在密文空間中隨機(jī)生成的一個(gè)多項(xiàng)式,其系數(shù)模為p;e為噪聲多項(xiàng)式,是在離散高斯分布中隨機(jī)選取的一組小系數(shù),e在此處只用一次,用完后丟棄。
生成BFV 公私鑰對(duì)后,私鑰由本地?cái)?shù)據(jù)庫(kù)保留,公鑰pk 通過(guò)區(qū)塊鏈分享給所有投票者Vi。
2) 雙重加密
其中,vote=(c1,c2,···,cm)表示候選人Ck的序列。cm=BFV-Enc(candm)表示加密后的選票,BFV-Enc 表示BFV 同態(tài)加密函數(shù)。
BFV 全同態(tài)加密是建立在環(huán)上的同態(tài)加密方案,密文由2 個(gè)多項(xiàng)式組成,加密過(guò)程為
其中,rlk 為計(jì)算密鑰,用于BFV 中的密文計(jì)算;m為明文,本文方案中投票者的選票bi中對(duì)某個(gè)候選人的candk即需要加密的明文;T為分解模數(shù),為系數(shù)為-1、0 或1 的多項(xiàng)式;t為遠(yuǎn)小于系數(shù)模p的整數(shù);e1、e2取自相同的高斯離散分布,這些多項(xiàng)式只在加密過(guò)程中使用,使用完后丟棄;pk 為 BFV 的公鑰,pk0=pk[0],pk1=pk[1]。
3) 提交選票
投票者Vi提交選票觸發(fā)智能合約,一旦智能合約的結(jié)果被附加到區(qū)塊鏈,投票將被永久保存。
2.3.4 計(jì)票階段
投票階段結(jié)束后,智能合約將收集此階段內(nèi)出現(xiàn)在區(qū)塊鏈上的選票,以進(jìn)行驗(yàn)證和計(jì)數(shù)。為了驗(yàn)證,管理員A公開(kāi)分配給投票者Vi所有選票γ。智能合約收到后進(jìn)行驗(yàn)證,如果∈γ
ib,將檢查所附的投票順序,依次將選票密文計(jì)入候選人Ck的票數(shù)。
其中,Add(cim,cjm,rlk)表示將投票者vi和vj對(duì)候選人candm的投票情況密文相加的結(jié)果,利用全同態(tài)加密密文可計(jì)算的性質(zhì),即可計(jì)算出所有候選人的密文票數(shù)總和;cti[0]和cti[1]分別表示明文mi加密后得到的兩位密文;ctj[0]和ctj[1]分別表示明文mj加密后得到的兩位密文。
計(jì)票階段結(jié)束后,智能合約用生成的BFV 私鑰sk 解密選票結(jié)果,并將選票結(jié)果在區(qū)塊鏈上發(fā)布。
其中,m′為BFV 解密后的計(jì)票結(jié)果,c0=cm[0],c1=cm[1]。
表4 總結(jié)了BFV 同態(tài)加密算法在本文方案中各個(gè)階段的具體應(yīng)用。
表4 BFV 同態(tài)加密算法在本文方案中各個(gè)階段的具體應(yīng)用
chainvoting 的方案設(shè)計(jì),方案中涉及的加密算法有SM2、SM4 和BFV 全同態(tài)加密算法,接下來(lái),分別對(duì)這幾種算法在方案中的密鑰管理過(guò)程和必要性進(jìn)行解釋。
1) 密鑰生成
SM4 的密鑰ki由管理員A和投票者Vi通過(guò)SM2 的密鑰交換協(xié)議協(xié)商得到,ki為128 bit。
BFV 算法的密鑰由智能合約調(diào)用SEAL 庫(kù)生成,其中安全參數(shù)設(shè)置為λ=2 048。
2) 密鑰分發(fā)與更新
SM2 的私鑰xa由管理員A保存,公鑰PA公開(kāi)。
SM4 算法的密鑰ki由投票者Vi和管理員A各自保存,分別用來(lái)加密和解密。
BFV 算法的私鑰sk 由本地?cái)?shù)據(jù)庫(kù)保存,公鑰pk 由智能合約廣播,投票者Vi保存。
每次啟動(dòng)BFV-Blockchainvoting 系統(tǒng)組織一次投票時(shí),都將進(jìn)行密鑰更新,SM2、SM4、BFV 的密鑰全部重新生成。
3) 密鑰銷毀
本文提出的BFV-Blockchainvoting 方案主要包括4 個(gè)連續(xù)的階段,每個(gè)階段都發(fā)生在投票組織者預(yù)先確定的特定時(shí)間范圍內(nèi)。時(shí)間段由智能合約通過(guò)方法TimeSetup()設(shè)置,在選票公布結(jié)束后,SM2、SM4、BFV 的密鑰全部回歸初始化配置。
SM2 算法應(yīng)用在投票者注冊(cè)階段,在此階段管理員對(duì)投票者的公鑰進(jìn)行簽名,標(biāo)記合法的投票者,形成投票者名冊(cè),以便主持人在分發(fā)選票時(shí)識(shí)別合法的投票者。SM4 算法應(yīng)用在獲取選票階段,為了保證傳輸過(guò)程中選票信息的機(jī)密性,管理員將選票使用SM4 加密后分發(fā)給主持人,主持人再將加密后的選票分發(fā)給投票者,投票者解密選票信息后進(jìn)行投票,通過(guò)上述流程保證了投票過(guò)程的不可操縱性。相比于國(guó)外的RSA、ECC、AES 等算法,我國(guó)的SM2 和SM4 算法自主可控、安全可靠、處理速度快、使用方便快捷。
本文提出的電子投票系統(tǒng)BFV-Block chainvoting是以區(qū)塊鏈為底層框架的投票系統(tǒng),該系統(tǒng)基于未花費(fèi)交易輸出(UTXO,unspent transaction output)[26]安全模型進(jìn)行選票的分發(fā)與投出。UTXO 模型的概念來(lái)源于比特幣,用來(lái)處理關(guān)聯(lián)在某個(gè)比特幣地址上的比特幣交易金額,是一個(gè)包含了數(shù)據(jù)與可執(zhí)行代碼的數(shù)據(jù)結(jié)構(gòu)。UTXO 模型中的每一筆輸入都來(lái)自上一筆UTXO 的輸出,直到交易結(jié)束。本文方案中每張選票的分發(fā)或投出都依據(jù)UTXO 模型的輸入輸出原理進(jìn)行。UTXO 模型的使用可以減輕鏈上計(jì)算負(fù)擔(dān)、抵御重放攻擊、增強(qiáng)投票的隱私性。
本文提出的電子投票方案主要分為4 個(gè)階段:注冊(cè)、獲取選票、投票和計(jì)票。在投票者注冊(cè)階段,使用SM2 簽名算法對(duì)投票者的注冊(cè)信息進(jìn)行簽名處理,標(biāo)記投票者信息。在獲取選票階段,使用SM4算法加密選票,選擇互相監(jiān)督的機(jī)構(gòu)(管理員和主持人)執(zhí)行安全的多方監(jiān)管,而互相監(jiān)督的雙方不會(huì)出現(xiàn)串通行為,從而保證選票在由主持人轉(zhuǎn)交給投票者的過(guò)程中,主持人不知道選票信息。因此本文方案在注冊(cè)階段和獲取選票階段是安全的。
計(jì)票階段由區(qū)塊鏈的智能合約進(jìn)行自動(dòng)計(jì)票,智能合約的計(jì)票功能由底層代碼設(shè)計(jì),同時(shí)在計(jì)票過(guò)程中沒(méi)有任何一方的參與,所以計(jì)票階段也是安全的。
因此,證明本文提出的電子投票方案的安全性可以歸約為證明方案中投票階段的安全性。本文參考文獻(xiàn)[27],選用Game Model 來(lái)證明投票階段的安全性,在該模型中,允許對(duì)手通過(guò)預(yù)言機(jī)查詢加密后的選票信息。
BS 安全性:如果在下面的博弈中,沒(méi)有多項(xiàng)式有界對(duì)手A 對(duì)挑戰(zhàn)者C具有不可忽略的優(yōu)勢(shì),那么稱該投票方案是BS[27]安全的。
1) C運(yùn)行公鑰生成算法PublicKey(sk)生成公鑰,并將公鑰pk 交給A。
2) A 通過(guò)預(yù)言機(jī)選擇明文mi,i∈ [1,…,n],并查詢不同明文的密文ci,i∈ [1,…,n]。
3) A 發(fā)送相同長(zhǎng)度的明文m0、m1給C,C隨機(jī)的選擇b∈{0,1},加密mb發(fā)送給A。
4) A 輸出猜測(cè)b′∈{0,1},如果b=b′ 則攻擊成功。但在投票階段,本文方案選用BFV 全同態(tài)加密算法對(duì)選票進(jìn)行加密,BFV 算法是基于環(huán)上錯(cuò)誤學(xué)習(xí)(RLWE,learning with error over ring)問(wèn)題的算法,所以A 的優(yōu)勢(shì)可以規(guī)約為解決RLWE 問(wèn)題的優(yōu)勢(shì),因此
其中,A 的優(yōu)勢(shì)可以忽略不計(jì)。對(duì)于任意多項(xiàng)式時(shí)間A 獲勝的概率定義為
綜上所述,本文方案在投票階段是BS 安全的,同時(shí)本文提出的電子投票方案是安全的。
1) 不可重用性(防止雙重投票)
不同場(chǎng)景下投票政策不同,有些政策允許投票者使用同一張選票進(jìn)行多次投票,只計(jì)算他們的第一張選票。但是有些政策只允許投票者提交一次選票,取消多次提交選票的投票者的投票資格。
在這2 種情況下,本文方案都是抵制雙重選票的,因?yàn)楸疚姆桨高x用區(qū)塊鏈系統(tǒng)作為公告板。對(duì)于前者,智能合約掃描區(qū)塊鏈,所有多次出現(xiàn)的選票,只計(jì)算第一次出現(xiàn)的選票。對(duì)于后者,智能合約取消多次出現(xiàn)選票的投票者的投票資格。
2) 不可脅迫性
投票者收到有效的選票bi才可以進(jìn)行投票,在本文提出的方案中,投票者并沒(méi)有直接獲得選票,投票者收到的是經(jīng)過(guò)密鑰ki加密后的選票enbi。這意味著威脅者要求投票者解密選票后,才可以拿到投票者的投票憑證。投票者可以用解密enbi,然后將假選票 ′ib分享給威脅者。根據(jù)DDH(decisional diffie-hellman)假設(shè),不可能在一個(gè)概率多項(xiàng)式時(shí)間內(nèi)通過(guò)暴力破解區(qū)分出(g,g a,g b,g c,k i=gabc)和其中假設(shè)為
3) 不可操縱性
投票者投出的選票在區(qū)塊鏈上公開(kāi)永久地存儲(chǔ),本文方案使用BFV 同態(tài)加密算法加密選票,因此投票在整個(gè)過(guò)程中都是被隱藏的。投票者無(wú)法在勢(shì)均力敵的競(jìng)選中通過(guò)投票來(lái)支持某位候選人從而操縱選舉結(jié)果。
4) 匿名性
本文方案利用互相監(jiān)督的機(jī)構(gòu)來(lái)保護(hù)選民的隱私,使各方無(wú)法同時(shí)擁有選民和選票的信息,避免通過(guò)某張選票的信息而關(guān)聯(lián)到投票者投票的內(nèi)容,使投票者的匿名性得到保證。
5) 可驗(yàn)證性
計(jì)票階段結(jié)束時(shí),智能合約會(huì)在區(qū)塊鏈上發(fā)布投票結(jié)果,投票者可以驗(yàn)證他們的選票是否被正確清點(diǎn)。
6) 抗量子攻擊安全性
BFV 全同態(tài)加密運(yùn)算的安全性基于RLWE 上的格困難問(wèn)題,可以抵抗量子計(jì)算攻擊,保證了系統(tǒng)的抗量子攻擊安全性。
本文測(cè)試的實(shí)際測(cè)試環(huán)境為Intel 酷睿i5 處理器、8 GB 內(nèi)存、2.3 GHz、Windows 10 64 位操作系統(tǒng)的筆記本電腦。
本文提出的電子投票系統(tǒng)使用區(qū)塊鏈替代可信第三方,其中區(qū)塊鏈的底層架構(gòu)為自建的基于國(guó)密算法的公鏈系統(tǒng),相比于Hyperledger Fabric 和以太坊區(qū)塊鏈的頻繁更新或升級(jí)而造成的系統(tǒng)不穩(wěn)定,本文系統(tǒng)不僅能夠可靠運(yùn)行,還可以滿足投票系統(tǒng)的性能要求。下面,對(duì)本文系統(tǒng)的通信開(kāi)銷和存儲(chǔ)開(kāi)銷進(jìn)行分析和測(cè)試。
本文系統(tǒng)的底層區(qū)塊鏈框架采用PoW 共識(shí)算法,本節(jié)選用生成一個(gè)有效區(qū)塊所需要的平均通信次數(shù)來(lái)衡量其通信開(kāi)銷,文獻(xiàn)[28]中給出了區(qū)塊鏈通信開(kāi)銷的計(jì)算方法,如式(19)所示。
其中,CPoW表示基于PoW 共識(shí)算法的區(qū)塊鏈通信開(kāi)銷,α表示全網(wǎng)節(jié)點(diǎn)的交易到達(dá)率表示正常生成一個(gè)區(qū)塊所需要的平均時(shí)間,N表示節(jié)點(diǎn)個(gè)數(shù),r1表示節(jié)點(diǎn)算力,D表示目標(biāo)難度值。
為評(píng)估本文系統(tǒng)的通信開(kāi)銷,根據(jù)式(19),本節(jié)測(cè)試了系統(tǒng)中的關(guān)鍵參數(shù)。全網(wǎng)節(jié)點(diǎn)的交易到達(dá)率α=5 TPS(transaction per second),節(jié)點(diǎn)算力1r=7.5 MH/s(每秒106次Hash 運(yùn)算),PoW 的難度值D=2.0。圖3 為節(jié)點(diǎn)傳輸成功概率Ps為0 和0.85這2 種情況下的通信開(kāi)銷。從圖3 可以看出,通信次數(shù)(通信開(kāi)銷)與節(jié)點(diǎn)個(gè)數(shù)成正比,當(dāng)節(jié)點(diǎn)個(gè)數(shù)為150 時(shí),通信次數(shù)(通信開(kāi)銷)為174。本文系統(tǒng)的節(jié)點(diǎn)傳輸成功率較高,所產(chǎn)生的通信開(kāi)銷對(duì)系統(tǒng)正常運(yùn)行產(chǎn)生的影響很小。
圖3 不同節(jié)點(diǎn)個(gè)數(shù)下的通信開(kāi)銷
每名投票者的存儲(chǔ)開(kāi)銷包括個(gè)人公/私鑰、地址、未花費(fèi)證明數(shù)據(jù)和區(qū)塊鏈上投票數(shù)據(jù)等。每名投票者由于存儲(chǔ)個(gè)人公/私鑰以及地址值約帶來(lái)3 KB 的存儲(chǔ)開(kāi)銷。每名投票者只有一張選票,所以其未花費(fèi)證明數(shù)據(jù)所占的存儲(chǔ)開(kāi)銷也較小。隨著投票人數(shù)的增加,影響存儲(chǔ)開(kāi)銷的主要因素為區(qū)塊鏈上的投票數(shù)據(jù)。
為評(píng)估本文系統(tǒng)的存儲(chǔ)開(kāi)銷,本節(jié)在1 名候選人的情況下,分別設(shè)置了1 次投票、25 次投票和50 次投票的投票環(huán)境,得到不同投票次數(shù)下的存儲(chǔ)開(kāi)銷,如圖4所示,并依此評(píng)估了5 000次投票時(shí)的存儲(chǔ)開(kāi)銷。根據(jù)評(píng)估可知,每次投票鏈上數(shù)據(jù)約增長(zhǎng)2 KB,進(jìn)行5 000 次投票所產(chǎn)生的存儲(chǔ)開(kāi)銷約為9.8 MB,該存儲(chǔ)開(kāi)銷滿足投票系統(tǒng)的性能需求。
圖4 不同投票次數(shù)下的存儲(chǔ)開(kāi)銷
本文提出的BFV-Blockchainvoting 方案主要包括4 個(gè)連續(xù)的階段,每個(gè)階段都發(fā)生在投票組織者預(yù)先確定的特定時(shí)間范圍內(nèi)。投票者注冊(cè)、選票分發(fā)以及投票者投出選票的過(guò)程為并發(fā)進(jìn)行,其效率對(duì)系統(tǒng)的運(yùn)行影響不大,而計(jì)票效率是決定系統(tǒng)能否在規(guī)定時(shí)間內(nèi)完成計(jì)票的關(guān)鍵。為測(cè)試計(jì)票效率,本節(jié)設(shè)置了50 名投票者、1 名候選人的投票環(huán)境。圖5 展示了50 次計(jì)票的測(cè)試結(jié)果。經(jīng)過(guò)測(cè)試,本文系統(tǒng)單張選票的計(jì)票時(shí)間平均為1.69 ms。通過(guò)對(duì)10 組密文狀態(tài)的計(jì)票結(jié)果進(jìn)行解密測(cè)試,進(jìn)而得到明文狀態(tài)的計(jì)票結(jié)果,平均每次解密時(shí)間為163.70 ms。
圖5 單張選票的計(jì)票時(shí)間測(cè)試
將本文方案與其他基于區(qū)塊鏈或同態(tài)加密技術(shù)的電子投票系統(tǒng)進(jìn)行對(duì)比,結(jié)果如表5 所示。目前,國(guó)內(nèi)外大多數(shù)學(xué)者沒(méi)有將區(qū)塊鏈與全同態(tài)加密算法相融合的技術(shù)引入電子投票系統(tǒng)的設(shè)計(jì)中,并很少進(jìn)行實(shí)際環(huán)境下的效率測(cè)試。表5 中,文獻(xiàn)[22]和文獻(xiàn)[29]都采用了區(qū)塊鏈與同態(tài)加密算法相結(jié)合的方案,但其采用Pallier 部分同態(tài)加密算法,其同態(tài)性計(jì)算通過(guò)冪運(yùn)算實(shí)現(xiàn),相比于本文提出的投票系統(tǒng)BFV-Blockchainvoting 所采用的BFV 全同態(tài)加密算法來(lái)說(shuō)效率較低。文獻(xiàn)[30]也采用Pallier 部分同態(tài)加密算法,但沒(méi)有依托區(qū)塊鏈環(huán)境,投票效率較低。相比于采用以太坊架構(gòu)且包含6個(gè)節(jié)點(diǎn)的文獻(xiàn)[29],本文方案的計(jì)票時(shí)間減少了99.79%。相比于文獻(xiàn)[30],本文方案的計(jì)票時(shí)間減少了95.77%。文獻(xiàn)[31]和文獻(xiàn)[11]也選用了具有抗量子計(jì)算攻擊特性的全同態(tài)加密算法,但同樣也沒(méi)有依托區(qū)塊鏈環(huán)境。相比于文獻(xiàn)[11]中借助第三方機(jī)構(gòu)與BFV 全同態(tài)加密算法相結(jié)合的投票方案,本文方案的計(jì)票時(shí)間減少了9.63%。文獻(xiàn)[20]和文獻(xiàn)[25]使用了區(qū)塊鏈架構(gòu),但其沒(méi)有使用同態(tài)加密算法。相比于文獻(xiàn)[20],本文方案的計(jì)票時(shí)間減少了98.87%。文獻(xiàn)[25]使用投票者的指紋作為登記認(rèn)證信息,系統(tǒng)為降低指紋識(shí)別的錯(cuò)誤拒絕率需要消耗較長(zhǎng)時(shí)間,相比于采用以太坊架構(gòu)且包含50 個(gè)節(jié)點(diǎn)的文獻(xiàn)[25],本文方案的計(jì)票時(shí)間減少了32.4%。
表5 本文方案與其他方案的性能比較
本文提出的電子投票系統(tǒng)將區(qū)塊鏈和BFV 全同態(tài)加密算法相結(jié)合,利用全同態(tài)加密算法加密選票信息,使選票可以在密文情況下被統(tǒng)計(jì),候選人的獲票情況直到解密最終計(jì)票結(jié)果后才會(huì)公布,保證了投票過(guò)程的抗操縱性。在注冊(cè)與獲取選票階段,使用SM2 數(shù)字簽名算法對(duì)投票者的注冊(cè)信息進(jìn)行簽名,使用SM4 算法來(lái)加密選票,選擇具有能夠互相監(jiān)督的雙方共同監(jiān)管選票,確保投票者與選票信息分離。投票者提交選票后,利用區(qū)塊鏈上的智能合約實(shí)現(xiàn)對(duì)投票者的合法性驗(yàn)證和自計(jì)票功能。使用區(qū)塊鏈替代可信第三方,避免第三方虛假計(jì)票或服務(wù)器被攻擊后的信息泄露風(fēng)險(xiǎn),計(jì)票效率也得到提升。通過(guò)測(cè)試,本文系統(tǒng)單張選票的計(jì)票時(shí)間平均為1.69 ms,相比于文獻(xiàn)[29]中使用區(qū)塊鏈和Pallier 部分同態(tài)加密算法相結(jié)合的投票方案的計(jì)票時(shí)間減少了99.79%;相比于文獻(xiàn)[11]中借助第三方機(jī)構(gòu)與BFV 全同態(tài)加密算法相結(jié)合的投票方案的計(jì)票時(shí)間減少了9.62%;相比于文獻(xiàn)[25]未使用同態(tài)加密算法,只使用區(qū)塊鏈架構(gòu)的投票方案的計(jì)票時(shí)間減少了32.4%。本文方案總體計(jì)算開(kāi)銷合理,計(jì)票效率較高,可以為大規(guī)模電子投票場(chǎng)景提供借鑒。下一步的研究思路是探討全同態(tài)簽密技術(shù)在區(qū)塊鏈電子投票中的應(yīng)用,并進(jìn)行智能合約的安全性測(cè)試與分析。