文獻標(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ū)塊鏈認(rèn)為是正確的鏈,,鏈會隨著投票記錄的增加不斷變長,。區(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é)點認(rèn)為該投票記錄有效時,系統(tǒng)記錄票數(shù),,并將投票憑證記錄到區(qū)塊中,,然后系統(tǒng)公布候選者票數(shù),整個過程中投票者的信息都是隱藏的,。每個投票系統(tǒng)用戶節(jié)點都可以收到投票憑證,保存到區(qū)塊中,,在區(qū)塊鏈算法中,,始終將長度最長的區(qū)塊鏈認(rèn)為是正確的鏈,鏈會隨著投票記錄的增加不斷變長,。投票憑證的傳輸采用了簽名認(rèn)證,,系統(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)封裝確認(rèn)消息報文,,并共享給所有節(jié)點,,收到消息的節(jié)點更新自己本身的區(qū)塊鏈。
區(qū)塊鏈管理模塊主要用于管理分布式區(qū)塊鏈賬本,,及時更新區(qū)塊鏈文件,,提供查詢詳細(xì)投票記錄的功能。及時更新區(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)投票并生成投票記錄和投票憑證報文,,傳輸投票記錄。該模塊包括投票憑證生成,、投票憑證傳輸,、投票憑證校驗、投票憑證確認(rè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散列值以及消息中的公鑰檢驗簽名,,進行簽名認(rèn)證,返回校驗結(jié)果,,若認(rèn)證成功,,則確認(rèn)消息傳輸過程中沒有被篡改,若認(rèn)證失敗,,則丟棄消息,。
(4)消息確認(rèn)功能:上一步中若消息校驗成功,則確認(rèn)消息,,并對消息進行系統(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ù),時間間隔默認(rèn)是5 s,,在這個時間內(nèi)接收的Merkle根數(shù)據(jù)個數(shù)上限設(shè)置為100,。接收完畢后,進行數(shù)據(jù)檢測,,于存儲在本地的區(qū)塊鏈數(shù)據(jù)進行對比,,統(tǒng)計相同數(shù)據(jù)記錄的數(shù)量,若與本地區(qū)塊鏈Merkle根吻合的節(jié)點超過50%,,則認(rèn)為本地區(qū)塊鏈文件正確,,否則刪除本地區(qū)塊中的數(shù)據(jù)。
(3)請求下載區(qū)塊鏈數(shù)據(jù):系統(tǒng)發(fā)現(xiàn)本地缺少區(qū)塊鏈時,,可以發(fā)送請求區(qū)塊鏈數(shù)據(jù)消息給系統(tǒng)中所有節(jié)點,,并等待一定時間間隔用于接收其他節(jié)點返回的數(shù)據(jù),等待返回消息時間默認(rèn)設(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所示,。
投票憑證管理模塊的具體功能是報文封裝功能:用戶確認(rèn)選票,確定投票后,,系統(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.