国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于區(qū)塊鏈的電子投票技術(shù)研究與實現(xiàn)

2023-03-20 07:41胡南方沈蘇彬
科技資訊 2023年2期
關(guān)鍵詞:投票者身份驗證以太

胡南方 沈蘇彬

(1.南京郵電大學(xué)計算機學(xué)院;2.南京郵電大學(xué)通信與網(wǎng)絡(luò)技術(shù)國家工程研究中心 江蘇南京 210046)

進(jìn)入信息化時代以來,電子投票作為一種新的投票方式,并逐漸得到了社會的重視和應(yīng)用,成為現(xiàn)代民主活動的象征。電子投票(E-voting)是由CHAUM D[1]在1981 年提出的,它是以互聯(lián)網(wǎng)和通信技術(shù)為基礎(chǔ),利用現(xiàn)代密碼學(xué)為安全保障,模擬傳統(tǒng)的人工投票,來實現(xiàn)跨越空間的投票方式。電子投票可以解決傳統(tǒng)人工投票方式需要在地理空間上集中的復(fù)雜難題,即使投票參與方分散在不同各地,依然可以通過網(wǎng)絡(luò)在同一時間進(jìn)行表決和投票。相對于傳統(tǒng)的人工投票而言,電子投票的效率大大提升。

電子投票旨在通過互聯(lián)網(wǎng)提供一個安全、方便和高效的投票環(huán)境,然而,通過互聯(lián)網(wǎng)投票也帶來了一些弊端。目前,電子投票系統(tǒng)主要存在以下幾個問題:投票過程無法做到公開透明,投票者可能會產(chǎn)生信任危機;投票數(shù)據(jù)采用中心化方式存儲在中央數(shù)據(jù)庫中,數(shù)據(jù)安全性無法得到保證;投票者在投票過程中可能會暴露自己的個人信息,存在隱私泄露的風(fēng)險。

隨著比特幣[2]等數(shù)字加密貨幣的興起,區(qū)塊鏈作為比特幣的底層技術(shù),受到了廣泛的關(guān)注。區(qū)塊鏈的本質(zhì)是一個基于點對點網(wǎng)絡(luò)的去中心化的網(wǎng)絡(luò)公用賬本[3],通過建立一個全網(wǎng)共同維護且不可篡改的賬本,存儲網(wǎng)絡(luò)中所有的交易記錄。區(qū)塊鏈技術(shù)具有去中心化、數(shù)據(jù)不可篡改、數(shù)據(jù)可溯源等特點,可以提高電子投票的可信度,是解決電子投票系統(tǒng)可信性需求的一種新的思路。

1 相關(guān)工作分析

區(qū)塊鏈的本質(zhì)是一個去中心化的公用賬本數(shù)據(jù)庫,數(shù)據(jù)庫中存儲的是一串按照時間先后順序鏈接在一起的數(shù)據(jù)區(qū)塊。區(qū)塊的結(jié)構(gòu)以比特幣為例,每個區(qū)塊一般包合區(qū)塊頭(Header)和區(qū)塊體(Body)兩部分,如圖1所示。

圖1 比特幣區(qū)塊結(jié)構(gòu)圖

在區(qū)塊頭中,存儲了前一區(qū)塊的哈希值,通過這個值可以獲取到前一區(qū)塊信息,形如數(shù)據(jù)結(jié)構(gòu)中指針的效果,將一個個區(qū)塊連接起來,最終形成一個鏈狀的結(jié)構(gòu)。區(qū)塊鏈也因此而得名。這樣的鏈狀結(jié)構(gòu)可以保證存儲在區(qū)塊鏈中的數(shù)據(jù)都是可以追溯的。

區(qū)塊體中存儲著該區(qū)塊包含的所有交易,這些交易經(jīng)驗證后通過哈希函數(shù)的處理,成為Merkle 樹[4]的一個葉子結(jié)點,每兩個葉子結(jié)點繼續(xù)取哈希得到上一結(jié)點的值,最后的Merkle根值保存在區(qū)塊頭里面,同時通過數(shù)字簽名技術(shù)為該區(qū)塊打上時間戳[5],保證交易按照一定的時間順序排列。通過Merkle樹存儲的交易信息可以滿足信息無法被篡改。在電子投票中使用這樣的技術(shù)來存儲投票數(shù)據(jù),可以滿足投票可溯源且不可更改,為電子投票提供了一個公開的存儲方式和公平的環(huán)境。

