基于实用拜占庭容错算法的区块链电子计票方案

2020-06-01 10:58杨会君
计算机应用 2020年4期
关键词:验票门限计票

李 靖,景 旭,杨会君

(西北农林科技大学信息工程学院,陕西杨凌712100)(∗通信作者电子邮箱jingxu@nwsuaf.edu.cn)

0 引言

投票与我们日常生活息息相关,大到国家选举、大政方针的制定,小到企业经营、日常社会问题的调查等,均离不开投票。电子投票是伴随着通信和网络技术的发展而诞生的全新投票模式,相较于传统投票方式,电子投票具有高效率、低成本、易操作等特点,在现代社会中发挥着越来越重要的作用。

但是,在现有一般网络化电子投票中,投票信息通常被网络传送到一个假设安全的中心机构,由其负责收集选票和统计结果,所以很有可能在计票过程中存在投票信息被恶意更改、填塞或遗漏的情况。区块链是一种去中心化、防篡改、可追溯、多方共同维护的分布式数据库,改变了传统数据库管理系统的单一维护模式,解决了分布式环境中多方参与者对交易和状态的信任问题[1]。目前区块链技术已经逐渐被应用到电子投票领域中:Zhao 等[2]是第一个提出将区块链技术应用到投票领域中并得以实现的研究人员,在其方案中通过引入奖励/惩罚机制约束区块链中的投票者行为;但是该方案仅考虑了一般可行性,忽视了投票应用应有的安全性和隐私性。Lee 等[3-4]为解决在分布式环境中准确计票的问题,提出在区块链中引入一个可信计票机构保护投票者的投票权力并确保选票得以正确统计;但是区块链作为去中心化、去信任的应用,引入可信计票机构会打破其固有特性,而且由于在实际应用中并没有完全可信的第三方,因此基于任何第三方充当计票机构均存在一定的安全隐患。Somnath 等[5]提出将区块链作为公告板公开存储投票信息,以此满足DRE(Direct-Recording Electronic)系统能够在被不安全访问的情况下实现端到端可验证的电子投票方案;但是该方案同样基于公告板的假设安全性,无法应对公告板作弊或失效时对投票结果的保障。颜春辉[6]利用分布式ELGamal 加密体制和零知识证明协议提出一种基于全同态加密且无需第三方计票的多候选人投票方式;但是该方案存在同态加密算法复杂不利于合约的编写以及投票过程中单一选票验证性不强的问题。由此可见,在目前基于区块链技术实现的电子投票方案中,大多依靠假设存在的第三方可信计票机构或安全的公告板负责选票收集和计票。然而在区块链环境中,并没有所有节点都同时信任的第三方,因此,如何在区块链中完成选票结果的可信统计对基于区块链环境设计电子投票方案至关重要。

区块链作为对等(Peer-to-Peer,P2P)网络应用,在其投票过程中可以保证选票信息的真实性、不可篡改性。而在恶意模型中,恶意节点可能有意给出错误的计票结果。为了保证区块链中计票的准确,共识机制是一个比较好的解决方案。共识机制是解决分布式环境中数据一致性的算法,也是区块链中维持账本一致的重要组成技术。目前,区块链中的共识机制[7]主要分为两类:1)应用在公有链中以工作量证明(Proof of Work,PoW)机制和权益证明(Proof of Stake,PoS)机制为代表的最终一致性共识;2)应用在联盟链中以实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法为代表的强一致性共识。PoW 和PoS 通过节点算力或相应权益竞争区块的记账权,虽然采用激励政策鼓励矿工准确记录交易,但是会在竞争记账权时造成资源的大量浪费,降低共识效率。PBFT则是通过对节点的划分综合考虑拜占庭故障、提高共识达成效率的共识算法,因此PBFT在面向实际应用中更有实效性。

