1.一种基于区块链的可验证公平性的电子投票方法,其特征在于,包括:获取区块链网络中的各个节点,将各个节点划分为管理者节点、投票者节点和选民节点;
选民节点将选举信息发送给管理者节点,管理者节点接收选举信息后部署智能合约,并向区块链发起选举请求;
投票者节点向管理者进行注册登记,注册后的投票者节点采用密钥生成算法生成自己的私钥和公钥;选民节点采用Paillier加密算法生成非对称密钥,并采用零知识证明算法对非对称密钥进行处理,得到验证密钥;投票者节点将公钥广播到区块链网络中,选民节点将验证密钥广播到区块链网络中;
投票者节点采用公钥对投票信息进行加密,并生成身份合法性证明和选票有效性证明;投票者节点将加密的投票信息、身份合法性证明和选票有效性证明上传到区块链中;
区块链节点验证投票者节点的身份合法性,若投票者节点身份不合法,则投票者节点的投票信息无效,且投票者节点向管理者节点重新发送身份信息,进行注册;若投票者节点身份合法,则验证选票有效性,若选票无效,则删除该选票,若选票有效,则区块链节点将所有收集到的合法投票打包成区块;
选民节点从区块链中获取打包的区块,对该区块中的数据进行解密,对解密后的数据进行统计,得到所有投票者节点的投票结果;对投票结果进行验证,若投票结果正确,则投票有效,若投票结果错误,则投票无效。
2.根据权利要求1所述的一种基于区块链的可验证公平性的电子投票方法,其特征在于,选民节点的选举信息包括候选者姓名信息、身份信息以及候选者的简介信息,根据设置选举信息构建选民名单。
3.根据权利要求1所述的一种基于区块链的可验证公平性的电子投票方法,其特征在于,部署的智能合约包括:密码加密合约和匿名投票合约;密码加密合约包含零知识证明的创建和验证代码;匿名投票合约包含投票协议的逻辑。
4.根据权利要求1所述的一种基于区块链的可验证公平性的电子投票方法,其特征在于,投票者节点采用密钥生成算法生成自己的私钥和公钥的过程包括:将每个选民的ID信λ
息作为身份标识,使用密钥生成函数GenKey(1 ,ID)生成私钥SKID;采用基于抗碰撞哈希函数对私钥进行处理,得到公钥PKID=H(SKID),将公钥发布到区块链公告板;其中,GenKey表示密钥生成函数,λ表示安全参数,H表示基于抗碰撞哈希函数。
5.根据权利要求1所述的一种基于区块链的可验证公平性的电子投票方法,其特征在于,选民节点采用Paillier加密算法生成非对称密钥的过程包括:随机选择两个使Paillier密码系统在语义上安全的加密参数,该加密参数为第一加密参数p和第二加密参数q;根据加密参数设置公钥PK=(n,g)和私钥SK=(λ,μ);其中,n表示第一公钥参数,且n为两个加密参数p和q的乘积n=pq;λ表示第一私钥参数,且λ是p‑1和q‑1的最小公倍数值λ=lcm(p‑1,q‑1),lcm表示最小公倍数函数;g表示第二公钥参数,且g为随机选择的整数;μ表λ 2 ‑1
示第二私钥参数,且μ=((gmodn‑1)/n) modn,mod表示求余函数。
6.根据权利要求5所述的一种基于区块链的可验证公平性的电子投票方法,其特征在于,选民节点随机选取的第一加密参数p和第二加密参数q满足筛选的条件,该条件为:gcd(pq,(p‑1)(q‑1))=1其中,gcd表示求最大公约数函数,p表示第一加密参数,q表示第二加密参数。
7.根据权利要求1所述的一种基于区块链的可验证公平性的电子投票方法,其特征在于,投票者节点采用公钥对投票信息进行加密的过程包括:步骤1:投票者节点选择对应的候选人Ci,生成选票Balloti=(ViC1,…,ViCj);其中,Cj表示第j个候选人;Vi表示第i个投票者节点;
步骤2:选票加密算法对选票进行加密,得到加密后的选票E(Balloti),将加密后的选票上传到区块链中;
步骤3:投票者节点根据自己的公钥pkID和选民集合采用GetMerklePath函数构建路径向量path;根据路径向量path证明该投票者节点属于合格的选民列表;
步骤4:投票者节点利用密码学安全伪随机算法生成随机数,利用抗碰撞哈希函数H,即sn←H(skID),防止重复或篡改投票从而保证选举的唯一性,其中,sn表示随机数。
8.根据权利要求1所述的一种基于区块链的可验证公平性的电子投票方法,其特征在于,区块链节点验证投票者节点的身份合法性的过程包括:区块链节点对提交的选票信息进行验证,验证通过后将选票添加到区块链节点;在构造的Merkle树结构中叶子节点为选票的加密只,叶子数据的改变会逐级向上传递到父节点,直到Merkle树的根节点使得根节点的哈希值发生变化;当新生成的Merkle树根和初始的树根相同则代表满足投票资格,否则出错;区块链节点对提交的选票进行验证,通过序列号检查是否存在重复投票;当验证sn存在,则中止本次交易;如果sn是唯一的,则先验证加密证明,其次将选票发布到区块链公告板上。
9.根据权利要求1所述的一种基于区块链的可验证公平性的电子投票方法,其特征在于,对该区块中的数据进行解密的过程包括:在进行计票过程中,区块链自动调用智能合约进行解密计票的流程;首先获取区块链上所有加密选票的信息块M,在验证所有选票合法的情况下使用paillier解密算法获得解密结果;使用私钥(λ,μ)解密即可获得候选人Cj的总票数;不断重复调用解密算法从而求得所有候选人的票数(T1,T2,…,Tm);候选人Cj的总票数的公式为:
Tj=Dec(Enc(Cj))=V1Cj+V2Cj+…+VnCj其中,Tj表示第j个候选人的票数,Dec(.)表示解密函数,Enc(.)表示加密函数,Cj表示第j个候选人,Vn表示第n个投票者节点。