电子投票方法以及系统与流程

文档序号:17941639发布日期:2019-06-18 23:09阅读:739来源:国知局
电子投票方法以及系统与流程

本发明涉及投票技术领域,尤其涉及一种电子投票方法和一种电子投票系统。



背景技术:

电子投票系统是指以电子方式进行投票,并通过电子方式统计票数的一种方式。和其他类型投票方式不同的是:电子投票是建立在网络投票系统上的,投票结果完全由程序输出,无需人工参与。然而没有了人工参与,投票结果很可能被黑客利用。且电子投票系统本身的技术含量并不高,对于连续投票的验证能力薄弱,只要黑客掌握了原理,就可以轻松地实现连续刷票,对投票结果进行作弊。现有的电子投票系统经常涉及欺诈、欺骗选票等问题,这些安全问题严重阻碍了电子投票系统广泛应用。



技术实现要素:

本发明为了解决上述现有技术的不足,提供一种电子投票方法和一种电子投票系统。

为了实现上述目的,本发明实施例提供一种适于应用在包含投票模块、投票管理模块、密码保存模块和区块生成模块的电子投票系统中,包括:发起投票步骤:所述投票模块获取由所述投票管理模块发送的标识码和投票列表;所述投票模块生成解密私钥,并根据所述解密私钥计算得到对应的加密公钥;所述投票模块保留所述解密私钥,并将所述加密公钥发送至所述投票管理模块,由所述投票管理模块将所述加密公钥存储到密码保存模块;所述投票模块根据所述投票列表进行投票得到投票信息和投票时间;投票签名步骤:所述投票模块根据所述标识码、所述投票时间和所述投票信息计算得到第一哈希值;所述投票模块使用所述解密私钥对所述第一哈希值进行签名得到签名信息;所述投票模块将所述标识码、所述投票信息、所述投票时间和所述签名信息发送至所述投票管理模块;投票验证步骤:所述投票管理模块从所述密码保存模块中获取所述加密公钥,以及根据所述加密公钥验证所述签名信息得到验证后签名信息;所述投票管理模块根据所述标识码、所述投票信息和所述投票时间计算得到第二哈希值;所述投票管理模块对比所述验证后签名信息和所述第二哈希值;当对比所述验证后签名信息和所述第二哈希值相同后,将所述标识码、所述投票信息、所述投票时间和所述签名信息发送至所述区块生成模块;投票保存步骤:所述区块生成模块根据所述标识码、所述投票信息、所述投票时间和所述签名信息生成新区块加入到区块链中。

在本发明的一个实施例中,所述标识码为关联所述投票模块的唯一标识。

在本发明的一个实施例中,所述解密私钥为在非零自然数中随机生成的字符串。

在本发明的一个实施例中,所述使用所述解密私钥对所述第一哈希值进行签名得到签名信息包括:基于椭圆曲线密码学使用所述解密私钥对所述第一哈希值进行签名得到所述签名信息。

在本发明的一个实施例中,所述新区块包括:所述标识码、所述投票信息、所述签名信息、所述投票时间和所述区块链中上一区块哈希值。

此外,本发明实施例提供了一种电子投票系统,包括:投票管理模块以及分别连接所述投票管理模块的投票模块、密码保存模块和区块生成模块;其中,所述投票模块用于:获取由所述投票管理模块发送的标识码和投票列表;生成解密私钥,并根据所述解密私钥计算得到对应的加密公钥;保留所述解密私钥,以及将所述加密公钥发送至所述投票管理模块,由所述投票管理模块将所述加密公钥存储到密码保存模块;根据所述投票列表进行投票得到投票信息和投票时间;根据所述标识码、所述投票时间和所述投票信息计算得到第一哈希值;使用所述解密私钥对所述第一哈希值进行签名得到签名信息;将所述标识码、所述投票信息、所述投票时间和所述签名信息发送至所述投票管理模块;所述投票管理模块用于:接收由所述投票模块发送的所述标识码、所述投票信息、所述投票时间和所述签名信息;从所述密码保存模块中获取所述加密公钥,并根据所述加密公钥验证所述签名信息得到验证后签名信息;根据所述标识码、所述投票信息和所述投票时间计算得到第二哈希值;对比所述验证后签名信息和所述第二哈希值;当对比所述验证后签名信息和所述第二哈希值相同后,将所述标识码、所述投票信息、所述投票时间和所述签名信息发送至所述区块生成模块;所述区块生成模块用于根据所述标识码、所述投票信息、所述投票时间和所述签名信息生成新区块加入到区块链中。

