«上一篇 下一篇»
  计算机工程  2022, Vol. 48 Issue (4): 126-132  DOI: 10.19678/j.issn.1000-3428.0062010
0

引用本文  

王杰昌, 张平, 高远, 等. 融合可链接环签密的智能合约电子投票协议[J]. 计算机工程, 2022, 48(4), 126-132. DOI: 10.19678/j.issn.1000-3428.0062010.
WANG Jiechang, ZHANG Ping, GAO Yuan, et al. Smart Contract E-Voting Protocol with Linkable Ring Signcryption[J]. Computer Engineering, 2022, 48(4), 126-132. DOI: 10.19678/j.issn.1000-3428.0062010.

基金项目

国家自然科学基金(61802404);国家重点研发计划项目(2018YFC0824801);河南省科技攻关项目(212102310264)

通信作者

刘玉岭(通信作者),高级工程师

作者简介

王杰昌(1985—),男,讲师,主研方向为密码学、区块链、大数据;
张平,副教授;
高远,高级工程师

文章历史

收稿日期:2021-07-07
修回日期:2021-08-02
融合可链接环签密的智能合约电子投票协议
王杰昌1 , 张平2 , 高远3 , 刘玉岭4     
1. 郑州大学体育学院 体育大数据中心, 郑州 450000;
2. 河南科技大学 数学与统计学院, 河南 洛阳 471023;
3. 国网三门峡供电公司, 河南 三门峡 472000;
4. 中国科学院 信息工程研究所, 北京 100190
摘要:电子投票与传统投票方式相比更具经济性,但存在安全性论证不够严谨、运行时间长、计算消耗较大等问题。提出融合可链接环签密的智能合约电子投票协议,分别设计投票、秘密份额上传、计票等阶段的算法,在投票阶段基于椭圆曲线离散对数问题生成选票的可链接环签密,并在一个逻辑步骤内实现加密和签名,以确保投票的公正性、机密性和可验证性,避免重复投票情况的发生,从总体上降低协议运行时间和计算消耗的gas。此外,详细分析协议的安全性,基于椭圆曲线上的离散对数问题证明选票环签密的不可伪造性。使用truffle框架将智能合约部署到本地以太坊私有网络上,并通过挖矿以确认交易完成。实验结果表明,与Lyu协议相比,该协议节省了约107 Gwei的计算消耗以及450 ms左右的运行时间。
关键词可链接环签密    智能合约    电子投票    不可伪造性    运行时间    计算消耗    
Smart Contract E-Voting Protocol with Linkable Ring Signcryption
WANG Jiechang1 , ZHANG Ping2 , GAO Yuan3 , LIU Yuling4     
1. Sports Big Data Center, Physical Education College of Zhengzhou University, Zhengzhou, 450000, China;
2. School of Mathematics and Statistics, Henan University of Science and Technology, Luoyang, Henan 471023, China;
3. State Grid Sanmenxia Power Supply Company, Sanmenxia, Henan 472000, China;
4. Institute of Information Engineering, Chinese Academy of Sciences, Beijing 100190, China
Abstract: Compared with traditional voting methods, electronic voting is more economical but is not open, nontransparent, and too centralized.Blockchain technology has broad application prospects and has been applied to electronic voting protocols.However, existing electronic voting protocols have problems, such as a lack of rigorous security, long running time, and large computing consumption.Compared with traditional voting methods, electronic voting is more economical, but there are some problems, such as lack of rigorous security, long running time, and large computing consumption.This study proposes a smart contract electronic voting protocol integrating linkable ring signcryption.Algorithms are designed for the voting stages, secret share uploading, and vote counting.In the voting stage, the linkable ring signcryption of votes is generated based on the elliptic curve discrete logarithm problem, and the encryption and signature are realized in one logical step to ensure the fairness, confidentiality, and verifiability of voting and avoid repeated voting.In addition, this protocol reduces the running time and gas computation consumption.The security of the protocol is analyzed, and the unforgeability of ballot ring signcryption is proved based on the discrete logarithm problem on the elliptic curve.In the simulation, the smart contract is deployed to the local Ethereum private network through the truss framework, and mining is executed to confirm the transaction.Compared with existing protocols, the results show that this protocol saves approximately 107 Gwei of computing consumption and approximately 450 ms in running time.
Key words: linkable ring signcryption    smart contract    e-voting    unforgeability    running time    computation consumption    

开放科学(资源服务)标志码(OSID):

0 概述

区块链技术[1]具有去中心化[2]、公开透明、可追溯[3]等诸多优点,无需任何可信中心即可在陌生网络节点间搭建可信的价值传递渠道,可广泛应用于医疗、物联网等各个领域[4]。区块链2.0以以太坊为代表实现了更复杂的分布式合约记录——智能合约[5],虽然智能合约的概念早在1994年就被提出[6],但直到近年来得益于区块链技术的发展,其利用价值才被逐步发掘。

电子投票是一种新型网络投票系统,较传统方式更具经济性,其使用密码学确保投票过程公正、公平、公开、透明[7]。它所用到的密码学知识主要包括环签名、同态加密、混合网络、零知识证明等,其中环签名[8]是一种简化的群签名,只有环成员、没有管理者,无需环成员之间的合作,对验证者来说签名者完全是匿名的。可链接环签名[9-11]是指若某个环成员产生2个消息签名对,存在有效算法使得签名验证者可以确定这2个消息签名对是由环中同一成员产生的[12-13]

