王應(yīng)娥 李 沓 楊科迪 田有亮*
(1 貴州城市職業(yè)學(xué)院大數(shù)據(jù)學(xué)院,貴州貴陽 550025;2 貴州大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,貴州貴陽 550025)
電子投票克服了傳統(tǒng)紙質(zhì)投票中計票效率低、投票結(jié)果不準(zhǔn)確等問題而受到研究者的廣泛關(guān)注。近年來隨著互聯(lián)網(wǎng)設(shè)備的迅速發(fā)展,電子投票通過利用密碼學(xué)技術(shù)和互聯(lián)網(wǎng)平臺進(jìn)一步保證了投票機(jī)制的公平性和安全性,在民主選舉、企業(yè)投票、方案征集等領(lǐng)域得到了廣泛的應(yīng)用。
電子投票的概念在1981年由喬姆(Chaum)首次提出[1],此后在全世界范圍內(nèi)引起廣泛的關(guān)注。1992 年,藤岡(Fujioka)等提出了一個著名的電子投票協(xié)議(FOO)[2]。該協(xié)議利用了比特承諾、盲簽名等密碼學(xué)技術(shù),實現(xiàn)了電子投票系統(tǒng)的安全性和公平性。FOO協(xié)議引起了社會各界極大的關(guān)注,并被廣泛應(yīng)用于大規(guī)模投票中。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和網(wǎng)絡(luò)的開放性,眾多研究者不再滿足傳統(tǒng)電子投票協(xié)議的安全屬性,從而設(shè)計了不同密碼體制的電子投票方案。目前主要包括:基于混合網(wǎng)絡(luò)的電子投票方案[3-4]、基于盲簽名的電子投票方案[5-6]、基于秘密分享的電子投票方案[7-8]和基于同態(tài)加密的電子投票方案[9-10]。
電子投票提高了人們在互聯(lián)網(wǎng)環(huán)境下的生活質(zhì)量,隨著電子投票方案實際應(yīng)用的需求和安全要求的進(jìn)一步提高,構(gòu)建更靈活的電子投票方案已成為新的研究方向。2017 年,塔拉索夫(Tarasov)等[11]提出了電子投票未來發(fā)展的新方向,并介紹了一種在保持交易私密的前提下實現(xiàn)選舉透明和安全的協(xié)議。2018 年,代小康等[12]提出了一種基于同態(tài)門限密碼體制的投票協(xié)議,通過投票參與方相互監(jiān)督,移除了可信第三方,實現(xiàn)了投票協(xié)議的健壯性、匿名性、合法性和可驗證性。2021年,尚卡(Shankar)等[13]提出了一種基于身份加密的隱私保護(hù)電子投票云系統(tǒng),能夠為在線電子投票應(yīng)用程序執(zhí)行提供安全數(shù)據(jù)傳輸。2019 年,劉(Liu)等[14]提出了一種基于秘密共享和k-匿名的無條件安全電子投票方案,既保證了選票的正確計票,又保證了每個投票者在不知道其他人信息的情況下驗證結(jié)果的正確性。從上述方案可知,安全性和可驗證性一直是制約電子投票發(fā)展的重要因素。因此,如何同時滿足電子投票協(xié)議的安全性和可驗證性,并提高其效率,使其在實際生活中得到大規(guī)模應(yīng)用仍是亟待解決的重要問題。
近年來,區(qū)塊鏈技術(shù)因其公開透明、不可篡改等特點迅速引起了眾多研究者的關(guān)注,區(qū)塊鏈中的智能合約能夠取代電子投票機(jī)構(gòu)中的可信第三方從而防止隱私泄露問題。因此,基于區(qū)塊鏈技術(shù)構(gòu)造的電子投票方案成為當(dāng)下研究的熱點[15]。2018 年,哈德威克(Hardwick)等[16]提出了一種基于區(qū)塊鏈技術(shù)的電子投票方案,該方案滿足了基本的電子投票特性,同時提供了一定程度的去中心化,并允許選民更改他們的投票。2017 年,蕭(Hsiao)等[17]將區(qū)塊鏈技術(shù)與秘密共享方案和同態(tài)加密相結(jié)合,以實現(xiàn)無需可信第三方的去中心化電子投票應(yīng)用。該方案保護(hù)了選民身份的匿名性、數(shù)據(jù)傳輸?shù)碾[私性和選票的可驗證性。2019年,左(Tso)等[18]提出了一個基于區(qū)塊鏈和智能合約的去中心化電子投票和投標(biāo)系統(tǒng),在該系統(tǒng)中,作者使用不經(jīng)意傳輸和同態(tài)加密等密碼技術(shù)來提供隱私保護(hù)。2020 年,鄭劍等[19]采用一次性環(huán)簽名、匿名地址并結(jié)合以太坊區(qū)塊鏈技術(shù),提出了能夠滿足透明度和隱私性的電子投票方案。2021年,邵清等[20]基于蓋莫爾(Elgamal)的強(qiáng)盲簽名算法和不可鏈接支付技術(shù),提出了一種新的電子投票方案,并引入?yún)^(qū)塊鏈技術(shù)保證了選票的隱私性、投票者的匿名性。上述基于區(qū)塊鏈的電子投票方案在一定程度上解決了安全性問題,去除了可信第三方帶來的隱私威脅,但是往往需要結(jié)合復(fù)雜的密碼體制,因此無法滿足電子投票在大規(guī)模應(yīng)用的效率。
鑒于上述分析,本文提出了一種基于橢圓曲線公鑰密碼算法(SM2)盲簽名的電子投票方案,通過改進(jìn)的輕量級SM2盲簽名算法實現(xiàn)電子投票的安全性和可驗證性,同時引入?yún)^(qū)塊鏈技術(shù)保證了選票過程的公開透明,智能合約實現(xiàn)計票的高效化。
SM2算法是由中國自主研發(fā)并由國家密碼管理局發(fā)布的公鑰密碼算法,其中,簽名算法性能高效,安全性高,更加適用于電子投票場景中。SM2簽名算法的具體描述如下:
1.1.1 簽名
設(shè) A 發(fā)簽名消息 M 給 B,IDA是 A 的標(biāo)識符,ENTLA是 IDA的長度,dA是 A 的私鑰,基點 G=(xG,yG),A的公鑰PA=dA·G=(xA,yA).ZA=H(ENTLA‖IDA‖a‖b‖xG‖yG‖xA‖yA),H是SM3算法。
(1)設(shè)置M*=ZA‖M并計算e=H(M*)。
(2)產(chǎn)生隨機(jī)數(shù)k∈[1,n-1]。
(3)計算橢圓曲線點G1=k·G=(x1,y1)。
(4)計算 r=(e+x1)mod n,若 r=0 或 r+k=n 則返回b。
(5)計算s=(1+dA)-1(k-r·dA)mod n=(1+dA)-1(k+r)-rmod n,若s=0則返回b。
(6)以(r,s)作為對消息M的簽名。
1.1.2 驗證
接收到的消息為M',簽名為(r',s')和發(fā)送者A的公鑰PA,B執(zhí)行如下步驟驗證合法性:
(1)檢驗r'∈[1,n-1]是否成立,若不成立則驗證不通過。
(2)檢驗s'∈[1,n-1]是否成立,若不成立則驗證不通過。
(3)設(shè)置M*=ZA‖M'。
(4)計算e'=H(M*)。
(5)計算 t=(r'+s')mod n,若 t=0,則驗證不通過。
(6)計算橢圓曲線點(x1',y1')=s'·G+t·PA。
(7)計算v=(e'+x1')mod n,檢驗v=r'是否成立,若成立則驗證通過;否則驗證不通過。
隨著實際應(yīng)用需求,電子投票方案受到越來越多研究者的關(guān)注,蒲等[21]說明了一個完整的電子投票系統(tǒng)所需的基本安全需求,本文在該文的基礎(chǔ)上提出了電子投票協(xié)議需滿足更多的安全特性,如下所示:
(1)完整性:整個投票過程的每個階段都能夠順利進(jìn)行,并最終得到投票結(jié)果。
(2)正確性:投票者投票階段,可能會出現(xiàn)一些無效選票,因此電子投票系統(tǒng)要排除此類選票的干擾,保證進(jìn)入計票階段的選票都是真實、合法的,從而得到一個正確的選舉結(jié)果。
(3)唯一性:防止投票者一票多投。
(4)機(jī)密性:投票者所投的票需被保密。
(5)合法性:只有通過身份認(rèn)證才能成為正式的投票者。
(6)公平性:沒有人知道投票的中間結(jié)果。
(7)可驗證性:投票結(jié)束后,投票者可以驗證自己的投票是否被系統(tǒng)正確統(tǒng)計,防止投票系統(tǒng)被腐化。
(8)不可追蹤性:簽名者無法從選票中知道投票者的真實身份。
(9)高效性:投票和計票階段的系統(tǒng)工作效率高。
本部分基于SM2簽名機(jī)制構(gòu)建一種輕量級盲簽名算法,該算法由設(shè)置(Setup)、注冊(KeyGen)、標(biāo)志(Sign)及驗證(Verify)四個部分組成,具體如下:
生成SM2簽名算法的公開參數(shù)是(q,F(xiàn)q,n,G,H),其中q為大素數(shù),F(xiàn)q為包含q個元素的有限域,G為橢圓曲線上階為n的一個基點,H為SM3雜湊函數(shù);
隨機(jī)選取x∈[1,n-1]作為簽名者的簽名私鑰,計算相應(yīng)公鑰P=x·G,得到簽名者的簽名密鑰對(sk,pk)=(x,P)。
消息M 的盲簽名由簽名者與驗證者交互完成,該過程如圖1所示。
圖1 基于SM2的盲簽名算法交互過程
從圖 1 可見,其涉及“準(zhǔn)備”“盲化”“盲簽”與“解盲”四個步驟,具體如下:
(1)準(zhǔn)備:簽名前簽名者基于SM2簽名算法的步驟b、c構(gòu)建簽名所需的隨機(jī)變量。
首先隨機(jī)選取k∈[1,n-1],然后計算臨時變量K=k·G,最后將K發(fā)送給驗證者。
(2)盲化:驗證者收到K 后,隨機(jī)選取α∈[1,n-1],計算K'=α·K=(rx,ry);基于SM2 簽名算法的步驟a 計算待簽名消息M 的哈希值e,r=rx+emod n;計算盲化的消息r'=α-1r,并將其發(fā)送給簽名者。
(3)盲簽:簽名者收到r'后,基于SM2 簽名算法的步驟e 計算出臨時盲簽名消息s'=(1+x)-1(k-r'x)mod n=(1+x)-1(k+r')-r',并 將 s'發(fā) 送 給 驗證者。
(4)解盲:驗證者收到s'后計算s=α·s'并輸出解盲的簽名消息(r,s)。
基于SM2的驗證算法對解盲的簽名消息(r,s)進(jìn)行驗證。若驗證通過則輸出1,否則輸出0。
本節(jié)將講述如何基于構(gòu)建的輕量級SM2盲簽名算法實現(xiàn)高效公平的電子投票。
為實現(xiàn)電子投票的安全運行,系統(tǒng)引入?yún)^(qū)塊鏈替代可信第三方實現(xiàn)選票信息的發(fā)布和計票。投票者可以在區(qū)塊鏈上查看具體的選舉信息,區(qū)塊鏈公開透明的特性保證了計票的公平性和選票信息的不可篡改性。此外,為了保證投票者的隱私以及選票的可驗證性,我們利用基于SM2 的輕量級盲簽名算法對選票信息進(jìn)行驗證,保證選票的真實性和合法性。投票者投票時其他人無法查看投票者的個人身份,充分保證了電子投票的匿名性。本系統(tǒng)模型如圖2所示,由投票者、簽名者和區(qū)塊鏈三部分組成。
圖2 系統(tǒng)模型
(1)投票者:投票者具有合法投票資格,能根據(jù)選票內(nèi)容自主進(jìn)行投票,每個投票者都有一個唯一身份標(biāo)識符ID。
(2)簽名者:簽名者負(fù)責(zé)對合法選票進(jìn)行簽名,排除無效選票的干擾,并驗證選票的合法性。
(3)區(qū)塊鏈:區(qū)塊鏈負(fù)責(zé)對公開參數(shù)以及選舉信息的發(fā)布,并在投票結(jié)束后完成有效選票的統(tǒng)計。
本節(jié)利用第2小節(jié)設(shè)計的基于SM2的盲簽名算法完成對電子投票系統(tǒng)的設(shè)計,基于SM2 盲簽名的電子投票系統(tǒng)包括六個階段:系統(tǒng)初始化階段、選票生成階段、選票驗證階段、投票階段、計票階段和審計階段,具體設(shè)計步驟如下:
(1)系統(tǒng)初始化。系統(tǒng)初始化區(qū)塊鏈平臺,調(diào)用2.1節(jié)算法Setup(1λ)→Parm生成系統(tǒng)公開參數(shù),并在區(qū)塊鏈上設(shè)置選舉內(nèi)容及投票時間,投票者查看區(qū)塊鏈上的選舉內(nèi)容及投票時間并選擇投票,簽名者調(diào)用2.2 節(jié)的算法KeyGen(Parm)→(sk,pk)并根據(jù)參數(shù)生成公私鑰對(sk,pk)。
(2)選票生成。為保證選票的合法性,投票者將自己的身份發(fā)送給簽名者并調(diào)用2.3 節(jié)的算法Sign(sk,M)→(r,s),簽名者檢查投票者的身份信息是否符合規(guī)定且投票者的身份未曾用過,如果檢驗通過,簽名者利用算法Sign(sk,M)→(r,s)生成合法簽名的選票內(nèi)容并返還給投票者。
(3)選票驗證。投票者得到簽名后的選票后調(diào)用 2.4 節(jié)的算法 Verify(pk,(r,s),M)→0/1 驗證該選票簽名是否正確,若檢驗不通過,則認(rèn)為簽名者是惡意的,系統(tǒng)終止。
(4)投票。投票者隨機(jī)選擇一個整數(shù)U,計算H(m,U),然后將自己的選票內(nèi)容m、H(m,U)與簽名者的簽名打包一起發(fā)送給簽名者,簽名者驗證該簽名的合法性,若驗證通過,將選票內(nèi)容發(fā)送至區(qū)塊鏈進(jìn)行統(tǒng)計。
(5)計票。當(dāng)投票時間截止后,智能合約被觸發(fā),區(qū)塊鏈統(tǒng)計收到的選票內(nèi)容,并將選票的最終結(jié)果全網(wǎng)公布,由于區(qū)塊鏈的公開透明特性,因此保證了計票過程的公開性和不可篡改性。
(6)審計。計票階段完成后,所有的選票結(jié)果均在區(qū)塊鏈上公布,此時投票者可以查看自己的選票是否在其中。若投票者發(fā)起質(zhì)疑,則將自己的隨機(jī)數(shù)公布,任何人均可以計算H(m,U),若區(qū)塊鏈上不存在H(m,U),則認(rèn)為簽名者沒有將該投票者的選票發(fā)送至區(qū)塊鏈。
本文在1.2 小節(jié)提出了電子投票需滿足的基本安全屬性,本章將針對上述提到的安全屬性對設(shè)計的電子投票方案進(jìn)行安全性分析。
(1)完整性:由于區(qū)塊鏈不可篡改的特性,選票一旦發(fā)送到區(qū)塊鏈上便由智能合約自動統(tǒng)計,任何人都不能對其進(jìn)行修改和刪除,并且基于SM2 的盲簽名算法保證了任何人無法冒充簽名,因此方案滿足完整性。
(2)正確性:盲化過程中,r=rx+emod n,其中rx來自(rx,ry)=K’=α·K=αk·K,即r的簽名應(yīng)由SM2的αk·K所生成。解盲過程中,如s=αs’mod q=(1+x)-1(αk+r)-r mod q 公式所示,與原始 SM2 簽名相比,這里的αk對應(yīng)原始SM2簽名中的αk·K,即s與r是原始SM2 基于αk·K 對某消息的簽名。因此,(s,r)可以使用原始SM2的驗證算法來進(jìn)行驗證。
(3)唯一性:在選票生成階段,簽名者需要檢查投票者先前是否已經(jīng)投過票。重復(fù)投票的投票者將被檢測出來并視為無效票。所以一個投票者只能進(jìn)行一次投票,方案滿足唯一性。
(4)機(jī)密性:在選票生成階段,雖然簽名者看到了投票者的身份,但是我們利用了基于SM2 的盲簽名算法對選票內(nèi)容進(jìn)行了盲化,因此簽名者無法看到選票內(nèi)容。因此,方案保護(hù)了投票者的隱私,滿足機(jī)密性。
(5)合法性:在選票生成階段,投票者將自己的身份發(fā)送給簽名者,此時簽名者可以根據(jù)投票者的公鑰驗證其身份的合法性,如果該身份滿足唯一標(biāo)識符ID,則認(rèn)為是合法的投票者,因此方案滿足合法性。
(6)公平性。本文設(shè)計的電子投票系統(tǒng)引入了區(qū)塊鏈技術(shù),區(qū)塊鏈的公開透明特性可以保證公開參數(shù)與選舉內(nèi)容的真實性,同時智能合約作為良好的計票手段取代可信第三方,可以實現(xiàn)計票的準(zhǔn)確性與完整性,防止單點故障。因此,方案滿足公平性。
(7)可驗證性。在審計階段,投票結(jié)果公布在區(qū)塊鏈上且無法被篡改,任何一個人均可以驗證自己的選票是否被統(tǒng)計、被篡改,因此,方案滿足可驗證性。
(8)不可追蹤性。在投票階段,投票者將選票發(fā)送給簽名者進(jìn)行驗證,此時簽名者看到了選票內(nèi)容,但是不知道投票者的身份,因此無法將選票內(nèi)容與投票者聯(lián)系起來。因此,方案滿足不可追蹤性。
(9)高效性:本文所提出的方案是基于SM2的輕量級盲簽名,在選票生成階段能夠提高簽名的效率。此外,我們采用智能合約對選票進(jìn)行自動統(tǒng)計,能夠提高計票階段的效率,滿足在實際應(yīng)用中的高效性。
本文改進(jìn)的盲簽名算法以SM2為基礎(chǔ)進(jìn)行設(shè)計,為分析本算法的執(zhí)行效率,我們僅對盲簽名中的“準(zhǔn)備”“盲化”“盲簽”“解盲”四個部分進(jìn)行分析。為此我們以Gm表示G 上數(shù)與點的乘法運算,Za表示 Z 上的加法運算,Zm表示乘法運算,Zi表示求逆運算,并得出本簽名算法的復(fù)雜度如表1所示。
表1 基于SM2的盲簽名算法復(fù)雜度
此外,本文通過計算機(jī)編程語言(Java)實現(xiàn)所改進(jìn)的盲簽名算法,并對盲簽名的批量大小分別設(shè)置為10、20、30、40、50,所得時間消耗如圖3所示。
圖3 基于SM2的盲簽名時間開銷
從圖3 可以看出BlindPars 的時間消耗較大,但是維持在50ms 以內(nèi),能夠高效滿足實際應(yīng)用需求。
本文結(jié)合電子投票的實際需求,基于SM2 簽名算法提出了一種新的電子投票系統(tǒng)。設(shè)計的輕量級盲簽名算法,既保證了簽名者無法看到選票內(nèi)容,又實現(xiàn)了投票者在投票過程的匿名性。通過引入?yún)^(qū)塊鏈技術(shù)替代可信第三方防止隱私泄露和單點故障,并且利用智能合約提高了計票效率。從理論和實驗分析可知,我們所提出的電子投票方案不僅保證了基本的安全屬性,同時也提高了電子投票在實際應(yīng)用場景中的效率。