區(qū)塊鏈采用點對點(Peer-to-Peer)的網(wǎng)絡(luò)架構(gòu)[6]。在電子投票的底層區(qū)塊鏈采用點對點網(wǎng)絡(luò),能夠?qū)崿F(xiàn)對區(qū)塊鏈節(jié)點的標(biāo)識。由此,在區(qū)塊鏈網(wǎng)絡(luò)上通過該標(biāo)識對區(qū)塊鏈節(jié)點進(jìn)行尋址,可以唯一確定一個區(qū)塊鏈節(jié)點,即對應(yīng)到唯一的投票人。另外,點對點網(wǎng)絡(luò)中的節(jié)點均具有消息的收發(fā)功能,通過這個功能,投票人可以在區(qū)塊鏈的節(jié)點間將自己的選票進(jìn)行廣播,從而完成投票的流程,另外還可以實現(xiàn)各個節(jié)點之間的狀態(tài)同步,保證賬本的一致性。

區(qū)塊鏈通過哈希函數(shù)(Hash Function)[7]與非對稱加密算法[8]實現(xiàn)用戶的身份標(biāo)識和身份驗證。共識機制[9]可以在沒有中心節(jié)點的情況下保證各個誠實的節(jié)點記賬的一致性。

以太坊(Ethereum)[10]是一個通用的區(qū)塊鏈平臺,它具備圖靈完備的智能合約執(zhí)行能力,可以通過智能合約在以太坊平臺上搭建去中心化的應(yīng)用程序。

目前已有一些研究對基于區(qū)塊鏈的電子投票技術(shù)進(jìn)行了分析。SAYYAD S F 等人[11]調(diào)查了基于區(qū)塊鏈的投票系統(tǒng)的特征,認(rèn)為區(qū)塊鏈技術(shù)能夠彌補傳統(tǒng)電子投票系統(tǒng)存在的不足。KIM H R等人[12]分析了將區(qū)塊鏈應(yīng)用于在線投票系統(tǒng)時可能出現(xiàn)的制度和技術(shù)問題。CABUK U C等人[13]從技術(shù)和非技術(shù)兩方面探究了在電子投票系統(tǒng)中使用區(qū)塊鏈技術(shù)的可行性和適用性,其分析結(jié)果證實了區(qū)塊鏈技術(shù)能夠解決一些重要的安全問題,包括匿名性、機密性、完整性和不可否認(rèn)性。

在此基礎(chǔ)上,一些研究人員提出了基于區(qū)塊鏈的電子投票方案。ZHAO Z 等人[14]提出了一種基于比特幣的電子投票協(xié)議,該協(xié)議利用比特幣賬戶可以自由轉(zhuǎn)移數(shù)字貨幣的特點,以交易轉(zhuǎn)賬的方式來進(jìn)行投票。TAKBATAKE Y 等人[15]提出一種結(jié)合Zerocoin 和比特幣的電子投票方案,該方案基于比特幣平臺,針對比特幣系統(tǒng)具有假名而不是匿名性的特點,使用Zerocoin來為投票系統(tǒng)提供匿名性。董友康等人[16]提出了一種基于聯(lián)盟鏈的董事會電子投票協(xié)議,該協(xié)議使用智能合約結(jié)合數(shù)字證書,對投票者的身份進(jìn)行合法性驗證。另外,該方案利用盲簽名技術(shù)對選票信息進(jìn)行處理,保證了投票的匿名性。MCCORRY P 等人[17]提出了一種基于以太坊區(qū)塊鏈的電子投票方案,該方案設(shè)計了智能合約投票協(xié)議,實現(xiàn)自動計票。