PBFT本质上是一种基于状态机副本复制的算法,通过每个状态副本保持相同的服务状态,实现客户的合法请求。在系统存在不多于(N - 1)/3 数量的拜占庭故障节点的情况下(N 是节点总数),仍然可以维持系统整体的稳定性,正确达成分布式共识。为了实现区块链电子投票中节点对计票结果的正确响应,门限签名是一个比较有效的技术。门限签名是一种特殊的数字签名,指合法的签名必须由系统多个签名者共同签署,即只有签名的参与人员大于或等于规定的门限值时才可以生成合法签名,一方面实现对消息的多重保护,另一方面满足不同层级或数量构成的集合访问,提高数据的可读性。

因此,针对现有区块链电子投票研究中存在的问题,本文主要做了以下工作:

1)提出一种基于实用拜占庭容错协议的区块链电子计票方案,实现无可信计票中心的计票过程,消除计票组织对统计结果的绝对控制;

2)引入门限签名保障本文方案计票过程的正确性,综合考虑分布式因素和确保结果的高可信度,以PBFT中对诚实节点的最低要求作为合法门限签名的阈值;

3)区别于传统PBFT 中主、从节点的确定方式,引入信任度的衡量机制,规范计票节点行为,提高共识效率。

1 相关技术

1.1 区块链电子投票

一个完整的电子投票方案包括制票、投票、验票、计票等基本过程。制票是对不同投票环境中选票内容及格式的指定,可以根据不同的要求设计选票形式。投票是在规定时间内完成选票提交。验票是对选票合法性的检验,主要是验证投票者身份。在验票过程为解决可能泄露投票者隐私的问题,可以采用盲签名[4,8-9]等技术保护投票者隐私。计票是对所有选票结果的统计,多数投票方案[3-5]均由计票机构负责选票统计。由此可见,一个良好的计票方案首先应该保证收集到的选票都是可以通过验证的合法选票,只有确保选票来源,才可能得到正确的计票结果。在基于盲签名的电子投票方案中,典型合法选票构造过程[10]如下:

1)投票者挑选随机数ki作为比特承诺密钥,用位承诺方案f 加密选票mi,计算加密信息fmi=f(mi,ki),然后随机选择盲因子ri盲化fmi得到消息Mi,如式(1)所示。其中(e,n)是组织者公钥信息,之后将该消息连同投票者身份标识发送给投票组织,等待签名。

2)投票组织验证签名确认是投票者发送的消息,并对消息Mi进行盲签名,如式(2)所示,其中d是组织者私钥信息;然后将Di作为投票授权证书颁发给投票者。

3)若签名有效,投票者对盲签名脱盲,得到基于消息mi的签名σi,如式(3)所示;然后将消息/签名信息发送给计票机构用于无记名投票。

1.2 实用拜占庭容错算法

1999 年,Castro 等[11]基于拜占庭容错(Byzantine Fault Tolerance,BFT)算法[12]提出了PBFT 算法,首次将算法复杂度从指数级降为多项式级,使得方案在实际系统中变得可行。在区块链技术和比特币出现后,为解决PoW 等需要消耗巨大算力竞争记账权的问题,PBFT开始被应用在区块链中作为新的共识机制。在基于PBFT算法的区块链中,为保证数据在分布式环境中快速达成共识,包含三部分:

1)一致性协议,是共识算法的基础协议。网络对参与的节点进行主、从节点划分,各节点按序轮流充当主节点。主节点负责率先对交易请求的响应和广播,从节点负责对主节点广播的交易进行确认和再次广播。主、从节点的划分方式节省了竞争记账权时所浪费的资源,能有效避免分叉的产生,显著缩短达成共识的时间。

2)视图更换协议,是共识算法处理主节点故障的协议。当主节点长时间未响应客户端请求或响应结果出现错误,此时需要启动视图更换协议变更主节点。该协议可以保障网络运行畅通,确保不会因为单一主节点的故障影响整个网络。

3)检查点协议,是共识算法中关于删除历史共识日志的协议,起到清理系统内存、降低数据冗余的作用。

1.3 门限签名

