


摘 要:【目的】針對匿名電子投票中簽名算法非國產化、身份隱私泄露、重復投票、投票結果提前泄露的安全性問題,提出了基于SM2可鏈接環簽名的匿名電子投票系統。【方法】以SM2可鏈接環簽名作為選票中的身份憑證,保證投票者身份匿名,同時規避了選票被偽造的可能,實現投票者身份和選票的全過程匿名性;使用匿名地址來隱藏選票內容,避免投票結果提前泄露,實現投票的公正性和候選人身份匿名;利用SM2可鏈接環簽名的可鏈接性來防止重復投票,實現投票的不可重復性;應用FISCO BCOS智能合約來完成計票過程,避免傳統可信第三方的約束,實現投票的公平性。【結果】該設計滿足電子投票的七大基本屬性,實現了匿名電子投票系統的全流程國密替代,豐富了SM2可鏈接環簽名的應用場景。【結論】SM2可鏈接環簽名能替代國際通用環簽名,實現應用系統環簽名國產化。
關鍵詞:SM2可鏈接環簽名;國密算法;隱私保護;匿名電子投票;匿名地址
中圖分類號:TP391" " "文獻標志碼:A" " 文章編號:1003-5168(2024)20-0020-06
DOI:10.19968/j.cnki.hnkj.1003-5168.2024.20.004
The Application of SM2 Linkable Ring Signature in Anonymous
E-voting System
Abstract:[Purposes] To address the security issues related to non-localization of signature algorithms, identity privacy disclosure, repeated voting, and early disclosure of voting results in anonymous e-voting, an anonymous e-voting scheme based on SM2 linkable ring signatures is" proposed.[Methods] The system employs SM2 linkable ring signature as the identity certificate in the ballot to ensure the anonymity of the voter's identity and prevent ballot forgery, thereby enhancing the understanding of voter anonymity and the entire voting process. It also employs anonymous addresses to conceal ballot contents, preventing premature disclosure of voting results and ensuring fairness in the vote as well as candidate anonymity. In addition, it utilizes the linkability of SM2 linkable ring signature to prevent duplicate voting and achieve non-repeatability of votes.Furthermore, it leverages FISCO BCOS smart contracts for vote counting, ensuring fairness without relying on traditional trusted third parties.[Findings] The scheme meets the seven fundamental attributes of e-voting, achieves the complete process of replacing national secrets in an anonymous e-voting system,enhances the application scenario of SM2 linkable ring signature.[Conclusions] The SM2 linkable ring signature has the potential to replace the international common ring signature and enable independent localization of application system ring signatures.
Keywords: SM2 linkable ring signature; national secret algorithm; privacy protection; anonymous electronic voting; anonymous addresses
0 引言
環簽名能實現匿名身份認證,將簽名者的真實身份隱藏于環中,以保護用戶真實身份隱私[1]。環簽名具有無條件匿名性、自發性、靈活性、去中心化的特征,這些特點使得環簽名適合在需要隱藏投票者身份信息的匿名電子投票系統中應用。
去中心化是環簽名和區塊鏈的共同特征,將環簽名的無條件匿名性和區塊鏈的不可更改性、可溯源性相結合,并應用于電子投票系統中,能同時實現投票者匿名性和投票結果不被篡改。這樣一方面解決了傳統投票方式帶來的中心服務器可能丟失選票數據的問題;另一方面保護了投票者的數據隱私,提高投票的公平性與安全性[2]。因此,將環簽名和區塊鏈相結合的匿名區塊鏈電子投票系統能夠解決傳統投票中選民身份信息泄露、重復投票、虛假投票的限制,是匿名電子投票的發展方向。
鄭劍等[3]提出基于一次性環簽名的區塊鏈電子投票方案,引入一次性環簽名解決了投票者匿名、重復投票、公開驗證等問題,但該方案采用ED25519簽名算法,存在被偽造的安全風險,未能實現方案簽名算法國產化;范家幸等[4]提出了一種基于門限環簽名的分級匿名表決方案,但該方案安全性是基于安全傳輸通道實現的,在正常通道中表決決議可能會被敵手截獲,方案安全性不足;謝佳等[5]提出了一種基于身份的格基可鏈接環簽名方案,通過使用效率更高的陷門生成技術和雙峰高斯下的拒絕采樣技術,使方案在簽名生成和驗證過程的時間開銷更小,但該方案公鑰尺寸過大,系統工作效率不高。
綜上所述,基于環簽名的匿名電子投票存在國產化程度不高、安全性不足、公鑰尺寸過大、惡意用戶進行重復投票影響最終投票結果的問題。
可鏈接環簽名具有可鏈接性,在保持簽名者身份匿名性的同時,允許任何人驗證兩個或多個不同的環簽名是否由同一簽發者所創建[6-7]。因此,可鏈接環簽名能有效避免參與者重復投票,保證選票的唯一合法性,規避了身份唯一性憑證被偽造的可能,彌補了環簽名中可鏈接性和匿名性無法同時達到的弊端,是在自組織網絡中作為匿名認證工具的最佳候選方式[8]。LSAG是第一個可鏈接環簽名方案,利用 LSAG 構建的投票系統能夠同時確保選民身份匿名性和避免重復投票[9]。基于SM2數字簽名算法的可鏈接環簽名方案實現了可鏈接環簽名的國產化,滿足正確性、不可偽造性、無條件匿名性、可鏈接性和不可誹謗性[9],效率分析表明,SM2可鏈接環簽名方案的通信量和計算量均與環成員數量呈線性關系,具有安全性高、實現簡單、易驗證的特點,為環簽名應用系統的國產化替代奠定了理論基礎。
為實現我國密碼技術的自主可控,實現匿名電子選舉系統全流程國產化,本研究以SM2可鏈接環簽名作為選票中的身份憑證,保證投票者身份匿名的同時,規避了選票被偽造的可能,實現投票者身份和選票的全過程匿名性,解決ED25519簽名算法偽造簽名的問題,豐富SM2算法的應用場景;使用匿名地址來隱藏選票內容,避免投票結果提前泄露,實現投票的公正性和候選人身份匿名;應用SM2可鏈接環簽名的可鏈接性能防止重復投票,實現投票的不可重復性,解決電子選舉重復投票問題;應用FISCO BCOS智能合約完成計票過程,避免了傳統可信第三方的約束,實現投票的公平性。
1 SM2可鏈接環簽名
環簽名進行簽名時,簽名者只需要用自己的私鑰和其他成員的公鑰就能實現,無需成員環中其他成員協作,甚至可以不讓環中其他成員知曉。驗證簽名時,驗證者僅可驗證簽名來自群組成員,只能知道簽名值出自環中某一成員, 但不能確定真實的簽名者,這意味著環簽名沒有揭示簽名者身份[9],具有無條件匿名性,能夠保證簽名者身份信息隱私。環簽名所有成員是自發成環的,具有自發性,因此環簽名的創建過程具有靈活性,不再擁有最終可以揭示實際簽名者身份的管理者,具有去中心化的特征。
可鏈接環簽名能夠同時實現可鏈接性和匿名性,實現可監管的身份隱私保護[10]和防止重復簽名,可通過RSA簽名、ED25519簽名、SM2簽名、SM9簽名等多種算法來實現[11-13]。
SM2可鏈接環簽名具有密碼復雜度高、儲存空間小、簽名速度快的優點,包括五個算法: 系統初始化算法(Setup(λ)→params)、密鑰生成算法(KeyGen(λ)→(PK,sk))、可鏈接環簽名生成算法(LRSign(M,n,S,skπ)→(σπ,Qπ))、可鏈接環簽名驗證算法(LRVerify(parama,M,S,σ,Qπ)→accept/reject)、可鏈接環簽名鏈接算法(Link(S,M1,σ1,Q1,,M2,σ2,Q2)→linked/unlinked)。
①LRSign:輸入消息M、n個成員組成的公鑰集合S={PK1,PK2,·…,PKn}以及簽名者私鑰skπ(1≤π≤n),輸出簽名值σπ 和鏈接標簽Qπ。
②LRVerify:輸入系統參數 params、簽名消息M、S、σπ、Qπ,若(σπ,Qπ)是關于M的有效簽名,則輸出accept;否則輸出reject。
③Link:輸入S、兩個不同的簽名消息M1、M2及其分別對應的可鏈接環簽名(σ1,Q1)、(σ2,Q2),若σ1、σ2是有效的環簽名,且有相同的鏈接標簽Q1=Q2,輸出linked,否則輸出unlinked。
2 基于SM2可鏈接環簽名的匿名電子投票系統
電子投票系統由審查選民資格的登記合約、收集選票的投票合約、統計選舉結果的計票合約組成。投票活動可分為三個階段:選民登記階段、匿名投票階段、驗票計票階段。選民登記階段,登記合約與選民進行互動,以確定合格選民的群體;投票階段,合格的選民構建公鑰環,進行投票,將其選票送到投票合約;驗票計票階段,驗票合約清點選票,去除重復投票、非法投票,計票并公布結果。
本研究設計的系統由信任機構 CA、選民、選舉機構三部分組成,選舉機構實現登記合約、投票合約、計票合約,具體的工作時序圖如圖1所示。
2.1 選民登記
選民從CA獲取或預先生成自己的公私鑰對(ski,PKi),1≤i≤n,并向選舉機構提交相關身份證明和公鑰PKi,注冊成為投票者。選舉機構對注冊選民審查合格后,返回對應注冊碼IDi,并將公鑰PKi加入可信公鑰列表PL=((ID1,PK1),…,(IDA,PKA),…,(PKn,PKn))。
與此類似的,候選者C從CA獲取或預先生成自己的兩對公私鑰對,記為(ask1,APK1)、(bsk1,BPK1),向選舉機構提交相關身份證明和公鑰對(APK1,BPK1),注冊成為候選者;選舉機構對候選者資格審查合格后返回對應注冊碼IDc,并將對應公鑰對加入候選者可信公鑰對列表CPL=((IDc1,APK1,BPK1),…,(IDcn,APKn,BPKn))。
登記階段結束后,選舉機構將PL、CPL存儲到區塊鏈公示,接受選民、候選者的公開驗證。該系統要求所有的投票者、候選者都使用SM2生成公私鑰對。
2.2 匿名投票
投票時,投票者對選票進行環簽名,并通過選舉機構將簽名信息和選票寫到區塊鏈上。當驗證者在區塊鏈上驗證簽名時,僅可獲取發布到鏈上的選票,卻無法獲取簽名者真實身份信息,從而保證簽名者身份的真實性和匿名性,實現投票者身份信息的隱私保護。
在投票期限內,合法選民才能進行投票。以選民Alice投票給候選者Bob為例,投票時應遵守如下協議。
①投票。Alice使用IDA登錄選舉機構,瀏覽區塊鏈上的所有候選人信息,給Bob投票,選票內容為Bob的IDB,生成選票M=(IDB)。
②生成選票匿名地址。選票需要公開存儲在區塊鏈上,為了使任何人或機構都無法在計票階段前通過統計公開的選票而獲得投票結果,破壞投票的公正性,需要對選票中被選舉人信息進行隱藏,并在計票階段才進行公開。為此,該系統使用匿名地址[14]來處理選票,實現被選舉人匿名。
Alice根據IDB在CPL中查找對應公鑰對(APKB,BPKB),然后選擇一個隨機數r,計算RB= rG、PB=SM3(rAPKB)G+BPKB ,生成對應的匿名地址(RB,PB) ,修改選票M=(RB,PB)。
選舉機構雖然可以知道(APK1,BPK1),但不知道Alice選擇的隨機數r,因此無法偽造(RB,PB),不會影響選舉結果。
③生成簽名公鑰環。Alice瀏覽可信公鑰列表PL,自主選擇(n-1)個公鑰,構建投票者的公鑰環S=(PK1,PK2,…,PKA,…,PKn),PKA=PKπ,Alice為S中第π(1≤π≤n)個用戶。
④生成選票的可鏈接環簽名。Alice執行SM2的LRSign算法,隨機選取α,si∈Zq*,i∈{π+1,…,n,1,…,π-1},生成選票M=(RB,PB)的環簽名[σπ]和簽名標簽Qπ。
算法1:LRSign(M,n,S,skπ)→(σπ,Qπ)
{[Lπ=αG; ][Rπ=αSM3(S);][ cπ+1=SM3(m, Lπ, Rπ);] [Qπ=skπSM3(S);]
for i" in" (π+1,…n,1,2,…π-1)" do
{[Li=siG+(si+ci)PKi];
[Ri=siSM3(PKi)+(si+ci)Qπ];
[ci+1=SM3(S, Qπ , M, Li, Ri)]}; //記c1=cn+1;
[sπ=(1+skπ)-1 (α-cπskπ) mod Qπ];
[σπ=(Qπ,c1,s1,....,sn)]; return Qπ,σπ }
⑤生成正式選票。系統組合上述結果,生成選票M=(RB,PB,σπ,Qπ,timestamp)。使用選舉機構公鑰PKv來加密簽名選票M,從而生成正式選票PKv(M),并發布到區塊鏈,保證其不能被進一步改變。
每個選民以加密形式將其填寫好的選票,并存儲到區塊鏈,這樣每個選民都能自己驗證選票被記錄,保證了選民的選舉權利不被有意或無意剝奪。
選舉機構不能通過重新排列(RB,PB)和(σπ,Qπ)偽造選票,為特定候選者增加票數,從而影響選舉公正性。因為選舉機構雖然知道(RB,PB),但不知道Alice隨機選取α,新計算的(σπ,Qπ)與原有(σπ,Qπ)不一致,無法通過合法性驗證。
投票結束前,第三方沒有選舉機構私鑰不能解密選票,選舉機構不允許解密選票,每個選民的選舉結果都受到保護,不被其他人知道,保護了選民的身份隱私。
2.3 驗票計票
2.3.1 驗票。選舉機構必須對所有的選票使用自己的私鑰解密后才能進行合法性驗證和重復投票驗證,防止不合法投票或者重復投票的情況出現,保證選票的唯一合法性。
①合法性驗證。為了保證選票的唯一合法性,選舉機構對選票列表{σ1,σ2,…,σn}使用SM2的LRVerify算法驗證每張選票c1=cn+1是否成立。成立則投票合法且沒有被篡改,選票有效;否則,選票非法或被篡改,應予以作廢。
任何人只要擁有所有參與環簽名的成員的公鑰,都可以對環簽名進行驗證,具有公開透明性。
算法2:LRVerify(parama,M,S,σ,Q)→accept/reject
{for (i=1,i≤n,i++)
{[Li=siG+(si+ci)PKi];
[Ri=siSM3(PKi)+(si+ci)Q;]}
if" (cn+1==c1) then" return(accept)
else" return(reject)" }
②可鏈接性驗證。為了防止重復投票,選舉機構必須在進行合法性驗證正確后,進一步對所有選票使用SM2的Link算法進行兩兩比對,去除重復投票。
用戶重復投票可分為兩種情況,即對同一候選人兩(多)次投票和對兩(多)個候選人分別投票。無論哪種情況,由LRSign算法可知:計算[Qπ=skπSM3(S)]時使用的私鑰skπ相同,鏈接標簽Q1=Q2;且σ1、σ2雖然不等,但都能通過SM2的LRVerify算法驗證,為有效環簽名。因此,Link算法將返回linked,說明用戶重復投票,此時應保留時間戳靠前的選票,作廢時間戳靠后的選票,保證一人一票,杜絕重復投票。
2.3.2 計票。選舉機構對所有的選票驗票結束后,進行計票,完成計票后在區塊鏈公開投票結果。
選票包含的候選者用匿名地址(RB,PB) 表示,為獲取其中包含的候選人信息需要所有候選者公開自己的私鑰(ask,bsk)構成私鑰列表skl={(ask1,bsk1),…,(askn,bskn)}公布到區塊鏈上。
計票階段,選舉機構收集所有候選者私鑰,生成skl,計算私鑰xB=SM3(askBRB)+bskB。如果選票屬于候選者Bob則有:
xBG=(SM3(askBRB)+bskB)G
=SM3(askB(rG))G+bskBG
= SM3(rAPKB)G+BPKB=PB成立。
因此,只要計算xBG=PB成立,說明Bob獲得1票,Bob得票數加1。
由于計票階段所有候選者的私鑰都是公開的,所以投票結束后,任何人都可以自己驗證選舉結果,保證了選舉結果的正確性和可驗證性。
3 系統分析
3.1 安全屬性分析
本研究提出的系統產生的正式選票Pv(M)內容為可鏈接簽名后的投票信息和匿名地址,應滿足以下安全屬性。
①選民身份全程匿名。第三方沒有選舉機構的私鑰無法解密正式選票,因而無法獲取選民身份。選舉機構能夠解密正式選票,根據環簽名來確認選民身份的合法性,但SM2可鏈接環簽名的無條件匿名性保證了選民真實身份隱私,選舉機構不知道選民的真實身份。
②計票前,被選舉候選人匿名。匿名地址(RB,PB)只有使用Bob私鑰才能進行驗證,選舉機構沒有Bob私鑰,因而無法知道Alice選舉了誰,并且選票隱藏了被選舉人信息,保證了公眾無法獲得中間結果。實現選舉結果的公正性和選票的隱私性,確保整個選舉過程公平公正。
③保證選票內容的機密性、完整性。在選票傳輸過程,第三方因沒有選舉機構的私鑰而無法解密正式選票,選票內容具有機密性,傳輸具有機密性;選舉階段,選舉機構雖然能夠解密正式選票,看到選票內容,但因沒有選民私鑰無法篡改選票內容,選票存儲在區塊鏈上,難以篡改,選票內容具有完整性。
④只有組成一次性環簽名的合法選民才能進行投票,因此,在SM2可鏈接環簽名過程中,同時進行了選民資格性審查。這保證了投票者都是通過合法認證的選民,阻止了未經授權的實體進行投票。
⑤禁止無效選票,實現健全性、不可重復性。選民使用SM2可鏈接環簽名簽署了可公開驗證的加密選票,重復投票會導致簽名具有鏈接性,選舉機構能夠識別并根據時間戳來去除重復投票和無效投票,有效選票都會被計入,保證選票的唯一合法性,防止了重復投票的問題;第三方篡改選票內容將導致解密失敗,選票無效被去除,保證了選票具有健全性。
⑥投票可驗證。投票者可通過比較從區塊鏈獲取的正式選票Pv(ticket)和本機ticket產生的Pv(ticket),來確認自己的投票是否正確;計票階段所有人都可以計票,確認選舉結果。
綜上所述,本研究的系統滿足電子投票的七大安全屬性(完整性、可靠性、隱私性、不可重復性、資格性、公平性、可驗證性)。其中,完整性要求所有有效的選票都要得到正確的清點;可靠性要求所有無效的選票都不應被計算在內;隱私性意味著所有選票都應該保密,直到所有選票被收集并準備清點;不可重復性阻止任何選民投票兩次或兩次以上;資格性阻止了未經授權的實體進行投票;公平性要求沒有什么能影響到結果;可驗證性確保了投票結果是可公開驗證的。
本研究系統使用FISCO BCOS實現,是國內首個安全可控、可商用的開源區塊鏈技術平臺。運行BCOS上的智能合約,可以實現對選票解密、統計等業務需求,從而代替傳統的第三方可信平臺(TTP),通過智能合約來自動計票并將結果上傳至區塊鏈,實現投票的透明性和公平性。
3.2 簽名通信量
本研究的系統SM2可鏈接環簽名輸出的簽名值為 (Q,c1,s1,s2,…,sn), 其中c1,si(i =1,2,…,n) ∈ Z*。以|p|表示使用的大素數p的位數,|G|表示群G中元素的位數,可得SM2環簽名的通信量為(n+1)|p| + |G|, 說明系統通信量與環成員數量 n呈線性關系。
設|p|=512,|G| =256,通信量與環簽名成員數量關系如圖2所示。由圖2可知,隨著環成員個數n的增加,本研究系統簽名通信量與文獻[3]中的方案相比增速較慢,略優于文獻[15]方案,這有益于提高方案通信效率,保證投票實時性。
3.3 簽名計算量
SM2可鏈接環簽名過程中, 計算鏈接標簽Q需要1次SM3運算、1次點乘運算;生成cπ+1時需要2次點乘運算、1次SM3運算,生成其他n-1個ci(1≤i≤n) 時需要4n-4次點乘運算、2n-2次點加運算、n-1次SM3運算, 最后生成sπ時需要1次Zq上逆運算;驗證過程需要n次SM3運算、2n次點加運算、4n次點乘運算。計算量對比見表1。
由表1可知,本研究系統的計算量與文獻[15]中的方案相當,與文獻[3]方案相比,點乘運算有所減少,這能有效提高方案執行效率。
4 結語
應用系統的國密替代是保證我國應用系統信息安全的基本要求,本研究將國密SM2可鏈接環簽名成功應用于匿名電子投票,提出了一種基于SM2環簽名算法的匿名電子投票系統,滿足電子投票的七大基本屬性,實現了匿名電子投票系統全流程國密替代,豐富了國密算法的應用場景,為國產應用系統簽名算法實現國密替代進行了探索。
參考文獻:
[1] RIVEST R L, SHAMIR A, TAUMAN Y. How to leak a secret[C]//Proc of International Conference on the Theory and Application of Cryptology and Information Security.Berlin: Springer, 2001: 552-556.
[2]蘭祥,郭瑞,王俊茗.電子投票系統中基于區塊鏈的無證書環簽密方案[J].計算機工程與應用,2024,60(16):288-301.
[3] 鄭劍,賴恒財.基于一次性環簽名的區塊鏈電子投票方案[J].計算機應用研究,2020,37(11):3378-3381,3391.
[4] 范家幸,王志偉.基于門限環簽名的分級匿名表決方案[J].計算機科學,2022,49(1):321-327.
[5] 謝佳,王露,劉仕釗,等.隨機預言機模型下基于身份的格基可鏈接環簽名[J].計算機科學與探索,2024,18(8):2190-2202.
[6] LIU J K,AU M H,SUSILO W,et al.Linkable Ring Signature with Unconditional Anonymity[J].IEEE Transactions on Knowledge amp; Data Engineering, 2014, 26(1):157-165.
[7]LIU J K, WEI V K, WONG D S. Linkable spontaneous anonymous group signature for ad hoc groups[C]//Proceedings of the 9th Australasian Conference on Information Security and Privacy, Sydney, Jul 13-15, 2004. Berlin, Heidel berg: Springer, 2004: 325-335
[8]孫晗.可鏈接環簽名方案的研究[D].蘭州:西北師范大學,2019.
[9] 范青, 何德彪, 羅敏, 等. 基于 SM2數字簽名算法的環簽名方案[J]. 密碼學報, 2021, 8(4): 710-723.
[10]宋靖文,張大偉,韓旭,等.區塊鏈中可監管的身份隱私保護方案[J].軟件學報,2023,34(7):3292-3312.
[11]王伊婷,萬武南,張仕斌,等.基于SM9算法的可鏈接環簽名方案[J/OL].計算機應用,1-13[2024-05-06].http://kns.cnki.net/kcms/detail/51.1307.TP.20240301.1525.019.html.
[12]于天嬌,曹春杰,王隆娟,等.基于聯盟鏈的匿名電子投票方案[J].網絡空間安全,2019,10(12):22-29.
[13]謝佳,劉仕釗,王露,等.環簽名技術研究進展及展望[J].計算機科學與探索,2023,17(5):985-1001.
[14]林定康,顏嘉麒,巴·楠登,等.門羅幣匿名及追蹤技術綜述[J].計算機應用,2022,42(1):148-156.
[15] 包子健,何德彪,彭聰,等.基于SM2數字簽名算法的可否認環簽名[J].密碼學報,2023,10(2):264-275.