基于区块链的可追踪的匿名电子投票方法与流程

文档序号:17733221发布日期:2019-05-22 02:59阅读:267来源:国知局
基于区块链的可追踪的匿名电子投票方法与流程

本发明涉及密码学与信息安全领域,具体涉及一种基于区块链的可追踪的匿名电子投票方法。



背景技术:

选举在现实社会中扮演了重要的角色,小到班级选举、董事会选举,大到国家范围的选举。传统的纸质投票浪费大量的人力、物力、财力,同时存在选票作假的风险。随后,电子投票应运而生。随着密码学加密方案逐渐应用到现实生活中,与密码学相结合的电子投票方案能在很大的程度上节省经济成本和计算成本,同时利用加密技术可以更好地保护选民隐私。当前,基于电子投票的加密方案主要基于同态加密、混合网络和盲签名技术。

电子投票的应用给人们的生活带来了极大地便利。但是,重复投票、欺诈选票、隐私泄露、计票不准、公平性等问题,一直是电子投票所要解决的问题。同时,选举委员会参与管理选举的权限过大,存在篡改选票、泄露选民隐私的风险。同时,存在选举过程不公开透明,计票结果不能验证、计算量大等问题。而通过匿名认证、区块链技术等相结合的电子投票方案,为解决以上存在的问题提供了较为理想的解决方案。

区块链技术是从比特币分布式账本衍生而来,具有去中心化、不可篡改、可验证的特性。将选票数据记录在区块链中,可以保证数据的真实可靠性而不被篡改,能在很大程度上保证选举结果的真实性。匿名认证是对消息的认证技术,通过认证而不泄露认证者的身份;而可链接性是一种链接已参与活动的有效手段,可以用于有效检测用户不端行为。区块链为用户提供了类似于假名的匿名地址,可以隐藏用户的真实身份,用户可以通过自己的公钥生成具有匿名特性的区块链地址当作自己的账户地址。选民通过将选票加密后,以交易的形式将其存储在区块链上,使得在投票过程中用户匿名、选票真实可验证而不可伪造,保证了选举结果真实有效。



技术实现要素:

本发明的目的是为了解决现有技术中的上述缺陷,提供一种基于区块链的匿名电子投票方法。

本发明的目的可以通过采取如下技术方案达到:

一种基于区块链的可追踪的匿名电子投票方法,所述的匿名电子投票方法包括:

s1、公共参数生成步骤,通过参数生成算法setup(1λ),输入安全参数1λ,输出系统的公共参数pp和主公私钥对(mpk,msk),其中,mpk为主公钥,msk为主私钥,λ是普通的正整数;

s2、用户注册步骤,用户vi向认证中心提交个人信息,通过证书生成算法certgen(msk,pki),输入主私钥msk和用户vi的公钥pki,输出证书certi,其中,i是普通的正整数;

s3、加密选票步骤,通过加密算法enc(mi,epk),输入消息mi和加密公钥epk,输出密文ci,其中,mi表示选票内容,ci表示加密选票;

s4、选票匿名认证步骤,通过认证算法auth(num||ci,pki,ski,certi,pp),输入选举标识号num、加密选票ci、公私钥对pki和ski、证书certi以及公共参数pp,输出证明πi,其中,符号“||”表示将两个消息串联;

s5、投票步骤,将加密选票ci和其对应的证明πi组合在一起,并投出(ci,πi);

s6、验票步骤,通过验证算法verify(num||ci,πi,mpk,pp),输入选举标识号num、加密选票ci、证明πi、主公钥mpk以及公共参数pp,输出验证结果0或1;

s7、链接步骤,通过链接算法link(c1,c2,π1,π2),输入两个加密选票c1和c2以及对应的两个证明π1和π2,输出链接结果0或1;

s8、追踪步骤,通过追踪算法trace(π1,π2),输入两个证明π1和π2,输出求解到的公钥pki;

s9、计票步骤,通过解密算法dec(ci,esk),输入加密选票ci和解密私钥esk,输出明文mi,将有效选票汇总,统计投票结果。

进一步地,所述的步骤s1中,算法setup(1λ)是密码学中一种常见的生成公共参数的算法,输入安全参数1λ,输出系统的公共参数pp和主公私钥对(mpk,msk)。其中,λ是普通的正整数。具体算法实现可参考《现代密码学——原理与协议》中相关内容。

