基于SM2盲签名的电子投票方案

2022-10-13 12:40王应娥杨科迪田有亮
六盘水师范学院学报 2022年4期
关键词:计票选票区块

王应娥 李 沓 杨科迪 田有亮*

(1 贵州城市职业学院大数据学院,贵州贵阳 550025;2 贵州大学计算机科学与技术学院,贵州贵阳 550025)

电子投票克服了传统纸质投票中计票效率低、投票结果不准确等问题而受到研究者的广泛关注。近年来随着互联网设备的迅速发展,电子投票通过利用密码学技术和互联网平台进一步保证了投票机制的公平性和安全性,在民主选举、企业投票、方案征集等领域得到了广泛的应用。

电子投票的概念在1981年由乔姆(Chaum)首次提出[1],此后在全世界范围内引起广泛的关注。1992 年,藤冈(Fujioka)等提出了一个著名的电子投票协议(FOO)[2]。该协议利用了比特承诺、盲签名等密码学技术,实现了电子投票系统的安全性和公平性。FOO协议引起了社会各界极大的关注,并被广泛应用于大规模投票中。随着互联网技术的发展和网络的开放性,众多研究者不再满足传统电子投票协议的安全属性,从而设计了不同密码体制的电子投票方案。目前主要包括:基于混合网络的电子投票方案[3-4]、基于盲签名的电子投票方案[5-6]、基于秘密分享的电子投票方案[7-8]和基于同态加密的电子投票方案[9-10]。

电子投票提高了人们在互联网环境下的生活质量,随着电子投票方案实际应用的需求和安全要求的进一步提高,构建更灵活的电子投票方案已成为新的研究方向。2017 年,塔拉索夫(Tarasov)等[11]提出了电子投票未来发展的新方向,并介绍了一种在保持交易私密的前提下实现选举透明和安全的协议。2018 年,代小康等[12]提出了一种基于同态门限密码体制的投票协议,通过投票参与方相互监督,移除了可信第三方,实现了投票协议的健壮性、匿名性、合法性和可验证性。2021年,尚卡(Shankar)等[13]提出了一种基于身份加密的隐私保护电子投票云系统,能够为在线电子投票应用程序执行提供安全数据传输。2019 年,刘(Liu)等[14]提出了一种基于秘密共享和k-匿名的无条件安全电子投票方案,既保证了选票的正确计票,又保证了每个投票者在不知道其他人信息的情况下验证结果的正确性。从上述方案可知,安全性和可验证性一直是制约电子投票发展的重要因素。因此,如何同时满足电子投票协议的安全性和可验证性,并提高其效率,使其在实际生活中得到大规模应用仍是亟待解决的重要问题。

近年来,区块链技术因其公开透明、不可篡改等特点迅速引起了众多研究者的关注,区块链中的智能合约能够取代电子投票机构中的可信第三方从而防止隐私泄露问题。因此,基于区块链技术构造的电子投票方案成为当下研究的热点[15]。2018 年,哈德威克(Hardwick)等[16]提出了一种基于区块链技术的电子投票方案,该方案满足了基本的电子投票特性,同时提供了一定程度的去中心化,并允许选民更改他们的投票。2017 年,萧(Hsiao)等[17]将区块链技术与秘密共享方案和同态加密相结合,以实现无需可信第三方的去中心化电子投票应用。该方案保护了选民身份的匿名性、数据传输的隐私性和选票的可验证性。2019年,左(Tso)等[18]提出了一个基于区块链和智能合约的去中心化电子投票和投标系统,在该系统中,作者使用不经意传输和同态加密等密码技术来提供隐私保护。2020 年,郑剑等[19]采用一次性环签名、匿名地址并结合以太坊区块链技术,提出了能够满足透明度和隐私性的电子投票方案。2021年,邵清等[20]基于盖莫尔(Elgamal)的强盲签名算法和不可链接支付技术,提出了一种新的电子投票方案,并引入区块链技术保证了选票的隐私性、投票者的匿名性。上述基于区块链的电子投票方案在一定程度上解决了安全性问题,去除了可信第三方带来的隐私威胁,但是往往需要结合复杂的密码体制,因此无法满足电子投票在大规模应用的效率。

