零知识证明在匿名投票中的应用
Posted 软件工程小施同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零知识证明在匿名投票中的应用相关的知识,希望对你有一定的参考价值。
痛点 传统电子投票方案的局限性
电子投票被广泛地应用于电子政务决议、团体活动投票、公司股东大会决议、物业基金使用决策等诸多应用场景。投票过程涉及很多敏感信息,比如投票人的身份、投票人的选择信息等,这些因素都可能影响到投票人的真实意愿,影响投票结果的正确性、公平性。
这就需要我们真实地去分析电子投票场景中的多维述求:
-
是不是在投票开始时就设有投票的准入门槛,使得有资格的投票者才能投票;
-
在投票过程中,投票者的选票提交之后不可被篡改也不会被删掉;
-
投票的数据得是隐私的,第三方不应知道投票者投出选票的内容;
-
投票人可以检验自己的选票被正确计入结果,实现个人可验证性;
-
对于公众或者旁观者来说,他们可独立地对整个投票过程及结果进行验证,即做到全局可验证性。
但是在实际操作过程中,传统电子投票方案存在一定的局限性。首先,传统电子投票通常中心化程度高,而中心化投票系统存在增、删和篡改的风险。其次,很难让隐私和验证共存,尤其无法做到全局可验证,更难以实现上述不同角色的多种诉求。此外,传统电子投票方案在设计过程中无法进行规模扩展,在技术算法和执行过程中不够透明,公正性受到质疑。
匿名投票的设计目标也就产生了:基于现有电子投票方案,结合区块链与高效的零知识证明等密码原语,设计能够同时满足身份认证、投票隐私、全局与个人可验证的安全、可信、高效的匿名投票方案。
思路 基于区块链的匿名投票架构与流程
匿名投票的场景涉及投票者、计票者、公众以及投票系统等,
- 投票者需要与投票系统在身份验证登记、提交投票、验证投票结果等环节进行交互;
- 计票者要在投票系统中验证每位投票者是否投了票,并且进行计票,之后将计票的结果提交到投票系统;
- 公众要验证投票系统中的投票是否合规、整个计票结果是否正确。
这意味着,对于投票系统来说,不仅需要提供相应的交互能力,还需要具备一些边界的功能。
类似于区块链技术多中心化的分布式记账,匿名投票整体架构可以搭建成多方共建的系统,不同角色可以参与共建这条区块链,并且这些角色自身会以区块链进行交互。
在设计层面上,基于区块链架构,投票问题可以被抽象为转账问题。匿名投票方案可以在区块链这种分布式的系统上进行设计,投票者和计票者通过区块链实现分布式协作,区块链上的智能合约可以定义协作方式,而且可以设置监管机构或角色对整个投票过程进行监管审计。
基于区块链的匿名投票是怎么样的一个过程呢?
首先引入区块链,并且在区块链上有智能合约,投票者通过智能合约获得初始选票和证明,然后进行投票。
投票者和计票者、公众都要进行信息登记,在这个过程中,他们都会与系统进行相应的交互,以完成他们的投票、计票、验证,那么角色参与就实现了多中心化的方式。
整个投票、计票的过程,所有的数据也都在链上进行分布式记账,并且引入零知识证明机制,保证各参与方数据隐私,同时还能实现数据可验证。这样也就解决了传统电子投票方案的局限性问题,实现投票的不可篡改性、隐私性和全局可验证。
概说 零知识证明的隐私密码
零知识证明是证明者向验证者证明陈述的正确性,而无需透露除该陈述正确性以外的任何信息,是投票者隐私和投票结果可验证非常好的解决方案。
但目前它最大的问题在于,通用零知识证明方案的性能还比较低。
它生成证明的过程通常要几十秒甚至是分钟级,而且如果计算模型过于复杂的话,时间还需更长,甚至是几十分钟级,这在体验端是无法被接受的。所以微众银行做了场景化的匿名投票解决方案,该方案采用自研的零知识证明技术,有效地提升了性能问题。
它首先设计了一个初始化参数,用Elgamal加密来隐藏投票者一些信息。(Elgamal是一种非对称加密算法)
计票者每个人拥有一个密钥分片,通常计票者会设计成是多人联合的方式,所有人(或者超过一定阈值)的密钥分片可合成出私钥,但没有人能够得到一个完整的私钥。此外,所有的计票者可以合成出最终的公钥。
公钥是可公开的,那么投票者在投票的过程中可用公钥将数据进行隐藏。
投票生成的过程中,如何隐藏数据呢?
零知识证明会为每一位候选人的投票生成一个范围证明,为投票者整个投票过程生成一个会计平衡的证明,整体上投票交易就变成了多个数据的组合,由多个计票者联合进行解密计票。
在这一联合计算、联合解密的过程中,由于每一位计票者拥有一个秘密的最终私钥的份额,所以他们可以将自己所知道的份额,以及对应自己的份额分片进行最终的解密,解密之后所有的数据再合成,就相当于是用最终的私钥对数据进行了解密。
整个过程中有非常多的步骤需要进行零知识证明的设计和验证。
投票者主要涉及归属性证明和格式的正确性证明。
归属性证明即投票者要证明,他知晓每一张投票的存在,并且他要向别人证明这张票是由他投出去的,这里便会引入离散对数知识证明,即“我知道证明的数值是什么,但是我不需要向你透露具体是什么值。”
同时,投票者需要为他投出去的每一张选票进行一个格式的正确性证明。
因为使用了Elgamal加密投票,密文由两部分数据组成,使用了两个生成元和一个随机数,根据Elgamal算法要求,密文中两部分数据使用的随机数必须一致才有效,才能够完成后面的联合数据计算和解密。
如果两个随机数的选择是不一样的,那么计票过程将无法正确计算,计算出来的值也就毫无意义。但是本身这个数据是加密的,如何判断这两个数据是一致的?这就需要投票者在投票的过程中,同时给出证明,证明密文选票里面的两个随机数是一样的。投票者还需去证明初始的票数、投出去的票数、剩余的票数这三者之间要满足金融学的会计平衡,即最终投出去的票数加上剩余的票数一定等于初始分配票数。这需要引入会计平衡证明,来证明这张选票是合规的。
每一位计票者拥有的是一个密钥的分片,他必须用秘密的分片解密,才能够保证我们解密出来的数据是符合我们所需要的结果计算,否则计算出来的值是毫无意义的。
因此对于计票者而言,他在计票的过程中,既要参与计算,也要给出一个证明,即拥有的密钥分片和解密时候用的秘密分片两个值是一样的。而进行验证的公众要从区块链中的数据对此进行审查,然后快速地通过投票交易中所有零知识证明,来验证判断所有的过程,做到全局的可验证和可信。
实践 微众银行场景化隐私保护解决方案
WeDPR是微众银行区块链团队所做的一个场景化的隐私保护解决方案。之所以被称之为“场景化”,是因为我们在各种隐私保护、隐私计算的业务场景中发现,每一种场景都具有一定的特殊性。如果只选用某一种通用的算法,那么在面临特殊情况时,将会无法适用。
因此,我们考虑对于一些常用的业务场景,比如说区块链上的密文账本、多方密文的投票排名,还有一些选择性的数据披露等等,为这些场景针对性地给出定制化和优化的隐私保护方案。然后,基于这些优化方向,保证既能达到隐私保护的效果,满足安全性的同时,也能够服务于商业的场景和应用的落地。
基于场景化的隐私保护解决方案WeDPR,我们还推出了多方大数据隐私计算的平台WeDPR-PPC。该平台结合了当下业界前沿的学术成果,是一个基于MPC的多方大数据的隐私计算平台,覆盖了数据全生命周期的各个维度,在每个阶段均具有隐私合规等特性。
在数据的收集、传输、存储、使用、流转和消耗全过程中,WeDPR-PPC均能很好地体现数据所需的隐私保护能力,对于数据的确权、授权和维权, WeDPR-PPC结合区块链的优势便能很好地发挥作用。在收集阶段,能实现对数据的脱敏、匿名化和去标识化处理,在传输过程中实现安全和加密,在存储和授权过程做到安全可控的存储,包括密钥的管理,以及密态数据的查询和校验;在生产过程或者协作过程中,在加强隐私信息保护方面,遵守最小使用原则,在促进公共数据价值的释放方面,坚持最大开放原则。
WeDPR-PPC有多个非常关键的技术指标,首先是,隐私求交的性能,它具有十亿级数据集处理能力。其次是,乘法联合计算的性能,实现毫秒级端到端响应,可以在几十亿级的数据上快速地满足商业场景的应用。再则,可实现平等多方的大规模数据协作,对于同时参与隐私计算的机构数没有限制。在工信部信通院最新一批“中国信通院大数据产品能力评测”中, WeDPR-PPC首批通过“区块链辅助的隐私计算产品”权威评测,安全性、性能、功能全面符合国家级测试标准。
以上是关于零知识证明在匿名投票中的应用的主要内容,如果未能解决你的问题,请参考以下文章