本发明属于信息安全技术领域,具体涉及一种基于区块链的电子投票方法。
背景技术:
近年来,随着比特币等数字货币的逐渐流行,其底层技术区块链也受到许多研究学者的关注。区块链的本质是一个公开透明的数据库账本,记录所有的交易记录。它的特点是在没有第三方中介机构的情况下,可以提供去中心化、不可篡改、公开透明的安全特性。
电子投票作为通常投票的电子化,利用先进的密码学技术和计算机网络技术,使选民可以在投票站或自己家中设置的计算机终端通过互联网进行投票,由计算机负责统计选票,不仅在组织工作、选票搜集与统计方面都节省了大量的人力物力,而且在一定程度上保证投票人的利益和投票结果的公正,所有这些优点使其取代传统的投票方式成为必然的趋势。
但现有的电子投票都是中心化的,而且容易受到网络攻击,存在篡改等各种风险,区块链的出现无疑为新的电子投票系统的出现提供了基础。
技术实现要素:
本发明的目的在于提供一种可以有效优化当前电子投票系统的秘密投票、公开验证、追踪等问题的基于区块链的电子投票方法。
本发明的目的是这样实现的:
本发明提出了一种基于区块链的电子投票方法,包括选民、认证中心、可信第三方及区块链,主要包括以下步骤:
(1)准备阶段;选民产生属于自己的唯一秘密消息m,根据哈希算法得到消息的哈希值h(m);根据比特币协议,产生自己的公私钥对pub/pri和地址addr;
(2)注册阶段;认证中心在发起投票,选民登录后完成个人注册,并将自己的秘密消息的哈希值h(m)发送给认证中心;
(3)声明选票权;在选举前通过选民、可信第三方、认证中心三者之间的通信完成投票权的声明,确认选民的投票权;
(4)投票阶段;选民向候选人的地址发起交易,实现投票;
(5)计票阶段;候选人向可信第三方公开自己的私钥地址pri,可信第三方查询其他人向候选人发起交易的次数,并进行计数,最终计数结果为各个候选人的得票数;
(6)审计阶段;完成计票后,可信第三方公开合法选民的秘密消息的哈希值h(m)和合法选民的地址addr信息表,认证中心公开拥有的选民姓名和秘密消息的哈希值h(m)信息表,选民根据上述两个表格及自己的相关信息审计投票结果。
进一步的,所述的步骤(2)主要包括以下步骤:
(2.1)认证中心发起投票,根据有投票权的选民信息建立选民表,并为选民提供相应的用于身份验证的登录名;
(2.2)选民用户根据对应的登录名登录认证中心,完成个人注册,并向认证中心发送自己的秘密消息的哈希值h(m);
(2.3)认证中心接收秘密消息的哈希值h(m)后,建立对应的选票人及其秘密消息哈希值的统计表。
进一步的,所述的步骤(3)主要包括以下步骤:
(3.1)选民发送秘密消息的哈希值h(m)给可信第三方;
(3.2)可信第三方询问认证中心h(m)是否被注册;
(3.3)认证中心返回结果,若结果为“是”,说明该选民是完成注册的拥有投票权的合法选民;若结果为“否”,则说明该选民没有在认证中心完成注册或者不是合法的选民;
(3.4)可信第三方认为选民为合法的选民后,要求选民发送自己的秘密消息m;
(3.5)选民发送秘密消息m给可信第三方;
(3.6)可信第三方验证秘密消息m的哈希值与之前认证通过的h(m)是否一致,如果一致则保存选民的地址。
进一步的,所述的步骤(5)包括以下计票规则:
(5.1)由一个交易发起方的地址向一个候选人发起的多次交易仅计为一票;
(5.2)若同一个交易发起方的地址向多名候选人发起交易,则该地址对应的所有选票都认定为无效。
进一步的,所述的步骤(6)主要包括以下步骤:
(6.1)可信第三方将自己拥有的合法选民的秘密消息的哈希值h(m)和合法选民的地址信息表对应关系打乱,进行随机排列,对外公开;
(6.2)认证中心公开拥有的选民姓名和秘密消息的哈希值h(m);
(6.3)选民根据上述两个公开的表以及自己的投票相关信息审计投票结果是否正确以及投票过程中是否存在欺诈行为。
本发明的有益效果在于:基于区块链的投票方法可以排除人为操纵的可能,其去中心化、分布式的网络结构适用于投票选举方案,投票中心不需要专门维护和管理整理投票系统和网络,保证了网络的透明性,也防止了恶意投票或篡改欺诈、欺骗选票的作弊行为,其匿名性特点可以隐藏投票者个人信息,保护个人隐私。投票者还可以对自己的投票情况进行验证、追踪。
附图说明
图1为本发明中基于区块链的电子投票方法的架构图;
图2为本发明中公钥生成比特币地址示意图;
图3为本发明中选民与认证中心的信息匹配图;
图4为本发明中声明投票权的过程图;
图5为本发明中审计阶段认证中心与可信第三方拥有的数据表格图。
具体实施方式
下面结合附图对本发明做进一步描述。
结合图1,本发明提出了一种基于区块链的电子投票方法,包括选民、认证中心、可信第三方及区块链,主要包括以下步骤:
步骤1准备阶段,选民产生属于自己的唯一秘密消息m,并根据sha256算法得到消息的哈希值h(m);除了秘密消息外,选民还需根据比特币协议,产生自己的公私钥对pub、pri和地址add,私钥为256位由0、1组成的随机数字串,公钥由私钥根据椭圆曲线算法计算得出,具体的由公钥产生比特币地址过程如图2所示。
步骤2注册阶段,认证中心在发起投票的时候,会把有投票权的选民建立一个选民表并为他们的帐户提供了一个用于身份验证的登录名。用户登录后,将自己的秘密消息的哈希值h(m)发送给认证中心,具体的信息匹配如图3所示。
步骤3声明选票权,为了再次确认选民的投票权,需要在选举前进行投票权的声明。具体过程如图4所示:
步骤3.1选民发送消息的哈希值h(m)给可信第三方;
步骤3.2可信第三方询问认证中心h(m)是否被注册;
步骤3.3认证中心返回结果,如果结果为“是”,说明该选民是完成注册的拥有投票权的合法选民;如果结果为“否”,则说明该选民没有在认证中心完成注册或者不是合法的选民;
步骤3.4当可信第三方认为选民为合法的选民后,会要求选民发送自己的秘密消息m;
步骤3.5选民发送秘密消息m给可信第三方;
步骤3.6可信第三方验证秘密消息m的哈希值是否与之前接收的h(m)一致,如果一致则保存选民的地址。
步骤4投票阶段,选民通过向候选人的地址发起交易计为一次投票。
步骤5计票阶段,候选人通过向可信第三方公开自己的私钥,由可信第三方查询其他人向候选人发起交易的次数来进行计数,最终公布各个候选人的得票数。查看候选人账户中的交易数即为候选人所得票数。但是要注意以下两种情况:第一,由一个选民向一位候选者发起多次交易仅记为一票;第二,有一个选民向多名候选人发起交易,这个选民的所有选票都被认为是无效的。
步骤6审计阶段,完成计票后,可信第三方公开合法选民的秘密消息的哈希值h(m)和合法选民的地址addr信息表,认证中心公开拥有的选民姓名和秘密消息的哈希值h(m)表,表格如图5所示,由选民根据上述两个表格来对结果进行审计。具体如下:
步骤6.1可信第三方将自己拥有的合法选民的秘密消息的哈希值h(m)和合法选民的地址addr信息表对应关系打乱,进行随机排列,对外公开;
步骤6.2认证中心公开拥有的选民姓名和秘密消息的哈希值h(m);
步骤6.3选民可以根据上述两个公开的表以及自己的投票相关信息来审计投票结果是否正确以及投票过程中是否存在欺诈行为。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。