文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.173731
中文引用格式: 張昕偉,張華,,郭肖旺,,等. 基于區(qū)塊鏈的電子投票選舉系統(tǒng)研究分析[J].電子技術(shù)應(yīng)用,2017,,43(11):132-135.
英文引用格式: Zhang Xinwei,,Zhang Hua,Guo Xiaowang,,et al. Research and analysis of electronic voting system based on block-
chain[J].Application of Electronic Technique,,2017,43(11):132-135.
0 引言
在電子投票選舉系統(tǒng)的安全實(shí)用性研究方面,,基于密碼技術(shù)的投票方案是最常見的。CHAUM D提出了第一個(gè)密碼學(xué)意義上的電子投票選舉方案[1],,提出了在公鑰密碼體制結(jié)合 Mix機(jī)制來實(shí)現(xiàn)匿名通信的方案,,但是該方案要求所有投票者必須合作,其協(xié)議效率和可行性較低,。在此方案的基礎(chǔ)上,,一系列采用Mix-net機(jī)制的電子投票系統(tǒng)[2-3]研究出現(xiàn)了,在協(xié)議的安全性以及可靠性方面有所提高[4],。這類方案要求所有Mix服務(wù)器在處理選票過程中無法篡改選票,其無法篡改的證明依賴于大量的證明計(jì)算,,協(xié)議運(yùn)行效率較低,。
區(qū)塊鏈技術(shù)最先在比特幣白皮書中,以“工作量證明鏈(Proof-of-work Chain)”的形式提出,。區(qū)塊鏈本質(zhì)上是一個(gè)去中心化的數(shù)據(jù)庫,,作為比特幣的底層技術(shù),,區(qū)塊鏈通過分布式公式算法實(shí)現(xiàn)去中心化,其核心是一個(gè)開放的,、可編程的分布式數(shù)據(jù)庫,,該數(shù)據(jù)庫是全球性的。區(qū)塊鏈技術(shù)不僅是用在金融交易上,,還可以用于記錄所有有價(jià)值的東西,,應(yīng)用領(lǐng)域十分廣泛,如財(cái)務(wù)賬目,、醫(yī)療過程,、出生證明、保險(xiǎn)理賠,、投票等任何可用代碼來表示的東西,。針對(duì)現(xiàn)有方案存在的投票效率低下、重復(fù)投票,、欺詐選票以及安全性等問題,,本文在區(qū)塊鏈技術(shù)的基礎(chǔ)上提出了基于區(qū)塊鏈的投票選舉系統(tǒng),通過在投票過程中引入?yún)^(qū)塊鏈技術(shù),,每個(gè)投票數(shù)據(jù)節(jié)點(diǎn)都可以驗(yàn)證投票賬本的內(nèi)容和構(gòu)造歷史的真實(shí)性和完整性,,確保投票記錄是可靠的、沒有被篡改的,,相當(dāng)于提高了系統(tǒng)的可追責(zé)性,,降低了系統(tǒng)的信任風(fēng)險(xiǎn)。防止有不合法投票人欺詐選票或者其他機(jī)構(gòu)破壞投票過程,,干擾投票結(jié)果,。此外,每個(gè)投票人都可以看到投票結(jié)果,,通過匿名算法,,保證投票人的隱私,同時(shí)又不損害投票的公開公正性,。
1 電子投票選舉系統(tǒng)安全性要求
電子投票選舉系統(tǒng)在安全性方面的要求包括:
(1)合法用戶參與性,,不合法用戶是不能進(jìn)行投票的;
(2)投票中心不能拒絕合法選票,;
(3)合法投票者只能進(jìn)行一次投票,;
(4)投票過程的不可破壞性:投票過程不能被惡意攻擊者的不合法或不誠(chéng)實(shí)行為破壞;
(5)選票內(nèi)容的保密性,,對(duì)選票內(nèi)容進(jìn)行加密,,防止被惡意竊取后泄露選票內(nèi)容,影響投票過程;
(6)投票者可以驗(yàn)證自己的選票是否正確有效,,且被正確統(tǒng)計(jì),,保證選舉結(jié)果的正確性和合法性;
(7)投票者身份隱藏,,其他用戶不可見,;
(8)投票過程需簡(jiǎn)單高效,無需用戶進(jìn)行復(fù)雜學(xué)習(xí),;
(9)系統(tǒng)可支持多個(gè)候選人,。
2 區(qū)塊鏈技術(shù)適用性分析
區(qū)塊鏈?zhǔn)潜忍貛诺幕A(chǔ)技術(shù),每個(gè)數(shù)據(jù)節(jié)點(diǎn)無需相互信任,,在時(shí)間戳,、數(shù)據(jù)加密等技術(shù)基礎(chǔ)上實(shí)現(xiàn)去中心化、不可篡改和自治性等特性,。系統(tǒng)的每個(gè)參與者都能夠知曉系統(tǒng)的運(yùn)行規(guī)則,,又實(shí)現(xiàn)了開源透明的特性。區(qū)塊鏈的這些技術(shù)性特點(diǎn)解決了現(xiàn)在中心化系統(tǒng)所存在的成本高,、效率低,、安全性低等問題。
在基于區(qū)塊鏈的網(wǎng)絡(luò)結(jié)構(gòu)中,,每個(gè)節(jié)點(diǎn)都共享系統(tǒng)的所有信息,,不存在中心節(jié)點(diǎn),每個(gè)數(shù)據(jù)節(jié)點(diǎn)都可以驗(yàn)證賬本的真實(shí)內(nèi)容以及歷史記錄,,保證了數(shù)據(jù)的完整性,,確保數(shù)據(jù)是沒有經(jīng)過篡改的、可靠的,。區(qū)塊鏈的自治性決定了節(jié)點(diǎn)在區(qū)塊鏈網(wǎng)絡(luò)中,,會(huì)自主監(jiān)聽其他節(jié)點(diǎn)發(fā)生的數(shù)據(jù)信息,并隨時(shí)進(jìn)行共享,,整個(gè)流程都是區(qū)塊鏈網(wǎng)絡(luò)自主實(shí)現(xiàn)的,,不需要人工進(jìn)行干預(yù)。區(qū)塊鏈網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都是整個(gè)網(wǎng)絡(luò)的維護(hù)者,,網(wǎng)絡(luò)中沒有節(jié)點(diǎn)擁有絕對(duì)優(yōu)先的權(quán)力,。這種去中心化的、分布式的網(wǎng)絡(luò)結(jié)構(gòu)適用于投票選舉系統(tǒng),,投票中心不需要專門維護(hù)和管理整理投票系統(tǒng)和網(wǎng)絡(luò),,投票系統(tǒng)的每個(gè)用戶共同維護(hù)和管理整個(gè)系統(tǒng)的信息,并可共享數(shù)據(jù)信息,,保證了網(wǎng)絡(luò)的透明性,,也防止了惡意投票或篡改欺詐,、欺騙選票的作弊行為。
由于區(qū)塊鏈的記錄是可追溯的,,且不可抵賴,所有的投票記錄都會(huì)被全網(wǎng)記錄,,任何投票用戶的投票記錄都會(huì)被記錄到區(qū)塊中,,每一次新的投票記錄都會(huì)被共享到全網(wǎng)所有節(jié)點(diǎn),系統(tǒng)中所有的節(jié)點(diǎn)都可以收到投票記錄,,并把收到的記錄加入?yún)^(qū)塊中,,在區(qū)塊鏈算法中,始終將長(zhǎng)度最長(zhǎng)的區(qū)塊鏈認(rèn)為是正確的鏈,,鏈會(huì)隨著投票記錄的增加不斷變長(zhǎng),。區(qū)塊鏈?zhǔn)褂昧藭r(shí)間戳,可以提供時(shí)間上的證明,,如果有欺詐選票或篡改選票的行為,,將可以在區(qū)塊鏈中回溯記錄查詢發(fā)生篡改或欺詐選票的時(shí)間和數(shù)據(jù)。
3 基于區(qū)塊鏈的電子投票選舉系統(tǒng)設(shè)計(jì)
基于區(qū)塊鏈的電子投票選舉系統(tǒng)擬采用C/S架構(gòu),,本文根據(jù)區(qū)塊鏈中去中心化,、節(jié)點(diǎn)數(shù)據(jù)共享、節(jié)點(diǎn)自治性等特點(diǎn),,分析電子投票選舉系統(tǒng),,要求每個(gè)投票者平等地參與投票,投票完畢后生成投票憑證報(bào)文,,報(bào)文驗(yàn)證完畢后,,系統(tǒng)向所有節(jié)點(diǎn)廣播投票記錄消息,所有收到消息的節(jié)點(diǎn)更新自己的區(qū)塊鏈,,存儲(chǔ)投票記錄,,共同維護(hù)系統(tǒng)投票歷史記錄信息。
3.1 系統(tǒng)功能說明
電子投票選舉系統(tǒng)的主要功能是記錄投票者的投票信息,,記錄投票過程并生成投票憑證,,將投票憑證存入本地?cái)?shù)據(jù)結(jié)構(gòu)。該結(jié)構(gòu)中記錄了投票時(shí)間,、投票數(shù)據(jù)等信息,。投票記錄加密后共享給系統(tǒng)所有節(jié)點(diǎn),當(dāng)網(wǎng)絡(luò)中的大部分節(jié)點(diǎn)甚至所有節(jié)點(diǎn)認(rèn)為該投票記錄有效時(shí),,系統(tǒng)記錄票數(shù),,并將投票憑證記錄到區(qū)塊中,然后系統(tǒng)公布候選者票數(shù),,整個(gè)過程中投票者的信息都是隱藏的,。每個(gè)投票系統(tǒng)用戶節(jié)點(diǎn)都可以收到投票憑證,,保存到區(qū)塊中,在區(qū)塊鏈算法中,,始終將長(zhǎng)度最長(zhǎng)的區(qū)塊鏈認(rèn)為是正確的鏈,,鏈會(huì)隨著投票記錄的增加不斷變長(zhǎng)。投票憑證的傳輸采用了簽名認(rèn)證,,系統(tǒng)會(huì)定時(shí)檢測(cè)區(qū)塊鏈文件,,確保文件未被篡改。區(qū)塊鏈文件表示記錄投票憑證的賬本,。系統(tǒng)還提供了兩個(gè)輔助功能來方便用戶了解投票功能和查看當(dāng)前投票系統(tǒng)公開選票記錄,。兩個(gè)輔助功能包括:(1)獲取投票信息功能,在用戶完成投票后,,系統(tǒng)自動(dòng)生成投票憑證,,并在本地保存;(2)查看投票歷史記錄,,所有用戶都可以在公共信息頁上查看所有候選者的選票情況,。
3.2 功能設(shè)計(jì)
系統(tǒng)按照功能可以分為3個(gè)模塊:投票模塊、區(qū)塊鏈管理模塊,、投票憑證管理模塊,。在本系統(tǒng)中,節(jié)點(diǎn)指的是位于系統(tǒng)中,、可以被用戶進(jìn)行投票使用的PC或者手機(jī)APP,,這些節(jié)點(diǎn)可以互相通信,并且在節(jié)點(diǎn)中可以存儲(chǔ)區(qū)塊鏈信息,,并提供區(qū)塊鏈系統(tǒng)的維護(hù)功能,,節(jié)點(diǎn)內(nèi)部的工作對(duì)于投票用戶來說是不可見的。圖1描述了系統(tǒng)的總體功能劃分,。
投票模塊主要承擔(dān)投票者用戶選擇候選者進(jìn)行投票的功能,,并達(dá)到投票去中心化、去信任的目標(biāo),。在該模塊中,,用戶選擇候選者,選擇投票,,點(diǎn)擊確定,,生成投票記錄,即投票憑證報(bào)文,。為保證投票憑證在傳輸模塊傳輸過程中不被篡改,,系統(tǒng)根據(jù)區(qū)塊鏈中最后一條記錄的散列值,使用私鑰簽名,,并把投票記錄,、簽名和公鑰一起封裝成投票憑證報(bào)文,,該報(bào)文被發(fā)送給候選者節(jié)點(diǎn)。候選者節(jié)點(diǎn)接收投票記錄憑證,,利用公鑰驗(yàn)證其簽名,,若簽名正確,則增加此候選者的票數(shù),。此過程對(duì)于候選者節(jié)點(diǎn)來說,,可見的只是選票的增加,并不會(huì)顯示投票者的信息,,簽名驗(yàn)證通過后,系統(tǒng)封裝確認(rèn)消息報(bào)文,,并共享給所有節(jié)點(diǎn),,收到消息的節(jié)點(diǎn)更新自己本身的區(qū)塊鏈。
區(qū)塊鏈管理模塊主要用于管理分布式區(qū)塊鏈賬本,,及時(shí)更新區(qū)塊鏈文件,,提供查詢?cè)敿?xì)投票記錄的功能。及時(shí)更新區(qū)塊鏈文件主要是指Merkle根數(shù)據(jù)的定點(diǎn)更新,,系統(tǒng)每隔一定時(shí)間,,會(huì)向所有節(jié)點(diǎn)共享區(qū)塊鏈Merkle根的數(shù)據(jù),收到消息的節(jié)點(diǎn),,比較本地Merkle根數(shù)據(jù)是否一致,,以此來判斷系統(tǒng)是否在安全狀態(tài)下,是否已遭受惡意攻擊或數(shù)據(jù)被篡改,。
投票憑證管理模塊用于管理投票者投票產(chǎn)生的投票記錄數(shù)據(jù),,按照加密協(xié)議,生成投票憑證,,并把投票憑證報(bào)文存儲(chǔ)至本地存儲(chǔ)模塊中,。
3.2.1 投票模塊功能
投票模塊主要實(shí)現(xiàn)投票并生成投票記錄和投票憑證報(bào)文,傳輸投票記錄,。該模塊包括投票憑證生成,、投票憑證傳輸、投票憑證校驗(yàn),、投票憑證確認(rèn)等4個(gè)功能,,如圖2所示。
投票功能分析如下:
(1)投票記錄生成:用戶選擇要進(jìn)行投票的候選人,,點(diǎn)擊投票,,確定投票信息,則系統(tǒng)生成投票記錄,,記錄用戶ID,、用戶投票時(shí)間,、候選者ID,并加密生成投票憑證報(bào)文,。
(2)投票憑證傳輸功能:系統(tǒng)將生成的投票憑證報(bào)文發(fā)送出去,。系統(tǒng)根據(jù)區(qū)塊鏈中最后一條記錄的散列值,使用私鑰簽名,。將投票記錄,、簽名和公鑰封裝到消息中,發(fā)送給候選者節(jié)點(diǎn),。消息中包含候選者用戶ID,、投票憑證報(bào)文、投票者用戶簽名,、公鑰等信息,,便于系統(tǒng)校驗(yàn)消息正確性。
(3)投票憑證校驗(yàn):候選者節(jié)點(diǎn)接收到消息后,,需要進(jìn)行如下校驗(yàn)過程:首先判斷消息的發(fā)送方是否系統(tǒng)中合法節(jié)點(diǎn),,若不是則丟棄消息;若是,,則取出本地區(qū)塊文件的Hash散列值以及消息中的公鑰檢驗(yàn)簽名,,進(jìn)行簽名認(rèn)證,返回校驗(yàn)結(jié)果,,若認(rèn)證成功,,則確認(rèn)消息傳輸過程中沒有被篡改,若認(rèn)證失敗,,則丟棄消息,。
(4)消息確認(rèn)功能:上一步中若消息校驗(yàn)成功,則確認(rèn)消息,,并對(duì)消息進(jìn)行系統(tǒng)簽名,,共享給所有節(jié)點(diǎn),通知所有節(jié)點(diǎn)更新區(qū)塊鏈文件,。
3.2.2 區(qū)塊鏈管理模塊功能
區(qū)塊連管理模塊主要實(shí)現(xiàn)維護(hù)區(qū)塊鏈文件安全可靠及完整性,,實(shí)現(xiàn)區(qū)塊鏈文件更新,及向全網(wǎng)節(jié)點(diǎn)共享更新區(qū)塊鏈功能,。本模塊還提供投票歷史記錄查詢功能,。本模塊的用例圖如圖3所示。
區(qū)塊鏈管理模塊的功能說明:
(1)定時(shí)更新功能:定時(shí)向系統(tǒng)中所有節(jié)點(diǎn)共享區(qū)塊鏈數(shù)據(jù),。
(2)檢測(cè)區(qū)塊鏈數(shù)據(jù)功能:檢測(cè)功能用于檢測(cè)區(qū)塊鏈數(shù)據(jù)的正確性,,在檢測(cè)開始前,發(fā)送檢測(cè)消息給所有節(jié)點(diǎn),,然后等待一定時(shí)間,,在該事件間隔內(nèi)接收其他節(jié)點(diǎn)回復(fù)的Merkle根數(shù)據(jù),,時(shí)間間隔默認(rèn)是5 s,在這個(gè)時(shí)間內(nèi)接收的Merkle根數(shù)據(jù)個(gè)數(shù)上限設(shè)置為100,。接收完畢后,,進(jìn)行數(shù)據(jù)檢測(cè),于存儲(chǔ)在本地的區(qū)塊鏈數(shù)據(jù)進(jìn)行對(duì)比,,統(tǒng)計(jì)相同數(shù)據(jù)記錄的數(shù)量,,若與本地區(qū)塊鏈Merkle根吻合的節(jié)點(diǎn)超過50%,則認(rèn)為本地區(qū)塊鏈文件正確,,否則刪除本地區(qū)塊中的數(shù)據(jù),。
(3)請(qǐng)求下載區(qū)塊鏈數(shù)據(jù):系統(tǒng)發(fā)現(xiàn)本地缺少區(qū)塊鏈時(shí),可以發(fā)送請(qǐng)求區(qū)塊鏈數(shù)據(jù)消息給系統(tǒng)中所有節(jié)點(diǎn),,并等待一定時(shí)間間隔用于接收其他節(jié)點(diǎn)返回的數(shù)據(jù),,等待返回消息時(shí)間默認(rèn)設(shè)置為5 s,系統(tǒng)中其他節(jié)點(diǎn)接收到請(qǐng)求會(huì)整理本節(jié)點(diǎn)的區(qū)塊鏈文件,,然后發(fā)送最新的區(qū)塊鏈數(shù)據(jù)給請(qǐng)求節(jié)點(diǎn)。請(qǐng)求節(jié)點(diǎn)獲取最先收到的消息,,并更新本地區(qū)塊鏈文件,。
(4)查詢投票歷史記錄:根據(jù)用戶輸入的查詢時(shí)間范圍,向所有節(jié)點(diǎn)發(fā)送查詢請(qǐng)求消息,,請(qǐng)求等待響應(yīng)時(shí)間設(shè)置為5 s,。等待5 s時(shí)間用于接收返回的消息,并根據(jù)時(shí)間順序來排序收到的數(shù)據(jù)消息,,生成歷史記錄,。
3.2.3 投票憑證管理模塊功能
投票憑證管理功能主要實(shí)現(xiàn)獲取用戶輸入的投票數(shù)據(jù),整理封裝成投票記錄報(bào)文,,保存在本地,。用例圖如圖4所示。
投票憑證管理模塊的具體功能是報(bào)文封裝功能:用戶確認(rèn)選票,,確定投票后,,系統(tǒng)自動(dòng)對(duì)投票記錄進(jìn)行分析,采用私有加密協(xié)議,,對(duì)投票數(shù)據(jù)封裝成投票憑證報(bào)文,,與生成時(shí)間戳一并保存。
4 結(jié)論
本文通過分析區(qū)塊鏈的底層密碼學(xué)原理以及應(yīng)用場(chǎng)景,,針對(duì)現(xiàn)有方案存在的投票效率低下,、重復(fù)投票、欺詐選票以及安全性等問題,,在區(qū)塊鏈技術(shù)的基礎(chǔ)上提出了基于區(qū)塊鏈的投票選舉系統(tǒng),。在投票過程中引入?yún)^(qū)塊鏈技術(shù),,每個(gè)投票數(shù)據(jù)節(jié)點(diǎn)都可以驗(yàn)證投票賬本的內(nèi)容和構(gòu)造歷史的真實(shí)性和完整性,確保投票記錄是可靠的,、沒有被篡改的,,相當(dāng)于提高了系統(tǒng)的可追責(zé)性,降低了系統(tǒng)的信任風(fēng)險(xiǎn),。本文重點(diǎn)提出了一種將區(qū)塊鏈應(yīng)用于投票選舉系統(tǒng)的設(shè)計(jì)方案,,提出了系統(tǒng)框架和模塊功能劃分實(shí)施方案。通過該方案,,防止有不合法投票人欺詐選票或者其他機(jī)構(gòu)破壞投票過程,,干擾投票結(jié)果。此外,,每個(gè)投票人都可以看到投票結(jié)果,,通過匿名算法,保證投票人的隱私,,同時(shí)又不損害投票的公開公正性,。
參考文獻(xiàn)
[1] CHAUM D,RYAN P Y A,,SCHNEIDER S.A practical voter-verifiable election scheme[J].Lecture Notes in Computer Science,,2005,10(3):118-139.
[2] CICHON J,,KLONWSKI M,,KUTYLOWSKI M.Distributed verification of mixing-local forking proofs model[C].The 13th Australasian Conference of Information Security and Privacy 2008,LNCS 5107.Berlin:Springer-Verlag,,2008:128-140.
[3] PANG L,,SUN M H,LUO S S,,et al.Full privacy preserving electronic voting scheme[J].The Journal of China Universities of Posts and Telecommunications,,2012,19(4):86-93.
[4] 張文芳,,熊丹,,王小敏.基于關(guān)聯(lián)環(huán)簽名的抗第三方欺詐安全電子投票方案[J].西南交通大學(xué)學(xué)報(bào),2015,,50(5):905-911.