为同时确保数据的机密性和可认证性,传统方法通常对数据进行先签名后加密或者先加密后签名的操作,这类方法的计算量和通信成本是加密和签名的代价之和。而签密[14]在一个逻辑步骤内实现加密和签名,也能达到传统方法的效果,同时具有以下优点:低于传统方法的计算量及通信代价;允许部分高代价密码运算的并行计算;若设计恰当可更安全;简化了同时需要认证性与机密性的密码算法设计[15]

ZHAO等[16]在电子投票方案中应用区块链技术,但该方案只支持2个候选者。MCCORRY等[17]提出使用智能合约实现的开放投票协议,但该协议使用的前提是不能出现投票者弃权的情况,不切实际。BISTARELLI等[18]提出一个基于比特币的端到端投票系统,充分保护投票者的隐私,但该系统过于集中,方案不够公开透明。ZHEGN等[7]提出一个以太坊电子投票方案,利用一次性环签名及匿名地址技术,解决了部分投票隐私性等问题,但缺乏安全性证明和仿真实验。LYU等[19]设计一个基于智能合约的去中心化、无信任的电子投票系统,在投票阶段对其选票加密后进行环签名,确保了投票结果的可信度,解决了投票过程中的部分安全问题,但该系统没有任何安全性证明,且计算消耗的gas较多,运行时间较长。

针对上述问题,本文通过构造可链接环签密,提出一个基于智能合约的电子投票协议,并在一个逻辑步骤内实现选票的加密和签名,在确保协议具有相关安全特性的同时,从总体上降低协议运行时间和计算消耗的gas。

1 预备知识 1.1 选择消息的环分叉引理

引理1  选择消息的环分叉引理[20]$ {\sum }_{\mathrm{r}\mathrm{i}\mathrm{n}\mathrm{g}} $为一般的环签名方案,k为安全参数,n为环成员数量。A为一个概率多项式时间的图灵机,输入仅包含公共参数,QW分别表示A询问随机预言机的次数以及询问一些真实环签名者的次数。假设A在时间T内,以不可忽略的优势$ \varepsilon \ge \frac{12{V}_{Q, n}+6{(Q+Wn)}^{2}}{{2}^{k}} $生成一个有效的环签名$ (m, {R}_{1}, \cdots , {R}_{n}, {h}_{1}, \cdots , {h}_{n}, \sigma ) $,其中$ {V}_{Q, n}=Q\times (Q-1)\times \cdots \times (Q-n+1) $。假定在不知道任何环密钥的情况下,有效的环签名在时间$ {T}_{s} $内能以不可区分的概率被模拟,那么就存在另一个概率多项式时间的图灵机,通过模拟替代与真实签名者的交互从A中获得对机器的控制权,在预期的时间$ {T}^{'}\le \frac{{144}^{}823{V}_{Q, n}(T+W{T}_{s})}{\epsilon } $内生成2个有效的环签名$ (m, {R}_{1}, \cdots , {R}_{n}, {h}_{1}, \cdots , {h}_{n}, \sigma ) $$ (m, {R}_{1}, \cdots , {R}_{n}, {{h}_{1}}^{\mathrm{'}}, \cdots , {{h}_{n}}^{\mathrm{'}}, {\sigma }^{'}) $。其中:对于某个$ j\in \{\mathrm{1, 2}, \cdots , $ $ n\} $$ {h}_{j}\ne {{h}_{j}}^{\mathrm{'}} $,同时,对于所有的$ i=\mathrm{1, 2}, \cdots , n(i\ne j) $$ {h}_{i}={h}_{i}^{'} $

1.2 椭圆曲线上的离散对数问题

在椭圆曲线构成的阿贝尔群$ {E}_{p}(a, b) $上考虑方程$ Q=k\times P $,其中$ P, Q\in {E}_{p}(a, b), k < p, $kP容易求得Q,但由PQk较困难,这就是椭圆曲线上的离散对数问题[21]

1.3 无可信中心的门限加密

在门限加密系统[22-24]中,加密组的n个成员共享一对系统公私钥,所有的成员都知道系统公钥,然而在无可信中心[25]参与的情况下,系统私钥分成若干个秘密份额,每个秘密份额由1个成员保存,最少需要t名成员才能重构系统私钥。

$ \left\{{P}_{i}\right|i\in [1, n]\} $包含n个成员,$ {F}_{p} $表示阶为p且生成元为g的有限循环群,门限值k是重构私钥的最小人数。无可信中心的门限加密具体步骤如下:

1)群$ {P}_{i} $随机选择$ {x}_{i}\in {F}_{p} $,计算$ {h}_{i}={g}^{{x}_{i}} $,公钥h是所有$ {h}_{i} $之和。

2)群$ {P}_{i} $随机选择一个度至多为k-1且$ {f}_{i}\left(0\right)={x}_{i} $的多项式$ {f}_{i}\left(c\right)\in {Z}_{q}\left(c\right) $$ {f}_{i}\left(c\right)={f}_{i}+{f}_{i1}c+\cdots +{f}_{i, k-1}{c}^{k-1} $$ {P}_{i} $计算$ {F}_{ij}={g}^{{f}_{ij}}, \mathrm{其}\mathrm{中}\mathrm{j}=\mathrm{0, 1}, \cdots , k-1 $

3)当每位成员公布这些k值后,$ {P}_{i} $秘密地将$ {s}_{ij}={f}_{i}\left(j\right) $发送给$ {P}_{j}, \mathrm{其}\mathrm{中}{j}=\mathrm{1, 2}, \cdots , n $

4)使用$ {P}_{i} $验证从$ {P}_{j} $处得到的$ {s}_{ij} $,为了确保和先前公布的值一致,$ {P}_{j} $计算$ {g}^{{s}_{ij}}=\sum \limits_{l=0}^{k-1}{F}_{jl}^{{i}^{I}} $,若不成立,则中止。