鉴于上述分析,本文提出了一种基于椭圆曲线公钥密码算法(SM2)盲签名的电子投票方案,通过改进的轻量级SM2盲签名算法实现电子投票的安全性和可验证性,同时引入区块链技术保证了选票过程的公开透明,智能合约实现计票的高效化。

1 基础知识

1.1 SM2签名算法

SM2算法是由中国自主研发并由国家密码管理局发布的公钥密码算法,其中,签名算法性能高效,安全性高,更加适用于电子投票场景中。SM2签名算法的具体描述如下:

1.1.1 签名

设 A 发签名消息 M 给 B,IDA是 A 的标识符,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)设置M*=ZA‖M并计算e=H(M*)。

(2)产生随机数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')和发送者A的公钥PA,B执行如下步骤验证合法性:

(1)检验r'∈[1,n-1]是否成立,若不成立则验证不通过。

(2)检验s'∈[1,n-1]是否成立,若不成立则验证不通过。

(3)设置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'是否成立,若成立则验证通过;否则验证不通过。

1.2 电子投票

随着实际应用需求,电子投票方案受到越来越多研究者的关注,蒲等[21]说明了一个完整的电子投票系统所需的基本安全需求,本文在该文的基础上提出了电子投票协议需满足更多的安全特性,如下所示:

(1)完整性:整个投票过程的每个阶段都能够顺利进行,并最终得到投票结果。

(2)正确性:投票者投票阶段,可能会出现一些无效选票,因此电子投票系统要排除此类选票的干扰,保证进入计票阶段的选票都是真实、合法的,从而得到一个正确的选举结果。

(3)唯一性:防止投票者一票多投。

(4)机密性:投票者所投的票需被保密。

(5)合法性:只有通过身份认证才能成为正式的投票者。

(6)公平性:没有人知道投票的中间结果。

(7)可验证性:投票结束后,投票者可以验证自己的投票是否被系统正确统计,防止投票系统被腐化。

(8)不可追踪性:签名者无法从选票中知道投票者的真实身份。

(9)高效性:投票和计票阶段的系统工作效率高。

2 基于SM2的盲签名算法

本部分基于SM2签名机制构建一种轻量级盲签名算法,该算法由设置(Setup)、注册(KeyGen)、标志(Sign)及验证(Verify)四个部分组成,具体如下:

2.1 Setup(1λ)→Parm

生成SM2签名算法的公开参数是(q,Fq,n,G,H),其中q为大素数,Fq为包含q个元素的有限域,G为椭圆曲线上阶为n的一个基点,H为SM3杂凑函数;

2.2 KeyGen(Parm)→(sk,pk)

随机选取x∈[1,n-1]作为签名者的签名私钥,计算相应公钥P=x·G,得到签名者的签名密钥对(sk,pk)=(x,P)。

2.3 Sign(sk,M)→(r,s)

消息M 的盲签名由签名者与验证者交互完成,该过程如图1所示。

图1 基于SM2的盲签名算法交互过程

从图 1 可见,其涉及“准备”“盲化”“盲签”与“解盲”四个步骤,具体如下:

(1)准备:签名前签名者基于SM2签名算法的步骤b、c构建签名所需的随机变量。

首先随机选取k∈[1,n-1],然后计算临时变量K=k·G,最后将K发送给验证者。

(2)盲化:验证者收到K 后,随机选取α∈[1,n-1],计算K'=α·K=(rx,ry);基于SM2 签名算法的步骤a 计算待签名消息M 的哈希值e,r=rx+emod n;计算盲化的消息r'=α-1r,并将其发送给签名者。

