基于区块链的电子投票系统关键技术的实现

2018-12-20 08:31京,孙
软件 2018年11期
关键词:共识分布式区块

党 京,孙 弋



基于区块链的电子投票系统关键技术的实现

党 京,孙 弋

(西安科技大学 通信与信息工程学院,陕西 西安 710054)

随着物质和生活水平的提高,人们对各种事务的参与热情逐渐高涨。投票是互联网技术中最为广泛的应用之一,目前现有的线上投票系统中存在着重复欺诈投票、数据篡改、投票数据丢失、结果无法验证等投票数据客观性问题,同时存在投票后数据记录并存储在中央服务器中的投票数据安全性问题。区块链技术通过分布式结构实现去中心化,通过共识机制实现公平、公正、公开的具有共享状态的数据账本。在此基础上,本文提出了基于区块链技术电子投票系统的设计方案,采用分布式网络作为系统的整体架构,可解决系统中心化存储问题,并采用共识机制和数字加密算法解决了投票过程中的数据安全性问题,同时对系统进行总体的设计。

区块链;投票系统;分布式;共识机制

0 引言

随着社会文明的进步和技术的发展,人们对于公共事务的管理的参与度日益提高,更多的通过投票的方式来参与到各种公共事务当中。信息技术的不断提高,致使线上投票系统应用更加活跃,线上的投票通过在物理空间中将选票信息转换为数字格式,管理员能够在网络空间中进行管理和操作,不受到时间和空间的限制,也便于系统的传播及推广。但仍存在投票管理和服务需求的多样化、系统规模的扩大化,伴随着重复投票、欺诈投票、数据篡改、结果无法验证等数据的客观性问题和投票后数据存储在中心化服务器中数据的安全性问题。因此本文基于区块链技术,利用共识机制和非对称数字加密算法等技术,通过构建非中心化、去信任的投票管理系统,尤其是在调查研究、意见采纳、民主选举为民众的投票提供安全、公平、公正和公开的管理平台和验证服务。

1 区块链技术

区块链技术最早是比特币的基础技术,其概念由“中本聪”学者发表的论文Bitcoin[1]: A Peer-to- Peer Electronic Cash System 中首次提出。区块链技术的出现解决了数字加密货币体系中所必须面对的“双花”问题和拜占庭将军问题[2],“双花”即双重支付,重复使用同一笔资产支付。区块链技术是一种具有共享状态交易的数据账本,利用点对点传输的非中心化分布系统和信任机制,使得链上的节点集体维护唯一的数据账本。在链上的每个区块中,区块头保证区块连接,新区块成功添加后,区块中的数据则无法更改,保证了交易数据信息的不可 篡改。

共识机制在多方协同环境下对执行结果所有方达成一致(共识)的机制。目前常用的共识机制包括工作量证明(PoW)、拜占庭共识机制(PBFT)等。PoW通过节点算力竞争记账权,保证数据和节点的一致性[3]。PBFT共识机制则是通过容忍恶意行为的共识协议替代PoW的算力证明。系统只需容忍错误并通过2/3以上的进程同意,便可达成共识,以解决算力浪费的问题。

当今,各企业对区块链研究现状呈现指数型的增长,主要研究安全问题和智能合约,应用热点包括新型共识机制的研究[4],以及在数据存储和交易管理、信息安全服务、物联网安全等方向的研究[5-6,12],但与投票相结合的应用研究较少。

2 基于区块链投票系统的关键技术

在区块链的模型架构中,共识机制和安全机制是区块链的核心技术组件,现根据电子投票系统的应用,分别对非对称数字密码、分布式结构、共识机制等几个关键技术问题简要描述。

2.1 非对称数字加密

区块链的模型设计中,一般采用非对称加密技术对数据进行加密验证。该算法使用的是一对密钥:公钥和私钥。这对密钥在非对称加密应用方式有两种。一种是公钥加密私钥解密,主要接收数据信息。另一种是私钥加密(签名)公钥解密(验证签名),主要判断是否是该节点发送的消息。因此,利用非对称数字加密技术在安全性能方面大大提高。

