BFV-Blockchainvoting:支持BFV 全同态加密的区块链电子投票系统
2022-10-09杨亚涛刘德莉刘培鹤曾萍肖嵩
杨亚涛,刘德莉,刘培鹤,曾萍,肖嵩
(1.西安电子科技大学通信工程学院,陕西 西安 710071;2.北京电子科技学院电子与通信工程系,北京 100070)
0 引言
电子投票为目前的纸质投票提供了一种方便且成本效益高的替代方案。早在1981 年Chaum[1]就首次提出了电子投票技术,电子投票的安全保障也被认为是最难被解决的问题之一[2]。当前的电子投票系统大多以密码学为基础保障,根据所依据的密码学工具不同主要分为三类:基于混合网络的电子投票方案[3-5]、基于盲签名的电子投票方案[6-8]以及基于同态加密的电子投票方案[9-11]。其中,同态加密技术逐渐被越来越多的电子投票方案所采用,其构造过程更加清晰简单,且加密过程具有同态性,可以较好地解决远程电子投票中的隐私保护和数据安全问题。
目前,大多数电子投票系统都依赖第三方机构的管理和计票,选票面临被黑客攻击或被第三方机构篡改的风险,这也给投票系统带来较大的安全隐患,甚至使投票失败。区块链中的存储信息去中心化、不可篡改性和公开透明等特点,非常适合安全电子投票系统中公开不可篡改的公告板的要求,因此将区块链技术应用于电子投票领域具有非常广阔的应用前景。
1 相关工作
同态加密技术应用于电子投票系统中,允许在不解密的情况下计算选票。目前,由于ElGamal和Paillier 加密算法具有加法同态特性,因此在电子投票中的应用较多。其中,ElGamal 加密算法在Helios[12]系统中得到了较好实践。文献[13]提出了具有乘法同态性质的ElGamal 加密方案的增强形式,乘法群生成器的使用保证了投票方案的安全性。文献[14]提出了一种分布式同态签密的电子投票方案,该方案可以快速完成签名验证,同时提高选举的可信度。文献[15]利用同态加密对选民信息进行加密来保证选民信息的隐私安全,但这种加密方式没有发挥同态加密的最大优势,造成算力资源的浪费。文献[16]分别将ElGamal 算法和Paillier 算法应用于电子投票系统,并对2 种算法的性能进行对比。文献[17]将Ducas 等[18]设计的自举全同态加密方案应用于电子投票系统,将全域密文转换成具有特定语义的密文,避开了零知识证明架构的烦琐交互。文献[19]提出的Schulze 投票方案使用BGV(Brakerski-Gentry-Vaikuntanathan)全同态加密算法来加密选票,实现计票过程中的隐私保护。文献[11]提出一种基于SEAL 库的同态加权电子投票系统,使用 BFV(Brakerski-Fan-Vercauteren)全同态加密方案保证系统的抗量子攻击特性和安全性,同时对电子投票方案性能也进行了分析。
区块链技术替代可信第三方应用于电子投票系统中,可以避免投票系统出现单点故障,增强系统的安全性。文献[20]展示了一个基于区块链投票系统的概念框架,提出的方案可以解决拒绝服务攻击问题,但不具备抗胁迫性等安全属性。文献[21]提出了一种基于以太坊的轻量级远程区块链电子投票系统,并采用变化的哈希值来增加系统的抗胁迫性。文献[22]使用Hyperledger Fabric 来部署投票系统,使用Paillier 加密算法、零知识证明和可链接环签名等密码技术来提供独立于区块链平台的安全和隐私保护功能。文献[23]将区块链与ElGamal算法相结合,利用ElGamal 加法同态性质来保证选票安全。区块链应用于电子投票解决了系统依赖第三方机构的弊端,而同态加密算法的引入又能保证投票过程的不可操纵性。目前,应用在电子投票领域的同态加密算法多为部分同态加密算法,不满足同时进行加法和乘法操作的客观需要,在安全性和运算效率上也有所不足。
本文设计的投票系统使用了由我国国家密码管理局发布的商用密码标准算法SM2、SM4 和文献[24]提出的BFV 全同态加密算法,并选择基于SEAL库的BFV 同态加密方案。SEAL 库是微软公司基于C++开发的开源全同态加密软件库。
本文的主要贡献如下。
1) 提出了一个基于BFV 全同态加密和区块链相结合的电子投票系统方案BFV-Blockchainvoting。该方案使用SM2 算法对投票者的注册信息进行签名处理,使用SM4 算法加密选票,结合可以互相监督的两方共同监管完成选票的获取,可以保证投票过程具有不可操纵性、匿名性、可验证性、不可重用性、不可胁迫性和抗量子攻击等安全属性。使用BFV 全同态加密算法对选票加密,利用同态加密密文可计算的性质,实现计票过程的隐私保护。使用区块链替代第三方机构,利用智能合约实现安全性验证和自计票功能,有效避免了因过分依赖第三方机构而产生的安全隐患。
2) 对方案进行了初步构建和性能测试。基于Golang 编写的公链系统作为底层架构,通过测试分析,本文系统单张选票的计票时间平均为1.69 ms。相比于Pandey 等[20]提出的VoteChain 投票系统的计票时间减少了98.87%;相比于杨亚涛等[11]提出的基于SEAL 库的同态加权电子投票系统的计票时间减少了9.62%;相比于Panja 等[25]提出的基于区块链的端到端的电子投票系统的计票时间减少了32.4%。该方案适用于多种投票场景,可以满足大型投票场景的效率要求。
2 BFV-Blockchainvoting 电子投票系统设计
2.1 系统组成
本文系统由5 个主要实体组成,具体说明如下。
投票者Vi:具有投票权的投票者集合,其中
管理员A:负责生成一组唯一且随机的电子选票,并以匿名的方式将选票与投票者共享。
主持人M:负责保护投票者的隐私,将选票匿名后分发给投票者。
候选人Ck:合格的选举对象集合,其中
区块链网络:一个基于国密算法的公链系统,是一个公开、可访问、不可篡改的公告板,通过智能合约实现票据合法性检验、自计票。
系统关键参数及含义如表1 所示。
表1 系统关键参数及含义
2.2 系统架构与智能合约设计
2.2.1 系统架构
通过分析电子投票系统的基本流程,可以得到该系统网络架构,如图1 所示。
图1 电子投票系统网络架构
传统的电子投票系统需要依赖第三方机构与中心服务器进行数据管理,这种结构容易造成第三方机构篡改选票或中心服务器被攻击瘫痪的潜在风险。本文系统采用区块链的P2P 网络结构,不需要第三方机构进行计票,通过调用智能合约实现票据合法性检验与自计票功能,可以提升系统的安全性与稳健性。
在本文系统中,根据权限不同,区块链节点分为普通节点和特殊节点,普通节点是具有投票资格的投票者,而特殊节点包括管理员和主持人。各节点通过区块链网络连接,共同访问链上数据,并通过浏览器访问Web 前端的可视化投票界面。
2.2.2 智能合约设计
基于同态加密的智能合约架构主要分为上下两层:网络层和智能合约层。网络层是整个系统的核心,采用基于国密算法的公链系统,链上的节点根据权限不同分为普通节点和特殊节点,其中,普通节点是具有投票资格的投票者,而特殊节点包括管理员和主持人。智能合约层主要负责整个投票系统的运转,包括生成BFV 同态加密算法的密钥对、广播BFV 算法公私钥、收集选票、验证选票是否合法、计票和广播选票结果等环节。智能合约执行生成创世区块、设置节点以及监听端口等工作,然后被部署在链上,时刻监听链上信息。一旦投票者点击提交选票,区块链中便会新增一个区块,智能合约通过区块获取投票信息,收集选票进行验证和计票,在计票时间结束后,解密选票信息同时广播结果。
本文设计的投票系统BFV-Blockchainvoting的区块链底层架构为自建的基于国密算法的公链系统,该系统是基于 REST/JSON API、TCP服务器、国密算法和工作量证明(PoW,proof of work)共识算法的区块链系统。相比于Hyperledger Fabric 和以太坊等架构,本文系统使用的架构更为安全可靠,减少了由于频繁更新应用系统经常面临崩溃等问题。Blockchain.go为支撑底层架构的主要代码,其数据结构如表2所示。
表2 Blockchain.go 数据结构
Voting.go 为本文系统的底层智能合约,智能合约中涉及的主要方法及功能如表3 所示。
表3 智能合约方法及功能
基于BFV 全同态加密算法的智能合约主要算法如算法1 所示。首先,获得选票bi后,初始化检查bi是否属于选票名单γ,如果属于,智能合约则通过检查投票者是否被标记来确认投票者是否已经投过票,如果voters[i]=false,说明投票者为首次进行投票,符合计票要求,再通过调用SEAL 库的全同态加法运算进行计票。其次,该选票计票结束后,对选票进行标记,设置voters[i]=true,避免双重投票。最后,对全部选票计票结束后,调用SEAL 库全同态加法的解密算法,将计票结果解密,恢复最终计票结果。
在统计选票时,通过执行智能合约,使用BFV 全同态加密算法进行密文计票,最终在计票时间结束后,自动解密选票并公布结果。智能合约主要通过全同态加密机制及其密码协议来保障其安全性,每张选票都以密文形式计入智能合约并参与计算,在整个计票过程中选票信息始终保密,保证了计票过程的安全性。
2.3 方案设计
本文提出的BFV-Blockchainvoting 方案主要包括4 个连续的阶段,每个阶段都发生在投票组织者预先确定的特定时间范围内。设G是椭圆曲线上的一个点,其阶为素数q,G的坐标为和a2是有限域上定义一条椭圆曲线的元素是消息摘要为vbit 的密码杂凑函数。图2 为电子投票系统流程。
图2 电子投票系统流程
2.3.1 注册阶段
在注册阶段,管理员A使用由国家密码管理局发布的SM2 签名算法对投票者的公钥进行签名。具体签名过程如下。
1) 管理员签名密钥生成。管理员A需要一组签名密钥对,以便将合格的投票者添加到投票者名册时对其进行签名。注册器随机选取密钥根据此密钥计算出与之对应的公钥为
2) 投票者密钥生成和注册。投票者Vi必须拥有与其身份对应的选举密钥对,Vi选择一个密钥与之对应的公钥为PV=Gxv。在注册阶段,投票者Vi和管理员A共享其公钥。
3) 管理员对投票者的公钥签名。为了授予Vi投票权,管理员A事先要验证投票者的资格,对于符合资格的投票者,对其公钥进行SM2 签名后再添加到投票者名册中。签名的生成过程为
其中,IDA是管理员A的可辨别标识,本文选用管理员的地址值作为标识,IDA的长度为entlAbit;ENTLA是由整数entlA转换而成的2 个字节。式(1)将椭圆曲线中各种参数的数据类型转换为比特串,然后对投票者Vi的公钥PV进行签名,计算
选择随机数k∈[1,q-1],计算椭圆曲线上的点(x1,y1)=kG,然后计算
其中,(r,s) 是签名值。
在注册阶段结束时,管理员A公布投票者名册。
2.3.2 获取选票
1) 选票生成。管理员A生成n个唯一且随机的数字选票bi,i∈[1,n]。
2) 请求投票。投票者Vi的公钥对主持人M公开,Vi向M请求投票后,M通过验证Vi的签名确认他们是否符合投票资格。
3) 验证投票者身份。主持人M收到投票者Vi的公钥PV后,通过SM2 验签算法进行验证,检查Vi是否存在于投票者名册中并且验证签名(r,s) 是否有效。
首先,检查r,s∈[1,q-1]是否成立,如果成立,设计算如果t=0,则验证不通过;否则,计算椭圆曲线上的点
4) 主持人请求选票。如果验证通过,主持人M将投票者的公钥PV发送给管理员A,请求获得选票。
5) 选票分配和加密。管理员A收到主持人M的投票请求后,将选票按照特定的置换顺序随机分配给投票者Vi。
在将选票分配给主持人M以发送给Vi之前,A与Vi利用SM2 的密钥交换协议协商出SM4 的加密密钥ki,ki为128 bit。然后利用SM4 算法对选票进行加密。
使用ki生成轮密钥后对选票进行如下加密
其中,SM4-Enc是SM4 加密函数,enbi是加密后的选票。对选票进行加密的目的是向主持人M隐藏选票,Vi拿到的选票是匿名的。管理员A将enbi发送给M。
6) 加密选票传输。主持人M将加密后的选票enbi打乱顺序,然后发送给投票者Vi。
7) 解密选票。Vi收到enbi后,将其解密
其中,SM4-Dec 是SM4 的解密函数。
2.3.3 投票阶段
持有选票的已经登记的投票者Vi可以对候选人Ck进行投票。
1) 智能合约生成BFV 公私钥对
私钥sk 是随机生成的一个系数为-1、0 或1 的多项式,公钥pk=([ -ask +e]p,a)。其中,a为在密文空间中随机生成的一个多项式,其系数模为p;e为噪声多项式,是在离散高斯分布中随机选取的一组小系数,e在此处只用一次,用完后丢弃。
生成BFV 公私钥对后,私钥由本地数据库保留,公钥pk 通过区块链分享给所有投票者Vi。
2) 双重加密
其中,vote=(c1,c2,···,cm)表示候选人Ck的序列。cm=BFV-Enc(candm)表示加密后的选票,BFV-Enc 表示BFV 同态加密函数。
BFV 全同态加密是建立在环上的同态加密方案,密文由2 个多项式组成,加密过程为
其中,rlk 为计算密钥,用于BFV 中的密文计算;m为明文,本文方案中投票者的选票bi中对某个候选人的candk即需要加密的明文;T为分解模数,为系数为-1、0 或1 的多项式;t为远小于系数模p的整数;e1、e2取自相同的高斯离散分布,这些多项式只在加密过程中使用,使用完后丢弃;pk 为 BFV 的公钥,pk0=pk[0],pk1=pk[1]。
3) 提交选票
投票者Vi提交选票触发智能合约,一旦智能合约的结果被附加到区块链,投票将被永久保存。
2.3.4 计票阶段
投票阶段结束后,智能合约将收集此阶段内出现在区块链上的选票,以进行验证和计数。为了验证,管理员A公开分配给投票者Vi所有选票γ。智能合约收到后进行验证,如果∈γ
ib,将检查所附的投票顺序,依次将选票密文计入候选人Ck的票数。
其中,Add(cim,cjm,rlk)表示将投票者vi和vj对候选人candm的投票情况密文相加的结果,利用全同态加密密文可计算的性质,即可计算出所有候选人的密文票数总和;cti[0]和cti[1]分别表示明文mi加密后得到的两位密文;ctj[0]和ctj[1]分别表示明文mj加密后得到的两位密文。
计票阶段结束后,智能合约用生成的BFV 私钥sk 解密选票结果,并将选票结果在区块链上发布。
其中,m′为BFV 解密后的计票结果,c0=cm[0],c1=cm[1]。
表4 总结了BFV 同态加密算法在本文方案中各个阶段的具体应用。
表4 BFV 同态加密算法在本文方案中各个阶段的具体应用
2.4 密钥管理2.3 节详细介绍了电子投票系统BFV-Block
chainvoting 的方案设计,方案中涉及的加密算法有SM2、SM4 和BFV 全同态加密算法,接下来,分别对这几种算法在方案中的密钥管理过程和必要性进行解释。
1) 密钥生成
SM4 的密钥ki由管理员A和投票者Vi通过SM2 的密钥交换协议协商得到,ki为128 bit。
BFV 算法的密钥由智能合约调用SEAL 库生成,其中安全参数设置为λ=2 048。
2) 密钥分发与更新
SM2 的私钥xa由管理员A保存,公钥PA公开。
SM4 算法的密钥ki由投票者Vi和管理员A各自保存,分别用来加密和解密。
BFV 算法的私钥sk 由本地数据库保存,公钥pk 由智能合约广播,投票者Vi保存。
每次启动BFV-Blockchainvoting 系统组织一次投票时,都将进行密钥更新,SM2、SM4、BFV 的密钥全部重新生成。
3) 密钥销毁
本文提出的BFV-Blockchainvoting 方案主要包括4 个连续的阶段,每个阶段都发生在投票组织者预先确定的特定时间范围内。时间段由智能合约通过方法TimeSetup()设置,在选票公布结束后,SM2、SM4、BFV 的密钥全部回归初始化配置。
SM2 算法应用在投票者注册阶段,在此阶段管理员对投票者的公钥进行签名,标记合法的投票者,形成投票者名册,以便主持人在分发选票时识别合法的投票者。SM4 算法应用在获取选票阶段,为了保证传输过程中选票信息的机密性,管理员将选票使用SM4 加密后分发给主持人,主持人再将加密后的选票分发给投票者,投票者解密选票信息后进行投票,通过上述流程保证了投票过程的不可操纵性。相比于国外的RSA、ECC、AES 等算法,我国的SM2 和SM4 算法自主可控、安全可靠、处理速度快、使用方便快捷。
3 安全性证明与分析
本文提出的电子投票系统BFV-Block chainvoting是以区块链为底层框架的投票系统,该系统基于未花费交易输出(UTXO,unspent transaction output)[26]安全模型进行选票的分发与投出。UTXO 模型的概念来源于比特币,用来处理关联在某个比特币地址上的比特币交易金额,是一个包含了数据与可执行代码的数据结构。UTXO 模型中的每一笔输入都来自上一笔UTXO 的输出,直到交易结束。本文方案中每张选票的分发或投出都依据UTXO 模型的输入输出原理进行。UTXO 模型的使用可以减轻链上计算负担、抵御重放攻击、增强投票的隐私性。
3.1 安全性证明
本文提出的电子投票方案主要分为4 个阶段:注册、获取选票、投票和计票。在投票者注册阶段,使用SM2 签名算法对投票者的注册信息进行签名处理,标记投票者信息。在获取选票阶段,使用SM4算法加密选票,选择互相监督的机构(管理员和主持人)执行安全的多方监管,而互相监督的双方不会出现串通行为,从而保证选票在由主持人转交给投票者的过程中,主持人不知道选票信息。因此本文方案在注册阶段和获取选票阶段是安全的。
计票阶段由区块链的智能合约进行自动计票,智能合约的计票功能由底层代码设计,同时在计票过程中没有任何一方的参与,所以计票阶段也是安全的。
因此,证明本文提出的电子投票方案的安全性可以归约为证明方案中投票阶段的安全性。本文参考文献[27],选用Game Model 来证明投票阶段的安全性,在该模型中,允许对手通过预言机查询加密后的选票信息。
BS 安全性:如果在下面的博弈中,没有多项式有界对手A 对挑战者C具有不可忽略的优势,那么称该投票方案是BS[27]安全的。
1) C运行公钥生成算法PublicKey(sk)生成公钥,并将公钥pk 交给A。
2) A 通过预言机选择明文mi,i∈ [1,…,n],并查询不同明文的密文ci,i∈ [1,…,n]。
3) A 发送相同长度的明文m0、m1给C,C随机的选择b∈{0,1},加密mb发送给A。
4) A 输出猜测b′∈{0,1},如果b=b′ 则攻击成功。但在投票阶段,本文方案选用BFV 全同态加密算法对选票进行加密,BFV 算法是基于环上错误学习(RLWE,learning with error over ring)问题的算法,所以A 的优势可以规约为解决RLWE 问题的优势,因此
其中,A 的优势可以忽略不计。对于任意多项式时间A 获胜的概率定义为
综上所述,本文方案在投票阶段是BS 安全的,同时本文提出的电子投票方案是安全的。
3.2 安全性分析
1) 不可重用性(防止双重投票)
不同场景下投票政策不同,有些政策允许投票者使用同一张选票进行多次投票,只计算他们的第一张选票。但是有些政策只允许投票者提交一次选票,取消多次提交选票的投票者的投票资格。
在这2 种情况下,本文方案都是抵制双重选票的,因为本文方案选用区块链系统作为公告板。对于前者,智能合约扫描区块链,所有多次出现的选票,只计算第一次出现的选票。对于后者,智能合约取消多次出现选票的投票者的投票资格。
2) 不可胁迫性
投票者收到有效的选票bi才可以进行投票,在本文提出的方案中,投票者并没有直接获得选票,投票者收到的是经过密钥ki加密后的选票enbi。这意味着威胁者要求投票者解密选票后,才可以拿到投票者的投票凭证。投票者可以用解密enbi,然后将假选票 ′ib分享给威胁者。根据DDH(decisional diffie-hellman)假设,不可能在一个概率多项式时间内通过暴力破解区分出(g,g a,g b,g c,k i=gabc)和其中假设为
3) 不可操纵性
投票者投出的选票在区块链上公开永久地存储,本文方案使用BFV 同态加密算法加密选票,因此投票在整个过程中都是被隐藏的。投票者无法在势均力敌的竞选中通过投票来支持某位候选人从而操纵选举结果。
4) 匿名性
本文方案利用互相监督的机构来保护选民的隐私,使各方无法同时拥有选民和选票的信息,避免通过某张选票的信息而关联到投票者投票的内容,使投票者的匿名性得到保证。
5) 可验证性
计票阶段结束时,智能合约会在区块链上发布投票结果,投票者可以验证他们的选票是否被正确清点。
6) 抗量子攻击安全性
BFV 全同态加密运算的安全性基于RLWE 上的格困难问题,可以抵抗量子计算攻击,保证了系统的抗量子攻击安全性。
4 测试与分析
本文测试的实际测试环境为Intel 酷睿i5 处理器、8 GB 内存、2.3 GHz、Windows 10 64 位操作系统的笔记本电脑。
4.1 投票系统性能测试
本文提出的电子投票系统使用区块链替代可信第三方,其中区块链的底层架构为自建的基于国密算法的公链系统,相比于Hyperledger Fabric 和以太坊区块链的频繁更新或升级而造成的系统不稳定,本文系统不仅能够可靠运行,还可以满足投票系统的性能要求。下面,对本文系统的通信开销和存储开销进行分析和测试。
本文系统的底层区块链框架采用PoW 共识算法,本节选用生成一个有效区块所需要的平均通信次数来衡量其通信开销,文献[28]中给出了区块链通信开销的计算方法,如式(19)所示。
其中,CPoW表示基于PoW 共识算法的区块链通信开销,α表示全网节点的交易到达率表示正常生成一个区块所需要的平均时间,N表示节点个数,r1表示节点算力,D表示目标难度值。
为评估本文系统的通信开销,根据式(19),本节测试了系统中的关键参数。全网节点的交易到达率α=5 TPS(transaction per second),节点算力1r=7.5 MH/s(每秒106次Hash 运算),PoW 的难度值D=2.0。图3 为节点传输成功概率Ps为0 和0.85这2 种情况下的通信开销。从图3 可以看出,通信次数(通信开销)与节点个数成正比,当节点个数为150 时,通信次数(通信开销)为174。本文系统的节点传输成功率较高,所产生的通信开销对系统正常运行产生的影响很小。
图3 不同节点个数下的通信开销
每名投票者的存储开销包括个人公/私钥、地址、未花费证明数据和区块链上投票数据等。每名投票者由于存储个人公/私钥以及地址值约带来3 KB 的存储开销。每名投票者只有一张选票,所以其未花费证明数据所占的存储开销也较小。随着投票人数的增加,影响存储开销的主要因素为区块链上的投票数据。
为评估本文系统的存储开销,本节在1 名候选人的情况下,分别设置了1 次投票、25 次投票和50 次投票的投票环境,得到不同投票次数下的存储开销,如图4所示,并依此评估了5 000次投票时的存储开销。根据评估可知,每次投票链上数据约增长2 KB,进行5 000 次投票所产生的存储开销约为9.8 MB,该存储开销满足投票系统的性能需求。
图4 不同投票次数下的存储开销
本文提出的BFV-Blockchainvoting 方案主要包括4 个连续的阶段,每个阶段都发生在投票组织者预先确定的特定时间范围内。投票者注册、选票分发以及投票者投出选票的过程为并发进行,其效率对系统的运行影响不大,而计票效率是决定系统能否在规定时间内完成计票的关键。为测试计票效率,本节设置了50 名投票者、1 名候选人的投票环境。图5 展示了50 次计票的测试结果。经过测试,本文系统单张选票的计票时间平均为1.69 ms。通过对10 组密文状态的计票结果进行解密测试,进而得到明文状态的计票结果,平均每次解密时间为163.70 ms。
图5 单张选票的计票时间测试
4.2 相似类型的电子投票系统对比分析
将本文方案与其他基于区块链或同态加密技术的电子投票系统进行对比,结果如表5 所示。目前,国内外大多数学者没有将区块链与全同态加密算法相融合的技术引入电子投票系统的设计中,并很少进行实际环境下的效率测试。表5 中,文献[22]和文献[29]都采用了区块链与同态加密算法相结合的方案,但其采用Pallier 部分同态加密算法,其同态性计算通过幂运算实现,相比于本文提出的投票系统BFV-Blockchainvoting 所采用的BFV 全同态加密算法来说效率较低。文献[30]也采用Pallier 部分同态加密算法,但没有依托区块链环境,投票效率较低。相比于采用以太坊架构且包含6个节点的文献[29],本文方案的计票时间减少了99.79%。相比于文献[30],本文方案的计票时间减少了95.77%。文献[31]和文献[11]也选用了具有抗量子计算攻击特性的全同态加密算法,但同样也没有依托区块链环境。相比于文献[11]中借助第三方机构与BFV 全同态加密算法相结合的投票方案,本文方案的计票时间减少了9.63%。文献[20]和文献[25]使用了区块链架构,但其没有使用同态加密算法。相比于文献[20],本文方案的计票时间减少了98.87%。文献[25]使用投票者的指纹作为登记认证信息,系统为降低指纹识别的错误拒绝率需要消耗较长时间,相比于采用以太坊架构且包含50 个节点的文献[25],本文方案的计票时间减少了32.4%。
表5 本文方案与其他方案的性能比较
5 结束语
本文提出的电子投票系统将区块链和BFV 全同态加密算法相结合,利用全同态加密算法加密选票信息,使选票可以在密文情况下被统计,候选人的获票情况直到解密最终计票结果后才会公布,保证了投票过程的抗操纵性。在注册与获取选票阶段,使用SM2 数字签名算法对投票者的注册信息进行签名,使用SM4 算法来加密选票,选择具有能够互相监督的双方共同监管选票,确保投票者与选票信息分离。投票者提交选票后,利用区块链上的智能合约实现对投票者的合法性验证和自计票功能。使用区块链替代可信第三方,避免第三方虚假计票或服务器被攻击后的信息泄露风险,计票效率也得到提升。通过测试,本文系统单张选票的计票时间平均为1.69 ms,相比于文献[29]中使用区块链和Pallier 部分同态加密算法相结合的投票方案的计票时间减少了99.79%;相比于文献[11]中借助第三方机构与BFV 全同态加密算法相结合的投票方案的计票时间减少了9.62%;相比于文献[25]未使用同态加密算法,只使用区块链架构的投票方案的计票时间减少了32.4%。本文方案总体计算开销合理,计票效率较高,可以为大规模电子投票场景提供借鉴。下一步的研究思路是探讨全同态签密技术在区块链电子投票中的应用,并进行智能合约的安全性测试与分析。