利索能及
我要发布
收藏
专利号: 2021112268088
申请人: 浙江工商大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-10-21
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于区块链的电子投票系统进行投票的方法,所述基于区块链的电子投票系统,包括支持加法同态的ElGamal加密的变形模块、基于环签名的范围证明模块和知识证明模块;

所述支持加法同态的ElGamal加密的变形模块用来对所有的投票进行加密;所述基于环签名的范围证明模块,用于判断所使用的变形ElGamal加密明文是否属于{0,1};

所述知识证明模块用于验证唱票人的操作,即ElGamal解密操作;

其特征在于,所述方法包括如下步骤:

步骤1:系统初始化阶段:对投票系统中所需要的参数进初始化设定;

步骤2:投票阶段:对投票事件进行具体操作,投票事件结束后展示投票结果;系统中的任何成员均可充当投票发起人,来创建一个全新的投票事件,并将此次事件保存在区块链上,以供所有人查看;在发起投票后,投票人进入投票环节,此时有授权的投票人可以进行投票来发表自己的意见,投票人选定票后,将自身的投票保存在区块链上;在所有投票人均完成投票,或者投票事件到了截止时间时,唱票人开始进入唱票环节;在此期间,每一位唱票人均将进行唱票,统计出自身的结果并上传至区块链,任何人均可通过唱票人的计算结果得出此次投票事件的结果;

步骤3:评分阶段:在多次投票事件之后开始,评分阶段结束后可以得到用户的评分;任何人均可发起对一段时间内参与投票的投票人的评分,其中不同发起人之间发起评分的时间段不允许交叉;此时唱票人将从区块链中取出一段时间内所有投票事件的投票信息以及唱票结果,依次对比每个投票人所投出的票和最终结果是否相符,计算出评分结果并保存至区块中;此时任何人也可以从区块链中获取评分结果。

2.根据权利要求1所述的方法,其特征在于,所述步骤1包括如下具体步骤:系统开始运行时,获得一个安全参数λ,随后系统输出g,h,G及p;p是一个大素数,p大于投票人总数,G是一个阶为p的有限循环群,g,h是群G中随机选取的元素,得到的(g,h,G,p),设为vElGamal加密、基于环签名的范围证明以及知识证明算法中使用的(g,h,G,p);最后取一个值q,q是一个素数,该素数大于一个评分期内所有的选民或者投票事件的最大数目;

系统中的每一位参与者,均拥有一对签名公私钥对;系统可设置多位唱票人,并且实现(t,n)门限,假定有两名唱票人,分别命名为PC和NP,设PC和NP的私钥分别为和 此时可以获得 将所得PC和NP的公钥通过智能合

约保存在区块链中,PC和NP知晓所有人的公钥以及公钥和具体身份的对应关系,其余人员均只知晓所有的公钥,而不知晓公钥和身份的对应关系;

规定投票人投票时只能投赞同票或反对票,假设赞同票的值为1,反对票的值为0,发起评分时可以设定评分为任意的(x,y),即投票符合结果的投票人将获得x分,而投票不符合结果的投票人获得y分。

3.根据权利要求2所述的方法,其特征在于,所述步骤2包括如下具体步骤:步骤2.1:发起投票:发起投票阶段,由投票发起人创建一个新的投票事件,所述投票事件包含了投票内容、投票截止时间、授权投票人公钥和投票发起人对这次投票事件的签名,所述投票事件的信息经过智能合约验证其数字签名有效后,被保存在区块链中;

步骤2.2:投票人投票:

投票人投票分为四个步骤,首先投票人计算得到加密后的投票数据 随后对 计算环签名 最后对 进行数字签名后,将投票数据 发送至智能合约;

步骤2.3:唱票人唱票:

当投票事件Ej中所有选民均将投票通过智能合约保存至区块链后,唱票人将进行唱票操作,采取多名唱票人合作的方式进行唱票,设置有两名唱票人PC和NP,PC和NP两名唱票人,在不泄露任何投票结果的前提下,合作对投票结果进行统计,唱票阶段分为PC唱票、NP唱票和获得投票结果。

4.根据权利要求3所述的方法,其特征在于,所述步骤2.2包括如下具体步骤:步骤2.2.1:加密投票数据,实现投票秘密性:

发起投票后,进入投票阶段,拥有授权的选民均可以进行投票,并计算得到加密后的投票数据 设有nv名选民进行投票,对事件Ej进行投票,在投票过程中,投票人vi针对投票事件Ej可以投出的票为vi,j,设定投票值vi,j∈{0,1},投票人的投票信息利用vElGamal加密,其中运算过程为 得到加密后的投票数据步骤2.2.2:计算环签名,实现投票有效性:

在得到 后,投票人计算环签名,任何人均可通过基于环签名的范围证明技术,确认投票数据是否有效,投票人设置两个公钥分别为(KPC·KNP,Si,j/g)和(KPC·KNP,Si,j/(h·g)),生成自身的环签名 智能合约可以通过该环签名和加密后的投票数据进行验证,保证投票信息vi,j∈{0,1};

步骤2.2.3:计算数字签名,实现投票不可伪造性:

投票人使用自己的签名私钥对前两步生成信息 进行签名,生成对应的数字签名σi,j,任何人均可验证数字签名是否有效,此时产生的投票数据为步骤2.2.4:智能合约验证签名有效性并保存投票数据:

投票人将投票数据 发送至智能合约,智能合约验证环签名和数字签名有效后,将投票数据保存在区块中,如果环签名和数字签名中任何一项被认为无效,则该投票数据被放弃。