RSA是常用的非对称加密算法之一,该算法既能用于数据加密又能用于数字签名,因此本系统采用了RSA算法。该算法RSA算法是将两个约数较多且容易相乘的大素数进行乘积运算,若想要将乘积因式分解则困难[7],因此可公开乘积并可将其作为加密密钥。RSA算法具有抗攻击性,因此在数据加密方面采用RSA算法安全可靠。

2.2 分布式结构

区块链是一个具有共享状态的密码性安全交易的单机,分布式网络结构保证了数据记录存储在非中央计算机上,计算任务运行在多台计算机上,全网中的所有节点都将记录并存储计算任务中的数据交易信息。为此,区块链技术采用了开源的、去中心化的协议[8],构建了一个分布式的结构体系,保证数据的完整记录和存储。

(1)分布式传播。区块链中产生新的交易数据均由单个节点向全网节点发送,若信息拦截者对部分节点传播路径进行恶意摧毁,不会影响整体信息的传输,全网中的所有节点均收到该数据信息。

(2)分布式记账。区块链通过构建分布式机构体系和共识协议,允许所有节点在参与数据记录和验证其他节点结果的正确性[9]。只有当所有参与记录的节点(或者大部分节点)比对结果一致通过,记录数据才允许被写入区块并最终将交易结果写入区块链[10,14]。

(3)分布式存储。区块链构建一个分布式结构的网络系统,数据库中所有数据实时更新并存放于所有参与记录的节点。即使部分节点损坏或被攻击,也不会影响整个数据库的数据记录。

2.3 共识机制

分布式系统中,最重要问题是全网所有节点如何达成共识。共识机制就是为了保证底层区块链数据的一致性,并有效的抵抗恶意节点的攻击和破坏。在节点网络中,所有节点在是否攻击外部节点问题上达成一致,但存在部分恶意节点,故意传递错误消息给其余正确节点,干扰判断,这就是拜占庭容错问题。传统的Paxos,Raft没有考虑这个问题;而POW算力过高,POS、DPOS过于集中化,三者广泛应用于公有链的虚拟资产。PBFT算法是联盟链中最常用的共识算法,通过投票来达成共识的机制,并解决数据分叉以及投票数据丢失和篡改等问题。

PBFT容错算法是一种基于消息传递一致性的算法,节点集合P中,每个节点都有对应唯一的编号,该系统中能容忍恶意或坏死节点的数最多为f,当节点数|P|>3f+1的情况下可以达成共识。PFBT共识过程如下:(1)客户向服务器中的主节点发送调用服务操作的请求命令。(2)主节点向全网的节点广播请求。(3)所有的节点处理该请求,并将结果返回客户。(4)客户将返回的处理结果进行整理,当返回结果中至少有f+1个结果相同,则可停止该操作。

PFBT验证过程三阶段:预准备、准备、确认 阶段。

预准备阶段,主节点分配一个系列号n,将PRE- PREPARE消息发送给其余节点。之后主节点将PRE-PREPARE消息广播到其他各节点。

准备阶段,各节点在收到PRE-PREPARE消息后,需验证消息的内容没有被篡改,验证结束后,该主节点会向各节点发送PREPARE消息。

确认阶段,当节点验证PREPARE消息为真后,会在全网中广播PREPARE消息。

验证完COMMIT消息后,节点可以将结果返回给客户端。

该算法性能比较高,消耗资源少。因此比较适合现代的电子投票系统。执行流程如图1所示。

图1 PFBT执行流程图

3 基于区块链的电子投票系统研究

在本文研究中,区块链底层技术是本系统设计的关键之一,因此,首先对区块链底层设计流程进行分析,并对该系统的进行设计实现。

3.1 投票系统的底层区块链设计流程