本文选择文献[13]中设计的无中心化门限签名方案作为验票节点对结果的签名方式,该方案利用联合秘密共享技术改进了前人方案,避免了泄露签名者私钥,防止恶意签名者联合伪造其他签名者签名的问题,提高了每个部分签名的安全性。其构造方法[14]如下:

1)密钥生成中心(Key Generation Center,KGC)选取两个安全的大素数p和q,满足q|p - 1,同时在GF(q)上选取一个q阶生成元素g,公开p、q、g。

2)KGC 从[1,q - 1]选取整数X,并分为a 个不同的子份额,即X = x1+ x2+ …+ xa,将xi发给每个签名者Si,对于每一个支持的不同级别访问的结构Гi(i=1,2,…,a),KGC 分别计算GΓi,如式(4)所示,同时公开所有的GΓi。

2 本文方案整体思路

针对区块链电子投票中,基于第三方可信计票机构计票不能满足区块链去中心化、去信任特性及无法保障可信计票机构“可信”的问题,本文提出一种基于PBFT的区块链电子计票方案,实现区块链中的可信计票。在该方案中,首先需要满足区块链去中心化、去信任模式,因此,本文的计票过程不再由可信计票机构负责,而是选择由投票者节点负责。但是如果让区块链中所有节点同时计票,又会增加网络的计算开销,造成资源的浪费并且导致结果难以统一,因此需要固定节点负责选票收集。PBFT 中将所有节点划分为主、从节点,然而对主节点的选取方式较为随意,而且某一节点在被选作主节点后没有对其进行真伪性验证,因此使得可能挑选出来的节点是拜占庭故障节点。对此,本文根据PBFT 的基本流程,结合区块链电子计票过程,引入对节点信任度的衡量。在计票阶段中,将投票者节点分为计票节点和验票节点,规定由信任值最高的节点充当计票节点,其他节点均为验票节点:其中,计票节点负责收集所有投票节点发送的合法选票,汇总选票信息得到待验计票结果,并对所有选票和待验计票结果签名,形成待验选举结果,然后发布到投票区块链;验票节点在计票节点公布待验选票结果后,验证统计情况,并根据验证结果对待验选票结果进行部分签名或表示拒绝。如此确定计票节点的选取方式,可以更快、更真实得到正确的待验选票结果,有效减少更换视图协议产生的次数。

另一方面,为防止计票节点成为“伪中心”,本文采用验票签名的形式确保待验选票结果的正确性,使得选票结果只有在经过多数节点认可时才可以最终公布,单一计票节点的信任度并不能代表结果的可信。理想情况下,投票区块链中所有参与节点都可以对待验选票结果进行验证签名,则最终公布的选票结果可以彻底杜绝选票由计票节点计票时可能产生的选票填塞或遗漏问题。但是,区块链作为分布式环境,且无法要求所有验票节点在有效时间内参与对待验选票结果的验证,因此,在确定合法部分签名的量化指标中,本文将PBFT中对诚实节点要求的最少数量作为门限签名的阈值基础,即只有至少得到(2n+1)/3 的部分签名时,系统才可以生成有效的门限签名,确保最终选票结果的可信。这样不仅可以提升方案的可行性,提高门限签名生成的概率,而且能够监督计票节点的统计行为和保证待验选票结果可以受到多数验票节点的验证;同时,方案允许超过门限的验票签名,最终选票结果可以根据具体的签名人数得到最低的可信任度,保障对最终选票结果的高信任共识。

本文旨在解决投票方案中计票环节的可信任处理,因此在计票阶段前假定系统收到的选票均是满足1.1 节中合法选票的构造方案,充分确保选票来源的合法性,即投票者构成的集合{V1,V2,…,Vn}经过投票组织机构(Org)完成对身份合法性的检查,分别得到基于投票消息{m1,m2,…,mn}的盲签名{σ1,σ2,…,σn},形成可以用于投票的消息/签名元组(mi,σi)。当系统发布投票阶段开始后,各投票节点开始将各自的元组信息(mi,σi)发送到投票区块链中,开始投票。本文方案计票整体流程如图1所示。

3 本文方案设计

3.1 计票节点选取