以上研究利用區(qū)塊鏈技術(shù)解決了許多傳統(tǒng)電子投票的難題,如利用區(qū)塊鏈提供匿名性、設(shè)計智能合約實現(xiàn)自動計票、使用數(shù)字貨幣代表選票等,但區(qū)塊鏈與電子投票的結(jié)合,還存在許多問題。

(1)投票者在區(qū)塊鏈中的身份標(biāo)識和身份真實性驗證問題。區(qū)塊鏈可以為用戶提供匿名,因此首先要實現(xiàn)的就是投票者在區(qū)塊鏈中的身份標(biāo)識。另外,電子投票系統(tǒng)要求在投票之前需要對投票者進(jìn)行身份的合法性驗證。因此,投票者如何在區(qū)塊鏈環(huán)境中進(jìn)行真實性身份驗證也是重要的研究方面。

(2)目前已有方案通過預(yù)設(shè)智能合約的方式,使電子投票系統(tǒng)實現(xiàn)自動計票。但是這樣的計票方案,僅能驗證選票的有效性,無法保證選票的唯一性,不能解決重復(fù)投票的問題。因此,需要設(shè)計一種計票方法,能夠同時驗證選票的有效性和唯一性。

(3)審計性對于電子投票系統(tǒng)十分重要,開放的審計權(quán)限、讓各方都能參與審計體現(xiàn)了投票結(jié)果的公開透明。但是在目前的電子投票系統(tǒng)中,開放可審計性與隱私保護是矛盾的。區(qū)塊鏈數(shù)據(jù)公開透明的特點可以滿足可審計性的需求,在此基礎(chǔ)上應(yīng)對保護投票者隱私的方法展開研究。

2 區(qū)塊鏈中投票者的身份真實性驗證

在基于區(qū)塊鏈的電子投票系統(tǒng)中,為了保證選票的有效性,我們需要對投票者進(jìn)行可信的身份驗證,以實現(xiàn)對其所發(fā)布的選票信息進(jìn)行基于其角色身份的唯一性和合法性驗證。在區(qū)塊鏈中,各參與方普遍采用匿名地址的方式來作為自己的身份標(biāo)識,然而,電子投票系統(tǒng)要求投票者必須經(jīng)過身份驗證,才能獲取投票資格。因此,每個參與者的虛擬身份需要與現(xiàn)實中的身份信息綁定,例如:身份證號或者社??ㄌ?,從而確定投票身份的合法性。

按照節(jié)點加入的方式,可將區(qū)塊鏈劃分為公有鏈和私有鏈。公有鏈中任何節(jié)點都可以自由地加入和退出,私有鏈中只有通過身份驗證才能加入。結(jié)合電子投票系統(tǒng)要求投票者必須經(jīng)過身份驗證的需求,選擇在私有鏈上開展對電子投票身份驗證技術(shù)的研究。

在基于區(qū)塊鏈的電子投票系統(tǒng)中,采用橢圓曲線數(shù)字簽名算法(ECDSA)作為加密算法,遵循SECP256K1 橢圓曲線的參數(shù)標(biāo)準(zhǔn),結(jié)合密碼學(xué)哈希函數(shù)SHA-256,投票者通過以上方法生成自己的區(qū)塊鏈地址,作為自己在區(qū)塊鏈中的標(biāo)識,使用私鑰進(jìn)行數(shù)字簽名,為選票提供認(rèn)證。同時,利用這樣一套身份標(biāo)識標(biāo)識方法,展開有關(guān)區(qū)塊鏈中身份真實性驗證的研究。表1 是對該方法中使用的符號進(jìn)行定義,該方法具體描述如下。

表1 身份驗證方法符號定義表

對于投票者voteri,其真實身份表示為Identityi,通過SECP256K1 橢圓曲線算法生成專屬于投票者voteri私鑰SKi和公鑰PKi。在區(qū)塊鏈網(wǎng)絡(luò)中,節(jié)點對一張選票進(jìn)行驗證時,需要驗證兩個方面的內(nèi)容:第一,對于一張選票msgi,確實是由voteri自己投出的,而非其他人,比如voterj假冒voteri投出;第二,投出這張選票msgi的投票者voteri,其身份Identityi必須是符合投票條件的,確保選票是有效的。