进一步地,所述的步骤s2中,算法certgen(msk,pki)是密码学中一种常见的数字签名算法,输入主私钥msk和用户vi的公钥pki,输出签名certi,即证书。具体算法实现可参考《现代密码学——原理与协议》中相关内容。

进一步地,所述的步骤s3中,算法enc(mi,epk)是密码学中一种常见的加密算法,输入消息mi和加密公钥epk,输出密文ci。具体算法实现可参考《现代密码学——原理与协议》中相关内容。

进一步地,所述的步骤s4中算法auth(num||ci,pki,ski,certi,pp)是一种对消息ci的认证算法,输入选举标识号num,加密选票ci,公私钥对pki和ski,证书certi以及公共参数pp,输出证明πi,其中,符号“||”表示将两个消息串联,本发明的auth算法是对文献“zebralancer:privateandanonymouscrowdsourcingsystematopopenblockchain”中的匿名认证方法的改进,具体如下:

s41、算法auth首先计算两个标签t1和t2,即t1=h(num,sk),t2=h(num,ski)+ci·pki,其中,num是选举标识号,pki和ski分别是选民的公钥和私钥,ci是加密选票,h是密码学中一种常见的hash算法;

s42、算法auth要求用户提供私有证据以证明公开知识是正确生成的,对于存在使得{certvrfy(certi,pki,mpk)=1∧pair(pki,ski)=1∧t1=h(num,ski)∧t2=h(num,ski)+ci·pki}=1恒成立;其中,算法certvrfy(certi,pki,mpk)是密码学中一种常见的签名验证算法,输入证书certi、公钥pki和主公钥mpk,输出验证结果0或1;算法pair(pki,ski)是密码学中一种常见的密钥验证算法,输入公钥pki和私钥ski,输出配对结果0或1;具体参考《现代密码学——原理与协议》中相关内容;

s43、算法auth利用证明算法prover对公开知识和私有证据给出证明结果η,其中,算法是zk-snark零知识证明方案中的证明算法,输入和pp,输出证明结果η。具体参考文献“howtovoteprivatelyusingbitcoin”;

s44、算法auth最后输出证明πi=(t1,t2,η)。

进一步地,所述的步骤s5中,用户将加密选票ci和其对应的证明πi组合在一起,通过区块链地址以交易的形式将(ci,πi)发送到区块链网络中。

进一步地,所述的步骤s6中,验证算法verify(num||ci,πi,mpk,pp),输入选举标识号num,加密选票ci,证明πi、主公钥mpk以及公共参数pp,输出验证结果0或1,筛选出验证通过的选票;其中,验证通过的选票即输出验证结果为1,算法是zk-snark零知识证明方案中的验证算法,输入公开知识证明πi和公共参数pp,输出验证结果0或1,具体参考文献“howtovoteprivatelyusingbitcoin”。

进一步地,所述的步骤s7中,算法link(c1,c2,π1,π2)是一种检查用户是否双投的链接算法,输入s6中验证结果为1的两个加密选票c1和c2,以及对应的两个证明π1和π2,输出链接结果0或1;该算法检查π1和π2中两个t1的值是否相同,若相同则输出1,表明用户投了两次,即双投;否则,输出0,表明用户投了一次。

进一步地,所述的步骤s8中,算法trace(π1,π2)是一种推断用户身份的追踪算法,输入使得s7中输出结果为1的两个证明π1和π2,输出求解到的用户公钥pki;根据link算法中输出为1所对应的π1和π2,该算法通过π1和π2中包含的两个t2,推断出双投用户的公钥pki,表示如下:

由于加密算法的随机性,所以选票ci和ci'是不同的,根据t2、t2'、ci、ci'的值,推断出双投用户的公钥pki=t2-t2'/ci-ci'。

进一步地,所述的步骤s9具体如下:

s91、将步骤s7中输出结果为0的有效加密选票汇总,通过算法dec(ci,esk)对其进行解密;其中,算法dec(ci,esk)密码学中一种常见的解密算法,输入密文ci和解密私钥esk,输出明文mi。

s92、统计解密结果,得到选举结果,同时给出计算选举结果的相应零知识证明。

本发明相对于现有技术具有如下的优点及效果:

