基于区块链的一人多票电子投票方法及系统技术方案

技术编号:21716661 阅读:37 留言:0更新日期:2019-07-27 20:05
本发明专利技术公开基于区块链的一人多票电子投票方法及系统,使用挑战/响应认证方式,实现了投票人和服务器的双向身份验证,使用区块链保存选票,使得投票结果不可篡改,并可以根据投票人所选择的候选项生成一组与投票人最大投票数相同的选票,并且这一组选票均可验证,基本上实现了一人多票的功能,另外,将选票两次加密之后签名,保证投票的匿名性,将服务器一分为三,分散权力。本发明专利技术具有双向身份验证,一人多票,投票过程匿名、安全,投票结果公开可验证等特点。

Block Chain-based One-person Multi-vote Electronic Voting Method and System

【技术实现步骤摘要】
基于区块链的一人多票电子投票方法及系统
本专利技术属于计算机通信,密码学和区块链领域,涉及一种基于区块链的一人多票电子投票系统。
技术介绍
电子投票发展到现在也有不少年头了,但是一些安全问题仍然不能很好的解决,服务器一旦受到攻击,投票结果很容易被修改,投票的公平性就荡然无存。区块链作为比特币的底层技术实现,以其去中心化不可篡改等特点被用在电子投票系统中,增强了投票系统的安全性。但是,如今很多基于区块链的电子投票系统还有很多的不足。比如,由于每个投票人对应一个区块链账户,所以每个投票人只能对一个候选项投一票,从而导致可以根据每个区块链账户的交易信息的不同倒推出投票人的信息,这就不能保证投票信息的匿名性。而每个投票人只能对一个候选项投一票,制约了很多投票场景。并且现在的很多投票系统都是单方向的身份验证,即只能服务器验证用户的身份,而用户却不能验证服务器是否正确,这又大大增加了投票系统的安全隐患。
技术实现思路
本专利技术的目的是针对如今基于区块链的电子投票系统的不足,设计了一种基于区块链的一人多票电子投票方法及系统。这个投票系统解决了每个投票人只能对一个候选项投一票以及用户不能验证服务器是否正确的问题。基于区块链的一人多票电子投票系统包含了投票工具包模块,前端服务器模块,认证服务器模块,投票服务器模块,计票服务器模块,普通关系型数据库模块,区块链模块。其中:投票工具包模块包括代表投票人身份的ID、投票人的公钥和私钥、认证服务器的公钥和私钥、投票服务器的公钥和私钥、计票服务器的公钥和私钥、随机字符串生成器,用于辅助投票。前端服务器模块,用于投票人的双向身份认证,生成选票,显示投票结果。认证服务器模块,用于投票人的双向身份认证,选票签名。投票服务器模块,用于验证选票签名,将选票第一次解密,以及将验证成功后的选票保存到区块链中。普通关系型数据库模块,用于保存投票人的ID哈希值,最大投票数,认证服务器的公钥和私钥,投票人的公钥,投票服务器的公钥和私钥、计票服务器的公钥和私钥。区块链模块,用于保存选票。计票服务器,用于从区块链中取出选票,计算投票结果,并将结果发送给前端服务器显示。基于区块链的一人多票电子投票方法包含了双向身份认证,选票生成,对选票进行签名,将选票保存到区块链中,投票结果显示等多个部分流程。双向身份认证流程包含如下步骤:步骤1:投票人输入自己的ID和一个随机数ru;前端服务器接收到ID后使用单向哈希函数计算上述ID的哈希值hID;前端服务器接收到随机数ru,调用投票工具包中的认证服务器的公钥,对ru进行加密得到eru;最后前端服务器将(hID,eru)发送给认证服务器。上述投票人输入的ID为事先从投票工具包中获取的。上述加密为现有成熟技术,故不详解。步骤2:认证服务器首先判断hID是否在普通关系型数据库中,若不存在,验证失败,结束。若存在,认证服务器调用普通关系型数据库中认证服务器的私钥,将eru解密得到dru;然后使用单向哈希函数计算dru得到hdru;同时认证服务器选择一个随机数rs,调用普通关系型数据库中的投票人的公钥,对其进行加密得到ers;最后认证服务器将(hdru,ers)发送给前端服务器。步骤3:前端服务器将投票人输入的随机数ru采用单向哈希函数计算其的哈希值,然后与hdru比较,若不同,验证失败,结束。若相同,前端服务器调用投票工具包中的投票人的私钥,对ers解密得到drs,再使用单向哈希函数计算drs得到hdrs,最后将hdrs发送给认证服务器。步骤4:认证服务器使用单向哈希函数计算随机数rs的哈希值,然后与接收到的数据hdrs比较,若不同,验证失败,结束。若相同,验证成功,允许用户登陆投票。选票生成流程包含如下步骤:步骤1:投票人使用投票工具包中的随机字符串生成器生成一串随机字符串s,然后传送到前端服务器;前端服务器使用s作为基础分别向s末尾追加一位数字,数字为从1到M,M为投票人的最大投票数,最后生成一组数量为M的新字符串。步骤2:前端服务器使用单向哈希函数分别计算组内的新字符串得到一组哈希值。步骤3:前端服务器将投票人所投的候选项编号分别追加到这组哈希值的最后得到未加密的一组选票。步骤4:前端服务器调用投票工具包中的投票服务器和计票服务器的公钥;首先使用计票服务器的公钥对选票进行第一次加密,然后使用投票服务器的公钥对选票进行第二次加密。自此选票生成完毕。对选票进行签名的步骤如下:步骤1:前端服务器将ID哈希值与选票发送给认证服务器。步骤2:认证服务器判断接收到的ID哈希值是否在普通关系型数据库中,若不存在,认证服务器拒绝签名,若存在,认证服务器判定这一组选票是否小于等于当前ID的最大投票数,若是则对这一组选票进行签名,每签一个,都会将最大投票数减一,直到最大投票数为0。若不是,则拒绝签名。步骤3:认证服务器将签名之后的这一组选票发送给前端服务器,前端服务器调用投票工具包中认证服务器的公钥验证签名是否正确,若正确,签名结束,否则,再次请求认证服务器签名。上述验证签名为现有成熟技术,故不详解。将验证成功后的选票保存到区块链流程的步骤如下:步骤1:前端服务器将未签名的选票,以及签过名的选票发送给投票服务器。步骤2:投票服务器调用普通关系型数据库中认证服务器的公钥解密签名后的这一组选票,并与未签名的选票进行比较,若有一个选票不同,验证签名失败,投票服务器拒绝投票。步骤3:若全部相同,验证签名成功,投票服务器调用普通关系型数据库中投票服务器的私钥将这一组选票第一次解密,然后随机选择一组区块链账户,分别将选票写入到区块链中。投票结果显示流程的步骤如下:步骤1:计票服务器判断投票是否结束,若未结束,则循环等待投票结束。步骤2:若投票结束,计票服务器从区块链中取出选票,调用普通关系型数据库中计票服务器的私钥对选票进行解密,并计算每个候选项的票数,最后将选票与票数发送给前端服务器。步骤3:前端服务器展示接收到的选票以及每个后选项所得票数,用于投票人进行投票结果的验证。本专利技术的有益效果:1.采用挑战/响应认证方式,使投票人和服务器可以双向认证,大大增强了安全性。2.可以根据投票人所投的候选项生成多个选票,实现了一人多票的功能,并且每个选票都是可以验证的。3.对所投的票进行两次加密之后再签名,提高了匿名性。4.将服务器分为前端,认证,投票,计票四个,使权力分散,安全性大大提高。5.本专利技术与当前别的投票系统相别,实现了一人多票功能,并增强了投票过程的匿名性,投票结果的公开可验证,整体的安全性。附图说明图1为投票系统整体架构图图2为双向身份验证流程图图3为选票生成流程图;图4为对选票进行签名流程图;图5为保存选票到区块链流程图;图6为投票结果显示流程。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。为了方便,以下所有文字中,投票人用U表示,前端服务器用FS,认证服务器用AS表示,投票服务器用VS表示,计票服务器用CS表示。实施例一,参见图1所示,基于区块链的一人多票电子投票方法及本文档来自技高网...