因此需要設(shè)計這樣一種身份驗證方式,使得在voteri沒有泄露自身真實身份信息Identityi和私鑰信息SKi的條件下,仍然能在區(qū)塊鏈網(wǎng)絡(luò)中完成自己的身份真實性驗證。

首先,voteri需要先計算出兩個hash值,其中,hash1使用的是voteri真實身份Identityi和私鑰SKi哈希得到,hash2使用的是voteri的公鑰PKi和hash1哈希得到。為保證前后使用的哈希函數(shù)一致,可設(shè)定為均采用SHA-256函數(shù)。對應(yīng)的計算公式如下:

然后進(jìn)行下面兩個步驟,完成身份真實性驗證:

步驟1:注冊和登錄。使用Identityi和hash2進(jìn)行注冊,注冊中心會首先檢驗投票者voteri的身份Identityi是否符合投票的條件,即是否為合法的投票者。確認(rèn)投票者voteri的身份是符合條件的之后,則首先將表list1中的Identityi將value 值置為1,這保證了每個合法的用戶僅能使用自己的身份進(jìn)行一次注冊,無法通過一個身份注冊多個賬號。然后,將投票者voteri所發(fā)送來的hash2存入表list2中,表list1與表list2無任何映射關(guān)系,即使同時獲取兩張表,也無法從中得出對應(yīng)信息。注冊流程結(jié)束后,注冊中心將表list2 發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。僅存儲符合要求的投票者的hash2值。

步驟2:驗證。投票者voteri加入?yún)^(qū)塊鏈網(wǎng)絡(luò)中后,通過發(fā)送選票時附著自己的身份信息,通過私鑰對hash1進(jìn)行簽名得到signi,目的是為了證明這張選票msgi的確是由公鑰地址為PKi的參與方發(fā)出的,而不是冒充者假冒PKi發(fā)送的此選票。節(jié)點確定了選票msgi是由PKi發(fā)送的之后,利用PKi對signi進(jìn)行解密,獲得簽名的內(nèi)容hash1,然后通過hash 函數(shù),對hash1和PKi進(jìn)行取哈希,得到hash2′,節(jié)點只需要對照list2中的值,檢驗是否存在一個值與hash2′相等。若存在這樣的hash 值,則說明這張選票msgi的發(fā)送方的身份是符合投票條件的,也就是說這張選票是有效選票。

通過上述驗證方式,可以在不泄露自身身份隱私信息的前提下,完成區(qū)塊鏈網(wǎng)絡(luò)的身份真實性驗證。

3 區(qū)塊鏈中投票唯一性的方法

在基于區(qū)塊鏈的電子投票系統(tǒng)中,投票唯一性的研究是對選票信息的真實性、有效性和唯一性的驗證,其主要目的是為了解決電子投票系統(tǒng)中常見的重復(fù)投票的問題。這需要按照以下兩個步驟展開:首先是投票者身份的真實性驗證,確保參與投票的投票者都是符合投票要求的,不會有未經(jīng)過身份驗證的人參與投票活動,讓選票的來源真實可信;其次對于通過身份驗證的投票者,需要確保他們每個人的選票唯一且有效。投票者的身份驗證在上一小節(jié)已經(jīng)探討,該節(jié)主要研究在基于區(qū)塊鏈的電子投票系統(tǒng)中如何確保選票的唯一性和有效性。

在相關(guān)研究中,主要通過讓投票者只能投一次選票的方法來保證無法重復(fù)投票。但根據(jù)電子投票的要求,投票需要滿足強制自由(抗脅迫性),即投票者在投票過程中不受外界因素的強制和影響。在傳統(tǒng)電子投票中,主流觀點是投票者可以多次改變選票內(nèi)容,從而減少強制的可能性。但在基于區(qū)塊鏈的電子投票系統(tǒng)中,這樣的做法是無法實現(xiàn)的。因為在區(qū)塊鏈中,參與方將選票信息發(fā)布到網(wǎng)絡(luò)中,即被認(rèn)為是投出選票,而選票經(jīng)過共識之后被存儲到區(qū)塊鏈上,其內(nèi)容是無法更改的。因此,需要對投票者的投票權(quán)限加以限制,通過投票權(quán)限制保證選票的唯一性,通過投票權(quán)認(rèn)定保證選票的有效性??梢砸胍蕴恢小癟oken”的概念來實現(xiàn)投票權(quán)的限制和認(rèn)定。