在投票系统中,投票数据成功被添加到底层的区块链之前,需要经过交易判定、交易分发、添加区块和节点投票等一系列的过程。

交易判定是在共识机制中判断用户投票交易的合法性。在区块链的底层设计中,系统根据产生的新交易,随机在分布式网络中选择某一节点,将该交易的数据分配给该节点。节点收到数据后,首先要判断数据的格式是否正确,是否出现“双花”现象,须判断这笔交易的输入是否依赖于其他交易(判断交易是否为“创世块”)。若交易不合法,则节点会向交易的发送方回传错误信息并丢弃该笔交易。若交易合法,则将该笔交易记录存储在本节点的存储池中。

在生成新的区块之前,被分配节点需要验证交易是否合法。若交易依赖其他交易,则要等待前序交易确认后再验证,被分配节点会将这些交易放回自己本地交易池中延后处理。若没有前序交易,或其前序交易已被验证,则须判断交易自身的合法性。如果交易不合法,则丢弃交易。如果交易合法,为新区块盖上时间戳,生成新的区块数据,同时计算新区块的哈希值,再通过分布式传播发送给各个节点,各节点对新区块进行投票。投票节点会再次判断新区块内的所有交易的合法性。若交易全部合法,则投出同意票。若区块中发现存在不合法交易,则投反对票。若投票数不够,系统会等待投票数足够后给定判定结果。

在新的区块生成后,处于“未判定”状态。若投票结果符合要求,少数服从多数的意见将决定新区块最终状态。最终状态分为“判定合法”和“判定不合法”。当“不合法”区块中可能存在合法交易,系统会将合法交易提取作为新交易重新分配。

产生的交易被写入区块链的流程如图2所示。

3.2 基于区块链的电子投票系统设计与实现

系统整体架构的构建主要对P2P网络节点,该架构如图3所示,本文设计的系统架构分为应用交互层和底层区块链层。

应用交互层负责与浏览器用户界面交互,也提供浏览器和区块链之间的数据转化业务,将投票数据进行封装提交给P2P网络节点并存储在区块链上。同时响应对投票数据结果的查询请求,利用数据查询接口,直接获取区块链中的数据。底层的区块链层,包括P2P节点网络和全网中唯一一条的区块链。P2P网络主要用于保证系统的稳定、接受交易数据的验证、生成新的区块并投票选择。根据区块链中共识协议,可利用节点对链中的数据进行查询。全网唯一的链条上记录并存储整个系统中所有已验证的交易数据。

本系统使用Java语言进行编程,基于B/S (Browser/Server)架构,即浏览器/服务器模式。并使用SSM(Spring+SpringMVC+Mybatis)框架。数据库使用MySQL5.7,应用交互层的Web程序部署在Tomcat8服务器上,区块链底层程序部署在Linux服务器上。

图2 交易被写入区块链的流程

图3 整体系统架构设计

应用交互层负责与用户的界面交互,该层主要实现系统中具体的业务。投票系统主要分为两种类型的用户:投票管理员用户、普通用户。各用户用例描述如下:

投票管理员主要负责该系统的投票事务,用投票系统进行投票活动的新建、删除和修改,同时对用户进行管理,并对投票活动进行日常的维护。

普通用户包括已经注册的用户,可参与到投票活动中并对其进行投票,投票完成后,用户可查看该投票活动的投票结果,并根据自己的密钥验证自己的投票结果,以防投票数据被篡改,同时也有效防止Web服务的SQL注入攻击[13]。该过程完成后,验证记录等执行结果一并写入区块链。

4 结束语

电子投票在当具有不可替代的作用。区块链技术与电子投票相结合,在安全方面的问题,如系统的效率低下、重复投票、无法验证投票结果等等,有效解决了电子投票实际使用过程中出现的问题,实现了投票数据无法篡改、投票结果可追溯。最终实现了投票系统的安全、公平、公正和公开,适应社会服务发展需求的电子投票系统。