根据投票区块链中节点的信任度高低确定计票节点,信任度越高的节点表明该节点的历史行为越诚实,越适合负责统计选票任务。本文对所有参与投票的投票者节点记为Nodei,并统一赋予相同的初始化信任度T0,此后根据该节点在投票以及验票阶段的表现动态更新其最新信任值。节点更新信任度方式如式(11)所示:

其中:Tij表示第i个节点的第j次信任值;Ti(j-1)表示第i个节点的第j - 1次信任值,即该节点的前次信任值;ε代表在前次选举中对于该节点行为表现的奖励或惩罚。若节点行为良好,具体表现为每次参与投票、积极验证选票并针对待验选票结果作出正确的响应,此时ε 为正值,不断提高其基础信任度;若节点行为较差,具体表现为缺席投票、不验证选票或响应结果与真实结果相悖、存在恶意捣乱,此时ε 为负值,显著降低该节点的信任度。对于改变量ε 可以根据具体业务的需求和选举本身的要求动态决定。在投票开始前,根据投票区块链中所有节点的信任度划分为最可信节点、普通节点和不可信节点,如图2 所示。其中,最可信节点即为链上信任度最高的节点,也就是负责收集选票、统计结果的计票节点,网络中只有一个节点是最可信节点,在普通节点中产生;不可信节点包括信任度低于某个固定限值的节点和作弊被发现的计票节点,投票区块链中可以有多个不可信节点;其余节点则属于普通节点,普通节点和不可信节点均为验票节点。

从节点的信任值变化不难看出,对于每次投票都能积极作出正确响应的节点会不断提升该节点的信任度,也就是说,某一节点的信任度越高说明该节点在历史投票、计票、验票过程中都能够诚实地响应各阶段结果,偏向于相对可靠的节点,因此由这样的节点负责计票会较大程度上更好地完成计票任务。

图1 计票方案整体流程Fig.1 Overall flowchart of counting scheme

图2 各节点信任值的变化Fig.2 Change of credibility of each node

3.2 计票节点统计选举结果

假定Nodec为当前选举中信任度最高的节点,于是该节点即被暂定为此次收集选举信息、统计选票结果的计票节点。当投票阶段开始后,所有合法投票者节点Nodei(包括计票节点Nodec)向投票区块链中匿名发送自己的选票信息,即消息/签名对(mi,σi),并且每张选票中应明确此次选举的主题和节点发送选票的时间:其中写明主题是防止选票信息收集错误,保证投票内容和主题息息相关;标记节点发送时间是为选票提供时间证明,解决选票在规定时间内没有被统计时引发的争议问题。选票具体格式和包含内容如图3所示。

图3 合法选票结构Fig.3 Legal ballot structure

计票节点Nodec收集选票信息,形成待验选票结果的过程如下:

1)收集发送到投票区块链中符合投票主题的选票,在收集过程中也可以继续验证投票者身份是否合法、其盲签名信息是否正确,再度确保选票来源的合法性。

2)将规定投票时间T1内收集的所有合法选票汇总形成表单Listpre,并且根据Listpre计算投票结果,得到待验计票结果Voteresult。

3)将Listpre和Voteresult以及其他相关信息一起加密打包形成待验选票结果(WVR),如式(12)所示:

其中:csk 为计票节点的私钥;ENC 为加密算法保证消息的隐私。

4)对待验选票结果添加时间戳证明TS,防止恶意投票节点在T1后发送选票信息不被接纳而产生对计票节点的争议。并对待验选票结果和时间戳证明进行哈希运算的结果签名,如式(13)所示:

其中:Sig为签名算法保证消息的完整性,确保各节点如实、平等获取计票节点计算的结果。

5)Nodec将WVR 和C 发送到投票区块链中,等待各验票节点对计票节点统计结果的验证。

3.3 验票节点检验待验选举结果