以太坊中的“Token”是一種通證,它可以代表貨幣、資源、資產(chǎn)、訪問權(quán)限和身份等一個或幾個不同的功能?;诒毁x予的屬性不同,Token既可以是實用證明,也可以是權(quán)益證明。當(dāng)Token 被賦予了某種權(quán)益證明時,Token 將與證明該權(quán)益的唯一標(biāo)識符相關(guān)聯(lián),例如用戶身份ID,此時的Token具有不可互換性,每個用戶擁有的Token 只能由自己來使用。目前,以太坊使用的最廣泛的定義Token 的標(biāo)準(zhǔn)是ERC20 標(biāo)準(zhǔn),不過該標(biāo)準(zhǔn)定義的Token是可互換的Token,不滿足我們的應(yīng)用需求。因此我們將采用ERC721 標(biāo)準(zhǔn),對電子投票中使用的Token進(jìn)行定義。ERC721標(biāo)準(zhǔn)使用256位標(biāo)識符來實現(xiàn)對Token 的唯一標(biāo)識,每個用戶使用權(quán)益證明綁定Token 時,都會產(chǎn)生獨一無二的“契約(deeds)”,通過跟蹤這個“契約”而非用戶本身,來實現(xiàn)對Token的證明。綁定過程如下。

在基于區(qū)塊鏈的電子投票系統(tǒng)中,我們將Token與每一位投票人的唯一標(biāo)識綁定,也即投票人的公鑰地址,此時“Token”代表了投票權(quán)的認(rèn)定。每一位通過身份驗證的投票者的注冊賬戶中都會擁有初始的“Token”,該“Token”僅限投票者在投票時證明選票的有效性,不可附著在其他交易中。如果投票者確定了投票意向,可以在交易中附加上Token值來投出選票,為選票提供認(rèn)證,每位投票者僅能投出一張附帶Token值的選票。在投票流程結(jié)束后,對投票結(jié)果進(jìn)行統(tǒng)計時,通過對選票中Token值的判斷,來確定該選票的有效性。只有附帶Token 值的選票,才被認(rèn)為是唯一且有效的選票;而沒有附帶Token值的選票,則被認(rèn)為是重復(fù)投票。通過這樣一種機制,能夠保證選票的唯一性和有效性。

4 區(qū)塊鏈中可審計性與隱私保護

在區(qū)塊鏈中,所有的交易信息和交易過程都是公開透明的,任何參與方都可以查看和驗證交易的有效性。同樣的,在基于區(qū)塊鏈的電子投票系統(tǒng)中,區(qū)塊鏈的數(shù)據(jù)可溯源且不可篡改的特點,使得所有的投票數(shù)據(jù)都永久且不可逆地存儲在區(qū)塊鏈中,任何參與方都可以驗證選票的有效性,為投票結(jié)果的驗證和審計提供了便利。但是投票數(shù)據(jù)公開透明的特點也對投票者的隱私保護提出了更高的要求。

一個可信的電子投票系統(tǒng)必須具備可審計性,能夠保證投票結(jié)果的公平可信,這也是電子投票系統(tǒng)的最基本要求。同時,電子投票系統(tǒng)的隱私保護是指所有人都無法找出投票者與選票內(nèi)容之間的聯(lián)系,結(jié)合可審計性的要求,就是說所有人都能看到選票內(nèi)容,但是不知道選票是誰投出的。因此,傳統(tǒng)電子投票系統(tǒng)往往會采用復(fù)雜的簽名加密算法,保護投票者的真實身份隱私。區(qū)塊鏈本身具有匿名性,所有參與方在區(qū)塊鏈中使用的身份地址與現(xiàn)實中的真實身份都是沒有關(guān)聯(lián)的,但是參與方在區(qū)塊鏈中使用的身份地址與選票內(nèi)容是公開且密切相關(guān)的。也就是說,如果區(qū)塊鏈中某個參與方的真實身份與匿名地址一旦暴露,投票者的隱私也就不復(fù)存在。