1)本发明改进了一种基于前缀的匿名认证方法,在保护用户隐私的前提下,减少了在链接选票和追踪用户时的计算量,提高了计算效率。

2)本发明保证了当恶意用户双投时,能根据公开信息追踪到该用户,从而在一定程度上限制了用户的恶意行为。

3)本发明依据区块链的优势,可以保证选举过程透明、选票不可伪造、选举结果可验证等特性。

4)本发明支持选民单次参与其他选举任务而不会被追踪到,而在同一个选举任务中两次或多次投票会被追踪到,从而扩展了方案的可应用性。

附图说明

图1是本发明公开的一种基于区块链的匿名电子投票方法的流程示意图;

图2是本发明公开的一种基于区块链的匿名电子投票方法的系统结构图。

具体实施方式

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

实施例

当前,电子投票主要应用于保护选民在投票过程中的隐私保护,使得公众无法直接找出选票和选民之间的对应关系。但随着信息技术的不断发展和人们对于个人隐私的重视,密码学与投票隐私相结合的应用为投票隐私保护提供了安全的解决方案。其中,以followmyvote和tivi为代表的投票系统,从不同角度实现了保护用户隐私的需求。然而,以往电子投票重复投票、隐私泄露、计票不准等问题,一直是电子投票所要解决的问题。同时,存在选举过程不公开透明,计票结果不能验证、计算量大等问题。

针对上面所述问题,本实施例提出了一种基于区块链的匿名电子投票方法,具有过程简单、易于实现、计算量小、可链接和可验证的特点,在保证保护用户隐私的前提下,达到了减少计算成本、公开可验证的目的。同时,该投票方案支持选民单次参与其他选举任务而不会被链接到,而在同一个选举任务中多次投票会被链接到,从而扩展了方案的可应用性。

下面结合图1对本实施例公开的一种基于区块链的匿名电子投票方法的具体过程进行详细说明。

一种基于区块链的匿名电子投票方法(系统结构如图2所示),其主要包括三个角色:选举委员会ec、选民vi、认证中心ca,其步骤主要包括:生成系统参数,注册,发布任务,投票,追踪,计票并公布结果。默认在参与投票任务之前,已生成加解密选票的密钥对(epk,esk),并公开epk、选举标识号num等公开参数;默认智能合约s编译正常,合约地址αs已生成,选举委员会ec和选民vi分别拥有各自的公私钥对(pkec,skec)、(pki,ski)以及相应的区块链一次性地址αec、αi。该投票方案主要由以下几个步骤组成:

第一步:生成系统参数。

通过setup(1λ)算法生成系统的公共参数pp和认证中心的主公私钥对(mpk,msk)。

第二步:用户注册。

选举委员会ec和选民vi分别向认证中心提交个人信息,ca通过证书生成算法certgen(msk,pki),分别生成ec和vi的证书certec和certi。

第三步:投票。

分为投票准备和投票过程两个阶段。具体步骤如下:

投票准备:选举委员会通过匿名认证算法auth生成对选举标识号num、ec账户地址αec和智能合约地址αs的匿名认证以证明该选举任务的正确性,即生成πec=auth(num||αec||αs,pkec,skec,certec,pp),公开该πec供选民验证。

投票过程:选民vi通过认证算法auth对选举标识号num和加密选票ci的匿名认证auth(num||ci,pki,ski,certi,pp),得到证明πi。待选民验证πec后,将(ci,πi)以交易的形式发送到区块链网络中。

第四步:验票。

智能合约通过验证算法verify对每个选民vi生成的πi进行验证,即运行verify(num||ci,πi,mpk,pp),并筛选出验证通过(即输出为1)的选票。

第五步:链接。

智能合约通过链接算法link对上一步中验证通过的πi做进一步链接,检查是否存在双投,即运行link(c1,c2,π1,π2)。

第六步:追踪。

智能合约将上一步中link结果为1的πi做进一步追踪,根据所对应的t2,t2’,ci,ci’的值,可推断出pki=t2-t2'/ci-ci'。

第七步:计票。

智能合约统计第五步中link结果为0所对应的选票,即有效选票,选举委员会通过运行dec(ci,esk)解密得到选票明文,计算选举结果并公布,同时给出计算选举结果的相应零知识证明。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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