痛点  传统电子投票方案的局限性

电子投票被广泛地应用于电子政务决议、团体活动投票、公司股东大会决议、物业基金使用决策等诸多应用场景。投票过程涉及很多敏感信息,比如投票人的身份、投票人的选择信息等,这些因素都可能影响到投票人的真实意愿,影响投票结果的正确性、公平性。

这就需要我们真实地去分析电子投票场景中的多维述求:

  • 是不是在投票开始时就设有投票的准入门槛,使得有资格的投票者才能投票;

  • 在投票过程中,投票者的选票提交之后不可被篡改也不会被删掉;

  • 投票的数据得是隐私的,第三方不应知道投票者投出选票的内容;

  • 投票人可以检验自己的选票被正确计入结果,实现个人可验证性;

  • 对于公众或者旁观者来说,他们可独立地对整个投票过程及结果进行验证,即做到全局可验证性。

但是在实际操作过程中,传统电子投票方案存在一定的局限性。首先,传统电子投票通常中心化程度高,而中心化投票系统存在增、删和篡改的风险。其次,很难让隐私和验证共存,尤其无法做到全局可验证,更难以实现上述不同角色的多种诉求。此外,传统电子投票方案在设计过程中无法进行规模扩展,在技术算法和执行过程中不够透明,公正性受到质疑。

匿名投票的设计目标也就产生了:基于现有电子投票方案,结合区块链与高效的零知识证明等密码原语,设计能够同时满足身份认证、投票隐私、全局与个人可验证的安全、可信、高效的匿名投票方案。

  思路  基于区块链的匿名投票架构与流程

匿名投票的场景涉及投票者、计票者、公众以及投票系统等,

  • 投票者需要与投票系统在身份验证登记、提交投票、验证投票结果等环节进行交互;
  • 计票者要在投票系统中验证每位投票者是否投了票,并且进行计票,之后将计票的结果提交到投票系统;
  • 公众要验证投票系统中的投票是否合规、整个计票结果是否正确。

这意味着,对于投票系统来说,不仅需要提供相应的交互能力,还需要具备一些边界的功能。

类似于区块链技术多中心化的分布式记账,匿名投票整体架构可以搭建成多方共建的系统,不同角色可以参与共建这条区块链,并且这些角色自身会以区块链进行交互。

在设计层面上,基于区块链架构,投票问题可以被抽象为转账问题。匿名投票方案可以在区块链这种分布式的系统上进行设计,投票者和计票者通过区块链实现分布式协作,区块链上的智能合约可以定义协作方式,而且可以设置监管机构或角色对整个投票过程进行监管审计。

基于区块链的匿名投票是怎么样的一个过程呢?

首先引入区块链,并且在区块链上有智能合约,投票者通过智能合约获得初始选票和证明,然后进行投票。

投票者和计票者、公众都要进行信息登记,在这个过程中,他们都会与系统进行相应的交互,以完成他们的投票、计票、验证,那么角色参与就实现了多中心化的方式。

整个投票、计票的过程,所有的数据也都在链上进行分布式记账,并且引入零知识证明机制,保证各参与方数据隐私,同时还能实现数据可验证。这样也就解决了传统电子投票方案的局限性问题,实现投票的不可篡改性、隐私性和全局可验证。

  概说  零知识证明的隐私密码

零知识证明是证明者向验证者证明陈述的正确性,而无需透露除该陈述正确性以外的任何信息,是投票者隐私和投票结果可验证非常好的解决方案。

但目前它最大的问题在于,通用零知识证明方案的性能还比较低。

它生成证明的过程通常要几十秒甚至是分钟级,而且如果计算模型过于复杂的话,时间还需更长,甚至是几十分钟级,这在体验端是无法被接受的。所以微众银行做了场景化的匿名投票解决方案,该方案采用自研的零知识证明技术,有效地提升了性能问题。

它首先设计了一个初始化参数,用Elgamal加密来隐藏投票者一些信息。(Elgamal是一种非对称加密算法)

计票者每个人拥有一个密钥分片,通常计票者会设计成是多人联合的方式,所有人(或者超过一定阈值)的密钥分片可合成出私钥,但没有人能够得到一个完整的私钥。此外,所有的计票者可以合成出最终的公钥。

公钥是可公开的,那么投票者在投票的过程中可用公钥将数据进行隐藏。

投票生成的过程中,如何隐藏数据呢?

零知识证明会为每一位候选人的投票生成一个范围证明,为投票者整个投票过程生成一个会计平衡的证明,整体上投票交易就变成了多个数据的组合,由多个计票者联合进行解密计票。

