文獻(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ù)的投票方案是最常見(jiàn)的。CHAUM D提出了第一個(gè)密碼學(xué)意義上的電子投票選舉方案[1],提出了在公鑰密碼體制結(jié)合 Mix機(jī)制來(lái)實(shí)現(xiàn)匿名通信的方案,但是該方案要求所有投票者必須合作,其協(xié)議效率和可行性較低。在此方案的基礎(chǔ)上,一系列采用Mix-net機(jī)制的電子投票系統(tǒng)[2-3]研究出現(xiàn)了,在協(xié)議的安全性以及可靠性方面有所提高[4]。這類方案要求所有Mix服務(wù)器在處理選票過(guò)程中無(wú)法篡改選票,其無(wú)法篡改的證明依賴于大量的證明計(jì)算,協(xié)議運(yùn)行效率較低。
區(qū)塊鏈技術(shù)最先在比特幣白皮書(shū)中,以“工作量證明鏈(Proof-of-work Chain)”的形式提出。區(qū)塊鏈本質(zhì)上是一個(gè)去中心化的數(shù)據(jù)庫(kù),作為比特幣的底層技術(shù),區(qū)塊鏈通過(guò)分布式公式算法實(shí)現(xiàn)去中心化,其核心是一個(gè)開(kāi)放的、可編程的分布式數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)是全球性的。區(qū)塊鏈技術(shù)不僅是用在金融交易上,還可以用于記錄所有有價(jià)值的東西,應(yīng)用領(lǐng)域十分廣泛,如財(cái)務(wù)賬目、醫(yī)療過(guò)程、出生證明、保險(xiǎn)理賠、投票等任何可用代碼來(lái)表示的東西。針對(duì)現(xiàn)有方案存在的投票效率低下、重復(fù)投票、欺詐選票以及安全性等問(wèn)題,本文在區(qū)塊鏈技術(shù)的基礎(chǔ)上提出了基于區(qū)塊鏈的投票選舉系統(tǒng),通過(guò)在投票過(guò)程中引入?yún)^(qū)塊鏈技術(shù),每個(gè)投票數(shù)據(jù)節(jié)點(diǎn)都可以驗(yàn)證投票賬本的內(nèi)容和構(gòu)造歷史的真實(shí)性和完整性,確保投票記錄是可靠的、沒(méi)有被篡改的,相當(dāng)于提高了系統(tǒng)的可追責(zé)性,降低了系統(tǒng)的信任風(fēng)險(xiǎn)。防止有不合法投票人欺詐選票或者其他機(jī)構(gòu)破壞投票過(guò)程,干擾投票結(jié)果。此外,每個(gè)投票人都可以看到投票結(jié)果,通過(guò)匿名算法,保證投票人的隱私,同時(shí)又不損害投票的公開(kāi)公正性。
1 電子投票選舉系統(tǒng)安全性要求
電子投票選舉系統(tǒng)在安全性方面的要求包括:
(1)合法用戶參與性,不合法用戶是不能進(jìn)行投票的;
(2)投票中心不能拒絕合法選票;
(3)合法投票者只能進(jìn)行一次投票;
(4)投票過(guò)程的不可破壞性:投票過(guò)程不能被惡意攻擊者的不合法或不誠(chéng)實(shí)行為破壞;
(5)選票內(nèi)容的保密性,對(duì)選票內(nèi)容進(jìn)行加密,防止被惡意竊取后泄露選票內(nèi)容,影響投票過(guò)程;
(6)投票者可以驗(yàn)證自己的選票是否正確有效,且被正確統(tǒng)計(jì),保證選舉結(jié)果的正確性和合法性;
(7)投票者身份隱藏,其他用戶不可見(jiàn);
(8)投票過(guò)程需簡(jiǎn)單高效,無(wú)需用戶進(jìn)行復(fù)雜學(xué)習(xí);
(9)系統(tǒng)可支持多個(gè)候選人。
2 區(qū)塊鏈技術(shù)適用性分析
區(qū)塊鏈?zhǔn)潜忍貛诺幕A(chǔ)技術(shù),每個(gè)數(shù)據(jù)節(jié)點(diǎn)無(wú)需相互信任,在時(shí)間戳、數(shù)據(jù)加密等技術(shù)基礎(chǔ)上實(shí)現(xiàn)去中心化、不可篡改和自治性等特性。系統(tǒng)的每個(gè)參與者都能夠知曉系統(tǒng)的運(yùn)行規(guī)則,又實(shí)現(xiàn)了開(kāi)源透明的特性。區(qū)塊鏈的這些技術(shù)性特點(diǎn)解決了現(xiàn)在中心化系統(tǒng)所存在的成本高、效率低、安全性低等問(wèn)題。
在基于區(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ù)是沒(méi)有經(jīng)過(guò)篡改的、可靠的。區(qū)塊鏈的自治性決定了節(jié)點(diǎn)在區(qū)塊鏈網(wǎng)絡(luò)中,會(huì)自主監(jiān)聽(tīng)其他節(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ò)中沒(méi)有節(jié)點(diǎn)擁有絕對(duì)優(yōu)先的權(quán)力。這種去中心化的、分布式的網(wǎng)絡(luò)結(jié)構(gòu)適用于投票選舉系統(tǒng),投票中心不需要專門(mén)維護(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)功能說(shuō)明
電子投票選舉系統(tǒng)的主要功能是記錄投票者的投票信息,記錄投票過(guò)程并生成投票憑證,將投票憑證存入本地?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è)過(guò)程中投票者的信息都是隱藏的。每個(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è)輔助功能來(lái)方便用戶了解投票功能和查看當(dāng)前投票系統(tǒng)公開(kāi)選票記錄。兩個(gè)輔助功能包括:(1)獲取投票信息功能,在用戶完成投票后,系統(tǒng)自動(dòng)生成投票憑證,并在本地保存;(2)查看投票歷史記錄,所有用戶都可以在公共信息頁(yè)上查看所有候選者的選票情況。
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ì)于投票用戶來(lái)說(shuō)是不可見(jiàn)的。圖1描述了系統(tǒng)的總體功能劃分。
投票模塊主要承擔(dān)投票者用戶選擇候選者進(jìn)行投票的功能,并達(dá)到投票去中心化、去信任的目標(biāo)。在該模塊中,用戶選擇候選者,選擇投票,點(diǎn)擊確定,生成投票記錄,即投票憑證報(bào)文。為保證投票憑證在傳輸模塊傳輸過(guò)程中不被篡改,系統(tǒng)根據(jù)區(qū)塊鏈中最后一條記錄的散列值,使用私鑰簽名,并把投票記錄、簽名和公鑰一起封裝成投票憑證報(bào)文,該報(bào)文被發(fā)送給候選者節(jié)點(diǎn)。候選者節(jié)點(diǎn)接收投票記錄憑證,利用公鑰驗(yàn)證其簽名,若簽名正確,則增加此候選者的票數(shù)。此過(guò)程對(duì)于候選者節(jié)點(diǎn)來(lái)說(shuō),可見(jiàn)的只是選票的增加,并不會(huì)顯示投票者的信息,簽名驗(yàn)證通過(guò)后,系統(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ù)是否一致,以此來(lái)判斷系統(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)過(guò)程:首先判斷消息的發(fā)送方是否系統(tǒng)中合法節(jié)點(diǎn),若不是則丟棄消息;若是,則取出本地區(qū)塊文件的Hash散列值以及消息中的公鑰檢驗(yàn)簽名,進(jìn)行簽名認(rèn)證,返回校驗(yàn)結(jié)果,若認(rèn)證成功,則確認(rèn)消息傳輸過(guò)程中沒(méi)有被篡改,若認(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ū)塊鏈管理模塊的功能說(shuō)明:
(1)定時(shí)更新功能:定時(shí)向系統(tǒng)中所有節(jié)點(diǎn)共享區(qū)塊鏈數(shù)據(jù)。
(2)檢測(cè)區(qū)塊鏈數(shù)據(jù)功能:檢測(cè)功能用于檢測(cè)區(qū)塊鏈數(shù)據(jù)的正確性,在檢測(cè)開(kāi)始前,發(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)超過(guò)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í)間順序來(lái)排序收到的數(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é)論
本文通過(guò)分析區(qū)塊鏈的底層密碼學(xué)原理以及應(yīng)用場(chǎng)景,針對(duì)現(xiàn)有方案存在的投票效率低下、重復(fù)投票、欺詐選票以及安全性等問(wèn)題,在區(qū)塊鏈技術(shù)的基礎(chǔ)上提出了基于區(qū)塊鏈的投票選舉系統(tǒng)。在投票過(guò)程中引入?yún)^(qū)塊鏈技術(shù),每個(gè)投票數(shù)據(jù)節(jié)點(diǎn)都可以驗(yàn)證投票賬本的內(nèi)容和構(gòu)造歷史的真實(shí)性和完整性,確保投票記錄是可靠的、沒(méi)有被篡改的,相當(dāng)于提高了系統(tǒng)的可追責(zé)性,降低了系統(tǒng)的信任風(fēng)險(xiǎn)。本文重點(diǎn)提出了一種將區(qū)塊鏈應(yīng)用于投票選舉系統(tǒng)的設(shè)計(jì)方案,提出了系統(tǒng)框架和模塊功能劃分實(shí)施方案。通過(guò)該方案,防止有不合法投票人欺詐選票或者其他機(jī)構(gòu)破壞投票過(guò)程,干擾投票結(jié)果。此外,每個(gè)投票人都可以看到投票結(jié)果,通過(guò)匿名算法,保證投票人的隱私,同時(shí)又不損害投票的公開(kāi)公正性。
參考文獻(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.