专利摘要
本发明公开一种对投票人的选票信息进行加密的电子投票方法,使用区块链作为公告板,利用区块链不可篡改的特性保证公告板信息的一致性,同时使用同态D‑BCP密码对选票信息进行加解密,利用同态D‑BCP密码的同态特性计算选举结果,并在解密选举结果后利用同态D‑BCP密码的可验证特性使注册中心和每个投票者都可以对权威公开候选人选举结果的合法性进行验证。本发明解决了现有技术中存在的权威对选举结果的篡改的威胁和投票者及注册中心难以验证选举结果的技术问题。具有电子投票中更加安全可靠保证投票结果的合法性,更符合现实需求的优点。
权利要求
1.一种对投票者选票信息加密的电子投票方法,其特征在于,在由一个注册中心作为选举发起人,投票者进行选举投票,权威作为第三方对选票结果进行统计的场景下,使用区块链作为公告板,利用同态D-BCP密码对选票信息进行加解密,并在解密后利用同态D-BCP密码的可验证特性使注册中心和每个投票者都可以对权威公开候选人选举结果的合法性进行验证;该方法的具体步骤包括如下:
(1)注册中心利用同态D-BCP密码密钥生成算法,生成注册中心的公私钥对:
(1a)按照下式,计算同态D-BCP密码密钥生成算法的模数:
N=pq
其中,N表示同态D-BCP密码密钥生成算法的模数,p和q分别表示均匀且随机选取的两个大素数;
(1b)在构建的剩余类环
(1c)按照下式,计算同态D-BCP密码密钥生成算法的公钥参数:
y
其中,y
(1d)将模数N、整数θ、公钥参数y0和原根g组成同态D-BCP密码密钥生成算法的公钥pk
(2)生成权威公私钥对:
(2a)注册中心生成一个512比特长的大素数;在公告板上分别公开候选人列表,注册中心公钥、大素数和一个任意选取的密码散列函数;
(2b)权威利用同态ElGamal密码密钥生成算法以注册中心公开的大素数作为模数生成权威公私钥对,并在公告板上公开权威公钥;
(3)投票者资格注册:
(3a)每位投票者利用同态ElGamal密码密钥生成算法,以注册中心公开的大素数作为模数,权威公钥中的原根作为原根生成一个投票人公私钥对,并在注册截止日期前,以注册中心公钥为加密公钥使用同态ElGamal密码加密算法,加密自身身份信息和投票者公钥,并在公告板上公开加密的自身身份信息和投票者公钥;
(3b)注册中心使用同态ElGamal密码解密算法解密每位投票者的身份信息并审查后,在公告板上公开注册成功投票者对应的投票者公钥;
(4)生成加密选票后投票:
(4a)每个投票者均匀且随机在剩余类环
(4b)每个投票者对所有候选人生成选择结果b=(b
(4c)每个投票者利用D-BCP加密算法对所有候选人的选择结果生成加密的所有候选人选择结果c=(c
c
其中,c
(4d)每个投票者生成投票者零知识证明参数;
(4e)每个投票者在公告板上公开加密后的选票,选票包含投票者公钥、加密后的候选人的选择结果以及投票者零知识证明参数;
(5)权威接收选票并计算结果密文;
(5a)在到达投票截止时间后,权威读取公告板上的所有选票,对每张选票进行三次验证:第一次验证选票中的投票者公钥是否完成注册;第二次验证该投票者的公钥是否为第一次进行投票;第三次验证该选票是否合法;若以上三次验证均能通过,则接受该选票视其为合法选票,否则,拒绝该选票;
(5b)权威生成合法选票的结果密文并在公告板上公开结果密文:
(6)注册中心按照下式生成中继密钥key=(key
key
其中,key
(7)注册中心生成中继零知识证明参数,在公告板上公开中继密钥和中继零知识证明参数;
(8)权威利用中继零知识证明参数验证注册中心发布的中继密钥的合法性,若验证通过,则执行步骤(9),否则,执行步骤(6);
(9)获得选举结果:
权威利用下述的D-BCP密码解密算法解密每个候选人的结果密文,得到并公开选举结果B=(B
其中,B
(10)公开选举参数:
(10a)每个投票者用注册中心公开的密码散列函数对自身结果验证参数进行摘要,并用自身投票者私钥对摘要进行ElGamal签名;
(10b)投票者生成并公开用于验证选举结果的选举结果参数;所述选举结果参数Ver=(Sign,pk,t,T),其中,Sign表示投票者在步骤(10a)中生成的对摘要的签名,pk表示投票人公钥,t=(t
(11)权威对每个投票者发布的选举结果参数的合法性进行验证:通过验证的投票者的选举结果参数将被接受,否则,要求选举结果参数被拒绝的投票者重新执行步骤(10);当所有投票者发布的选举结果参数的合法性验证完成后执行步骤(12);
(12)验证选举结果的合法性:
注册中心和每个投票者都可以作为验证者,利用下述的方法,对权威公开候选人选举结果的合法性进行验证:
第一步,按照下式,验证者计算每个候选人的结果校验参数Verify
其中,∑表示连续求和操作,N
第二步,每位验证者验证所有的候选人的结果校验参数与候选人结果复核参数是否均相等,若是,则权威公开的选举结果合法,否则,选举结果不合法;
第三步,若超过半数验证者合法性验证不通过,则认为选举结果不合法,重启选举;否则,认为选举结果合法,选举结束。
2.根据权利要求1所述的一种对投票者选票信息加密的电子投票方法,其特征在于,步骤(4d)中所述的每个投票者生成投票者零知识证明参数的步骤如下:
第一步,投票者均匀且随机的分别选取三个正整数
第二步,每个投票者生成自己选票的投票者零知识证明参数PPK=(PPK
PPK
v
s
其中,PPK
3.根据权利要求2所述的一种对投票者选票信息加密的电子投票方法,其特征在于,步骤(5a)中所述验证验证选票是否合法的步骤如下:
第一步,验证
第二步,验证
第三步,验证
第四步,验证
若上述四个式子均成立,则c
4.根据权利要求3所述的一种对投票者选票信息加密的电子投票方法,其特征在于,步骤(5b)中所述的权威生成合法选票的结果密文是按照下式生成的:
RES=(C
C
其中,RES表示权威生成的合法选票的结果密文,П表示连续求积操作,i∈{1,2,...,N
5.根据权利要求4所述的一种对投票者选票信息加密的电子投票方法,其特征在于,步骤(7)中所述注册中心生成中继零知识证明参数指的是,对中继密钥key=(key
第一步,注册中心均匀且随机选取正整数
第二步,按照下式,计算PPK
T
T
v=H(C
s=θ·v+e
其中,T
6.根据权利要求5所述的一种对投票者生成中继零知识证明参数的方法,其特征在于,步骤(8)中所述利用中继零知识证明参数验证注册中心发布的中继密钥的合法性指的是如下两种情形:
情形1,若所有PPK
情形2,对于任意PPK
v=H(C
g
C
7.根据权利要求1所述的一种对投票者选票信息加密的电子投票方法,其特征在于,步骤(11)中所述的权威对每个投票者发布的选举结果参数的合法性进行验证的步骤如下:
第一步,权威利用投票人公钥pk对选举结果参数中的对摘要的签名Sign进行ElGamal签名验证,若验证通过,进行第二步,否则认定选举结果参数不合法,结束验证步骤;
第二步,将权威在合法选票中挑选的投票人公钥为pk的选票作为验证选票;
第三步,权威对验证选票中的加密后选择结果进行合法性验证:对每个加密的候选人选择结果c
其中,y
第四步,若对所有加密的候选人选择结果均验证合法,则选举结果参数合法,否则,选举结果参数不合法。
说明书
技术领域
本发明属于电子技术领域,更进一步涉及匿名电子投票技术领域中的一种对投票人的选票信息进行加密的电子投票方法。本发明可用于在各种电子投票活动中,通过对投票人的选票信息进行加密,实现保护投票人投票的安全,且所有参与者都可验证并追责的电子投票。
背景技术
随着计算机网络网的飞速发展,人们的许多日常活动都逐步转移到网络上。投票作为人们生活中最常见的决策手段之一,也逐渐从传统的线下纸质投票转变电子投票。电子投票对比于传统纸质投票有着快捷准确,节省人力物力,简单易用等特点。
杭州电子科技大学在其申请的专利文献“一种安全高效的电子投票方法”(申请号201811212856.X,公布号CN 109544772 A)中公开了一种基于同态ElGamal密码的电子投票方法。在该方法中投票者首先在权威中心进行注册,权威中心和投票者各自设定密钥,而后投票者利用权威中心密钥和自身密钥联合加密选票并进行签密封装发送给权威中心。权威中心初步核验合法选票并对合法选票结果进行统计和解密验证。投票人Vi发送的对第j名候选人的加密选票形如下式:
投票中心的密钥对为 sk=(x0,x1,x2),投票人的密钥对为 ski=ωi。该方法虽然最终通过公证机构对权威中心给出的结果进行验证,确保投票结果真实可靠。但是,该方法仍然存在的不足之处是,权威中心可以通过计算 得到 从而伪造选票,也可以利用Ci,j,0,Ci,j,1通过明文碰撞攻击窃听用户选票信息。同时,由于公证机构对投票结果的的验证只验证投票中心密钥对的合法性,无法辨别选举结果的真伪,因此在权威中心为自身利益对投票最终结果进行篡改的情况下,投票结果的合法性无法保证。
发明内容
本发明的目的是针对上述现有技术的缺陷与不足,提出一种对投票人选票信息加密的电子投票方法,用于解决现有技术中存在的权威对选举结果的篡改的威胁和投票者及注册中心难以验证选举结果的技术问题。
为实现上述目的,本发明的思路是使用区块链作为公告板,利用区块链不可篡改的特性保证公告板信息的一致性,同时使用同态D-BCP密码对选票信息进行加解密,利用同态D-BCP密码的同态特性计算选举结果,并在解密选举结果后利用同态D-BCP密码的可验证特性使注册中心和每个投票者都可以对权威公开候选人选举结果的合法性进行验证。
本发明采取的技术方案包括如下步骤:
(1)注册中心利用同态D-BCP密码密钥生成算法,生成注册中心的公私钥对:
(1a)按照下式,计算同态D-BCP密码密钥生成算法的模数:
N=pq
其中,N表示同态D-BCP密码密钥生成算法的模数,p和q分别表示均匀且随机选取的两个大素数;
(1b)在构建的剩余类环 中均匀且随机的选取一个整数θ;
(1c)按照下式,计算同态D-BCP密码密钥生成算法的公钥参数:
y0≡g
其中,y0表示同态D-BCP密码密钥生成算法的公钥参数,g表示在剩余类环 中均匀且随机选取模数N的原根,mod表示取模操作,≡表示符号左侧表达式同余于符号右侧表达式;
(1d)将模数N、整数θ、公钥参数y0和原根g组成同态D-BCP密码密钥生成算法的公钥pkc=(N,g,y0),私钥skc=θ,得到注册中心公私钥对<pkc,skc>;
(2)生成权威公私钥对:
(2a)注册中心生成一个512比特长的大素数;在公告板上分别公开候选人列表,注册中心公钥、大素数和一个任意选取的密码散列函数;
(2b)权威利用同态ElGamal密码密钥生成算法以注册中心公开的大素数作为模数生成权威公私钥对,并在公告板上公开权威公钥;
(3)投票者资格注册:
(3a)每位投票者利用同态ElGamal密码密钥生成算法,以注册中心公开的大素数作为模数,权威公钥中的原根作为原根生成一个投票人公私钥对,并在注册截止日期前,以注册中心公钥为加密公钥使用同态ElGamal密码加密算法,加密自身身份信息和投票者公钥,并在公告板上公开加密的自身身份信息和投票者公钥;
(3b)注册中心使用同态ElGamal密码解密算法解密每位投票者的身份信息并审查后,在公告板上公开注册成功投票者对应的投票者公钥;
(4)生成加密选票后投票:
(4a)每个投票者均匀且随机在剩余类环 中选取l个正整数,组成结果验证参数,其中l表示选举中候选人的数量且l至少为1;
(4b)每个投票者对所有候选人生成选择结果b=(b1,...,bj,...,bl),其中bj表示投票人对第j名候选人的选择结果,bj∈{0,1},j∈{1,2,...,l},1代表投票,0代表不投票;
(4c)每个投票者利用D-BCP加密算法对所有候选人的选择结果生成加密的所有候选人选择结果c=(c1,...,cj,...,cl):
cj=(cj,0,cj,1,cj,2)
其中,cj,0,cj,1,cj,2分别表示投票人加密的第j名候选人的选择结果cj的随机数参数,选择参数和验证参数,ωv表示投票者的私钥,y1表示权威公钥中的公钥参数,rj表示第j名候选人的随机混淆参数, t表示投票人结果验证参数t=(t1,...,tj,...,tl), tj表示投票人对第j名候选人的结果验证参数;
(4d)每个投票者生成投票者零知识证明参数;
(4e)每个投票者在公告板上公开加密后的选票,选票包含投票者公钥、加密后的候选人的选择结果以及投票者零知识证明参数;
(5)权威接收选票并计算结果密文;
(5a)在到达投票截止时间后,权威读取公告板上的所有选票,对每张选票进行三次验证:第一次验证选票中的投票者公钥是否完成注册;第二次验证该投票者的公钥是否为第一次进行投票;第三次验证该选票是否合法;若以上三次验证均能通过,则接受该选票视其为合法选票,否则,拒绝该选票;
(5b)权威生成合法选票的结果密文并在公告板上公开结果密文:
(6)注册中心按照下式生成中继密钥key=(key1,...,keyj,...,keyl):
keyj≡Cj,0
其中,keyj表示第j个候选人的中继密钥,Cj,0表示第j个候选人的结果密文中的随机数参数;
(7)注册中心生成中继零知识证明参数,在公告板上公开中继密钥和中继零知识证明参数;
(8)权威利用中继零知识证明参数验证注册中心发布的中继密钥的合法性,若验证通过,则执行步骤(9),否则,执行步骤(6);
(9)获得选举结果:
权威利用下述的D-BCP密码解密算法解密每个候选人的结果密文,得到并公开选举结果B=(B1,...,Bj,...,Bl):
其中,Bj表示第j个候选人的选举结果,Cj,1表示第j个候选人的结果密文中的中的选择参数;
(10)公开选举参数:
(10a)每个投票者用注册中心公开的密码散列函数对自身结果验证参数进行摘要,并用自身投票者私钥对摘要进行ElGamal签名;
(10b)投票者生成并公开用于验证选举结果的选举结果参数;所述选举结果参数Ver=(Sign,pk,t,T),其中,Sign表示投票者在步骤(10a)中生成的对摘要的签名,pk表示投票人公钥,t=(t1,...,tj,...,tl)表示投票者的结果验证参数,T=(t1
(11)权威对每个投票者发布的选举结果参数的合法性进行验证:通过验证的投票者的选举结果参数将被接受,否则,要求选举结果参数被拒绝的投票者重新执行步骤(10);当所有投票者发布的选举结果参数的合法性验证完成后执行步骤(12);
(12)验证选举结果的合法性:
注册中心和每个投票者都可以作为验证者,利用下述的方法,对权威公开候选人选举结果的合法性进行验证:
第一步,按照下式,验证者计算每个候选人的结果校验参数Verifyj和结果复核参数xj:
其中,∑表示连续求和操作,Nv表示合法选票的数量,ti,j表示第i名投票人公开的选举结果参数中的结果验证参数中对第j名候选人的结果验证参数,Cj,2表示第j名候选人的结果密文中的中的验证参数;
第二步,每位验证者验证所有的候选人的结果校验参数与候选人结果复核参数是否均相等,若是,则权威公开的选举结果合法,否则,选举结果不合法;
第三步,若超过半数验证者合法性验证不通过,则认为选举结果不合法,重启选举;否则,认为选举结果合法,选举结束。
本发明与现有技术相比,具有以下优点:
由于本发明使用同态D-BCP密码对选票信息进行加解密,利用同态D-BCP密码的同态特性计算选举结果,并在解密选举结果后利用同态D-BCP密码的可验证特性,使注册中心和每个投票者都可以对权威公开候选人选举结果的合法性进行验证,对权威公开候选人选举结果的合法性进行验证,克服了现有技术中存在的在权威或者注册中心在计票过程中影响投票最终结果的情况,从而使得本发明具有可以保证投票结果的合法性,更符合现实需求的优点。
附图说明
附图1为本发明的流程图。
具体实施方式
下面结合附图1,对本发明实现的步骤作进一步的详细描述。
步骤1,注册中心利用下述的同态D-BCP密码密钥生成算法,生成注册中心的公私钥对。
第1步,按照下式,计算同态D-BCP密码密钥生成算法的模数:
N=pq
其中,N表示同态D-BCP密码密钥生成算法的模数,p和q分别表示均匀且随机选取的两个大素数。
第2步,在构建的剩余类环 中均匀且随机的选取一个整数θ。
第3步,按照下式,计算同态D-BCP密码密钥生成算法的公钥参数:
y0≡g
其中,y0表示同态D-BCP密码密钥生成算法的公钥参数,g表示在剩余类环 中均匀且随机选取模数N的原根,mod表示取模操作,≡表示符号左侧表达式同余于符号右侧表达式。
第4步,将模数N、整数θ、公钥参数y0和原根g组成同态D-BCP密码密钥生成算法的公钥pkc=(N,g,y0),私钥skc=θ,得到注册中心公私钥对<pkc,skc>。
步骤2,生成权威公私钥对。
注册中心生成一个512比特长的大素数;在公告板上分别公开候选人列表,注册中心公钥、大素数和一个任意选取的密码散列函数。
权威利用下述的同态ElGamal密码密钥生成算法,以注册中心公开的大素数作为模数生成权威公私钥对,并在公告板上公开权威公钥。
第1步,将注册中心公开的大素数k作为同态ElGamal密码密钥生成算法的模数。
第2步,构建剩余类环
第3步,均匀且随机的在 中选取一个整数ωa。
第4步,按照下式,计算同态ElGamal密码密钥生成算法的公钥参数:
其中,y1表示同态ElGamal密码的密钥生成算法的公钥参数,g'表示在剩余类环 中均匀且随机选取模下k的原根。
第5步,将计算模数k、整数ωa、公钥参数y1、原根g',组成同态ElGamal密码公钥pka=(N,g',y1),私钥ska=ωa,得到权威公私钥对〈pka,ska〉。
步骤3,投票者资格注册。
每位投票者利用同态ElGamal密码密钥生成算法,以注册中心公开的大素数作为模数,权威公钥中的原根作为原根生成一个投票人公私钥对,并在注册截止日期前,以注册中心公钥为加密公钥使用同态ElGamal密码加密算法,加密自身身份信息和投票者公钥,并在公告板上公开加密的自身身份信息和投票者公钥。
所述的同态ElGamal密码密钥生成算法的步骤如下:
第1步,将注册中心公开的大素数k和权威公钥中的原根g'作为同态ElGamal密码密钥生成算法的模数和原根。
第2步,均匀且随机的在 中选取一个整数ωv
第3步,按照下式,计算同态ElGamal密码密钥生成算法的公钥参数:
其中,yv表示同态ElGamal密码的密钥生成算法的公钥参数。
第5步,将计算模数k、整数ωv、公钥参数yv、原根g',组成同态ElGamal密码公钥pkv=(N,g',yv),私钥skv=ωv,得到投票人公私钥对<pkv,skv>
所述的同态ElGamal密码密钥加密算法的步骤如下:
第1步,均匀且随机选取正整数
第2步,按照下式,计算密文结果:
cv=(cv,0,cv,1)
其中, 表示明文,cv表示加密m得到的密文,cv,0表示密文随机化参数,cv,1表示密文结果参数。
注册中心使用同态ElGamal密码解密算法解密每位投票者的身份信息并审查后,在公告板上公开注册成功投票者对应的投票者公钥。
按照下述的同态ElGamal密码密钥加密算法,计算解密密文明文结果:
其中,表示m'解密密文结果。
步骤4,生成加密选票后投票。
每个投票者均匀且随机在剩余类环 中选取l个正整数,组成结果验证参数,其中l表示选举中候选人的数量且l至少为1。
每个投票者对所有候选人生成选择结果b=(b1,...,bj,...,bl),其中bj表示投票人对第j名候选人的选择结果,bj∈{0,1},j∈{1,2,...,l},1代表投票,0代表不投票。
每个投票者利用D-BCP加密算法对所有候选人的选择结果生成加密的所有候选人选择结果c=(c1,...,cj,...,cl):
cj=(cj,0,cj,1,cj,2)
其中,cj,0,cj,1,cj,2分别表示投票人加密的第j名候选人的选择结果cj的随机数参数,选择参数和验证参数,ωv表示投票者的私钥,y1表示权威公钥中的公钥参数,rj表示第j名候选人的随机混淆参数, t表示投票人结果验证参数t=(t1,...,tj,...,tl),
一种对投票人选票信息加密的电子投票方法专利购买费用说明
Q:办理专利转让的流程及所需资料
A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。
1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。
2:按规定缴纳著录项目变更手续费。
3:同时提交相关证明文件原件。
4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。
Q:专利著录项目变更费用如何缴交
A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式
Q:专利转让变更,多久能出结果
A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。
动态评分
0.0