在这一联合计算、联合解密的过程中,由于每一位计票者拥有一个秘密的最终私钥的份额,所以他们可以将自己所知道的份额,以及对应自己的份额分片进行最终的解密,解密之后所有的数据再合成,就相当于是用最终的私钥对数据进行了解密。

整个过程中有非常多的步骤需要进行零知识证明的设计和验证。

投票者主要涉及归属性证明和格式的正确性证明。

归属性证明即投票者要证明,他知晓每一张投票的存在,并且他要向别人证明这张票是由他投出去的,这里便会引入离散对数知识证明,即“我知道证明的数值是什么,但是我不需要向你透露具体是什么值。”

同时,投票者需要为他投出去的每一张选票进行一个格式的正确性证明。

因为使用了Elgamal加密投票,密文由两部分数据组成,使用了两个生成元和一个随机数,根据Elgamal算法要求,密文中两部分数据使用的随机数必须一致才有效,才能够完成后面的联合数据计算和解密。

如果两个随机数的选择是不一样的,那么计票过程将无法正确计算,计算出来的值也就毫无意义。但是本身这个数据是加密的,如何判断这两个数据是一致的?这就需要投票者在投票的过程中,同时给出证明,证明密文选票里面的两个随机数是一样的。投票者还需去证明初始的票数、投出去的票数、剩余的票数这三者之间要满足金融学的会计平衡,即最终投出去的票数加上剩余的票数一定等于初始分配票数。这需要引入会计平衡证明,来证明这张选票是合规的。

每一位计票者拥有的是一个密钥的分片,他必须用秘密的分片解密,才能够保证我们解密出来的数据是符合我们所需要的结果计算,否则计算出来的值是毫无意义的。

因此对于计票者而言,他在计票的过程中,既要参与计算,也要给出一个证明,即拥有的密钥分片和解密时候用的秘密分片两个值是一样的。而进行验证的公众要从区块链中的数据对此进行审查,然后快速地通过投票交易中所有零知识证明,来验证判断所有的过程,做到全局的可验证和可信。

  实践  微众银行场景化隐私保护解决方案

WeDPR是微众银行区块链团队所做的一个场景化的隐私保护解决方案。之所以被称之为“场景化”,是因为我们在各种隐私保护、隐私计算的业务场景中发现,每一种场景都具有一定的特殊性。如果只选用某一种通用的算法,那么在面临特殊情况时,将会无法适用。

因此,我们考虑对于一些常用的业务场景,比如说区块链上的密文账本、多方密文的投票排名,还有一些选择性的数据披露等等,为这些场景针对性地给出定制化和优化的隐私保护方案。然后,基于这些优化方向,保证既能达到隐私保护的效果,满足安全性的同时,也能够服务于商业的场景和应用的落地。

基于场景化的隐私保护解决方案WeDPR,我们还推出了多方大数据隐私计算的平台WeDPR-PPC。该平台结合了当下业界前沿的学术成果,是一个基于MPC的多方大数据的隐私计算平台,覆盖了数据全生命周期的各个维度,在每个阶段均具有隐私合规等特性。

在数据的收集、传输、存储、使用、流转和消耗全过程中,WeDPR-PPC均能很好地体现数据所需的隐私保护能力,对于数据的确权、授权和维权, WeDPR-PPC结合区块链的优势便能很好地发挥作用。在收集阶段,能实现对数据的脱敏、匿名化和去标识化处理,在传输过程中实现安全和加密,在存储和授权过程做到安全可控的存储,包括密钥的管理,以及密态数据的查询和校验;在生产过程或者协作过程中,在加强隐私信息保护方面,遵守最小使用原则,在促进公共数据价值的释放方面,坚持最大开放原则。

WeDPR-PPC有多个非常关键的技术指标,首先是,隐私求交的性能,它具有十亿级数据集处理能力。其次是,乘法联合计算的性能,实现毫秒级端到端响应,可以在几十亿级的数据上快速地满足商业场景的应用。再则,可实现平等多方的大规模数据协作,对于同时参与隐私计算的机构数没有限制。在工信部信通院最新一批“中国信通院大数据产品能力评测”中, WeDPR-PPC首批通过“区块链辅助的隐私计算产品”权威评测,安全性、性能、功能全面符合国家级测试标准。

微众银行区块链李辉忠 | 零知识证明在匿名投票中的应用