计票节点Nodec在投票区块链公布待验选票结果后,各验票节点首先用计票节点的公钥cpk验证签名信息C是否正确,若验证成功,则表示消息完整,确实由计票节点发布并且没有受到恶意节点对待验选票结果的篡改,然后再解密打开密文消息,获取相关信息。解密方式如式(14)所示:

验票节点得到计票节点公布的待验选票结果后,开始验证其统计信息是否正确。具体验证流程如下:

1)首先检查表单Listpre中是否包含自己的投票/签名信息元组(mi,σi),若包含自己的选票则继续下一步验证;否则发出拒绝信号,请求“re-counting”。

2)由于区块链属于分布式环境,各节点地位相等,任何节点可以获取其他节点发送到投票区块链中的选票,所以验票节点在投票阶段可以自主获取其他选票。因此,自主收集选票信息的验票节点可以验证计票节点选票收集是否完备。若选票收集完备,则继续验证;否则同样发出拒绝信号,请求“re-counting”。

3)然后根据当前表单Listpre中包含的所有合法投票信息,独立计算其待验计票结果Voteresult是否正确。若计算有误,则发出拒绝信号,请求“re-counting”;反之则说明计票节点计算待验选票结果正确,验票节点可以对其进行部分签名。签名过程如下:

①KGC 选取两个安全的大素数p 和q,满足q|p - 1,在GF(q)上选取一个q 阶生成元素g,公开p、q、g;同时确定秘密值X,并分解为X = x1+ x2+ …+ xn,然后将每一个xi发送给验票节点Nodei作为秘密份额。

②验票节点挑选随机数bi作为签名时的私钥,然后根据离散对数难解问题计算签名用到的公钥信息,如式(15)所示:

③验票节点挑取整数ui,根据式(16)~(17)分别计算签名时用到的参数Ui和oi,并将其广播到投票区块链中,然后在验证时间T2内收集所有其他验证节点计算的参数oi,得到由所有oi连乘的公开参数O。

④验证节点根据自己的秘密份额xi和各公开参数,对WVR进行签名,形成有效的部分签名,如式(18)所示:

此时验票节点完成验票任务,将自己对待验选票结果的反馈情况(签名或拒绝)发到投票区块链中,等待其他节点的验证情况。同时验票节点本地保存该信息,方便用于验证最终宣布的结果信息是否和此信息相同。

3.4 选票结果的发布

在系统规定的验证时间T2结束后,计票节点Nodec收集各验票节点对待验选票结果的验证情况,查看是否满足门限阈值。验证结果根据各验票节点对计票节点公布的信息是否接受分为accept 和reject。其中:accept 代表该节点认可计票节点统计和计算得到的待验选票结果,并给出自己部分签名;reject代表该节点不同意计票节点公布的信息,不论是统计错误或是计票错误,验证节点都发出“re-counting”请求。此时,计票节点Nodec将根据收到的accept 和reject 数量对待验选票结果进行如下操作:

1)当Nodec收到accept 数量少于投票节点总数的2/3 时,代表验证选票的验票节点数量没有达到方案的最低门限要求,此时由于待验选票结果仅由较少的节点参与验证,无法保证该结果的正确性,因此,不能生成基于待验选票结果的合法门限签名。但有部分验票节点签名则表示计票节点的行为正确,导致无法生成最终选票结果的原因仅因为验票签名不足,因此网络陷入等待环节,继续等候验票节点的签名,直到满足签名阈值,才能出示最终选举结果。

2)当Nodec收到reject数量大于投票节点总数的1/3时,表示计票节点公布的表单Listpre和选举结果Voteresult确实存在作弊风险,没有合理正确的统计选票结果,此时调用PBFT 中视图更换协议取消Nodec计票节点身份,并降低其信任度;同时选用信任度次高的节点担任计票节点,然后重新完成选票统计和计票任务。

3)当Nodec收到accept 数量大于投票者总数的2/3 时,表示验证选票节点数达到门限签名最低要求,且计票节点统计的待验选票结果得到了大多数节点的认可,此时可以生成对最终选票结果提供证明的门限签名,如式(19)所示:

