一种基于区块链的电子投票方法

文档序号:30579855发布日期:2022-06-29 11:34阅读:461来源:国知局
一种基于区块链的电子投票方法

1.本发明涉及一种基于区块链的电子投票方法,属于信息安全技术领域。


背景技术:

2.由于纸质投票的运营成本较高,且投票率较低,电子投票的出现有着重要的意义。投票者可以通过互联网远程提交自己的选票,不受空间的限制。通过电子投票,可以提高投票率,因为相对于复杂麻烦的纸质投票,电子投票的便捷性大大提高了。但是由于电子投票的环境是在互联网中,可能会遭受到恶意的攻击,从强大的黑客到运行该系统的不诚实的工作人员,都可能会导致投票的失败。
3.目前,巴西、印度等国家已在全国范围内使用电子投票,加拿大、美国等也在议会和立法投票中使用电子投票,但是在比利时和法国等国家中因为互联网电子投票系统中存在的严重漏洞而停止使用电子投票。美国邮政在2020年2月就已申请了基于区块链的安全投票系统专利,该专利解决选民的匿名性的问题,通过分离选民身份和选票,利用区块链和邮件实现这一目标。
4.但是自计票方案中一直存在着公平性问题,包括流产问题和自适应问题。流产的问题是指一些选民不进行投票,然而我们的投票是需要所有用户都进行投票才能计算出最终结果的,所以只要有一个人不投票,那么最终的投票结果不会被透露。适应性问题是指最后一个选民有优先权提前知道最终结果,这可能会影响他的选择,导致流产问题。
5.基于上述观察,本发明提出了一种基于区块链的电子投票方法,通过利用区块链及其智能合约,可以简单高效的解决自计票方案中的适应性问题,从而进一步的提高投票方案的性能。


技术实现要素:

6.本发明针对针对自计票电子投票方案中,适应性问题会导致不公平的问题,利用智能合约和哈希函数提出了一种基于区块链的电子投票方法,并利用区块链实现电子投票方案中公开透明性,在保证投票方案安全公平的同时,还解决了自计票方案中适应性的问题。
7.本发明提供一种基于区块链的电子投票方法,包括以下步骤:
8.步骤1:网络初始化系统参数,并将参数公开在区块链上;
9.步骤2:用户在注册机构进行身份注册;
10.步骤3:用户生成自己的选票,并对选票进行加密;
11.步骤4:投票时间截至之后,各方都可以验证计票结果。
12.作为本发明的进一步技术方案,
13.前述的基于区块链的电子投票方法,步骤1具体为:选取2个素数p、q,g是的生成元,gqmodp=1;每个投票者vi生成两对公私钥为(xi,xi),(yi,yi),其中h为密码哈希函数,h:{0,1}
*

{0,1}
256
(sha-256)。注册机构设置并公布投票的截止时间为
t
end

14.前述的基于区块链的电子投票方法,步骤2具体为:所有投票者在登记注册阶段,通过提交自己的身份证明文件给注册机构,从而在系统中进行登记并获取通过认证的证书certi。成功注册的投票者vi将上传自己的两个公钥xi,yi到区块链数据库中,注册机构将其certi存入数据库中。
15.前述的基于区块链的电子投票方法,步骤3具体为:
16.步骤3.1:每个投票者vi计算
17.步骤3.2:设投票者vi给候选者cj的分数为为了生成的承诺,vi选取随机数计算做出承诺其中并生成证明的值为0或者1,最后对分数进行加密,计算其中具体的零知识证明过程如下,在此我们将改为pi进行举例;
18.步骤3.3:每个投票者vi生成自己的选票pi{p
i,0
,...,p
i,k
}(共有k个候选人)后,其中第一个将选票传到链上的投票者v1,为自己的选票p1生成相应的h(p1),并且将该值传到链上,还有其身份证明certi,在这之后的投票者vi将其生成的选票pi和certi传到链上。
19.前述的基于区块链的电子投票方法,步骤4具体为:
20.步骤4.1:认证投票者vi,通过每个投票者vi自己的certi,注册机构通过对比数据库中的certi认证其身份。再对其选票验证(除第一个上传选票的投票者),只有通过两个验证,才可以认为该选票是有效的,可以将其加入到区块链数据库中;
21.步骤4.2:在投票截止时间t
end
之后,智能合约要求第一个投票者上传其加密后的选票,并验证其哈希值是否与之前上传的哈希值相同,验证任何人都可以计算最后通过shanks’baby-step giant-step算法求出满足的sj即候选者cj的总分数。
22.本发明采用以上技术方案与现有技术相比,具有以下技术效果:(1)引入区块链,在我们的电子投票方案中,利用区块链的公开透明性,使其充当公告板,解决了第三方公告板可能存在的安全隐患,同时通过利用智能合约,解决了自计票方案中普遍存在的适应性问题;(2)引入elgamal的变体对选票进行加密。在本发明中,不仅考虑到区块链可以替代一部分第三方的作用,还利用了elgamal的同态性,结合区块链使用,进一步提高了投票计票过程的公平性和安全性;(3)在本发明中,一方面,利用了区块链充当公告板的角色,使得投票计票过程更加透明化。另一方面,利用了elgamal的同态性,实现了自计票方案,解决了第三方计票机构带来的安全性和可靠性问题,针对自计票的电子投票方案中普遍存在的适应性问题,提出了一种简单高效的解决方案。
附图说明
23.图1为本发明系统模型示意图;
24.图2为本发明中选票形式示意图;
25.图3为本发明证明过程示意图。
具体实施方式
26.下面结合附图对本发明的技术方案做进一步的详细说明:
27.如图1所示,本实施例中主要有4个实体:注册机构(ta),监管机构(sa),投票者vi和区块链。其具体功能描述如下:
28.注册机构:其职能主要包括上传投票中的公共参数(如安全参数等等),设定投票的截止时间t
end
,审核投票者的身份并颁发资格证书,维护合格的注册表,统计弃票的人数等等。
29.监管机构:主要是负责监督投票者的行为,判断其行为是否合法,例如重复投票、是否有投票资格。
30.投票者:有资格的投票者可以进行投票,且需要在截至时间之前进行投票,否则视为弃票。
31.区块链:因为投票者已经将选票发送到区块链中,所以智能合约(sc)可以收集所有的选票并计算出计票结果,公布在区块链上。它还需要在规定的截止时间之后验证第一位投票者的选票两次是否为同一张选票。其中使用的区块链最好为私有链或者联盟链(根据具体的场景决定)。
32.本实施例提出了一种基于区块链的电子投票方法,包括初始化参数阶段,用户身份注册阶段,用户生成选票并投票阶段和计票阶段,包括以下步骤:
33.步骤1:网络初始化系统参数,并将参数公开在区块链上:
34.选取2个素数p、q,g是的生成元,gqmodp=1。每个投票者vi生成两对公私钥对(xi,xi),(yi,yi),其中h为密码哈希函数,h:{0,1}
*