因此,可以在投票者匿名地址與選票內(nèi)容的聯(lián)系上進(jìn)行加密處理,達(dá)到保護隱私的目的,但是又不能完全隱藏這兩者之間的聯(lián)系,因為還要滿足可審計性的需求。因此,在基于區(qū)塊鏈的電子投票系統(tǒng)中,電子投票可審計性與隱私保護的研究,就是從可審計性的角度,設(shè)計一種加密機制,能夠在不暴露投票者匿名地址與相關(guān)選票關(guān)系的情況下,所有參與方都能完成對投票結(jié)果的審計。

環(huán)簽名是一種數(shù)字簽名方案,簽名者利用自己的私鑰和集合中其他成員的公鑰就能獨立地進(jìn)行簽名。通過環(huán)簽名對消息進(jìn)行簽名后,驗證者只能知道簽名者來自一個組,而不能確定是誰簽署了它。環(huán)簽名提供無條件匿名,這與基于區(qū)塊鏈的電子投票系統(tǒng)中隱私保護的要求是一致的。

在基于區(qū)塊鏈的電子投票系統(tǒng)中,選擇目前主流的RST 環(huán)簽名算法,表2 是對該方案中使用的符號的說明,投票者voteri生成和驗證環(huán)簽名的過程如下。

表2 環(huán)簽名方案的符號定義表

步驟1:生成Gen。

投票者voteri的私鑰SKi,所有環(huán)成員的公鑰{PK1,PK2,…,PKn},給定待簽名消息m。

步驟2:簽名Sign。

通過以下步驟生成環(huán)簽名。

(1)選取密鑰k,計算k=h(m);

(2)隨機選取v ∈{0,1}b;

(3)為其他環(huán)成員選取x ∈{0,1}b(1≤j≤n,j≠i),并計算yj=gj(xj);

(4)根據(jù)yj(1≤j≤n,j≠i),求滿足如下等式的yn

(5)根據(jù)yn和私鑰SKi求逆xs=gi-1(yi);

(6)對m的環(huán)簽名為一個(2n+1)元組

步驟3:驗證Verify。

根據(jù)對消息m的簽名(PK1,…,PKn;v;x1,…,xn)SMT4,驗證者通過驗證yi是否滿足公式(3)。若等式成立,環(huán)簽名為有效簽名,否則為無效簽名。

通過以上的方式,可以實現(xiàn)基于區(qū)塊鏈的電子投票系統(tǒng)可審計性與隱私保護的統(tǒng)一。

5 仿真實現(xiàn)

該文對于方案的仿真實現(xiàn)將基于以太坊區(qū)塊鏈平臺,主要由以太坊底層區(qū)塊鏈網(wǎng)絡(luò)、智能合約和應(yīng)用程序前端組成,其總體架構(gòu)如圖2 所示??傮w架構(gòu)中包含兩類角色,分別是投票發(fā)起者和投票者。

圖2 系統(tǒng)總體架構(gòu)

投票系統(tǒng)采用分布式架構(gòu),每一個投票者通過操作投票系統(tǒng)Web前端頁面實現(xiàn)投票每個環(huán)節(jié)并與智能合約交互,從而實現(xiàn)去中心化的投票系統(tǒng)Dapp。

首先,通過以太坊平臺實現(xiàn)底層區(qū)塊鏈網(wǎng)絡(luò)的搭建,投票者可以通過以太坊客戶端參與到網(wǎng)絡(luò)中,實現(xiàn)投票的發(fā)起和參與。智能合約部署到以太坊上后,會獲得一個對應(yīng)的合約地址。利用以太坊賬戶,通過交易,就可以觸發(fā)該智能合約。web3.js 是以太坊為開發(fā)者提供的,它本質(zhì)上是一個Javascript 庫,其中里面封裝了以太坊的一些基本格式類型,并且擁有與區(qū)塊鏈交互的能力,可以通過其中提供的API,與以太坊中的智能合約進(jìn)行交互。