[1] 何蒲, 于戈, 张岩峰, 等. 区块链技术与应用前瞻综述[J]. 计算机科学. 2017(4): 1—7.

[2] 金武, 洪武, 李涛, 等. 区块链技术发展现状及其金融应用研究[J]. 海南金融, 2017(1): 26-30.

[3] 沈鑫, 裴庆祺, 刘雪峰, 区块链技术综述[J]. 网络与信息安全学报. 2016(11): 11-20.

[4] KRAFT D. Difficulty Control for Blockchain-based Consensus Systems[J]. Peer-to-Peer Networking and Applications, 2016, 9(02): 397-413.

[5] 丁未. 基于区块链技术的仪器数据管理创新系统[J]. 中国仪器仪表, 2015(10): 15-17.

[6] 骆慧勇. 区块链技术原理和应用价值[J].金融纵横. 2016, (07): 33-37.

[7] 吴迪, 刘姝. 使用RSA技术实现数字签名[J]. 黑龙江科技信息, 2012(24): 116-116

[8] 楼子彦. 区块链技术, 从理论走向实践[EB/OL]. http://news. tuxi.com.cn/viewtt/q/20180129G0WG3P00.html

[9] Kosba A, Miller A, Shi E, et al. Hawk: The blockchain model of cryptography and privacy-preserving smart contracts[C]. Security and Privacy (SP), 2016 IEEE Symposium on. IEEE, 2016: 839-858.

[10] Buterin, Vitalik. Ethereum: A next-generation smart contract and decentralized application platform[EB/OL], https: //github. com/rthereum/wiki/wiki/%5B English% 5D-White-Paper(2014).

[11] 李静彧, 李兆森. 基于区块链存证的电子数据真实性探讨[J]. 软件, 2018, 39(6): 109-112

[12] 焦英楠, 陈英华. 基于区块链技术的物联网安全研究[J]. 软件, 2018, 39(2): 88-92

[13] 符天, 汪志, 王贞. Web服务的SQL注入攻击及防御研究[J]. 软件, 2018, 39(4): 44-47

[14] Kosba A, Miller A, Shi E, et al. Hawk: The blockchain model of cryptography and privacy-preserving smart contracts[J]. University of Maryland and Cornell University, 2015.

The Realization of Key Technology of Electronic Voting System Based on Blockchain

DANG Jing, SUN Yi

(Department of Telecommunication and Information Engineering, Xi’an University of Science and Technology, Xi’an 710054, China)

With the improvement of material and living standards, people's enthusiasm for participation in various things gradually increases. And voting is one of the most widely used of the Internet technology. At present, there are problems in the existing online voting systems such as repeated fraudulent voting, data tampering, loss of voting data, and failure to verify the outcome of the voting data. At the same time, the polled data is stored in a central server. There is a problem with voting data security. The block chain technology is decentralized through a distributed network, and a fair and open shared data accounts with shared status can be achieved through consensus mechanism. On this basis, this paper proposes the design scheme based on the block chain technology electronic voting system.The overall architecture of the distributed network as a system, can solve the problem of system centralized storage, and the consensus mechanism and digital encryption algorithm can resolve the data security problems in the process. Ultimately, the overall system could be designed.

Block chain; Voting system; Consensus mechanism; Not tampering

TP309.2

A

10.3969/j.issn.1003-6970.2018.11.031

党京(1994-),女,硕士,研究方向:移动互联网。

党京,孙弋. 基于区块链的电子投票系统关键技术的实现[J]. 软件,2018,39(11):140-144

猜你喜欢
共识分布式区块
共识 共进 共情 共学:让“沟通之花”绽放
区块链:一个改变未来的幽灵
论思想共识凝聚的文化向度
区块链:主要角色和衍生应用
商量出共识
区块链+媒体业的N种可能
读懂区块链
基于DDS的分布式三维协同仿真研究
别让“PX共识”在爆炸中瓦解
西门子 分布式I/O Simatic ET 200AL