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