5)$ {P}_{i} $计算其份额$ {s}_{i} $并作为$ x $的一份,$ f $表示多项式$ f\left(c\right)={f}_{1}\left(c\right)+{f}_{2}\left(c\right)+\cdots +{f}_{n}\left(c\right) $$ {s}_{i} $$ f\left(0\right)=x $的一份,通过构建$ {s}_{i}=f\left(i\right) $,使其能够很容易地重构出系统私钥$ x $

2 系统模型及区块链结构 2.1 系统模型

系统模型使用三元组$ < \mathrm{a}\mathrm{d}\mathrm{m}\mathrm{i}\mathrm{n}, \mathrm{u}\mathrm{s}\mathrm{e}\mathrm{r}\mathrm{s}, \mathrm{c}\mathrm{o}\mathrm{n}\mathrm{t}\mathrm{r}\mathrm{a}\mathrm{c}\mathrm{t} > $表示,包含3个实体:投票管理员,投票者和智能合约,如图 1所示,该3个实体的具体描述如下:

Download:
图 1 电子投票模型 Fig. 1 E-voting model

1)投票管理员(admin):创建投票进程,编写投票合约代码;通过公钥参数鉴定投票者的资格;公布投票者公钥列表、投票问题及候选项;设定并公布投票相关时间节点(注册截止时间$ {t}_{fr} $、投票者上传密钥参数截止时间$ {t}_{fg} $、开始投票时间$ {t}_{bv} $、结束投票时间$ {t}_{fv} $、投票者上传秘密份额开始时间$ {t}_{bss} $、投票者上传秘密份额截止时间$ {t}_{fss} $、公布投票结果时间$ {t}_{p} $);发起创建投票智能合约请求。

2)投票者users:$ {U}_{i} $为投票者之一,具有以太坊账户和公私钥对,在预设的时间节点前完成注册和投票。

3)智能合约contract:智能合约并不是协议中的真正实体,但所有实体都与智能合约进行交互,故将其定义为“虚拟实体”;其由投票管理员admin请求创建,包括可链接环签密函数LinkableRingSigncryption()、计算系统私钥函数computeSystemPrivateKey()、验证环签密函数verifyLinkableRingSigncryption()、计票函数winningProposal()等,其具有的功能包括:按照admin编写的总体投票流程运行、检验所接收的消息是否来自合法的$ {U}_{i} $、保存门限加密的有关信息、重构系统私钥、解密选票并验证签密、统计有效选票并公布获胜提案等。

2.2 投票区块链结构

区块链的结构如图 2所示,主要包括合约创建交易、上传参数交易、合约调用交易被打包进区块并加入区块链。

Download:
图 2 投票区块链结构示意图 Fig. 2 Schematic diagram of voting blockchain structure

上述交易的上链过程为:

1)合约创建交易。投票管理员admin发起创建电子投票智能合约请求,内容包括发送账户地址(即admin账户地址)、接受账户地址(为0,表示该交易为创建智能合约的交易)、本次转移的以太币数量、用于完成交易的gas数量、承诺支付的gas单价等;接着,网络节点验证交易请求,并争取到打包权的矿工,遵循admin发送的交易费用与合约代码,创建合约账户,在账户空间中部署合约,同时将智能合约账户地址返回给admin,并将admin的请求打包进区块,全网传播该区块,令区块加入共识区块链。

2)上传参数交易。投票者$ {U}_{i} $发起上传参数交易请求,内容包括投票者用户地址、接收账户地址(admin创建的智能合约账户地址)、本次转移的虚拟货币数量、用来完成交易的gas数量、交易中愿意付出的gas单价、发送给接收地址的消息(密钥参数、秘密份额、选票签密等);接着,网络节点验证交易请求,交易被矿工打包进区块,并将区块加入共识区块链。

3)合约调用交易。在需要计算系统私钥、验证签密、计票时,admin发起合约调用交易请求,交易内容包括发送账户地址、接收合约账户地址、本次转移的“虚拟货币”数量、用来完成交易的gas数量、交易中愿意付出的gas单价、执行智能合约或其某功能函数的指令,该请求被传播到区块链上;接着,网络节点验证交易请求,争取到打包权的矿工将在本地节点运行被调用的合约代码,直至代码运行结束或gas消耗殆尽后,将该区块加入本地区块链,并在全网传播该区块,令区块加入共识区块链。

3 本文智能合约电子投票协议

本文协议将已有协议中选票的“加密+环签名”方式改进为选票的可链接环签密,在保证安全性的同时,降低协议运行时间和计算消耗的gas。同时因签密是在一个逻辑步骤内实现了解密和签名验证,本协议将选票签密的验证放至最后的计票阶段,而非像已有投票协议那样在投票阶段验证签名。改进后,本协议分为注册、创建、密钥生成、投票、秘密份额上传、计票6个阶段,G是阶为$ l $的椭圆曲线E的基点。

3.1 注册阶段

每一个投票者$ {U}_{i} $根据公共参数计算自己的公私钥对$ ({y}_{i}, {x}_{i}) $,其中:$ {y}_{i}={x}_{i}G $$ {x}_{i}\in {Z}_{q}^{\mathrm{*}} $(为了方便起见,本文中类似$ {x}_{i}G $的表达式,皆表示取$ {x}_{i}G $的纵坐标值),admin对投票者进行认证,收集通过认证的$ {U}_{i}(i\in [1, n\left]\right) $的公钥$ {y}_{i}(i\in [1, n\left]\right) $并组成公钥列表,设定门限密钥重构的最小份额数为k