在本发明的一个实施例中,前述电子投票系统还包括:数据存储模块,连接于所述投票管理模块;其中,所述投票管理模块还用于周期性地访问并统计所述区块链中所有区块的投票信息以得到投票数据,并将所述投票数据存储到所述数据存储模块中。

在本发明的一个实施例中,所述新区块包括:所述标识码、所述投票信息、所述签名信息、所述投票时间和所述区块链中上一区块哈希值。

在本发明的一个实施例中,所述投票模块还用于在投票截止时间内撤回所述投票信息。

在本发明的一个实施例中,所述标识码为关联所述投票模块的唯一标识;所述解密私钥为在非零自然数中随机生成的字符串;所述密码保存模块为第一分布式数据库;所述数据存储模块为第二分布式数据库。

上述技术方案可以具有如下优点或有益效果:本发明实施例提供的一种电子投票系统,是基于区块链实现的电子投票系统,能够进行公开电子投票,基于区块链实现了投票的匿名性、不可篡改性和不可否认性,可以支持大规模的电子投票,且安全级别更高。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明第一实施例中电子投票系统的结构示意图;

图2为本发明第一实施例中电子投票系统的又一结构示意图;

图3为本发明第一实施例中电子投票系统中新区块161的结构示意图;

图4a-图4c为本发明第一实施例中电子投票系统的具体实施方式的示意图;

图5为本发明第二实施例中电子投票方法的流程示意图;

图6为本发明第二实施例中电子投票方法步骤s31的流程图;

图7为本发明第二实施例中电子投票方法步骤s32的流程图;

图8为本发明第二实施例中电子投票方法步骤s33的流程图;

图9为本发明第二实施例中电子投票方法步骤s34的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应当理解这样使用的术语在适当情况下可以互换,以便这里描述的本发明实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。

【第一实施例】

参见图1,本发明第一实施例提出一种电子投票系统。如图1所示,电子投票系统10例如包括:投票模块11、投票管理模块12、密码保存模块13和区块生成模块14。其中,投票管理模块12分别连接投票模块11、密码保存模块12和区块生成模块14。

具体地,投票模块11用于:

获取由投票管理模块12发送的标识码和投票列表;

生成解密私钥,并根据所述解密私钥计算得到对应的加密公钥;

保留所述解密私钥,并将所述加密公钥发送至投票管理模块12,由投票管理模块12将所述加密公钥存储到密码保存模块13;

根据所述投票列表进行投票得到投票信息和投票时间;

根据所述标识码、所述投票时间和所述投票信息计算得到第一哈希值;

使用所述解密私钥对所述第一哈希值进行签名得到签名信息;

将所述标识码、所述投票信息、所述投票时间和所述签名信息发送至投票管理模块12。

投票管理模块12用于:

接收由投票模块11发送的所述标识码、所述投票信息、所述投票时间和所述签名信息,从密码保存模块13中获取所述加密公钥,以及根据所述加密公钥验证所述签名信息得到验证后签名信息;

根据所述标识码、所述投票信息和所述投票时间计算得到第二哈希值;

对比所述验证后签名信息和所述第二哈希值;

当对比所述验证后签名信息和所述第二哈希值相同后,将所述标识码、所述投票信息、所述投票时间和所述签名信息发送至区块生成模块14。

区块生成模块14用于根据所述标识码、所述投票信息、所述投票时间和所述签名信息生成新区块加入到区块链中。

进一步地,如图2所示,电子投票系统例如还包括数据存储模块15,连接于投票管理模块12。其中,投票管理模块12还用于周期性地访问并统计区块链16中所有区块的投票信息以得到投票数据,并将所述投票数据存储到数据存储模块15中。其中,投票管理模块12可以将投票数据首次存储到数据存储模块15中,或者更新数据存储模块15中存储的投票数据。

进一步地,投票模块11还可以在投票截止时间内撤回所述投票信息。

具体地,提到的标识码为关联投票模块11的唯一标识,由网络安全通道进行传输。提到的投票列表为包含多个被选举人的列表。提到的解密私钥为在非零自然数中随机生成的字符串,提到的加密公钥例如基于消息认证模式根据解密私钥计算得到的。密码保存模块13例如为一种数据库,举例而言,为pki(publickeyinfrastructure,基础公钥设施),pki是管理和维护投票人的加密公钥的分布式数据库。数据存储模块15例如为一种分布式数据库。提到的第一哈希值和第二哈希值例如是使用sha-256算法计算得到的。

进一步地,如图3所示,新区块161例如包括:标识码1611、投票信息1612、签名信息1613、投票时间1614和区块链16中上一区块哈希值1615。其中,提到的上一区块哈希值1615例如也是使用sha-256算法计算得到的。

