APP下载

基于区块链智能合约的安全投票系统

2022-03-25胡博明陈晓丰胡大裟蒋玉明

现代电子技术 2022年6期
关键词:投票者合约证书

胡博明,陈晓丰,胡大裟,蒋玉明

(1.四川大学 计算机学院,四川 成都 610000;2.四川省大数据分析与融合应用技术工程实验室,四川 成都 610065;3.杭州趣链科技有限公司,浙江 杭州 310000;4.浙江大学 计算机科学与技术学院,浙江 杭州 310007)

0 引 言

随着互联网的不断发展,电子投票的形式也开始受到公众的欢迎。传统的人工投票不仅需要人力物力来完成投票过程,并且在投票过程中也可能会出现一些不公平投票行为,而电子投票与人工投票相比的优势就在于电子投票更加安全方便快捷。

第一个电子投票协议由Chaum 提出,从他之后许多学者也相继提出了很多不同的电子投票方案,就是为了能够在互联网上建立一个安全可信的投票机制。目前,电子投票方案有很多不同的种类,主要有基于盲签名、环签名、混合网络、全同态加密等技术的电子投票方案,但它们都存在一些不足之处。比如Tornos J L 等人的方案基于区块链的技术可以实现多选一类型的投票,但是其加密方式是通过环签名的方式,灵活性不够。Mccorry P 等人使用区块链实现了投票方案,并且使用零知识证明协议的方法来保护投票数据的隐私安全,但其只允许投票者投是或否,因此投票具有一定的局限性。Khan 等人使用区块链实现了一种端到端可验证的电子投票方案,并且在多链平台上实施,但其方案可靠性不够,容易出现一些投票数据隐私泄漏问题。程亚歌等人使用门限签名方法,提出了一种适用于区块链的电子投票方案,该方案通过区块链投票的节点之间的合作生成签名,但是如果无法实时更新节点,节点信息将由于移动攻击而泄漏,这会带来数据隐私问题。Shahandashti 等人提出一种加密选票的方式来保证选民的隐私不被泄露,并设计了DRE-ip,它能够实时加密选票,且在不解密投出的选票的情况下,可以公开验证票数。因此,DRE-ip 实现了端到端可验证性,而不需要计数权限,保证了选民的隐私,但是如果其部分计数器被攻击时数据就会被泄露;DRE-ip 虽然可以实时统计选票,也可以存储选票稍后再统计,但DRE-ip 就像一个黑匣子,如果攻击者恶意更改选票或计票,则会出现刷票可能并且影响投票的数据安全问题。

对于以上讨论的投票方案中出现的安全问题,本文提出一种结合区块链技术与密码技术的安全投票系统。该系统通过区块链交易承载证书签发、证书验证来保障选民身份验证;在投票开始前设置一批加密的注册码,并且每个人的账户只能使用注册码投票一次,防止恶意刷票的可能;在投票过程中使用SM2 椭圆曲线公钥密码算法加密投票者的注册码及其投票选择,能够确保投票者的数据隐私不被泄漏。最后在区块链上为本投票方案设计了安全投票智能合约,并且开发了投票系统DAPP,通过实验证明该投票方案能够解决投票系统出现的选民身份验证、数据隐私、恶意刷票问题,验证了该投票系统的安全性。

1 相关背景知识

1.1 区块链

区块链是一种分布式软件系统,允许在不需要可信第三方的情况下处理事务。本文结合区块链技术与密码算法,并将其应用到投票系统中能够更好地保障投票系统的安全性,而区块链所具有的不可伪造、可追溯、去中心化等特征都与一个安全的投票系统所需要的特征非常契合,能够保障投票系统的安全性。

1.2 以太坊与智能合约

以太坊是一个开源并且有智能合约功能的公共区块链平台。以太坊虚拟机是智能合约运行环境,其规定了智能合约的执行方式,本文在以太坊虚拟机上部署、执行投票智能合约,让其在以太坊网络上能够执行投票系统的各种事务。

智能合约由Szabo 于1996 年首次提出,他将智能合约定义为数字合约条款。智能合约嵌入在区块链中,使协议的合约条款能够在不受可信第三方干预的情况下自动执行。在过去的几年里,许多智能合约平台被提出,其中一些已经实际实现和使用。过去由于缺乏可靠的执行环境,因此在实践中并未使用智能合约。而基于以太坊环境将区块链与智能合约技术应用到具体投票环境中,能够创造一个安全的投票环境。

2 基于区块链智能合约的安全投票系统

本文结合区块链技术与密码技术实现一个改进的安全投票方案,区块链实现分布式的可信第三方能够为密码协议的安全假设提供可行的解决方案。通过加密选票来保护选民的隐私,通过区块链交易承载证书签发、证书验证来保证选民身份验证,在投票开始前设置一批加密的注册码来让投票者申请注册登录投票,然后在进行投票选择时再将其选票信息加密保护,并且使用智能合约实现自我计票,能够解决其计票过程可能出现的恶意攻击而导致的安全威胁。

2.1 系统架构