(3)盲签:签名者收到r'后,基于SM2 签名算法的步骤e 计算出临时盲签名消息s'=(1+x)-1(k-r'x)mod n=(1+x)-1(k+r')-r',并 将 s'发 送 给 验证者。

(4)解盲:验证者收到s'后计算s=α·s'并输出解盲的签名消息(r,s)。

2.4 Verify(pk,(r,s),M)→0/1

基于SM2的验证算法对解盲的签名消息(r,s)进行验证。若验证通过则输出1,否则输出0。

3 基于SM2盲签名的电子投票方案

本节将讲述如何基于构建的轻量级SM2盲签名算法实现高效公平的电子投票。

3.1 系统模型

为实现电子投票的安全运行,系统引入区块链替代可信第三方实现选票信息的发布和计票。投票者可以在区块链上查看具体的选举信息,区块链公开透明的特性保证了计票的公平性和选票信息的不可篡改性。此外,为了保证投票者的隐私以及选票的可验证性,我们利用基于SM2 的轻量级盲签名算法对选票信息进行验证,保证选票的真实性和合法性。投票者投票时其他人无法查看投票者的个人身份,充分保证了电子投票的匿名性。本系统模型如图2所示,由投票者、签名者和区块链三部分组成。

图2 系统模型

(1)投票者:投票者具有合法投票资格,能根据选票内容自主进行投票,每个投票者都有一个唯一身份标识符ID。

(2)签名者:签名者负责对合法选票进行签名,排除无效选票的干扰,并验证选票的合法性。

(3)区块链:区块链负责对公开参数以及选举信息的发布,并在投票结束后完成有效选票的统计。

3.2 系统设计

本节利用第2小节设计的基于SM2的盲签名算法完成对电子投票系统的设计,基于SM2 盲签名的电子投票系统包括六个阶段:系统初始化阶段、选票生成阶段、选票验证阶段、投票阶段、计票阶段和审计阶段,具体设计步骤如下:

(1)系统初始化。系统初始化区块链平台,调用2.1节算法Setup(1λ)→Parm生成系统公开参数,并在区块链上设置选举内容及投票时间,投票者查看区块链上的选举内容及投票时间并选择投票,签名者调用2.2 节的算法KeyGen(Parm)→(sk,pk)并根据参数生成公私钥对(sk,pk)。

(2)选票生成。为保证选票的合法性,投票者将自己的身份发送给签名者并调用2.3 节的算法Sign(sk,M)→(r,s),签名者检查投票者的身份信息是否符合规定且投票者的身份未曾用过,如果检验通过,签名者利用算法Sign(sk,M)→(r,s)生成合法签名的选票内容并返还给投票者。

(3)选票验证。投票者得到签名后的选票后调用 2.4 节的算法 Verify(pk,(r,s),M)→0/1 验证该选票签名是否正确,若检验不通过,则认为签名者是恶意的,系统终止。

(4)投票。投票者随机选择一个整数U,计算H(m,U),然后将自己的选票内容m、H(m,U)与签名者的签名打包一起发送给签名者,签名者验证该签名的合法性,若验证通过,将选票内容发送至区块链进行统计。

(5)计票。当投票时间截止后,智能合约被触发,区块链统计收到的选票内容,并将选票的最终结果全网公布,由于区块链的公开透明特性,因此保证了计票过程的公开性和不可篡改性。

(6)审计。计票阶段完成后,所有的选票结果均在区块链上公布,此时投票者可以查看自己的选票是否在其中。若投票者发起质疑,则将自己的随机数公布,任何人均可以计算H(m,U),若区块链上不存在H(m,U),则认为签名者没有将该投票者的选票发送至区块链。

4 方案分析

4.1 安全性分析

本文在1.2 小节提出了电子投票需满足的基本安全属性,本章将针对上述提到的安全属性对设计的电子投票方案进行安全性分析。

(1)完整性:由于区块链不可篡改的特性,选票一旦发送到区块链上便由智能合约自动统计,任何人都不能对其进行修改和删除,并且基于SM2 的盲签名算法保证了任何人无法冒充签名,因此方案满足完整性。