{0,1}
256
(sha-256)。注册机构设置并公布投票的截止时间t
end

35.步骤2:用户在注册机构进行身份注册:
36.所有投票者在登记注册阶段,通过提交自己的身份证明文件给注册机构,从而在系统中进行登记并获取通过认证的证书certi。成功注册的投票者vi将上传自己的两个公钥xi,yi到区块链数据库中,注册机构将其certi存入数据库中;
37.步骤3:用户生成自己的选票,并对选票进行加密(选票格式如图2所示):
38.步骤3.1:每个投票者vi计算
39.步骤3.2:设投票者vi给候选者cj的分数为为了生成的承诺,vi选取随机数计算做出承诺其中并生成证明的值为0或者1,最后对分数进行加密,计算其中具体的零知识证明过程如下,在此我们将改为pi进行举例(如图3所示);
40.步骤3.3:每个投票者vi生成自己的选票pi{p
i,0
,...,p
i,k
}(共有k个候选人)后,其中第一个将选票传到链上的投票者v1,为自己的选票p1生成相应的h(p1),并且将该值传到
链上,还有其身份证明certi,在这之后的投票者vi将其生成的选票pi和certi传到链上;
41.步骤4:投票时间截至之后,各方都可以验证计票结果:
42.步骤4.1:认证投票者vi,通过每个投票者vi自己的certi,注册机构通过对比数据库中的certi认证其身份。再对其选票验证(除第一个上传选票的投票者),只有通过两个验证,才可以认为该选票是有效的,可以将其加入到区块链数据库中;
43.步骤4.2:在投票截止时间t
end
之后,智能合约要求第一个投票者上传其加密后的选票,并验证其哈希值是否与之前上传的哈希值相同,验证任何人都可以计算最后通过shanks’baby-step giant-step算法求出满足的sj即候选者cj的总分数。
44.安全性分析
45.原理1(正确性):对于正确的投票,计算结果是唯一的。
46.我们假设传入区块链中的数据均为不可变的且可以被所有投票者访问。对于候选者cj的票数,我们的计票过程如下:
[0047][0048]
因为所以所以sj就是该候选人得到的总分数。
[0049]
原理2(公平性):如果密钥份额被接受,那密钥份额一定是正确的。
[0050]
因为本实施例的最终的计票结果,需要所有的选票相乘才能计算得出,若有一个投票者没有进行投票,则计算不出最终的计票结果。该实施例中还有效的解决自计票方案中存在的适应性问题。
[0051]
在实施例中,注册机构设定了投票的截止时间t
end
,所有投票者需要在t
end
之前将选票上传到区块链上,其中第一个上传选票的投票者,上传的不是选票的密文,而是密文的哈希值。所以,即使在n-1位投票者将自己的选票传输到链上之后,最后一位投票者也不可能在t
end
之前计算出最终的计票结果,并对自己的计票结果进行修改。由于第一个投票者上传的是密文的哈希值,在t
end
之后,智能合约要求第一个投票者v1上传其选票的密文值,还可以对其两次上传的是否为同一选票进行验证。
[0052]
原理3(秘密性):投票者选票的内容必须要保密,不能泄漏给第三方。
[0053]
在该实施例中,采用一种elgamal的变体对选票进行加密,使得最终的加密选票无法解密,但是可以通过其具有的同态性计算出最终的计票结果。由于没有人能对单个选票进行解密,只能计算出最终的计票总和,所以满足了秘密性。
[0054]
原理4(不可重用性):每个投票者只能提交一次选票,如果进行多次提交该选票将被丢弃。
[0055]
在该实施例中,只对选票的内容进行了加密,并没有割裂选票和投票者之间的关系,所以当有资格的投票者提交了选票之后,其存在区块链数据库中的形式应该是vi→
(id,pi),其中pi包括vi给每个候选者分配的分数p
i,j
。若是提交选票时,该id已经有对应的选票,则将丢弃此选票。这满足定期选举所采取的标准做法,即每个投票者只允许提交一票,并且在提交后不允许进行二次投票。
[0056]
原理5(广泛可验证性):不仅投票者自己可以验证自己的选票是否被计入结果,其他任何人都可以验证投票结果的正确性。
[0057]
因为选票都是公开在区块链数据库中,所有人都可以对选票进行乘的操作,计算出计票结果。作为投票者自己来讲,作为一个理性人,他不可能不包括自己的选票进行计票。
[0058]
以上所述,仅为本发明中的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可理解想到的变换或替换,都应涵盖在本发明的包含范围之内,因此,本发明的保护范围应该以权利要求书的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1