| Crates.io | cryptoballot |
| lib.rs | cryptoballot |
| version | 0.4.0 |
| created_at | 2020-02-19 06:47:46.391493+00 |
| updated_at | 2020-02-23 06:39:01.568579+00 |
| description | Cryptographically secure end-to-end verifiable online voting |
| homepage | https://cryptoballot.com |
| repository | https://github.com/cryptoballot/cryptoballot |
| max_upload_size | |
| id | 210525 |
| size | 72,533 |
CryptoBallot is a cryptographically secure decentralized end-to-end verifiable voting system meant for real-world elections. It is a "backend" service providing vote storage, cryptographic operations, and an API. It does not provide a user interface - although it is built to make creating a UI that interfaces with it easy.
It uses Shamir Secret Sharing for election decryption keys, blind-signing for voter anonymity, and an optional blockchain backend for distributed transaction storage and verification. It supports all tally methods including write-in candidates.
Under active development. Not ready for production use!
| Status¹ | Feature | Notes |
|---|---|---|
| ✓ | Migrate from Go to Rust | 🦀 |
| ✓ | Blind-Signing (RSA) | Uses RSA-FDH |
| Blind-Signing (ed25519 / schnorr) | Will replace current RSA bling-signing | |
| ✓ | Shamir Secret Sharing | Uses Sharks |
| ⚠ | Blockchain backend | Uses Hyperledger Sawtooth |
| ⚠ | Support all tally methods | Uses Tallystick |
| REST frontend | ||
| Distributed key generation | Replace Shamir, uses ElGamal, fully verifiable and distributed | |
| Onion mixnet (likely Sphinx) | Strengthened voter anonymity - Depends on REST frontend | |
| Re-encryption mixnet | Provides coercion resistance | |
| ⚠ | End-User Device Verification | Uses Benaoh Challenge |
✓ means done, ⚠ means in-progress, blank means not started but support is planned.
cryptoballot = "0.3.1" to your rust project's Cargo.toml file.