基于区块链的安全电子选举系统

背景:浙江大学软件学院实训课题,本组选择的课题是关于区块链和隐私计算的融合应用场景,具体方向是电子选举
需求:投票人不暴露身份隐私的情况下完成投票,计票机构在选票合法的情况下完成计票


技术方案总结

图 1
图 2

项目总体情况

图 4

核心功能性能测试

图 5

测试环境:x86_64,Intel® Xeon® Gold 6133 CPU @ 2.50GHz,Linux 5.4.0-96-generic
测试结果:大规模选举时延较高,适用于小规模选举活动,但因为选举本身的非实时性,也可用于更大规模

亮点

在隐匿链上选票来自谁的情况下选民只需要通过零知识证明证明自己的合法选民身份。
即使是对一个合法证明的微小改变,都无法通过链上以及链下的零知识证明验证,攻击者难以冒充合法选民。

缺陷

  • 监管机构(后端)无法证明没有存储选民的隐私信息,例如该选民的选票号,私有盐。这里存在漏洞可以使得作恶的监管机构只需执行两次解密算法就可以获得选民的选票内容
  • 零知识证明以匿名的形式证明了选民身份,选民通过秘密ID和监管方产生的PK生成证明并公布。秘密输入应当是选民秘密持有的,因此生成证明的过程最好是在本地做。
    当前选民需要通过可信的后端API生成证明,无法便捷地通过WASM在本地生成(原计划下libsnark难以迁移,且曲线计算迁移到wasm慢几十倍),因此使用起来较为不便。

系统展示

图 6
图 7
图 8
图 9
图 10
图 11
图 12
图 13
图 14
图 15
图 16