3.2 创建阶段

admin设定一个时间节点列表来触发相应的投票进程,然后将公钥列表、时间节点、整体投票进程等写入合约代码,发出智能合约创建请求。在合约创建后,admin将智能合约账户地址及其他相关信息公布。

3.3 密钥生成阶段

每一个投票者$ {U}_{i} $随机选择$ {\lambda }_{i}\in {F}_{q} $,并且计算$ {\eta }_{i}={\lambda }_{i}G $$ {U}_{i} $按如下方法分发$ {\lambda }_{i} $

1)投票者$ {U}_{i} $随机选择一个阶为k-1的多项式,如式(1)所示:

$ {f}_{i}\left(z\right)={f}_{i, 0}+{f}_{i, 1}z+\cdots +{f}_{i, t-1}{z}^{k-1}\left(\mathrm{m}\mathrm{o}\mathrm{d}\ l\right) $ (1)

其中:$ {f}_{i}\left(0\right)={f}_{i, 0}={\lambda }_{i} $

2)投票者$ {U}_{i} $首先计算$ {F}_{i, j}={f}_{i, j}G(\mathrm{其}\mathrm{中}\mathrm{j}=\mathrm{0, 1}, \cdots , $$ k-1) $,并利用私钥$ {x}_{i} $$ ({F}_{i, j}, i, j) $签名后发起上传密钥参数请求,然后公钥参数被矿工上传至admin创建的智能合约账号,智能合约利用公钥$ {y}_{i} $列表验证签名是否合法,若合法则保存该信息作为合约参数,否则丢弃。投票者$ {U}_{i} $计算$ {s}_{i, j}^{'}={f}_{i}\left(j\right) $$ {s}_{i, j}={E}_{{y}_{j}}\left({s}_{i, j}^{'}\right) $,其中$ j=\mathrm{1, 2}, \cdots , n $。接着,投票者$ {U}_{i} $$ {x}_{i} $$ ({s}_{i, j}, i, j) $签名后发起上传请求,然后$ ({s}_{i, j}, i, j) $及其签名被矿工上传至admin创建的智能合约账号,智能合约验证签名,若合法则保存该信息作为合约参数,否则丢弃。投票者必须在$ {t}_{fg} $之前完成这些计算及发送工作。

这里,每位投票者均可获得所有的$ {s}_{i, j} $$ {F}_{i, j} $,投票者$ {U}_{i} $可通过$ {x}_{i} $计算$ {D}_{{x}_{i}}\left({s}_{i, j}\right)={D}_{{x}_{i}}\left({E}_{{y}_{i}}\right({s}_{j, i}^{'}\left)\right)={s}_{j, i}^{'}={f}_{j}\left(i\right) $,并获得$ {s}_{j, i}^{'} $。系统公钥$ \eta $通过式(2)进行计算:

$ \eta =\sum\limits_{i=1}^{n}{F}_{i, 0}=\sum\limits_{i=1}^{n}{\eta }_{i} $ (2)

但是系统私钥$ \lambda \left(\lambda =\sum\limits_{i=1}^{n}{\lambda }_{i}\right) $此时无法被计算出来。

3.4 投票阶段

投票者$ {U}_{i} $根据编码规则及自己的选择生成选票$ {V}_{i} $,然后投票者$ {U}_{s}(1\le s\le n) $利用LinkableRingSigncryption()对其选票$ {V}_{s} $进行可链接环签密。

3.4.1 签密初始化

$ {H}_{1}:{\left\{\mathrm{0, 1}\right\}}^{\mathrm{*}}\to {Z}_{q} $$ {H}_{2}:{\left\{\mathrm{0, 1}\right\}}^{\mathrm{*}}\to {F}_{q} $是2个安全的哈希函数,环中有n个成员,即$ U=\{{U}_{1}, {U}_{2}, \cdots , {U}_{n}\} $。投票者$ {U}_{i}(i\in [1, n\left]\right) $的公私钥对为$ ({y}_{i}, {x}_{i}) $,其中$ {y}_{i}={x}_{i}G $$ G\in E $

3.4.2 签密生成

签密生成的步骤如下:

1)投票者$ {U}_{s} $计算$ \theta ={H}_{2}({y}_{1}, \cdots , {y}_{n}) $$ t={x}_{s}\times \theta $

2)对于$ i\in \{\mathrm{1, 2}, \cdots , n\}, i\ne s $,随机选择互不相同的$ {a}_{i}\in {Z}_{q}^{\mathrm{*}} $,计算$ {R}_{i}={a}_{i}G $

3)随机选取$ a\in {Z}_{q} $,计算$ {R}_{s}=aG-\sum\limits_{i=1, i\ne s}^{n}{y}_{i}{H}_{1}({V}_{s}, {R}_{i}, t) $

4)计算$ \sigma =a+\sum\limits_{i=1, i\ne s}^{n}{a}_{i}+{x}_{s}{H}_{1}({V}_{s}, {R}_{s}, t) $