整个系统架构如图1 所示,投票发起者与投票者在不同的节点上运行,投票发起者部署投票智能合约到区块链上,每位投票者或投票发起者通过投票系统DAPP实现与智能合约的交互。

图1 投票系统架构图

2.2 投票流程及方案改进

针对多候选者安全投票场景,本文提出一种注册后投票、多候选可选类型的投票方案。项目发起者发起投票过程,包括部署智能合约、设置注册码、加密注册码等功能。投票者登录后将注册为合格投票人,包括投票、加密选票等功能。本投票方案总共分为登录、注册、投票、计票等几个过程,由项目发起者、智能合约和投票者三部分组成。该投票方案改进的地方主要是项目发起者在每次投票开始时会设置一批注册码,然后使用SM2算法进行加密保护,防止被窃取注册。

通过设计一个加密智能合约,将其部署在区块链上,把项目发起者设置的注册码进行加密。Conner 等人首先提出了一种基于区块链技术的PKI(Public Key Infrastructure)系统Certcoin 的实现,该技术将证书公钥与用户身份联系在一起。本文基于区块链与智能合约技术实现去中心化的PKI 体系,使用区块链交易承载证书签发、证书验证、证书更新、证书撤销等功能,图2即为本文所描述的去中心化的PKI 体系结构。

图2 去中心化的PKI 体系结构

图中:CA 为区块链中的证书颁发机构;RA 为注册机构;LDAP(轻量目录访问协议)服务器则负责将RA 服务器传输的用户信息与数字证书加入到区块链中;OCSP(在线证书状态协议)则是维护服务器安全性。

该投票系统用户的证书由去中心化的区块链交易进行签发,每个用户的证书和公钥信息等可以写入区块链中,然后打上时间戳,形成一个连续的前后关联的数据记录,从而取代传统的第三方中心机构。

投票者的资格通过证书的签发得到保证,只有拥有该签名证书的人才可进行入链操作,这样可以有效保障投票者的身份验证不出现问题。然后投票者通过申请项目发起者给的注册码进行注册投票,在投票者向智能合约申请发送注册码之后,智能合约就会生成公私钥对,投票者与智能合约各自拥有对方的公钥和自己的私钥,验签通过则注册成功。并且每个投票者账户每次投票只可登录注册一次,若投票成功,则不可更改投票选择,可有效避免恶意刷票。

在投票者登录注册后,进入投票界面即可在众多候选者中进行投票选择,并且投票者的投票选择也会使用SM2 算法进行加密保护。在投票者向智能合约申请发送选票之后,智能合约就会生成公私钥对,投票者与智能合约各自拥有对方的公钥和自己的私钥,验签通过则投票成功。

通过加密投票者的投票选择来保护投票者的隐私,可以防止他人查看其投票选择,保证投票的安全环境。图3 为证书的生成与验证过程。

图3 证书的生成与验证过程

2.3 投票系统SM2 算法加解密过程

投票方案之所以采用SM2 椭圆曲线公钥密码算法进行加密数据,是因为与传统的RSA 算法不同,其计算复杂度更高且密钥生成速度比RSA 算法快几百倍,是一种更先进安全的算法。表1、表2 为RSA 算法与SM2算法的比较。

表1 RSA 与SM2 算法强度比较

表2 RSA 与SM2 算法签名、验签速度比较 ms

在进行加密算法的一些性能比较之后,本文选择SM2 椭圆曲线公钥密码算法结合区块链技术在投票过程中加密注册码和投票信息等数据能够保证投票系统的数据安全,有效避免外界的恶意攻击。该投票方案所采用的SM2 算法加解密过程如图4、图5 所示。

图4 SM2 加密过程

图5 SM2 解密过程

本文使用区块链实现去中心化的服务以建立分布式可信第三方来应对单点风险。传统的集中式服务器功能过于强大,并且缺乏有效的监督机制,因此通过引入区块链技术来解决该问题。密码协议中存在可信第三方的假设,而区块链的分布式可信第三方可以为密码协议的安全假设提供可行的解决方案。因此,本文就结合区块链技术与SM2 椭圆曲线公钥密码算法设计了一个改进安全投票系统,能够保证系统的数据安全,确保用户的身份合法性,避免恶意刷票的可能,防止用户隐私泄漏问题。

3 安全投票系统的实现

本节将介绍该安全投票系统的实现过程,具体过程为:首先为本文的投票方案设计相应的智能合约,然后进行智能合约的开发,搭建一个以太坊私有链,配置好创世区块信息,在编译部署完智能合约之后,最后通过投票系统DAPP 进行交互式操作。

3.1 智能合约的开发

智能合约的开发与实现依赖于具体的开发环境,本文所使用的智能合约开发环境如表3 所示。

表3 合约开发环境

3.2 智能合约的设计

本投票方案总共分为三个智能合约,分别为Migration.sol、Vote.sol 和VoteCrypt.sol,如表4 所示。

表4 合约概述

3.3 私有链的搭建