为了便于理解本实施例,下面结合图4a至图4b对本实施例的具体实施方式进行详细说明。

如图4a所示,本实施例具体实施方式提供的一种电子投票系统例如包括投票人(投票模块)、投票办公室(投票管理模块)、pki(密码保存模块)、区块生成者(区块生成模块)、投票数据库(数据存储模块)以及投票区块链(区块链)。

具体地,投票人可以进行投票或撤回投票。投票办公室可以查询投票数量、验证投票真实性、查询投票人的加密公钥以及更新投票数据。投票数据库例如为存储投票数据的分布式数据库,由投票办公室负责周期性更新。pki是管理和维护投票人的加密公钥的分布式数据库,由投票办公室负责初始化数据。区块生成者负责生成新区块。

如图4b所示,投票区块链是由若干依序连接的存储有投票信息的投票区块(区块)组成。通常,第一个投票区块称为创世区块,在进行投票之前,由首个区块生成者创建而来。投票区块链是一种基于分布式账本的具备鲁棒性、高安全性和保护隐私的投票结构。

其中,投票区块链的投票区块包括投票人id也即标识码、投票信息、投票签名也即签名信息、投票时间又称时间戳和上一个区块哈希值。其中,投票人id是被随机赋予的一串无意义的字符串,由网络安全通道进行传送或线下领取。投票信息是标注被选举人的电子信息。投票签名是使用投票人的解密私钥对投票信息的哈希值进行签名运算后产生的签名,用于保证投票的不可抵赖性。投票时间是用于记录投票时间的字符串。上一个区块哈希值是使用sha-256算法计算上一个区块的哈希值。它确保了上一个区块的完整性。一旦区块产生,区块的哈希值被计算,它将不能够再被修改。

进一步地,投票办公室可以通过投票区块链的创世区块,访问投票区块链上所有的投票区块中存储的投票信息,统计投票的数据。投票办公室还可以通过查询公钥基础设施pki获得投票人的加密公钥,以及验证投票的真实性和投票人是否有权限投票。投票办公室还可以通过周期性查询区块链的投票信息,更新投票数据库中的投票数据。投票数据库存储所有投票数据。pki存储所有投票人的加密公钥。

如图4c所示,电子投票系统的进行电子投票的工作过程如下:

(1)每一个投票人通过网络安全通道从投票办公室领取id以及被选举人列表(投票列表)。

(2)每一个投票人生成一对解密私钥和加密公钥,然后自行保管解密私钥,提交加密公钥到投票办公室。

(3)投票办公室将加密公钥存储到pki。

(4)投票办公室随机选举区块生成者。

(5)首个选举出来的区块生成者创建创世区块,即投票区块链中第一个投票区块。

(6)投票人使用sha-256根据投票信息、标识码和投票时间生成对应的哈希值h=id+vote+timestamp。

其中,使用sha-256根据投票信息、标识码和投票时间生成对应的哈希值的具体过程如下:

(a)m是投票信息的二进制表示。

(b)使用100...000和64比特表示的m的长度填充m,即m′=pad(m)。

(c)m被分成512比特的块,即m(1),m(2),...,m(n)

(d)64个常数被使用,标识为w0,w1,...,w63。

(e)8个变量被使用,即a=0x6a09e667、b=0xbb67ae85、c=0x3c6ef372、d=0xa54ff53a、e=0x510e527f、f=0x9b05688c、g=0x1f83d9ab、h=0x5be0cd19。

(f)在每一个块中基于上一个块的计算结果计算64轮迭代运算。

(g)最后一个块的计算结果即为哈希值。

(7)投票人使用解密私钥对上一步骤得到的哈希值进行签名运算生成签名s。

其中,签名是基于椭圆曲线密码(ecc)实现的,用于保证投票的真实性。解密私钥是投票人在[1,n-1]中随机生成的字符串da,加密公钥是投票人根据解密私钥生成的字符串qa=da×g。×是椭圆曲线点乘法。g表示椭圆曲线基点,n表示素数阶,ln表示n比特长度。

投票人使用解密私钥对上一步骤得到的哈希值进行签名运算生成签名s的具体过程如下:

(a)计算v′=hash(v),hash是使用sha-256的哈希函数。

(b)令z是ln最左的比特系列v′。

(c)从[1,n-1]中选择一个随机整数k。

(d)计算椭圆曲线点(x1,y1)=k×g。

(e)计算r=x1modn,如果r==0,返回(c)。

(f)计算s=k-1(v′+rda)modn,如果s==0,返回(c)。