【技术保护点】
1.基于区块链的一人多票电子投票系统,其特征在于包括投票工具包模块,前端服务器模块,认证服务器模块,投票服务器模块,计票服务器模块,普通关系型数据库模块,区块链模块;投票工具包模块包括代表投票人身份的ID、投票人的公钥和私钥、认证服务器的公钥和私钥、投票服务器的公钥和私钥、计票服务器的公钥和私钥、随机字符串生成器,用于辅助投票;前端服务器模块,用于投票人的双向身份认证,生成选票,显示投票结果;认证服务器模块,用于投票人的双向身份认证,选票签名;投票服务器模块,用于验证选票签名,将选票第一次解密,以及将验证成功后的选票保存到区块链中;普通关系型数据库模块,用于保存投票人的ID哈希值,最大投票数,认证服务器的公钥和私钥,投票人的公钥,投票服务器的公钥和私钥、计票服务器的公钥和私钥;区块链模块,用于保存选票;计票服务器,用于从区块链中取出选票,计算投票结果,并将结果发送给前端服务器显示。

【技术特征摘要】
1.基于区块链的一人多票电子投票系统,其特征在于包括投票工具包模块,前端服务器模块,认证服务器模块,投票服务器模块,计票服务器模块,普通关系型数据库模块,区块链模块;投票工具包模块包括代表投票人身份的ID、投票人的公钥和私钥、认证服务器的公钥和私钥、投票服务器的公钥和私钥、计票服务器的公钥和私钥、随机字符串生成器,用于辅助投票;前端服务器模块,用于投票人的双向身份认证,生成选票,显示投票结果;认证服务器模块,用于投票人的双向身份认证,选票签名;投票服务器模块,用于验证选票签名,将选票第一次解密,以及将验证成功后的选票保存到区块链中;普通关系型数据库模块,用于保存投票人的ID哈希值,最大投票数,认证服务器的公钥和私钥,投票人的公钥,投票服务器的公钥和私钥、计票服务器的公钥和私钥;区块链模块,用于保存选票;计票服务器,用于从区块链中取出选票,计算投票结果,并将结果发送给前端服务器显示。2.基于权利要求1所述系统的基于区块链的一人多票电子投票方法,其特征在于包括双向身份认证,选票生成,对选票进行签名,将选票保存到区块链中,投票结果显示等多个部分流程;双向身份认证流程包含如下步骤:步骤1:投票人输入自己的ID和一个随机数ru;前端服务器接收到ID后使用单向哈希函数计算上述ID的哈希值hID;前端服务器接收到随机数ru,调用投票工具包中的认证服务器的公钥,对ru进行加密得到eru;最后前端服务器将(hID,eru)发送给认证服务器;上述投票人输入的ID为事先从投票工具包中获取的;步骤2:认证服务器首先判断hID是否在普通关系型数据库中,若不存在,验证失败,结束;若存在,认证服务器调用普通关系型数据库中认证服务器的私钥,将eru解密得到dru;然后使用单向哈希函数计算dru得到hdru;同时认证服务器选择一个随机数rs,调用普通关系型数据库中的投票人的公钥,对其进行加密得到ers;最后认证服务器将(hdru,ers)发送给前端服务器;步骤3:前端服务器将投票人输入的随机数ru采用单向哈希函数计算其的哈希值,然后与hdru比较,若不同,验证失败,结束;若相同,前端服务器调用投票工具包中的投票人的私钥,对ers解密得到drs,再使用单向哈希函数计算drs得到hdrs,最后将hdrs发送给认证服务器;步骤4:认证服务器使用单向哈希函数计算随机数rs的哈希值,然后与接收到的数据hdrs比较,若不同,验证失败,结束;若相同,验证成功,...

【专利技术属性】
技术研发人员:刘香顺边瑞超吴薇
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1