零知识证明在匿名投票中的应用相关推荐

  1. 零知识证明在区块链中的应用

    零知识证明在区块链中的应用 一.引言 二.相关理论 1. 区块链 2.零知识证明 三.区块链中零知识证明的应用 1.zk-SNARK 2.ZeroCash 四.总结 参考文献 一.引言 在国家重视和政 ...

  2. 零知识证明应用到区块链中的技术挑战

    零知识证明应用到区块链中的技术挑战 李康1,2, 孙毅1,2, 张珺3, 李军4, 周继华5, 李忠诚1 1. 中国科学院计算技术研究所,北京 100190 2. 中国科学院大学,北京 100049 ...

  3. 区块链中的密码学(五)-零知识证明简述

    本篇是这个系列的最后一篇,尽管在区块链中还有很多的密码学应用,将来会必然会更多,然而笔者认为,就今天我们有限的学习时间来讲的话,任何人都应该对信息的获取做减法.思来想去,选择了"零知识证明& ...

  4. 不是程序员也能看懂的ZCash零知识证明

    交易过程完全匿名是数字货币ZCash最大的亮点,正是这一点使得ZCash自提出以来便备受关注.ZCash匿名交易的实现依赖于一种叫做"零知识证明"的密码学手段.本文将通过打比方的手 ...

  5. 【区块链基础知识系列】 第8课 区块链之零知识证明

    所谓零知识证明,指的是示证者在证明自己身份时不泄露任何信息,验证者得不到示证者的任何私有信息,但又能有效证明对方身份的一种方法. 从本质上讲,零知识证明是一种协议.所谓协议(Protocol),就是两 ...

  6. 零知识证明学习资源汇总

    本文将继续会持续进行更新,更新后的版本将在 Github 和知乎上发布,欢迎关注. Github 地址:https://github.com/sec-bit/learning-zkp/blob/mas ...

  7. 【区块链技术工坊29期实录】小包总:SERO基于零知识证明的隐私保护公链解决方案

    1,活动基本信息 1)题目: [区块链技术工坊29期]SERO基于零知识证明的隐私保护公链解决方案 2)议题: 在区块链隐私保护领域,零知识证明被认为是最前沿的解决方案,同时也是最强大的,以太坊创始人 ...

  8. ZCash零知识证明

    交易过程完全匿名是数字货币ZCash最大的亮点,正是这一点使得ZCash自提出以来便备受关注.ZCash匿名交易的实现依赖于一种叫做"零知识证明"的密码学手段.本文将通过打比方的手 ...

  9. ZCash的零知识证明

    交易过程完全匿名是数字货币ZCash最大的亮点,正是这一点使得ZCash自提出以来便备受关注.ZCash匿名交易的实现依赖于一种叫做"零知识证明"的密码学手段.本文将通过打比方的手 ...

  10. 蚂蚁区块链第7课 零知识证明隐私保护原理和蚂蚁BAAS接口调用实现

    1,摘要 本文试图普及隐私保护和零知识证明的相关技术知识,尝试使用更简单的描述来理解复杂的数学算法和技术原理.同时,也提供了蚂蚁区块链已经实现的隐私保护的接口函数说明. 本文涉及的专业知识有零知识证明 ...

最新文章

  1. CVPR 2018 | 使用CNN生成图像先验,实现更广泛场景的盲图像去模糊
  2. CPU与内存的那些事
  3. 阿里巴巴拿下奥运顶级赞助商
  4. 给C#开发者的代码审查清单
  5. VTK:Qt之SideBySideRenderWindowsQt
  6. 设置ViewPager 自动滑动时间,速度 方便展示动画
  7. 开源项目中经常出现的七种错误
  8. 虚拟机安装CentOS-7-x86_64-DVD-1708说明
  9. 推荐几个自己经常去的一些博客和网站
  10. LeetCode-二叉树算法总结-层次遍历,路径总和等
  11. Rand函数使用和对补码的理解
  12. 不为人知的稠密特征加入CTR预估模型的方法
  13. tomcat运行模式(bio,aio,apr)
  14. jQuery实现留言板
  15. 华为手机应用程序变为Android图标,华为手机如何改变应用图标
  16. 软件测试笔记本硬件,专业工作站软件测试_惠普笔记本电脑_笔记本评测-中关村在线...
  17. 年轻导演的创业之路-杨立坤
  18. 清华大学保研计算机推荐信模板,清华保研推荐信模板
  19. MATLAB输出白色背景图片
  20. 功能强大的安卓刷机软件-刷机精灵提供下载

热门文章

  1. 配置mysql复制基本步骤
  2. Azure 网站上的 Java
  3. 安装ffmpeg及nginx模块
  4. 学习FFmpeg API – 解码视频
  5. CISCO路由器NAT-T与IPSec ×××配置实验【实践闯未来】
  6. bash实现自动补全
  7. Sql Server CHAR类型
  8. c语言文件夹换行打印,关于文件操作,碰到空格就换行
  9. 拓端tecdat|R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例
  10. 拓端tecdat|Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load(file, DLLpath = DLLpath,