該投票方案總共分為4 個過程,分別是初始化階段、注冊階段、投票階段和計票并公布階段。圖3展示了整個投票方案的流程。

圖3 系統(tǒng)時序圖

根據(jù)方案進(jìn)行的不同階段,可以具體設(shè)計系統(tǒng)流程,如圖4所示。

圖4 系統(tǒng)流程圖

(1)投票發(fā)起者設(shè)置投票問題以及選項,并且設(shè)置計時器信息,用于通知投票者注冊和投票的時間點,并負(fù)責(zé)部署智能合約,規(guī)定投票的流程。

(2)投票者通過SECP256K1 橢圓曲線算法獲取一個公/私密鑰對。投票者使用自己的真實身份以及其他相關(guān)信息進(jìn)行注冊,注冊通過后獲得加入?yún)^(qū)塊鏈網(wǎng)絡(luò)的資格。

(3)投票者在加入?yún)^(qū)塊鏈網(wǎng)絡(luò)后,仍需驗證真實身份以獲得投票權(quán)。若身份驗證未通過,則無法獲得投票權(quán),無法參與后面的流程。

(4)投票者獲得投票權(quán)后,在規(guī)定投票時間內(nèi)投出自己的選票。選票信息應(yīng)包含加密后的選票內(nèi)容、投票者的公鑰地址以及投票者的私鑰簽名。投票者通過節(jié)點向整個區(qū)塊鏈網(wǎng)絡(luò)廣播自己的投票信息。

(5)在有投票者投出選票之后,區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點負(fù)責(zé)廣播、驗證和收集投票者的選票。在收集選票之前,節(jié)點首先會對選票的有效性進(jìn)行驗證,主要是確定選票是否是偽造的以及選票是否是有效的,通過驗證的選票會被節(jié)點收集打包成區(qū)塊,未通過驗證的選票會被丟棄。區(qū)塊打包完成后,會將區(qū)塊發(fā)往區(qū)塊鏈網(wǎng)絡(luò)中,其他節(jié)點會對這個區(qū)塊中的選票進(jìn)行再一次驗證。若其中有無效的或錯誤的選票,其余節(jié)點不會接受這個區(qū)塊。只有當(dāng)這個區(qū)塊中的所有選票全都通過驗證,節(jié)點才會接受這個區(qū)塊,并向全網(wǎng)廣播。

(6)新區(qū)塊經(jīng)過全網(wǎng)節(jié)點共識后,會被鏈接到現(xiàn)有的區(qū)塊鏈上,并被打上時間戳。區(qū)塊中的選票信息被存儲在區(qū)塊鏈上,便無法被篡改,并且可以接受所有人的檢查與校驗。

(7)在到達(dá)設(shè)置的投票截止時間后,節(jié)點停止收集選票,通過調(diào)用觸發(fā)計票智能合約,對滿足投票資格的選票進(jìn)行統(tǒng)計,并公開結(jié)果。如有必要,也可以通過一個交易將投票結(jié)果存儲到區(qū)塊鏈上,實現(xiàn)投票結(jié)果的真實可信。

6 仿真實驗與結(jié)果分析

該文實驗的硬件環(huán)境是Intel(R)Core(TM)i5-3800H CPU(2.30GHz),RAM為8 GB,操作系統(tǒng)是Ubuntu16.04。該文選擇在以太坊平臺上進(jìn)行仿真實現(xiàn),通過配置創(chuàng)世區(qū)塊文件在本地搭建了一個以太坊私有鏈。使用solidity 語言編寫智能合約,使用Truffle 框架實現(xiàn)對于智能合約的編譯和部署,使用Ganache 客戶端生成100個賬戶作為方案中的投票者,模擬真實的投票場景,前端的設(shè)計基于Node.js。