(2)正确性:盲化过程中,r=rx+emod n,其中rx来自(rx,ry)=K’=α·K=αk·K,即r的签名应由SM2的αk·K所生成。解盲过程中,如s=αs’mod q=(1+x)-1(αk+r)-r mod q 公式所示,与原始 SM2 签名相比,这里的αk对应原始SM2签名中的αk·K,即s与r是原始SM2 基于αk·K 对某消息的签名。因此,(s,r)可以使用原始SM2的验证算法来进行验证。

(3)唯一性:在选票生成阶段,签名者需要检查投票者先前是否已经投过票。重复投票的投票者将被检测出来并视为无效票。所以一个投票者只能进行一次投票,方案满足唯一性。

(4)机密性:在选票生成阶段,虽然签名者看到了投票者的身份,但是我们利用了基于SM2 的盲签名算法对选票内容进行了盲化,因此签名者无法看到选票内容。因此,方案保护了投票者的隐私,满足机密性。

(5)合法性:在选票生成阶段,投票者将自己的身份发送给签名者,此时签名者可以根据投票者的公钥验证其身份的合法性,如果该身份满足唯一标识符ID,则认为是合法的投票者,因此方案满足合法性。

(6)公平性。本文设计的电子投票系统引入了区块链技术,区块链的公开透明特性可以保证公开参数与选举内容的真实性,同时智能合约作为良好的计票手段取代可信第三方,可以实现计票的准确性与完整性,防止单点故障。因此,方案满足公平性。

(7)可验证性。在审计阶段,投票结果公布在区块链上且无法被篡改,任何一个人均可以验证自己的选票是否被统计、被篡改,因此,方案满足可验证性。

(8)不可追踪性。在投票阶段,投票者将选票发送给签名者进行验证,此时签名者看到了选票内容,但是不知道投票者的身份,因此无法将选票内容与投票者联系起来。因此,方案满足不可追踪性。

(9)高效性:本文所提出的方案是基于SM2的轻量级盲签名,在选票生成阶段能够提高签名的效率。此外,我们采用智能合约对选票进行自动统计,能够提高计票阶段的效率,满足在实际应用中的高效性。

4.2 性能分析

本文改进的盲签名算法以SM2为基础进行设计,为分析本算法的执行效率,我们仅对盲签名中的“准备”“盲化”“盲签”“解盲”四个部分进行分析。为此我们以Gm表示G 上数与点的乘法运算,Za表示 Z 上的加法运算,Zm表示乘法运算,Zi表示求逆运算,并得出本签名算法的复杂度如表1所示。

表1 基于SM2的盲签名算法复杂度

此外,本文通过计算机编程语言(Java)实现所改进的盲签名算法,并对盲签名的批量大小分别设置为10、20、30、40、50,所得时间消耗如图3所示。

图3 基于SM2的盲签名时间开销

从图3 可以看出BlindPars 的时间消耗较大,但是维持在50ms 以内,能够高效满足实际应用需求。

5 结语

本文结合电子投票的实际需求,基于SM2 签名算法提出了一种新的电子投票系统。设计的轻量级盲签名算法,既保证了签名者无法看到选票内容,又实现了投票者在投票过程的匿名性。通过引入区块链技术替代可信第三方防止隐私泄露和单点故障,并且利用智能合约提高了计票效率。从理论和实验分析可知,我们所提出的电子投票方案不仅保证了基本的安全属性,同时也提高了电子投票在实际应用场景中的效率。

猜你喜欢
计票选票区块
《红楼梦》的数字化述评——兼及区块链的启示
区块链助跑财资管理
奥斯卡奖的偏好投票制
一场区块链引发的全民狂欢
区块链助力企业创新
中国戏剧家协会第七届理事会理事选举计票人名单
中国戏剧家协会第七届主席、副主席选举计票人名单
美国现在的选举投票方式比以往任何时候都脆弱