同时,根据验票节点具体生成的部分签名数量,可以得到关于最终选票结果的最低可信任度ζ,如式(20)所示。

在上述三种情况中,前两种验证情况均代表计票任务以失败告终,都不能被视作准确完成电子计票任务,只有第3)种情况才代表选举结果真实可靠。同时,本文通过对参与验票签名人数(记为sn)的划分明确了选举结果的最低可信任度,并对不同信任度下的结果进行标识,具体对应情况如表1所示。

当计票节点Nodec成功完成计票任务,即可以将所有投票内容以及相关签名信息打包生成区块。在生成单体区块时,仍然选择由区块头和区块体两部分组成,选票区块结构如图4所示。

图4 选票区块结构Fig. 4 Ballot block structure diagram

区块头包含当前区块体内所有交易形成的哈希根植、前一区块的哈希值、用于验证结果真实的门限签名以及选举结果,区块体包含所有合法的投票交易,在每条交易信息中包含消息/签名对(m,σ),最后对区块添加时间戳证明,形成不可篡改、可供验证、结果真实的投票记录。

表1 选举结果状态标识Tab. 1 Status identifications of election result

4 本文方案分析

4.1 可行性分析

在电子投票领域中,Cortier 等[15-16]提到在当前研究中众多的选举方案由于或存在中心机构或选票结果不被验证,导致很大程度上最终结果存在选票填充、遗漏或篡改的问题,从而影响选举结果的真实性。本文基于区块链环境提出了无需可信第三方计票机构的可信计票方案,整体采用PBFT共识机制保障计票结果的正确性,同时区别于当前PBFT 中主、从节点的划分机制,以信任度高低确定计票节点和验票节点。一方面提高分布式环境中计票效率,降低网络开销;另一方面可以监督计票节点统计选票和计票结果的行为。当网络中超过1/3 的验票节点在验证过程中计算的结果信息与计票节点公布的待验选票结果存在差异时,更换计票节点,结果完全根据共识机制,杜绝计票节点对数据的绝对控制,并且由于计票节点在公布待验选票结果时并不能确定参与验票的投票节点,因此更大程度上可以促进计票节点的诚实行为,防止其恶意遗漏、篡改某些选票。采用门限签名达成投票者范围内对待验选票结果的验证,考虑到分布式环境中无法强制要求所有节点验证选票结果和尽可能较大程度保证选举结果的真实性,方案将PBFT在分布式环境中可信节点的数量作为门限签名的阈值:若达到签名数量则结果可信,反之结果视为无效,可有效增加方案的可行性。

4.2 安全性分析

本文重在解决选票在计票过程中存在的安全性问题,在此阶段前依赖高效的盲签名技术完成验票等环节保障选票的合法性。在收集选票过程中,方案选择由可信度最高的节点负责统计选票,消除了传统“可信”计票机构对结果的作弊风险,且计票节点不同于可信机构,投票区块链中的任何节点都可以且必须在最终结果正式公布前验证待验选票结果的正确性,从而保证计票的稳定性。在表示验证成功时,运用门限签名的形式达成对待验选票结果的共识,每个验票节点的部分签名只能由其独立签名,其他任何节点均不能伪造该节点对结果的签名,并且只有当系统中得到的部分签名数超过门限阈值时才可以生成合法门限签名,证明最终结果的真实性。区块链作为去中心化、去信任、防篡改的分布式数据库,任何想要否定存储在区块链数据的攻击者都需要打破既定的共识机制,在PBFT中,只有攻击者控制1/3以上的节点才可以对合法数据进行否定,而在分布式环境中,控制总体数量的1/3 几乎难以实现,且如果确实全网超过1/3的节点不能对合法数据达成共识,则说明网络存在问题,选举受到操控,因此正常情况下,若选票结果在统计正确时,至多只有不超过1/3 的恶意节点或非故障节点提出异议。在选举结果达成共识后,使用哈希算法对交易打包形成区块,任何试图篡改选票的行为都会改变哈希值进而影响区块信息而被发现,因此使用区块链技术可以保障选票在区块账本中的安全性。

