Skip to content
@zktally

ZKTally

Privacy-preserving, verifiable e-voting: linkable ring signatures, Paillier encryption & NIZK binary vote proofs -🎓Cryptography (II4021-24) Project at STEI ITB

ZKTally

Privacy-preserving, anonymously verifiable e-voting from linkable ring signatures, Paillier homomorphic encryption, and NIZK vote-correctness proofs.

Unaudited academic software implementing a protocol from a student research paper. It has not been reviewed by professional cryptographers and must not be used for any binding election.

A ballot is three things travelling together: an encrypted vote, a proof that the vote is legal, and a ring signature proving the caster is on the roll. Tallying multiplies the ciphertexts and decrypts only the total, so no individual ballot is ever opened — and a deterministic key image still makes a second ballot from the same key detectable.

Repositories

ZKTally Python reference implementation and the zktally command line
zktally-js TypeScript port for the browser and Node — wire-compatible with the reference
zktally.github.io Interactive explainer that runs a real election in your browser
paper The protocol paper

Both implementations share one wire format and one corpus of test vectors, and each is tested against boards the other produced. A ballot cast in the browser verifies in Python.

What it gives you, and what it does not

Ballot secrecy, voter anonymity within the ring, double-vote prevention, ballot-stuffing resistance, and public verifiability of every ballot. Under threshold mode the tally itself is verifiable too.

It is not receipt-free — the voter holds the encryption randomness, which reconstructs their ciphertext — and it offers no coercion resistance, no bulletin-board authentication, and no side-channel or post-quantum protection. Each project's README states its limitations in full, because a demonstration that only lists its strengths is advertising.

Popular repositories Loading

  1. zktally zktally Public

    Privacy-preserving, anonymously verifiable e-voting protocol: linkable ring signatures, Paillier homomorphic encryption, and NIZK binary-vote proofs (Python reference implementation)

    Python

  2. paper paper Public

    LaTeX source for the ZKTally paper: a privacy-preserving, anonymously verifiable e-voting protocol from linkable ring signatures, Paillier encryption, and NIZK proofs

    TeX

  3. zktally.github.io zktally.github.io Public

    Interactive browser demo of the ZKTally privacy-preserving e-voting protocol, powered by zktally-js

    Vue

  4. zktally-js zktally-js Public

    TypeScript/JavaScript port of the ZKTally e-voting protocol: linkable ring signatures, Paillier homomorphic encryption, and NIZK binary-vote proofs for the browser and Node.js

    TypeScript

  5. .github .github Public

    Organization profile and shared community health files for ZKTally

Repositories

Showing 5 of 5 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…