5)投票者$ {U}_{s} $计算$ {V}_{s}^{'}={E}_{\eta }\left({V}_{s}\right) $

6)计算$ {h}_{i}={H}_{1}({V}_{s}, {R}_{i}, t), i=\mathrm{1, 2}, \cdots , n $,生成签密$ \mathrm{\Omega }=({V}_{s}^{'}, t, {R}_{1}, {R}_{2}, \cdots , {R}_{n}, {h}_{1}, {h}_{2}, \cdots , {h}_{n}, \sigma ) $

3.4.3 选票上传

投票者发出上传选票签密$ \mathrm{\Omega } $请求,矿工将签密$ \mathrm{\Omega } $上传至区块链上admin创建的智能合约账号,作为计票阶段成员函数调用的参数,投票者必须在$ {t}_{fv} $之前完成本阶段工作。

3.5 秘密份额上传阶段

投票者$ {U}_{i} $根据式(3)对其之前获得的$ {s}_{j, i}^{'} $进行验证。

$ {s}_{j, i}^{'}\times G=\sum\limits_{l=0}^{t-1}{F}_{j, l}\times {i}^{l} $ (3)

若式(3)不成立,则$ {s}_{j, i}^{'} $非法,$ {U}_{j} $为恶意的投票者,协议中止;若成立,则$ {U}_{i} $通过式(4)计算其秘密份额:

$ {s}_{i}=\sum\limits_{j=1}^{n}{s}_{j, i}^{'} $ (4)

$ {U}_{i} $发起秘密份额上传请求,同时$ ({s}_{i}, i) $及其对应的签名被矿工上传至admin创建的智能合约账号,且投票者必须在$ {t}_{fss} $之前完成上传工作。

3.6 计票阶段

当至少有t名投票者上传秘密份额时,智能合约中的函数computeSystemPrivateKey()通过式(5)计算获得系统私钥:

$ \lambda =\sum\limits_{j=1}^{t}{s}_{j}\times \prod\limits _{h=1, h\ne j}^{t}\frac{h}{h-j}\left(\mathrm{m}\mathrm{o}\mathrm{d}\ l\right) $ (5)

对智能合约中的验证环签密函数verifyLinkableRingSigncryption()进行如下操作:

1)有任意2个环签密:

$ {\mathrm{\Omega }}_{1}=({V}_{{s}_{1}}^{'}, {t}_{1}, {R}_{1}, {R}_{2}, \cdots , {R}_{n}, {h}_{1}, {h}_{2}, \cdots , {h}_{n}, \sigma ), {\mathrm{\Omega }}_{2}=({V}_{{s}_{2}}^{'}, $$ {R}_{2}^{'}, \cdots , {R}_{n}^{'}, {h}_{1}^{'}, {h}_{2}^{'}, \cdots , {h}_{n}^{'}, {\sigma }^{'}) $,若$ {t}_{1}={t}_{2} $,则2个签密为同一投票者产生,即一人重复投票,投票签密无效;否则进行下一步。

2)令$ {V}_{s}^{″}={D}_{\lambda }\left({V}_{s}^{'}\right) $,验证:$ {h}_{i}={H}_{1}({V}_{s}^{″}, {R}_{i}, t), i=\mathrm{1, 2}, \cdots , $$ n $$ \sigma \times G={R}_{1}+{R}_{2}+\cdots + $$ {R}_{n}+{y}_{1}{h}_{1}+{y}_{2}{h}_{2}+\cdots +{y}_{n}{h}_{n} $。若以上等式成立,则继续下一步。

3)若$ {V}_{s}^{″}={D}_{\lambda }\left({V}_{s}^{'}\right)={D}_{\lambda }\left({E}_{\eta }\right({V}_{s}\left)\right)={V}_{s} $则为投票者有效的解密选票,计入最后的总票数。智能合约利用其计票函数winningProposal()统计这些有效选票,并在$ {t}_{p} $时公布投票结果。

由于部署在区块链上的智能合约式是公开透明的,无法篡改,因此在区块链上进行电子投票,同时也可以确保投票公开、公正、公平。

4 安全性分析 4.1 正确性

本文仅论证选票签密及验证的正确性,根据式(6)进行验证:

$ \begin{array}{l}\sigma G={R}_{1}+\cdots +{R}_{n}+{y}_{1}{h}_{1}+\cdots +{y}_{n}{h}_{n}=\sum\limits_{i=1, i\ne s}^{n}{a}_{i}G+\\ \;\;\;\;\;\;\;aG-\sum\limits_{i=1, i\ne s}^{n}{y}_{i}{H}_{1}({V}_{s}, {R}_{i}, t)+\sum\limits_{i=1}^{n}{y}_{i}{H}_{1}({V}_{s}, {R}_{i}, t)=\\ \;\;\;\;\;\;\;aG+\sum\limits_{i=1, i\ne s}^{n}{a}_{i}G+{y}_{s}{H}_{1}({V}_{s}, {R}_{s}, t)=\\ \;\;\;\;\;\;\;aG+\sum\limits_{i=1, i\ne s}^{n}{a}_{i}G+{x}_{s}{H}_{1}({V}_{s}, {R}_{s}, t)G=\\ \;\;\;\;\;\;\;\left(a+\sum\limits_{i=1, i\ne s}^{n}{a}_{i}+{x}_{s}{H}_{1}({V}_{s}, {R}_{s}, t)\right)G\end{array} $ (6)

当式(6)所示的验证方程成立时,选票签密有效。

4.2 不可伪造性

智能合约账号收到投票签密$ \mathrm{\Omega }=({V}_{s}^{'}, t, {R}_{1}, {R}_{2}, \cdots , $ $ {R}_{n}, {h}_{1}, {h}_{2}, \cdots , {h}_{n}, \sigma ) $并进行验证,若签密是合法有效的,则$ {\mathrm{\Omega }}^{'}=({V}_{s}, t, {R}_{1}, {R}_{2}, \cdots , {R}_{n}, {h}_{1}, {h}_{2}, \cdots , {h}_{n}, \sigma ) $为由$ \mathrm{\Omega } $转换而来的环签名,该签名可通过前面投票签密生成算法的部分算法生成,将这部分算法记为SIG。

引理2  在随机预言机模型下,若椭圆曲线离散对数问题是困难的,则环签名$ {\mathrm{\Omega }}^{'} $是不可伪造的。

证明:设椭圆曲线E上的离散对数难题为:$ y=xG $,已知yG,欲求$ x $较困难。对于$ 1\le i\le n $,随机选取互不相同的$ {\alpha }_{i}\in {Z}_{q}^{\mathrm{*}} $,计算$ {y}_{i}={\alpha }_{i}y $,初始化环成员$ {U}_{1}, {U}_{2}, \cdots , {U}_{n} $的公钥分别为$ {y}_{1}, {y}_{2}, \cdots , {y}_{n} $。设$ {H}_{1} $$ \mathrm{S}\mathrm{I}\mathrm{G} $为预言机,A为输入是公开参数的PPT图灵机,A$ {H}_{1} $和SIG分别作Q次和W次询问。根据1.1节中选择消息的环分叉引理,如果A能够在多项式时间$ {T}_{A} $内以不可忽略的概率$ \epsilon \ge \frac{12{V}_{Q, n}+6{(Q+Wn)}^{2}}{{2}^{k}} $伪造出一个合法的环签名,那么存在另一个概率多项式图灵机B可在$ {T}^{'}\le \frac{{144}^{}823{V}_{Q, n}({T}_{A}+W{T}_{s})}{\epsilon } $内伪造出2个有效的环签名:$ {{\mathrm{\Omega }}_{1}}^{\mathrm{'}}=({V}_{s}, t, {R}_{1}, \cdots , {R}_{n}, {h}_{1}, \cdots , {h}_{n}, \sigma ) $$ {{\mathrm{\Omega }}_{2}}^{\mathrm{'}}=({V}_{s}, t, {R}_{1}, \cdots , {R}_{n}, {{h}_{1}}^{\mathrm{'}}, \cdots , {{h}_{n}}^{\mathrm{'}}, {\sigma }^{'}) $,其中,对于某个$ j\in \{1, \cdots , n\} $$ {h}_{j}\ne {{h}_{j}}^{\mathrm{'}} $,对所有的$ i=\mathrm{1, 2}, \cdots , n(i\ne j) $$ {h}_{i}={h}_{i}^{'} $。于是有:

$ \sigma G={R}_{1}+{R}_{2}+\cdots +{R}_{n}+{y}_{1}{h}_{1}+\cdots +{y}_{j}{h}_{j}+\cdots +{y}_{n}{h}_{n} $ (7)
$ \sigma \text{'}G={R}_{1}+{R}_{2}+\cdots +{R}_{n}+{y}_{1}{h}_{1}^{\mathrm{'}}+\cdots +{y}_{j}{h}_{j}^{\mathrm{'}}+\cdots +{y}_{n}{h}_{n}^{\mathrm{'}} $ (8)

以上两式相减得:

$ \begin{array}{l} (\sigma -{\sigma }^{'})G={y}_{j}({h}_{j}-{h}_{j}^{'})={\alpha }_{j}y({h}_{j}-{h}_{j}^{'})\Rightarrow\\ y=\frac{(\sigma -{\sigma }^{'})}{({h}_{j}-{h}_{j}^{'}){\alpha }_{j}}G \end{array}$ (9)

即可求得椭圆曲线的离散对数解为$ \frac{(\sigma -{\sigma }^{'})}{({h}_{j}-{h}_{j}^{'}){\alpha }_{j}} $,这显然与已知困难问题矛盾,引理得证。

定理1  若椭圆曲线离散对数问题是困难的,则本协议的环签密是不可伪造的。

证明:假设某用户能伪造合法的投票环签密,那么其肯定可以利用环签名的转换算法,将伪造的环签密转换成环签名,即在椭圆曲线离散对数问题是困难的情况下,得到一个伪造的环签名。这显然与引理1相矛盾,定理得证。

4.3 隐私性

本节着重探讨UiVi的隐私。从Ui隐私方面来说,由于可链接环签名的特性,在具有$ n $个元素的公钥环上进行的环签名,任意环外的攻击者确定出真正签名者的概率不超过$ \frac{1}{n} $;如果攻击者为环内某一非签名者,那么其不能以大于$ \frac{1}{n-1} $的概率确定出真正的签名者。从Vi隐私的方面来说,任何人都无法在3.6节以前解密选票。

4.4 唯一性

本文设计的投票协议采用可链接环签密,其可链接性能够确保一位投票者只可投一次票,若重复投票将被验证出来,则作废处理,以保证协议的唯一性。

4.5 公正性

本文协议融合了无可信中心的门限加密、可链接环签密及智能合约,在3.6节以前,投票者只掌握其本人的投票内容,任何人都不可能获取中间结果或最终结果,以确保本协议的公正性。

4.6 可验证性

选举结束后,任何投票者均可查看选票及系统私钥,以查看自己的选票是否被正确记录,且拥有合约地址的任何人均可查看所有选票并验证计票结果。

5 性能评估 5.1 性能分析

选票签名或签密的可链接性都将被进行验证,这一点对于本文协议和Lyu协议来说没有差别。但是对于加密选票签名,Lyu协议需要在投票阶段和计票阶段分别进行验证和解密,而本文协议在3.6节计票阶段第2步的一个逻辑步骤内实现了选票签密的验证和解密,降低了计算量,进而降低了gas消耗,最终gas消耗总量也随之降低。

在电子投票协议中,除了选票的验证、统计等工作由智能合约完成外,仍有很多操作需要投票者运行,包括生成公私钥、计算$ {F}_{i, j} $$ {f}_{i}\left(j\right) $、验证来自其他投票者的$ {f}_{j}\left(i\right) $、计算系统公钥、恢复秘密份额、生成选票签名或签密等操作。对于生成公私钥、计算$ {F}_{i, j} $$ {f}_{i}\left(j\right) $、验证来自其他投票者的$ {f}_{j}\left(i\right) $、计算系统公钥、恢复秘密份额等操作,两协议没有差别。但是Lyu协议需要对选票进行加密后才能签名,而本文协议生成了选票签密,在一个逻辑步骤内实现了签名和加密,降低了计算量和运行时间,进而操作总时间也随之降低。

5.2 仿真实验

本文在本地部署以太坊私有网络,通过truffle将智能合约部署到以太坊私有网络上,同时进行挖矿并确认交易。本文协议从确认交易的信息中获得交易消耗的gas,投票者或管理员可以在rpc模式使用web3.js与区块链网络进行通信。

本地投票计算机配置为Win10系统,四核2.9 GHz的CPU,8 GB内存。系统中的功能函数均用Python编写,所有时间单位均为ms,每gas的价格定为1 Gwei,在t=0.7 n的情况下进行测试。

5.3 gas消耗

表 1展示了在n=30的情况下投票者和管理员每个交易的gas消耗,其中,由管理员admin发起的交易只发起一次,由投票者Ui发起的交易每名一次。

下载CSV 表 1 交易或计算的gas消耗 Table 1 Consumption of transaction and computation in gas

对比本文协议与Lyu协议,从表 1可看出投票者上传数据至区块链的gas消耗基本一样,而本文协议admin建立合约及设置相关信息的gas消耗要低于Lyu协议的消耗。这是因为Lyu协议中智能合约执行的是选票环签名验证函数和加密选票解密函数,而本文协议中智能合约执行的是选票签密的验证(解密)函数,能够在一个逻辑步骤内实现验证和解密;同时,Lyu协议及本文协议执行这些功能函数所消耗的gas均包含在admin建立合约及设置相关信息交易中。

为研究选举时各实体的gas消耗与投票者人数之间的关系,分别对n=10、20、30、40的情况进行测试,再利用python画出两协议不同实体的gas消耗对比图,结果如图 3所示。

Download:
图 3 本文协议与Lyu协议的gas消耗对比 Fig. 3 Comparison of gas consumption between this protocol and Lyu protocol

图 3可以看出,随着投票者人数的增加,本文协议和Lyu协议中admin和投票者的交易或计算消耗的gas都在增加。但是无论投票者人数如何变化,本文协议投票者的gas消耗和Lyu协议投票者的基本一样,本文协议admin的gas消耗始终要比Lyu协议admin的低,降低了约1×107 gas,每gas的价格为1 Gwei,即节省了1×107 Gwei的计算消耗,其原因与n=30的情况一样,所以最终本文协议的gas消耗总量低于Lyu协议的gas消耗总量。

5.4 操作运行时间

表 2展示了在n=30时在投票者本地运行的操作所花费的时间。

下载CSV 表 2 投票者操作运行时间 Table 2 Voter operation run time

表 2可以看出本文协议与Lyu协议在投票者本地运行的生成公私钥、计算$ {F}_{i, j} $$ {f}_{i}\left(j\right) $及签名、验证来自其他投票者的$ {f}_{j}\left(i\right) $、计算系统公钥、恢复秘密份额等所花费的操作时间都一样,但本协议投票者生成选票签密的时间要低于Lyu协议投票者生成加密选票及签名的时间,这是由签密的性质决定的。另外,当n=30时本文协议投票者本地运行的操作总时间也低于Lyu协议所花费的时间。

对投票者运行的操作总时间进行测试并统计,再利用python绘制出本文协议与Lyu协议在这方面的对比图,结果如图 4所示。

Download:
图 4 本文协议与Lyu协议投票者的操作总时间对比 Fig. 4 Comparison of total voter operation time between this protocol and Lyu protocol

图 4可知,随着投票者人数的增加,本协议和Lyu协议中投票者运行的操作总时间均在增加,但是无论投票者人数如何变化,本文协议投票者的操作总时间始终比Lyu协议的低,少了约450 ms,其原因与n=30时的情况相同。

6 结束语

本文提出一种新的智能合约电子投票协议,融合可链接环签密,在一个逻辑步骤内实现了选票的加密及签名,分析得出协议具有正确性、唯一性、隐私性、公正性、可验证性等特性,并对协议的不可伪造性进行了形式化证明。实验结果表明,本文协议的运行时间和gas消耗较Lyu协议均有所降低,但随着投票人数的增加,上传至区块链的数据量也有所增加。下一步将引入IPFS文件系统,使密钥参数、选票、签名等数据存储至IPFS文件系统,且在区块链上只存储这些数据的指针或索引,以降低上传至区块链的数据量。

参考文献
[1]
张亮, 刘百祥, 张如意, 等. 区块链技术综述[J]. 计算机工程, 2019, 45(5): 1-12.
ZHANG L, LIU B X, ZHANG R Y, et al. Overview of blockchain technology[J]. Computer Engineering, 2019, 45(5): 1-12. (in Chinese)
[2]
CULHA D. A random and transaction-positioned blockchain[J]. Comptes Rendus de L'Academie Bulgare des Sciences, 2020, 73(7): 915-925.
[3]
TANG F, PANG J J, CHENG K F, et al. Multiauthority traceable ring signature scheme for smart grid based on blockchain[EB/OL]. [2021-06-02]. https://www.researchgate.net/publication/350798231_Multiauthority_Traceable_Ring_Signature_Scheme_for_Smart_Grid_Based_on_Blockchain.
[4]
祝烈煌, 高峰, 沈蒙, 等. 区块链隐私保护研究综述[J]. 计算机研究与发展, 2017, 54(10): 2170-2186.
ZHU L H, GAO F, SHEN M, et al. Survey on privacy preserving techniques for blockchain technology[J]. Journal of Computer Research and Development, 2017, 54(10): 2170-2186. (in Chinese)
[5]
蔡晓晴, 邓尧, 张亮, 等. 区块链原理及其核心技术[J]. 计算机学报, 2021, 44(1): 84-131.
CAI X Q, DENG Y, ZHANG L, et al. The principle and core technology of blockchain[J]. Chinese Journal of Computers, 2021, 44(1): 84-131. (in Chinese)
[6]
赵其刚, 王红军, 李天瑞, 等. 区块链原理与技术应用[M]. 北京: 人民邮电出版社, 2020.
ZHAO Q G, WANG H J, LI T R, et al. Blockchain principle and technical application[M]. Beijing: Posts and Telecom Press, 2020. (in Chinese)
[7]
一种基于可信计算技术的电子投票方案[J]. 计算机工程, 2012, 38(6): 1-6.
FENG Y M. Electronic voting scheme based on trusted computing technology[J]. Computer Engineering, 2012, 38(6): 1-6. (in Chinese)
[8]
RIVEST R L, SHAMIR A, TAUMAN Y. How to leak a secret [C]//Proccedings of the 7th International Conference on the Theory and Application of Cryptology and Information Security. Berlin, Germany: Springer, 2001: 522-565.
[9]
LIU J K, WEI V K, WONG D S. Linkable spontaneous anonymous group signature for Ad Hoc groups[EB/OL]. [2021-06-06]. https://link.springer.com/chapter/10.1007/978-3-540-27800-9_28.
[10]
TORRES W A A, STEINFELD R, SAKZAD A, et al. Post-quantum one-time linkable ring signature and application to ring confidential transactions in blockchain (lattice ringct v1.0)[C]//Proceedings of Australasian Conference on Information Security and Privacy. Berlin, Germany: Springer, 2018: 558-576.
[11]
REN H, ZHANG P, SHENTU Q C, et al. Compact ring signature in the standard model for blockchain [C]///Proccedings of the 14th International Conference on Information Security Practice and Experience. Berlin, Germany: Springer, 2018: 50-65.
[12]
吕佳卓. 基于智能合约的去中心化安全电子投票系统[D]. 哈尔滨: 哈尔滨工业大学, 2019.
LÜ J Z. A decentralized secure e-voting system based on smart contract[D]. Harbin: Harbin Institute of Technology, 2019. (in Chinese)
[13]
具有可链接性的匿名签密方案[J]. 西南大学学报(自然科学版), 2012, 34(9): 113-117.
QU Y Y, YIN L, XIONG X G, et al. A linkable anonymous signcryption scheme[J]. Journal of Southwest University (Natural Science Edition), 2012, 34(9): 113-117. (in Chinese)
[14]
ZHENG Y L. Digital signcryption or how to achieve cost (signature & encryption) ≪ cost(signature) +cost (encryption)[C]//Proceedings of the 17th Annual International Cryption Conference. Berlin, Germany: Springer, 1997: 165-179.
[15]
数字签密综述[J]. 信息网络安全, 2011(12): 1-8.
LI F G, ZHONG D. A survey of digital signcryption[J]. Netinfo Security, 2011(12): 1-8. (in Chinese)
[16]
ZHAO Z C, C T H. How to vote privately using bitcoin [C]//Proccedings of the Internal Conference on Information and Communications Security. Berlin, Germany: Springer, 2015: 82-96.
[17]
MCCORRY P, SHAHANDASHTI S F, HAO F. A smart contract for boardroom voting with maximum voter privacy [C]//Proccedings of the International Conference on Financial Cryptography and Data Security. Berlin, Germany: Springer, 2017: 357-375.
[18]
BISTARELLI S, MANTILACCI M, SANTANCINI P, et al. An end-to-end voting-system based on bitcoin[C]//Proceedings of the Symposium on Applied Computing. New York, USA: ACM Press, 2017: 1836-1841.
[19]
LYU J Z, JIANG Z L, WANG X, et al. A secure decentralized trustless e-voting system based on smart contract [C]//Proccedings of the 13th IEEE International Conference on Big Data Science and Engineering. Washington D. C., USA: IEEE Press, 2019: 570-577.
[20]
HERRANZ J, SÁEZ G. Forking Lemmas for Ring Signature Schemes[EB/OL]. [2021-06-06]. https://link.springer.com/chapter/10.1007/978-3-540-24582-7_20.
[21]
杨波. 现代密码学(第四版)[M]. 北京: 清华大学出版社, 2017.
YANG B. Cyberspace security(the fourth edition)[M]. Beijing: Tsinghua University Press, 2017. (in Chinese)
[22]
SHAMIR A. How to share a secret[J]. Communications of the ACM, 1979, 22(11): 612-613. DOI:10.1145/359168.359176
[23]
DESMEDT Y G. Threshold cryptography[J]. European Transactions on Telecommunications, 2010, 5(4): 449-458. DOI:10.1002/ett.4460050407
[24]
BONEH D, GENNARO R, GOLDFEDER S, et al. Threshold cryptosystems from threshold fully homomorphic encryption[C]//Proceedings of Annual International Cryptology Conference. Berlin, Germany: Springer, 2018: 565-596.
[25]