(g)投票的哈希值的签名是(r,s)。

(8)投票人将标识码、投票信息、投票时间和上一步骤得到的签名,即id,vote,timestamp,s发送到投票办公室。

(9)投票办公室获取投票人的加密公钥。

(10)投票办公室使用sha-256根据标识码、投票信息和投票时间生成对应的哈希值h,其中h=id+vote+timestamp。

(11)投票办公室使用加密公钥验证步骤(8)的签名,并获得h′。

(12)投票办公室对比h和h′,查询和验证投票人是否有权限投票。

(13)验证成功后,区块生成者根据标识码、投票信息、投票时间和签名信息生成一个新区块,并在新区块尾部嵌入上一个区块哈希值,然后将新区块加入区块链。

其中,投票是投票人根据被选举人列表进行选择的过程,一般是公开和非加密的形式。

当然,本实施例中,投票人可以撤回投票,即投票人可以在截止时间内撤回投票,撤回的过程与投票的过程类似,为了简洁,在此不再重述。

综上所述,本实施例提供的电子投票系统,是基于区块链实现的电子投票系统,能够进行公开电子投票,基于区块链实现了投票的匿名性、不可篡改性和不可否认性,可以支持大规模的电子投票,且安全级别高。

【第二实施例】

参见图5,本发明第二实施例提供的电子投票方法的流程示意图。如图5所示,电子投票方法例如包括步骤s31至步骤s34。

步骤s31:发起投票步骤;

其中,如图6所示,步骤s31例如包括步骤s311至s314。

步骤s311:所述投票模块获取由所述投票管理模块发送的标识码和投票列表;

步骤s312:所述投票模块生成解密私钥,并根据所述解密私钥计算得到对应的加密公钥;

步骤s313:所述投票模块保留所述解密私钥,并将所述加密公钥发送至所述投票管理模块,由所述投票管理模块将所述加密公钥存储到密码保存模块;

步骤s314:所述投票模块根据所述投票列表进行投票得到投票信息和投票时间;

步骤s32:投票签名步骤;

其中,如图7所示,步骤s32例如包括步骤s321至步骤s323。

步骤s321:所述投票模块根据所述标识码、所述投票时间和所述投票信息计算得到第一哈希值;

步骤s322:所述投票模块使用所述解密私钥对所述第一哈希值进行签名得到签名信息;

步骤s323:所述投票模块将所述标识码、所述投票信息、所述投票时间和所述签名信息发送至所述投票管理模块;

步骤s33:投票验证步骤;

其中,如图8所示,步骤s33例如包括步骤s331至步骤s334。

步骤s331:所述投票管理模块从所述密码保存模块中获取所述加密公钥,以及根据所述加密公钥验证所述签名信息得到验证后签名信息;

步骤s332:所述投票管理模块根据所述标识码、所述投票信息和所述投票时间计算得到第二哈希值;

步骤s333:所述投票管理模块对比所述验证后签名信息和所述第二哈希值;

步骤s334:当对比所述验证后签名信息和所述第二哈希值相同后,将所述标识码、所述投票信息、所述投票时间和所述签名信息发送至所述区块生成模块;

步骤s34:投票保存步骤;

其中,如图9所示,步骤s34例如包括步骤s341。

步骤s341:所述区块生成模块根据所述标识码、所述投票信息、所述投票时间和所述签名信息生成新区块加入到区块链中。

其中,提到的标识码为关联投票模块的唯一标识,由网络安全通道进行传输。提到的解密私钥为在非零自然数中随机生成的字符串,提到的加密公钥例如基于消息认证模式根据解密私钥计算得到的。提到的投票列表为包含多个被选举人的列表。提到的密码保存模块例如为一种数据库,举例而言,例如为pki(publickeyinfrastructure,基础公钥设施),pki是管理和维护投票人的加密公钥的分布式数据库。提到的哈希值例如是使用sha-256算法计算得到的。提到的新区块例如包括:所述标识码、所述投票信息、所述签名信息、所述投票时间和所述区块链中上一区块哈希值。

进一步地,步骤s322例如包括:基于椭圆曲线密码学使用所述解密私钥对所述第一哈希值进行签名得到所述签名信息。

需要说明的是,本实施例提供的电子投票方法为前述第一实施例提供的电子投票系统所实现的电子投票工作过程,对于本实施例涉及的各个模块等具体介绍可参考第一实施例,为了简洁,在此不再赘述。

综上所述,本实施例提供的电子投票方法,能够进行公开电子投票,基于区块链实现了投票的匿名性、不可篡改性和不可否认性,可以支持大规模的电子投票,且安全级别高。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1