4.3 方案对比分析

将本文方案和其他方案进行了有关计票结果正确性的对比分析,具体如表2所示。

表2 不同方案的对比Tab. 2 Comparison of different schemes

在文献[18]的研究基础上,文献[8]方案有效地解决了电子投票方案中容易发生的选票碰撞问题,但是该方案的实现严重依赖于第三方的绝对可信,忽略了计票机构和中心控制机构的“不可信”行为对结果的影响。文献[4]方案在基于区块链技术设计电子投票方案时,虽然保证了结果存储时的安全性和抗篡改性,但是同样需要引入可信第三方负责计票,如此不仅破坏了区块链自身的特性,也会影响计票结果的真实性。文献[17]方案考虑到无法保证单一验票员诚实的问题,提出采用多个验票员验证选票并收集信息,从而降低对单一验票员的绝对可信;但是却没有考虑验票员可以通过联合作弊来对计票结果产生较大的影响。和上述方案相比,本文方案彻底取消了计票时常用的第三方,消除了传统投票方案过程中对计票机构可信的假设条件,满足了区块链环境的去中心化、去信任特性,防止了“可信”计票机构的“不可信”行为。本文方案通过计票节点计票+验证节点验票模式的共识机制保障了计票过程的完整性;采用区块链技术负责数据的安全性,降低了中心数据机构的绝对控制权;通过提高验票者的数量,降低了选票信息被遗漏的风险,充分保证计票结果的稳定性。

5 仿真实验

5.1 测试环境

本文根据联盟链环境设计基于实用拜占庭容错算法的区块链电子计票方案,在实验过程中涉及的测试工具和其相应的作用如表3所示。

表3 测试工具及其作用Tab. 3 Testing tools and their functions

5.2 测试过程

在测试过程中,通过调试不同节点总数N、不同拜占庭故障节点数Nf以及不同诚实节点签名数Nt测试系统能否得到选票结果以及该公布结果的正确性。具体包括:PBFT算法主节点选取和本文基于信任确定计票节点的效率对比,不同节点总数下故障节点对计票结果的影响,以及固定节点总数下故障节点对计票结果的影响。

1)测试PBFT 算法主节点选取和本文基于信任确定计票节点的效率对比。

本文方案的计票过程中,计票节点的确定方式不同于原PBFT算法的主节点选取方式,在PBFT共识算法中,只要网络中总体节点数量多于3 倍的故障节点,使用该算法就可以解决分布式环境中数据的一致性和正确性。换句话说,如果网络中每4 个节点中只存在1 个故障节点时就不会影响系统的稳定性。因此,本文以4 个节点为例,设定其中1 个节点为故障节点,其余3 个是正常节点,在不影响系统稳定性的情况下模拟20 次的投票结果共识中,两种不同计票节点选取方式中计票节点发生更换的次数对比如图5所示。

图5 两种计票节点选取随模拟投票总数递增的更换次数Fig. 5 Number of replacements of two types of counting node selection with increasing simulated ballot number

从图5 不难看出,在模拟20 次投票过程中,通过PBFT 随机选取计票节点的模式共发生5 次计票节点的更换。而采用信任关系确定计票节点时,仅发生过两次计票节点更换:第一次是对初始消息共识时选定了故障节点充当计票节点,由于初始阶段4 个节点信任度相同,所以存在较大概率选择故障节点充当计票节点;第二次是人为关闭该节点网络,阻止其参与共识,此时该节点发生故障,导致系统重新挑选计票节点。

由此可见,无论采用何种模式挑选计票节点都不影响消息的一致性和正确性确认,但是基于信任关系确定计票节点的模式可以有效降低故障节点充当计票节点的次数或概率,从而减少视图更换协议产生次数,提高共识效率。

2)测试不同节点总数下Nf和Nt对计票结果的影响。

