The main goal of ZeroXVote is to make elections secure by using procedures called zero knowledge proof https://en.wikipedia.org/wiki/Zero-knowledge_proof – ZKP.
In a nutshell, the zero-knowledge proof procedure refers to situations where knowledge of data can be proven without revealing it.
The data in the ZeroXVote system is anonymized with cryptographic deterministic functions, which means that there is no password that gives access to the data. Although very sensitive data can be recorded in the system there will be no way for any users to discover it even those with the highest system administrator privileges. Additionally, all data is encrypted with the strongest AES-256 cryptographic algorithms.
The technology layer of the ZeroXVote system is built on the proprietary Blockchain platform BCHAINNODE ( https://bchainnode.com).
- Support for multiple votes within an organization
- Each vating has a date range in which votes can be cast
- Ensures anonymity of the votes cast (the vote and the ballot are not linked to a specific voter)
- Ensures that the votes cast are undeniable
- Ability to verify (audit) voting events
- The ballot papers are treated as strictly blank (their unique UCC codes can be verified for accuracy)
- Ballot available as QR code (copy to phone)
- Ensures that the voter can verify their vote (vote can be secured with a PIN)
- Ability to share voting by sending a dedicated link
- Verification of election results and turnout “live”
- Possibility of confirming the receipt of the ballot with a one-time authorization code sent to a phone or SMS
- Data captured on the Blockchain platform
- It is possible to build a dedicated instance (SaaS) in which data will not be shared with other organizations
- Voter data is stored in anonymized form
- All data is encrypted with strong AES-256 algorithm
- Ability to serve a large number of voters
- Mass import of data from excel files possible (voter data and possible election options)
Processes operating within the ZeroXVote system
The system was built to replicate the processes currently operating in traditional general elections and to allow for an easy transition to electronic voting. Provision was made for all processes to be handled online and at the polling place.
ZeroXVote focuses on providing a very high level of anonymity when voting. On the other hand, the ability to verify the cast vote was ensured.
Both possibilities were provided by separating the processes of voter authentication, in which the voter has to provide his correct data and prove his right to vote, from the process of actually casting the ballot. For this purpose, it was decided to have a process of drawing ballots for each voter. The ballot can be used by the voter at any time (or even exchanged with another voter).
The system records individual events in an undeniable way, but without tying voter data to ballot data and votes cast.
The process establishes a unique election identifier under which subsequent processes are executed. This identifier is not recorded in the database in a readable manner (ZKP). In order to make it difficult to track the election, cryptographic deterministic algorithms were used to record it.
You can set dates from – to the duration of the election. Only within the scope of these dates will there be an opportunity to cast votes.
Voter registration on the voter list
It is possible to register individual voters manually or in bulk using external voter data files.
The voter authenticates by providing First Name, Last Name and an identifier. The ID can be a PESEL, ID card number, phone number, email address or any other unique identifier.
What is important is that the voter data is not stored in open form, but only in anonymized form with cryptographic deterministic algorithms (ZKP). This means that you have to know the data you are looking for in order to find it, but there is no way to get a list of voters with their data.
To hinder the potential discovery of voter data, the data is “salted” and hashed multiple times (e.g., 100,000 times).
After entering the voter list, the next step is to generate ballots. The number of ballots cannot be greater than the number of eligible voters.
In the ZeroXVote system, ballots are treated as strictly print with full verifiability.
Blockchain platform mechanisms are used to generate them, which ensure that the generated cards are verifiable and non-repudiable. It is possible to verify when the card was generated and used and whether its unique number is correct.
Generated cards go to the list of cards available in the system.
The system allows voters to authenticate through physical polling places or online by entering their information and entering a valid authorization code sent to their phone number or email address.
It is possible to add an external source of voter authentication to the process (e.g. bank login, qualified signature, etc.).
Issuing the ballot
Once the voter is authenticated, a ballot is drawn for the voter from a pool of available ballots.
The ballot can only be taken once. If it is lost, the voter’s vote is lost. The retrieval of the card is registered in the system. Only penalties that have been downloaded can be used to cast a ballot (the system validates cards during voting).
The system does not tie a particular ballot to a particular voter thus ensuring anonymity.
The system also generates random time delays to prevent the detection of assigned ballots to voters by tracking the time series between events. Cryptographic functions are used to generate the delays.
Cards are identified by a unique card code (UCC).
In the process of drawing a card, it is removed from the list of available cards and saved in the list of cards to be used.
Once the ballot is received, it becomes the only document confirming the vote cast.
When casting a ballot, the voter enters a unique ballot code (UCC) to vote, then enters their choice (or selects from a list) and enters a unique PIN to verify their choice. The PIN is given by the voter at the time of making the selection, and is optional, but allows the voter to secure their selection information after the ballot (UCC code) has been stolen.
The ZeroXVote system records the cast vote along with the ballot code (UCC) on the Blockchain platform in an undeniable way.
During the voting process, the system verifies if the card is on the list of cards to be used, if so, it is removed from that list and recorded in the list of votes cast.
Verification of the votes cast
A voter may verify his or her cast vote to see if it was counted correctly.
The voter enters the ballot number (UCC) and the PIN he/she assigned when voting.
The system will display information about the selection made. If there is a mismatch between the ballot and PIN, the system will display an error.
The system allows you to view statistics for completed elections. The system counts the votes cast for each option and calculates the turnout (ratio of votes cast to ballots generated)
Example applications of ZeroXVote
- Voting of Management Boards and Supervisory Boards
- Voting in Commune Councils
- Local and national general elections