I am announcing three packages PeaceVote, SynchronicBallot, PeaceFounder as well as a prototype community https://github.com/PeaceFounder/Community.jl for transparent, secure and anonymous electronic voting. The mainstream approaches which I have encountered in the literature focuses on anonymising the vote. The design I am proposing focuses on anonymizing the signer of the votes. The way I do it is through a process I call braiding.
In simple terms, one can imagine the braiding to be a process of electronic voting where you use your current voter key to authorise and generate a new key pair to be put in the ballot box. After the ballot, the list of ids (public keys) would be published and signed by participants (unaccountable) forming a new current voter set. The process can be repeated, forming a list of blocks which are cryptographically multilinked to the previous ones creating what I call a BraidChain.
The BraidChain allows solving multiple problems of the electronic voting systems. First, it allows making unaccountable voting protocols robust against malicious participants by having multiple small ballots (braids). Second, it is an ideal medium to distribute trust for keeping your identity anonymous over multiple ballot (braiding) servers. And lastly, the ballot (braid) is software-independent due to the validation step.
To show how that would work, I made a prototype https://github.com/PeaceFounder/Community.jl which uses mixnet based electronic voting protocol SynchronicBallot. I also defined API for the communities which they are encouraged to support to enable easier participation by enabling them to define the web of trust for certification of members and allowing users to participate in multiple communities through a single app.
By moving fast on the design and wanting to see a functional prototype, I left behind multiple isolated problems which now needs to be addressed. For example, the performance is terrible as well as the way I use
Serializers everywhere! Another pressing issue which needs to be addressed is how to prevent a community from reading all user keys and sending them over the internet. And the last part is on accessibility. Making an app and making a service which can verify existing social media identity and issue a certificate for the user so communities could grow in peace. It is an excellent time to get involved
- The docs of PeaceVote.jl covers the big picture on BraidChain with more details. Also, see carefully selected references there.
- peacefounder.org contains more info.
- Nonprofit and opensource startup looking for people to develop electronic voting system for a historical record when the development started.