5 个不稳定版本

0.4.0 2020 年 2 月 23 日
0.3.1 2020 年 2 月 20 日
0.3.0 2020 年 2 月 20 日
0.2.1 2020 年 2 月 19 日
0.2.0 2020 年 2 月 19 日

密码学 中排名 #1893

Apache-2.0

73KB
1.5K SLoC

加密投票球

docs checks codecov

加密投票球是一个旨在现实世界选举的加密安全、去中心化端到端可验证投票系统。它是一个提供投票存储、加密操作和 API 的“后端”服务。它不提供用户界面 - 尽管它被构建为使其与它交互的 UI 创建变得容易。

它使用 Shamir 秘密共享进行选举解密密钥,盲签名进行选民匿名,以及可选的区块链后端用于分布式事务存储和验证。它支持所有计票方法,包括写入选民。

目标

  1. 可验证 - 整个投票过程应该是端到端可验证的。
  2. 易用性 - 易于使用。
  3. 快速 - 每秒 1,000 张选票
  4. 可扩展性 - 百万选民。
  5. 安全性 - 坚如磐石的安全保证,拜占庭容错。

当前状态

处于积极开发中。尚未准备好投入生产使用!

路线图

状态¹ 特性 备注
从 Go 迁移到 Rust 🦀
盲签名(RSA) 使用 RSA-FDH
盲签名(ed25519 / schnorr) 将替换当前的 RSA 盲签名
Shamir 秘密共享 使用 Sharks
区块链后端 使用 Hyperledger Sawtooth
支持所有计票方法 使用 Tallystick
REST 前端
分布式密钥生成 替换 Shamir,使用 ElGamal,完全可验证和分布式
洋葱混合网络(可能是 Sphinx) 加强选民匿名 - 依赖于 REST 前端
重新加密混合网络 提供威逼利诱抵抗力
终端用户设备验证 使用 Benaoh Challenge
  1. ✓ 表示已完成,⚠ 表示正在进行中,空白表示尚未开始但计划支持。

组件

核心库

  1. cryptoballot = "0.3.1" 添加到您的 rust 项目的 Cargo.toml 文件中。

命令行工具

  1. 安装 RustZeroMQProtoc
  2. 运行 cargo install --path=cryptoballot_cli

Sawtooth 事务处理器

  1. 安装 RustZeroMQProtoc
  2. 安装 Sawtooth
  3. 运行 cargo install --path=cryptoballot_sawtooth_tp

依赖项

约 10MB
约 196K SLoC