Processing

Please wait...

Settings

Settings

Goto Application

1. CN109558517 - Multi-party secure election system based on block chain

Note: Text based on automatic Optical Character Recognition processes. Please use the PDF version for legal matters

[ ZH ]
一种基于区块链的多方安全选举系统


技术领域
本发明涉及区块链技术领域,特别涉及一种基于区块链的多方安全选举系统。
背景技术
在学界和业界对比特币有关技术的持续关注下,区块链走入了大家的视野,它是一种有关数字加密交易货币的关键的底层技术。其最大的优势就是去中心化,能够运用多种手段实现当今各国交易货币无法完全实现的、基于去中心化信用体系的点对点交易,在这种无需相互信任为基础的分布式系统中,集中解决了当下流通货币高成本、不安全、效率低等各种问题。区块链是一种去中心化的技术,这就让基于区块链技术的选举能够在很好地保护选民身份不被泄露的同时,用最快的速度统计出投票结果,让整个选举过程能在一种低成本、高效率的环境下运行。到目前为止,区块链已经不再是那个在神坛上高高在上的技术,而是变得非常“接地气”,许多实际应用中都有对它的使用,但是需求与区块链技术紧密契合的选举应用领域的相关研究与发明严重滞后、亟待跟进。因此,对于选举领域中区块链技术的应用研究与发明,不但具备了极为广阔的应用前景,同时也具有很重要的理论意义。
安全多方计算的研究旨在无可信第三方的情况之下,怎样安全地计算一个契约函数的问题,在电子拍卖、电子选举、门限签名及秘密共享等应用场景中起着重要的作用。而区块链基础架构所提出的场景恰恰是一个无可信第三方的场景。对于基于区块链的选举领域,若将安全多方计算结合起来,将在公开、客观的选举过程的前提下,极大的保护了选民的隐私。因此,结合安全多方计算的相关研究与发明具有十分重要的现实意义。
目前投票系统主要包含两种,分别是非区块链的投票系统和基于区块链的投票系统。
在非区块链的投票系统中,一种比较典型的架构设计是Helios投票系统的架构设计。Helios是Ben Adida提出的一个基于网络的开放式审计的投票平台。Helios为了支持可验证性,其使用一个Web服务器作为公开公告板,用来记录投票过程中产生的信息,为所有选民提供一致的视图。而这个Web服务器是需要被所有选民所信任的,于是这便产生了一个信任假设,即一个中心化的角色。
在基于区块链的投票系统中,常常采取了这样一种解决方案:使用区块链作为投票箱。但是这些解决方案需要第三方权威机构的参与,以保护选民隐私。这样的投票系统包括FollowMyVote、TIVI等投票系统。在FollowMyVote中,权威机构混淆选民的真实世界身份和他们的投票密钥之间的对应关系。然后,选民以明文投票。在TIVI中,权威机构在解密和计票之前打乱加密的投票。这些解决方案的局限性在于需要依赖于一个第三方权威机构,并且仅仅使用区块链作为一个不可篡改、仅支持添加的全局数据库。
发明内容
本发明的提出一种基于区块链的多方安全选举系统,旨在克服以上问题。
为实现上述目的,本发明提出的一种基于区块链的多方安全选举方法,其特征在于,具体步骤为:
S10设置阶段:在以太坊系统的服务层制定分布式对等互联选举协议,设置选举管理员和选民,选举管理员设制选举的初始化问题,其包括参与人白名单、选举问题、候选人选项;
S20注册阶段:允许参与人白名单中的选民注册合法身份,且仅具有合法身份的选民获取选举的初始化问题;
S30发送加数阶段:选民将自己回复的选举的初始化问题以加密加数形式发送至以太坊区块链;
S40发送和阶段:选民从区块链中取出所有的加密加数,把这些加密加数求和;
S50计票阶段:选举管理员或具有合法身份的选民调用分布式对等互联选举协议进行票数统计。
优选地,S60选民验证票数,通过Web单页浏览选举结果。
优选地,所述分布式对等互联选举协议,具体为:
S10初始阶段:选取以太坊系统,生成公钥私钥x i 及电子选票a j (j∈{1,…,m}),制定分布式对等互联选举协议,构建用于选举的以太坊区块链;
S20选民注册:在太坊区块链广播公钥,以供n个选民获取,分配私钥x i 给选民,选民根据私钥x i 计算出一个非交互式的零知识证明ZKP(x i )发送以太坊区块链进行身份验证,若验证成功,选民为具有选民身份的选民P i (i∈{1,...,n});
S30发送加数阶段:具有选民身份的选民P i (i∈{1,...,n})在电子选票a j (j∈{1,...,m})上对m个候选人(C 1 ,C 2 ,…,C m ),若支持该候选人Cj ( j∈{1,…,m}),则选票a j =1,反对,则a j =0,由此生成选票,采用椭圆曲线加密算法对选票进行加密获得加密加数a ji ,且将其发送至以太坊区块链;
S40计票阶段:以太坊区块链将所有选民发送来的和的加密加数a ji 的值进行求和:以得到所有候选人C j (j∈{1,…,m})的得票数。
优选地,所述分布式对等互联选举协议,具体为:
S10初始阶段:选取以太坊系统,生成公钥私钥x i 及电子选票a j (j∈{1,…,m}),制定分布式对等互联选举协议,构建用于选举的以太坊区块链;
S20选民注册:在太坊区块链广播公钥,以供n个选民获取,分配私钥x i 给选民,选民根据私钥x i 计算出一个非交互式的零知识证明ZKP(x i )发送以太坊区块链进行身份验证,若验证成功,选民为具有选民身份的选民P i (i∈{1,...,n});
S30发送加数阶段:具有选民身份的选民P i (i∈{1,...,n})在电子选票a j (j∈{1,…,m})上对m个候选人(C 1 ,C 2 ,…,C m ),若支持该候选人C j (j∈{1,...,m}),则选票a j =1,反对,则a j =0,由此生成选票,采用椭圆曲线加密算法对选票进行加密获得加密加数a ji ,且将其发送至以太坊区块链;
S40发送和阶段:通过以太坊区块链,每位选民P i (i∈{1,...,n})通过自己持有的私有密钥x i 对发送给自己的加密加数a ji (j,i∈{1,...,n})进行解密:v ji =decipher(a ji ),其中j,i∈{1,...,n},从而得到v ji
然后对解密得到的所有的加数v ji 进行求和:
其中j,i∈{1,...,n},并将计算得到的和发送给以太坊区块链;
S50计票阶段:以太坊区块链将所有选民发送来的和的值进行求和:
其中i∈{1,...,n},然后将S值由十进制数转化成二进制数,再每位对S进行截取,即可得到所有候选人C j (j∈{1,...,m})的得票数。
优选地,所述选民根据私钥x i 计算出一个非交互式的零知识证明ZKP(x i )的方法为:所述以太坊系统将零知识证明实现为Schnorr证明,使用Fiat-Shamir启发式的方法保证其非交互性。
优选地,所述S10中以太坊系统的选取步骤包括:
(1)假设所有选民承认一个事实(G,g),其中G表示素数阶q的一个有限循环群,g表示G的生成元;
(2)假设现有n个选民(P 1 ,P 2 ,...,P n )参与投票,共有m个候选人(C 1 ,C 2 ,...,C m );
(3)设计电子选票结构:每列由k位构成其中前k-1位为0,最后1位a i 值取决于选民,若选民对候选人C i 投赞成票,则a i =1,否则a i =1,因此选票总位数为m*k。
优选地,所述S30中采用椭圆曲线加密算法对选票进行加密获得加密加数a ji 的方法为:
每位选民P i (i∈{1,...,n})将自己的选票v i (十进制数)执行拆分操作,随机地拆分为n个小整数v ij ,此时满足:然后通过椭圆曲线加密算法使用持有的n个选民的公有密钥对这n个整数进行加密:
a ji =encipher(v ji ),
其中j,i∈{1,…,n}。
本发明还公开了一种基于区块链的多方安全选举系统,其用于实现如权利要求1-7所述的基于区块链的多方安全选举方法,其包括:
用户:用于通过服务器请求Web单页应用,进而与Web单页应用交互,可选地跨域访问其计算机上的以太坊节点,达到其参与选举的目的,用户类型包括选民和选举管理员;
Web单页应用:用于将以太坊区块链的分布式对等互联选举协议提供的服务接口前端可视化,及通过jQuery框架维护用户本地的状态,及与以太坊节点通过JSON-RPC进行交互;
以太坊节点:包括用户本地的以太坊节点和服务器上的以太坊节点,选举系统默认跨域访问用户本地安装的以太坊节点,若用户本地未安装以太坊节点,则与服务器上的以太坊节点进行交互;服务器上的以太坊节点还用于挖矿;
以太坊虚拟机:包括用户本地的以太坊虚拟机和服务器上的以太坊虚拟机,选举系统默认通过用户本地的以太坊虚拟机执行分布式对等互联选举协议代码,若用户本地为安装以太坊节点和以太坊虚拟机,则使用服务器上的以太坊虚拟机进行分布式对等互联选举协议代码的执行;
区块链:用于接收以太坊虚拟机提供的运算结果,进行写入操作,每个以太坊节点通过特定的哈希算法和Merkle树数据结构,将一段时间内接收到的交易数据和代码封装到一个带有时间戳的区块中,并链接到当前最长的主区块链上,形成最新的区块。
优选地,所述选民根据私钥x i 计算出一个非交互式的零知识证明ZKP(x i )的方法为:所述以太坊系统将零知识证明实现为Schnorr证明,使用Fiat-Shamir启发式的方法保证其非交互性。
所述的一种基于区块链的多方安全选举系统,其特征在于,其分层架构为:
呈现层:用于用户与所述选举系统之间的交互,采用Web单页技术,通过jQuery框架维护前端用户状态,Web单页通过以json为协议的远程调用服务与下层服务层进行交互;
服务层:其用于构建分布式的对等网络,由多个以太坊节点组成,对等网络中的以太坊节点为上层呈现层提供以太坊区块链的分布式对等互联选举协议服务,为下层操作层指定执行代码;
操作层:用于通过分布式对等网络中的以太坊虚拟机接收服务层中以太坊节点下达的代码执行指令,执行代码来计算结果,在计算完结果后进行验证,若验证成功,则将运算结果交由下层数据层;
数据层:用于接收上层操作层提供的运算结果,进行区块链写入操作,
根据共识机制,主动的维护合法数据。
优选地,所述服务器为云服务器。
本发明技术方案通过建立基于以太坊区块链的选举系统,使选民得以构建分布式的对等网络,进而消除中心化权威机构带来的信任假设问题;为了满足了投票的匿名性、选票的秘密性、计票的完整性、选举结果的普遍验证性和系统的健壮性等基本安全性,同时也满足选票的完全保密性、无收据性、健壮性、公平性、无争议性等高级安全性的要求,本发明采用了定制的安全多方计算技术。本选举系统选择了以太坊,为其提供了一个内置成熟的图灵完备的编程语言的区块链,使用这种语言可以创建分布式对等互联选举协议来编码实现任意的状态转换功能或者定制的逻辑。以太坊如同一台全球性的计算机,任何人都可以在其上创建去中心化应用,并在其中设立他们自由定义的所有权规则、交易方式。而这种具备分布式对等互联选举协议平台的区块链可以为本选举系统提供去中心化、不可篡改、安全可靠、可编程性等特性。
对于安全多方计算技术,本选举系统改进了简单高效的安全多方求和协议,进而实现了分布式对等互联选举协议。分布式对等互联选举协议是基于安全多方求和协议的、去中心化的、自计票的选举协议,其能满足更高的安全性需求,并且与区块链契合。该分布式对等互联选举协议是区块链智能合约的上层抽象,区块链智能合约的实现以该分布式对等互联选举协议为依据。
本发明将这两种技术结合,充分发挥它们各自的优势,不仅可以提升安全性,而且还能降低由于第三方权威机构所带来的风险、同时也降低了人力、物力和各方各面的维护成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明分布式对等互联选举协议一实施例的方法流程图;
图2为所述电子选票结构图;
图3为本发明基于区块链的多方安全选举系统的功能分层架构示意图;
图4为本发明基于区块链的多方安全选举的系统架构示意图;
图5为本发明基于区块链的多方安全选举方法的方法流程图,
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,若本发明实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
如图1-5所示,一种基于区块链的多方安全选举系统,旨在克服以上问题。
为实现上述目的,本发明提出的一种基于区块链的多方安全选举方法,其特征在于,具体步骤为:
S10设置阶段:在以太坊系统的服务层制定分布式对等互联选举协议,设置选举管理员和选民,选举管理员设制选举的初始化问题,其包括参与人白名单、选举问题、候选人选项;
S20注册阶段:允许参与人白名单中的选民注册合法身份,且仅具有合法身份的选民获取选举的初始化问题;
S30发送加数阶段:选民将自己回复的选举的初始化问题以加密加数形式发送至以太坊区块链;
S40发送和阶段:选民从区块链中取出所有的加密加数,把这些加密加数求和;
S50计票阶段:选举管理员或具有合法身份的选民调用分布式对等互联选举协议进行票数统计。
优选地,S60选民验证票数,通过Web单页浏览选举结果。
优选地,所述分布式对等互联选举协议,具体为:
S10初始阶段:选取以太坊系统,生成公钥私钥x i 及电子选票a j (j∈{1,…,m}),制定分布式对等互联选举协议,构建用于选举的以太坊区块链;
S20选民注册:在太坊区块链广播公钥,以供n个选民获取,分配私钥x i 给选民,选民根据私钥x i 计算出一个非交互式的零知识证明ZKP(x i )发送以太坊区块链进行身份验证,若验证成功,选民为具有选民身份的选民P i (i∈{1,...,n});
S30发送加数阶段:具有选民身份的选民P i (i∈{1,...,n})在电子选票a j (j∈{1,…,m})上对m个候选人(C 1 ,C 2 ,…,C m ),若支持该候选人C j (j∈{1,...,m}),则选票a j =1,反对,则a j =0,由此生成选票,采用椭圆曲线加密算法对选票进行加密获得加密加数a ji ,且将其发送至以太坊区块链;
S40计票阶段:以太坊区块链将所有选民发送来的和的加密加数a ji 的值进行求和:以得到所有候选人C j (j∈{1,…,m})的得票数。
优选地,所述分布式对等互联选举协议,具体为:
S10初始阶段:选取以太坊系统,生成公钥私钥x i 及电子选票a j (j∈{1,…,m}),制定分布式对等互联选举协议,构建用于选举的以太坊区块链;
S20选民注册:在太坊区块链广播公钥,以供n个选民获取,分配私钥x i 给选民,选民根据私钥x i 计算出一个非交互式的零知识证明ZKP(x i )发送以太坊区块链进行身份验证,若验证成功,选民为具有选民身份的选民P i (i∈{1,...,n});
S30发送加数阶段:具有选民身份的选民P i (i∈{1,...,n})在电子选票a j (j∈{1,…,m})上对m个候选人(C 1 ,C 2 ,…,C m ),若支持该候选人C j (j∈{1,...,m}),则选票a j =1,反对,则a j =0,由此生成选票,采用椭圆曲线加密算法对选票进行加密获得加密加数a ji ,且将其发送至以太坊区块链;
S40发送和阶段:通过以太坊区块链,每位选民P i (i∈{1,...,n})通过自己持有的私有密钥x i 对发送给自己的加密加数a ji (j,i∈{1,...,n})进行解密:
v ji =decipher(a ji ),其中j,i∈{1,...,n},从而得到v ji
然后对解密得到的所有的加数v ji 进行求和:
其中j,i∈{1,...,n},并将计算得到的和发送给以太坊区块链;
S50计票阶段:以太坊区块链将所有选民发送来的和的值进行求和:
其中i∈{1,...,n},然后将S值由十进制数转化成二进制数,再每位对S进行截取,即可得到所有候选人C j (j∈{1,...,m})的得票数。
优选地,所述选民根据私钥x i 计算出一个非交互式的零知识证明ZKP(x i )的方法为:所述以太坊系统将零知识证明实现为Schnorr证明,使用Fiat-Shamir启发式的方法保证其非交互性。
优选地,所述S10中以太坊系统的选取步骤包括:
(1)假设所有选民承认一个事实(G,g),其中G表示素数阶q的一个有限循环群,g表示G的生成元;
(2)假设现有n个选民(P 1 ,P 2 ,...,P n )参与投票,共有m个候选人(C 1 ,C 2 ,...,C m );
(3)设计电子选票结构:每列由k位构成其中前k-1位为0,最后1位a i 值取决于选民,若选民对候选人C i 投赞成票,则a i =1,否则a i =1,因此选票总位数为m*k。
优选地,所述S30中采用椭圆曲线加密算法对选票进行加密获得加密加数a ji 的方法为:
每位选民P i (i∈{1,...,n})将自己的选票v i (十进制数)执行拆分操作,随机地拆分为n个小整数v ij ,此时满足:然后通过椭圆曲线加密算法使用持有的n个选民的公有密钥对这n个整数进行加密:
a ji =encipher(v ji ),
其中j,i∈{1,…,n}。
本发明还公开了一种基于区块链的多方安全选举系统,其用于实现如权利要求1-7所述的基于区块链的多方安全选举方法,其包括:
用户:用于通过服务器请求Web单页应用,进而与Web单页应用交互,可选地跨域访问其计算机上的以太坊节点,达到其参与选举的目的,用户类型包括选民和选举管理员;
Web单页应用:用于将以太坊区块链的分布式对等互联选举协议提供的服务接口前端可视化,及通过jQuery框架维护用户本地的状态,及与以太坊节点通过JSON-RPC进行交互;
以太坊节点:包括用户本地的以太坊节点和服务器上的以太坊节点,选举系统默认跨域访问用户本地安装的以太坊节点,若用户本地未安装以太坊节点,则与服务器上的以太坊节点进行交互;服务器上的以太坊节点还用于挖矿;
以太坊虚拟机:包括用户本地的以太坊虚拟机和服务器上的以太坊虚拟机,选举系统默认通过用户本地的以太坊虚拟机执行分布式对等互联选举协议代码,若用户本地为安装以太坊节点和以太坊虚拟机,则使用服务器上的以太坊虚拟机进行分布式对等互联选举协议代码的执行;
区块链:用于接收以太坊虚拟机提供的运算结果,进行写入操作,每个以太坊节点通过特定的哈希算法和Merkle树数据结构,将一段时间内接收到的交易数据和代码封装到一个带有时间戳的区块中,并链接到当前最长的主区块链上,形成最新的区块。
优选地,所述选民根据私钥x i 计算出一个非交互式的零知识证明ZKP(x i )的方法为:所述以太坊系统将零知识证明实现为Schnorr证明,使用Fiat-Shamir启发式的方法保证其非交互性。
所述的一种基于区块链的多方安全选举系统,其特征在于,其分层架构为:
呈现层:用于用户与所述选举系统之间的交互,采用Web单页技术,通过jQuery框架维护前端用户状态,Web单页通过以json为协议的远程调用服务与下层服务层进行交互;
服务层:其用于构建分布式的对等网络,由多个以太坊节点组成,对等网络中的以太坊节点为上层呈现层提供以太坊区块链的分布式对等互联选举协议服务,为下层操作层指定执行代码;
操作层:用于通过分布式对等网络中的以太坊虚拟机接收服务层中以太坊节点下达的代码执行指令,执行代码来计算结果,在计算完结果后进行验证,若验证成功,则将运算结果交由下层数据层;
数据层:用于接收上层操作层提供的运算结果,进行区块链写入操作,
根据共识机制,主动的维护合法数据。
优选地,所述服务器为云服务器。
本发明技术方案通过建立基于以太坊区块链的选举系统,使选民得以构建分布式的对等网络,进而消除中心化权威机构带来的信任假设问题;为了满足了投票的匿名性、选票的秘密性、计票的完整性、选举结果的普遍验证性和系统的健壮性等基本安全性,同时也满足选票的完全保密性、无收据性、健壮性、公平性、无争议性等高级安全性的要求,本发明采用了定制的安全多方计算技术。本选举系统选择了以太坊,为其提供了一个内置成熟的图灵完备的编程语言的区块链,使用这种语言可以创建分布式对等互联选举协议来编码实现任意的状态转换功能或者定制的逻辑。以太坊如同一台全球性的计算机,任何人都可以在其上创建去中心化应用,并在其中设立他们自由定义的所有权规则、交易方式。而这种具备分布式对等互联选举协议平台的区块链可以为本选举系统提供去中心化、不可篡改、安全可靠、可编程性等特性。
对于安全多方计算技术,本选举系统改进了简单高效的安全多方求和协议,进而实现了分布式对等互联选举协议。分布式对等互联选举协议是基于安全多方求和协议的、去中心化的、自计票的选举协议,其能满足更高的安全性需求,并且与区块链契合。该分布式对等互联选举协议是区块链智能合约的上层抽象,区块链智能合约的实现以该分布式对等互联选举协议为依据。
本发明将这两种技术结合,充分发挥它们各自的优势,不仅可以提升安全性,而且还能降低由于第三方权威机构所带来的风险、同时也降低了人力、物力和各方各面的维护成本。
在本发明实施例中,本发明的分布式对等互联选举协议应该理解为一个基于安全多方求和协议的、去中心化的、自计票的、安全可靠的协议,其包含4个阶段:注册阶段、发送加数阶段、发送和阶段、计票阶段。
首先,整个选举系统包括所有选民承认一个事实(G,g)。其中G表示素数阶q的一个有限循环群,并且在G上的判定Diffie-Hellman(DDH)问题是困难的;g表示G的生成元。
其次,建立一个有资格的选民集合(P 1 ,P 2 ,…,P n ),并且每个选民P i 挑选一个随机值x i 作为自己的私有密钥并唯独自己持有。
假设现有n个选民(P 1 ,P 2 ,…,P n )参与投票,共有m个候选人(C 1 ,C 2 ,…,C m ),我们设计的选票结构如图2所示,
每列由k位构成其中前k-1位为0,最后1位a i 值取决于选民。若选民对候选人C i 投赞成票,则a i =1,否则a i =1,因此选票总位数为m*k。
1.注册阶段
每位选民P i (i∈{1,…,n})将他们的公有密钥和一个非交互式的零知识证明ZKP(x i )广播出去,以此证明自己持有私钥
x i 。本选举系统将这个零知识证明实现为一个Schnorr证明,使用Fiat-Shamir启发式的方法保证其非交互性。当以太坊区块链验证了选民的零知识证明的有效性之后,该选民则注册成功,即证明了选民身份的合法性。与此同时,每位选民都拥有所有选民的公有密钥。
2.发送加数阶段
每位选民P i (i∈{1,…,n})在电子选票上对候选人C j (j∈{1,…,m})进行表决。支持时a j (j∈{1,…,m})取值为1,反对时取值为0,于是生成一个二进制数,将该数转换成十进制数。与此同时,本地验证该选票的合法性。
每位选民P i (i∈{1,…,n})将自己的选票v i (十进制数)执行拆分操作,随机地拆分为n个小整数v ij ,此时满足:然后通过椭圆曲线加密算法使用持有的n个选民的公有密钥对这n个整数进行加密:
a ji =encipher(v ji ),
其中j,i∈{1,…,n}。并将加密后的加数值a ji 发送给以太坊区块链。通过以太坊区块链,所有选民可以获取到加密加数,但是只有拥有相应私有密钥的选民才能获取到相应的加数值。也就是说,选民P i 才能通过自己持有的私有密钥x i 对加密加数a ji 进行解密,从而得到v ji
3.发送和阶段
通过以太坊区块链,每位选民P i (i∈{1,…,n})通过自己持有的私有密钥x i 对发送给自己的加密加数a ji (j,i∈{1,…,n})进行解密:
v ji =decipher(a ji ),
其中j,i∈{1,…,n}),从而得到v ji ,然后对解密得到的所有的加数v ji 进行求和:
其中j,i∈{1,…,n}。并将计算得到的和发送给以太坊区块链。
4.计票阶段
当以太坊收到所有选民发送来的和之后,以太坊将所有得到的和的值进行求和:
其中i∈{1,…,n}。然后将S值由十进制数转化成二进制数,然后每位对S进行截取,即可得到所有候选人C j (j∈{1,…,m})的得票数。
在本发明实施例中,本发明结合了区块链技术和安全多方计算技术,专注于选举领域,构建分布式对等互联的选举系统。图4展示了本选举系统的选举流程。在以太坊底层系统中构建分布式对等互联选举协议时,构建者默认成员本选举系统的选举管理员,其间他可以将选举管理员的角色转移给其他外部账户。此选举管理员负责设立参与人白名单、选举问题、候选人选项等初始化问题,同时确保选举能够在各个阶段顺利进行下去。本选举系统只允许参与人白名单中的外部账户注册合法身份,并且也只允许注册了的选民参与接下来的选举阶段。
1.设置阶段
该阶段只对选举管理员开放,不对选民开放。选举管理员在该阶段设立参与人白名单、选举问题和候选人选项等选举初始化问题。只有参与人白名单中的外部用户才拥有注册合法选民身份的资格。
2.注册阶段
该阶段对选举管理员和参与人白名单中的外部用户开放。对于参与人白名单中的外部用户,其可在查看选举问题和候选人选项后,决定是否参与本次选举。若其决定参与,则注册合法选民身份,同时将自己的公有密钥提交给以太坊区块链;若其决定不参与,则退出平台即可。对于选举管理员,其可以观测到外部用户注册合法选民身份的实时情况,决定是否开始下一阶段进行。
3.发送加数阶段
该阶段对选举管理员和已注册的选民开放。对于已注册的选民,其选择其意向的候选人,并将特定格式的选票,拆分成多个随机加数,并使用相应选民的公有密钥进行加密,提交给以太坊区块链;对于选举管理员,其可以观测到已注册的选民发送加数的实时情况,决定是否开始下一阶段的进行。
4.发送和阶段
该阶段对选举管理员和已注册的选民开放。对于已注册的选民,其使用自己持有的私有密钥对其他选民发送来的随机加数进行解密,并对其求和,将和的值提交给以太坊区块链;对于选举管理员,其可以观测到已注册的选民发送和的实时情况,决定是否开始下一阶段的进行。
5.计票阶段
该阶段对选举管理员和已注册的选民开放。对于已注册的选民,任何一位选民都可以调用以太坊的分布式对等互联选举协议代码,进行票数的统计,在统计票数之后,所有的选民都可以验证票数,并且浏览选举结果;对于选举管理员,其也可以调用以太坊的分布式对等互联选举协议代码,进行票数的统计,其还拥有开启新一轮选举的权利。
在本发明实施例中,用户角色分为选民和选举管理员。用户通过云服务器请求Web单页应用,云服务器通过HTTP响应返回给用户其角色对应的Web单页应用。用户进而与Web单页应用交互,可选地跨域访问其计算机上的以太坊节点,达到其参与选举的目的。
Web单页应用主要负责将以太坊区块链的分布式对等互联选举协议提供的服务接口前端可视化,提高用户体验度;其次通过jQuery等框架维护用户本地的状态,与以太坊节点通过JSON-RPC实现交互目的,实现分布式对等互联选举协议的调用,此处的选择有两:一、是跨域访问本地的以太坊节点;二、若本地没有安装以太坊节点,则通过与云服务器上的以太坊节点的交互,进而达到调用分布式对等互联选举协议的目的。
以太坊节点分为两类:用户本地的以太坊节点;云服务器上的以太坊节点。选举系统默认跨域访问用户本地安装的以太坊节点,若用户本地未安装以太坊节点,则与云服务器上的以太坊节点进行交互。与此同时,云服务器上的以太坊节点负责挖矿,使得整个网络的稳定运行。
以太坊虚拟机也分为两类:用户本地的以太坊虚拟机;云服务器上的以太坊虚拟机。选举系统默认通过用户本地的以太坊虚拟机执行分布式对等互联选举协议代码,若用户本地为安装以太坊节点和以太坊虚拟机,则使用云服务器上的以太坊虚拟机进行分布式对等互联选举协议代码的执行。
区块链接收以太坊虚拟机提供的运算结果,进行写入操作,每个分布式节点都可以通过特定的哈希算法和Merkle树数据结构,将一段时间内接收到的交易数据和代码封装到一个带有时间戳的区块中,并链接到当前最长的主区块链上,形成最新的区块。
在本发明实施例中,呈现层主要负责用户与系统之间的交互,将抽象、专业型的接口调用转为前端可视化,提高用户体验度;其次负责前端用户状态的维护,呈现层选用Web单页技术,通过jQuery等框架维护前端用户状态,不再以页面为单位,更多的采用组件化思想,使得代码结构和组织方式更加规范化。呈现层的Web单页应用通过JSON-RPC(是一种以json为协议的远程调用服务)与下层服务层进行交互,使用服务层提供的分布式对等互联选举协议的调用。
服务层只要是构建分布式的对等网络,由多个以太坊节点组成。对等网络中的以太坊节点为上层呈现层提供以太坊区块链的分布式对等互联选举协议服务,为下层操作层指定执行代码。正是由于服务层构建的分布式对等网络,本选举系统才可消除第三方权威机构的存在,进而避免了其带来的资源的浪费和安全性风险。
操作层接收服务层中以太坊节点下达的代码执行指令,执行代码,计算结果。分布式对等网络中的以太坊虚拟机在计算完结果后,需要相互验证,若验证成功,则将运算结果交由下层数据层进行区块链写入操作。
数据层接收上层操作层提供的运算结果,进行区块链写入操作。数据层根据共识机制,主动的维护合法数据。以太坊采用的共识机制是工作量证明机制,通过计算来猜测一个数值,得以解决规定的散列问题。保证在一段时间内,系统只能出现少数合法提案。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。