5.根据权利要求4所述的方法,其特征在于,所述步骤2.3包括如下具体步骤:步骤

2.3.1:PC唱票,获得Tv,PC,并对结果计算知识证明:首先,第一位唱票人PC计算 并将结果Tv,PC与

的知识证明一起发送给智能合约,PC将这些数据的数字签名也一起发送给智能合约,智能合约收到数据后进行验证数字签名和知识证明,验证通过将数据保存在区块链上,验证不通过则投票结束;

步骤2.3.2:NP唱票,获得Tv,NP,并对结果计算知识证明:第二位唱票人NP,计算 并将结果Tv,NP与

的零知识证明一起发送给智能合约,同样的,NP将对这些数据的数字签名也一起发送给智能合约,智能合约收到数据后进行验证数字签名和知识证明,验证通过将数据保存在区块链上,验证不通过则投票结束;

步骤2.3.3:智能合约验证保存唱票结果,任何人均可通过Tv,PC和Tv,NP获得唱票结果在PC和NP都完成唱票操作,并将自身唱票结果Tv,PC和Tv,NP发送给智能合约之后,任何人都可以通过计算获得 因为投票的数量 不是一个大数,并且最大可能值是nv,通过暴力破解的方法得到该值,如果 值等于或大于阈值,则可以得到投票结果为赞同,即resj=1,否则投票结果为反对,即resj=0。

6.根据权利要求5所述的方法,其特征在于,所述步骤3评分阶段允许任何人按时间段发起对投票人的评分,发起评分的间隔可以设置为一年或者一段较长的固定时间,但是任何个人发起评分的时间段不能交叉,唱票人可根据评分发起人的公钥,决定回应或者不回应这次评分事件,所有唱票人进行响应后系统进入评分阶段,对所有用户一段时间内的投票进行评分,规定投票人投票和结果相符加2分,不相符加1分;

评分阶段的计算,需要在多次投票进行后进行,假设潜在的被评分投票人是选民Vi,投票事件是E1到评分阶段分为四个步骤,首先对投票数据进行预计算,随后PC使用随机数计算vPC保护投票人隐私并计算出评分结果Te,βC,最后NP进行同样操作计算出评分结果Te,NP,任何人均可验证评分结果的准确性,上述步骤均完成后,任何人可以计算得到评分或者验证评分的不可伪造性。

7.根据权利要求6所述的方法,其特征在于,评分阶段的具体步骤如下:步骤3.1:对投票进行预计算:

首先,针对投票进行预计算,根据投票结果的不同,系统对投票人投票进行不同的预计算,具体如下:如果投票结果是反对,即resj=0,那么计算 和

此时可以得到以下等式:

计算完毕后,会出现两种投票情况:如果投票结果和投票人投票都是反对票,也就是resj=vi,j=0,那么可知v′i,j=q,v″i,j=0;否则,v′i,j=q+1,v″i,j=q;如果投票结果是赞同,即resj=1,那么计算 此时可以得到以下式子:计算完毕后,也将出现两种投票情况:投票结果和投票人投票均为赞同票时,即resj=vi,j=1,那么可知v′i,j=q,v″i,j=q+1;否则,v′i,j=0,v″i,j=q;

步骤3.2:PC评分并计算知识证明:

得到了上述运算结果之后,PC和NP两位唱票人开始计算选民Vi在投票事件E1到 中得分,首先,取u是一个满足u+ne

似计算 将vNP和数字签名发送至智能合约,对每

一名投票人,PC和NP都要计算一个新的vPC和vNP,

随后,PC计算 并把结果Te,PC、

的零知识证明与对这

些数据的数字签名发送给智能合约,通过智能合约验证后,保存在区块链上,实现公开可验证性;

步骤3.3:NP评分并计算知识证明:

最后,NP通过智能合约直接获得数据Tv,PC,NP计算

将结果Te,NP、

的零知识证明与对这些数据的数字签名发送给智能合约,通

过智能合约验证后,保存在区块链上,实现公开可验证性;

步骤3.4:获得最终评分:

在PC和NP完成统计后,任何人都可通过以下过程计算出投票人Vi在某个时间段内投票事件E1到Ene中的得分总分,在计算总分前,检验Te,PC和Te,NP零知识证明以及数字签名的有效性,如果验证通过,根据 计算出a·q+b

SUM,此处SUM=h ;

接下来获得投票人的总得分,首先得到a和b,假设δx,y表示结果为x,投票为y的次数,δx为结果为x的次数,从计算过程推导出:uPC+uNP+2(δ0,1+δ0,0+δ1,1)+(δ0,1+δ1,1+δ1,0)=auPC+uNP+2δ0,1+δ1,1=b

因为此时投票评分有加2分和加1分两种情况,可以知晓有0

b]·H中尝试最多(3ne) 次来得到a和b的值,一旦得到了a和b的值,就可以计算投票人Vi的得分总分a‑b=2(δ0,0+δ1,1)+(δ0,1+δ1,0),a‑b代表投票和结果相同时,而此时可以证明投票信息对于任何人依旧是隐秘的,得到的式子有:任何人都知晓δ0,δ1,a,b,但是不知晓uPC,uNP,对于任何普通成员来说,其拥有四个式子和六个未知数,不能得出结果;而对于唱票人PC来说,PC知晓δ0,δ1,a,b,uPC,此时PC拥有四个式子和五个未知数,也不能计算出结果,对于其他任何唱票人来说也是同理。