首先利用geth 搭建一个以太坊私有链,用来部署智能合约,私有链的搭建过程主要有配置创世区块和启动节点两步。通过创世区块的配置,能够确定私有链的基本属性。完成创世区块配置后就可以启动节点,节点的启动过程包括区块链网络名称的标志、区块文件的储存路径设置和客户端的启动等。

3.4 智能合约的编译与部署

利用以太坊开发框架Truffle 实现智能合约的编译与部署。编译部署完智能合约后,使用客户端Ganache来查看区块链的变化情况。最后在Ganache 客户端上就可以看到产生了新区块的信息,如图6 所示。

图6 编译部署合约后的Ganache

3.5 投票系统DAPP

投票过程中设置加密注册码功能、用户加密注册码功能与用户加密选票功能实现,如图7~图9 所示。

图7 设置加密注册码功能实现

图8 加密注册码功能实现

图9 加密选票功能实现

3.6 系统安全性测试与分析

设计的投票系统分为投票发起者节点和投票者节点,因此将测试这两个节点在运行过程中是否会出现安全问题。考虑到实验效果和设备性能等,本次实验将系统节点设置为60 个,恶意节点数则从0~60 递增进行实验,恶意节点的攻击方式为进入系统进行数据读取,只要其进入系统读取了加密后的数据,则视为攻击成功。在投票者节点和投票发起者节点下,不同恶意节点数攻击成功率如图10 所示。

图10 不同恶意节点数攻击成功率

通过实验结果可知,随着恶意节点数的递增,其攻击成功率越来越高,当达到与系统设置的节点总数60相等时,其成功率达到100%;当恶意节点数小于20 及阈值的33%以下时,节点攻击成功率为0。现实情况中,一般恶意节点数不可能达到系统节点数的33%以上,因此只要恶意节点数不超过系统节点数的33%都是安全的。因此证明该系统具有很高的安全性。

测试使用已经注册过的注册码进行注册,结果显示已经注册且不可再注册,而使用窃取到的加密注册码进行注册,则显示注册码错误。然后使用已经投过票的账户登录系统,结果只显示投票成功,而无法查看投票选择信息,且无法更改投票选择。综上可知,该系统的注册码信息和投票信息的安全性能够得到保证,该系统的安全性很高。

3.7 系统性能测试与分析

本次实验的投票系统吞吐量指的是每秒能够处理的事务数量(TPS),吞吐量的大小能够反映该安全投票系统处理事务数量的能力大小。而基于区块链实现的投票系统大多存在吞吐量不足的缺点,为此本文通过实验来测试与分析该投票系统的吞吐量。在不同节点数下投票系统的吞吐量变化如图11 所示。

图11 不同节点数系统的吞吐量

通过实验可知,系统节点数从0~60 个递增时,系统吞吐量也不断上升,当节点数到达45 个之后又继续增加系统节点数时,系统吞吐量则停止上升并保持不变,因此当节点数到达一定数量后该投票系统的吞吐量能够得到保证。

而文献[17]中的吞吐量在节点到达20 个之前随着系统节点数的增加而上升,在系统节点数到达20 个之后继续增加节点数系统吞吐量基本保持不变,无法继续增加吞吐量。文献[18]中的吞吐量随着系统节点数的增加而上升,但是上升的趋势与本文相比较慢,并且本文达到一定吞吐量所需的系统节点数也比文献[17]、文献[18]要少。

基于私有链实现的安全投票系统,消耗较小且效率较高,而基于公链的电子投票系统在各方面消耗成本更高且效率低下,在公链下运行需要很高的消耗,如表5所示,本文交易消耗较文献[7]大幅减少了,并且在设置智能合约时也会有消耗限制。使用公链时由于网络中的高流量,也会影响到系统中投票的吞吐量,使其时间效率降低。因此本文使用的私有链性能更好,大幅降低了投票过程的交易消耗量,能够有效应用于该安全投票系统中。

表5 交易消耗 gas

4 结 语

本文提出的基于区块链智能合约的安全投票系统,在理论层面上已经表明该投票系统能够保证投票过程的安全性,其中选民的隐私不再依赖于可信的统计机构或可信的硬件。

在实际层面上提出了一种高效实用、可验证的结合区块链技术与密码技术的安全投票解决方案,即使对手在投票阶段获得对投票数据的临时读取访问,也会因为数据被加密而查看不了,仍能够保持选民的隐私,通过区块链交易承载证书签发、证书验证来保证选民身份验证,能够有效解决投票过程中选民的身份验证问题,也可避免刷票和数据隐私泄漏问题。该安全投票系统使用智能合约实现自我计票,使用SM2 椭圆曲线公钥密码算法加密投票者的注册码和投票数据,保障了投票系统的数据安全,并在以太坊实验环境下验证了项目的可行性,可以达到安全性要求,系统整体性能也有所改进。下一步将继续完善系统在区块链上的功能,增强系统的其他性能。

猜你喜欢

投票者合约证书
WJCI 收录证书
CSCD收录证书
收录证书
收录证书
微信投票乱局与治道变革
英国人家有空房少拿养老金
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望
塔利班割鼻惩罚投票者