本文以节点的形式代表合法投票者,不同的节点总数模拟不同数量的投票场景。在测试过程中,分别测试了当节点总数N = 4,10,30 时,计票结果受拜占庭故障节点数和诚实签名数的影响,测试结果如表4 所示。可以看出,只要网络中收到诚实节点的签名数是已知拜占庭故障节点数的3 倍及以上,系统就可以公布计票节点统计的计票结果,并且该计票结果完全正确,可以实现基于区块链环境的可信电子计票,如图6 所示;但是如果签名数量不满足最低阈值要求,系统则返回提示消息:“签名不足,请继续等待!”,如图7 所示,即不被允许公布计票结果,由此也无需判断该结果的正确性。

表4 不同节点总数下Nf和Nt对计票结果的影响Tab. 4 Impact of Nf and Nt on counting results under different number of nodes

图6 可信计票结果的公示Fig. 6 Publicity of trusted counting result

图7 持续等待签名结果的提示Fig. 7 Prompt of continuous waiting for signature result

3)测试固定节点总数下Nf和Nt对计票结果的影响。

假定网络中节点总数固定不变,测试不同数量的拜占庭故障节点和获得的诚实签名数量对计票结果的影响程度。本文以节点总数是10 为例,通过动态调试网络中的故障节点数和诚实签名数观察能否得到计票结果以及该结果的正确性,测试结果如表5所示。

表5 固定节点总数10下Nf和Nt对计票结果的影响Tab. 5 Impact of Nf and Nt on counting results under 10 nodes

从表5 可知,随着故障节点的不断增加,网络中能够获得的诚实签名逐渐减少,同时不同数量的拜占庭节点对于获取计票结果时要求的诚实节点签名数量不同:当故障节点越少时,需要的诚实签名越少,越容易得到可信计票结果;故障节点越多时,需要的诚实签名越多。当网络中如果没有故障节点,所有节点均为可信节点时,任何节点对计票结果签名都可以代表结果的真实性。当网络中故障节点数量超过4 时,即便剩余节点(6 个)均对计票结果作诚实签名也无法显示投票结果。因为此时故障节点数量已经超过PBFT 共识算法的假设条件,网络本身处于不可信状态,计票结果存在较大概率被恶意节点操控,因此难以在不可信网络中获得公平可信的投票结果,所以系统不公布该结果,保障投票的公平性。

由表4~5 可知,当网络中拜占庭故障节点数低于总数的1/3 且由诚实节点对计票结果的签名数超过总数的2/3 时,系统均能够显示最终的选票结果并且该结果的正确性均为100%。由此可以说明,本文使用PBFT共识算法+门限签名的方案可以起到和计票机构相同的可信作用,因此,将本文方案应用到实际选举或投票场景的计票过程中,可以更加客观地保障选票结果的真实性和公平性。

6 结语

针对区块链电子投票中基于第三方计票机构既不满足区块链去中心化、去信任特性,又无法保障其在计票中完全“可信”的行为,本文提出一种基于实用拜占庭容错算法的区块链电子计票方案。本文方案首先满足区块链环境特性,通过共识机制替代可信第三方计票机构;其次,运用门限签名的方法在结果被所有节点共识之前增加投票者自身的验证,保障计票过程的真实性;同时综合考虑实际因素和保证结果高度可信,将PBFT共识机制对诚实节点要求的最低数量作为签名的门限阈值,不仅能够解决可能存在的拜占庭故障问题,而且可以起到监督计票节点的作用,进一步实现去信任化。最后通过区块链技术将选票记录以及结果存入区块中,由各节点共同维护账本信息,降低传统中心机构对数据的绝对控制和防止中心机构故障导致数据的丢失。未来将进一步研究计票结果根据验票人数的变化趋势,量化可信任度,准确衡量结果的真实性。

猜你喜欢
验票门限计票
基于规则的HEV逻辑门限控制策略
基于方向加权多级门限DP-TBD的目标轨迹检测算法
随机失效门限下指数退化轨道模型的分析与应用
中国戏剧家协会第七届理事会理事选举计票人名单
中国戏剧家协会第七届主席、副主席选举计票人名单
美国现在的选举投票方式比以往任何时候都脆弱