實驗中使用Solidity語言編寫Voting.sol合約,啟動本地以太坊節(jié)點,對該智能合約文件進(jìn)行編譯。編譯結(jié)果具體見圖5。

圖5 智能合約的編譯

創(chuàng)建合約時,賬戶將bytecode 作為交易的傳遞參數(shù),廣播到全網(wǎng)中進(jìn)行驗證,有效驗證后合約創(chuàng)建成功,形成交易記錄在區(qū)塊鏈上,成功部署后會返回部署成功的消息,具體見圖6。

圖6 智能合約的部署

投票者通過注冊加入?yún)^(qū)塊鏈網(wǎng)絡(luò)后,可以參與投票,使用自己的公私鑰對,填寫選票的內(nèi)容和自己的地址,然后點擊投票按鈕,成功投票的信息見圖7。

圖7 參與投票成功

投票者在投出選票的同時,調(diào)用底層加密算法對選票進(jìn)行加密處理,并使用投票者的私鑰對選票信息進(jìn)行簽名,然后通過節(jié)點將選票廣播到區(qū)塊鏈中,至此成功參與投票,投票成功的信息見圖8。

圖8 成功投出選票

在到達(dá)系統(tǒng)預(yù)設(shè)的投票截止時間后,投票流程結(jié)束,將觸發(fā)計票智能合約,智能合約將根據(jù)選票中附帶的Token 值來判斷選票的有效性。若選票有效,則保留選票并統(tǒng)計內(nèi)容;若選票無效,則丟棄選票。最后將所有有效票數(shù)進(jìn)行統(tǒng)計并發(fā)布計票結(jié)果。計票智能合約的運行結(jié)果如圖9所示。

圖9 計票合約運行成功

投票者投出自己的選票后,在到達(dá)投票結(jié)束時間之后,可以通過查看投票結(jié)果模塊查看和校驗該次投票的結(jié)果,查看投票結(jié)果的信息見圖10。

圖10 查看投票結(jié)果

上述仿真實驗表明該文提出的基于區(qū)塊鏈的電子投票方案可以在去中心化的環(huán)境下實現(xiàn),可以順利完成發(fā)起投票、投票、計票和查看結(jié)果的流程。

7 結(jié)語

該文針對目前電子投票系統(tǒng)存在的重復(fù)投票、數(shù)據(jù)不公開透明和存在隱私風(fēng)險等問題,提出了基于區(qū)塊鏈的電子投票方案。該方案實現(xiàn)了基于非對稱加密機制的區(qū)塊鏈電子投票身份驗證方法,采用在選票中附加Token 的方法解決投票權(quán)認(rèn)定的問題,利用環(huán)簽名技術(shù),能夠在不暴露投票者匿名地址與相關(guān)選票關(guān)系的情況下,所有參與方都能完成對投票結(jié)果的審計,設(shè)計了面向電子投票的區(qū)塊鏈結(jié)構(gòu),在分析電子投票實際使用需求的基礎(chǔ)上,結(jié)合區(qū)塊鏈的特性,設(shè)計實現(xiàn)了面向電子投票的區(qū)塊鏈結(jié)構(gòu)。最后,通過設(shè)計投票智能合約在以太坊平臺上進(jìn)行了仿真實驗,仿真結(jié)果表明所提出的基于區(qū)塊鏈的電子投票方案是可行的、正確的。

猜你喜歡
投票者身份驗證以太
車易鏈:做汽車業(yè)的“以太坊”
微信投票亂局與治道變革
人臉識別身份驗證系統(tǒng)在養(yǎng)老保險生存核查中的應(yīng)用
A Study on the Contract Research Organization
百通推出入門級快速工業(yè)以太網(wǎng)絡(luò)交換器系列
Endogenous neurotrophin-3 promotes neuronal sprouting from dorsal root ganglia
以太互聯(lián) 高效便捷 經(jīng)濟、可靠、易用的小型可編程控制器
英國人家有空房少拿養(yǎng)老金
ASP.NET中的Forms身份驗證的研究
塔利班割鼻懲罰投票者