Rendered at 19:40:14 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
cryptonector 9 minutes ago [-]
Fully software, even a combo of software and hardware, cannot by itself make elections secure. Think of the On Trusting Trust problem, the need to verify firmware, etc. You can't ensure that machines _will_ work correctly, but you _can_ verify that they _did_. To do verify the machines' functioning after the fact you have to do it very soon after closing of the polls, and you have to devise a manual, statistical random sampling method where you manually check randomly sampled, marked paper ballots, against the digital cast vote record, then do a digital risk limiting audit to check that the CVR totals up to the machines' reported results. The sooner after closing of the polls you do this, the better the likelihood that any cheating will be caught. I.e., an immediate manual, partial audit of enough randomly-selected polling locations.
That still leaves tons of other technical problems to address, like security of mail-ballots / absentee ballots, the security of ballot boxes used for early voting (because you probably cannot run the above manual partial audit due to then having nightly results available to the public; or maybe you accept that), etc.
himata4113 3 minutes ago [-]
You solve all of these with cryptography.
Your ID card contains a private key, you use that key to sign a transaction. It doesn't matter that machine you are running on is compromised as these details can be verified at a later date.
Example A:
You vote for candidate A, but software changes to candidate B and software displays that you voted for candidate A. At any later time you can check with an independent device and look at the transaction finding out that it was altered with and retract your vote / change it.
Example B:
How do you know your vote was counted? Publish a hash and the signature of every vote, recompute the final tally and compare with all the votes. If your vote is not in the final tally the hash will be different and you can visibly see your vote in the dataset as every transaction is published. To preserve privacy each round has a number, private key + number -> new key so each fingerprint will be unique between votes.
caaqil 43 seconds ago [-]
> Think of the On Trusting Trust problem, the need to verify firmware, etc.
I mean that's too abstract and philosophical of a problem when talking about voting machines/software: there are much more prevalent and concrete risks including but not limited to APT-grade espionage if your country is important enough, and the various other issues (some in your comment itself).
phtrivier 15 minutes ago [-]
I know the answer is "you don't", but suppose I vote vote electronically for candidate A. In the end, the candidate loses with 764 votes. How do I convince myself that my vote was counted in the 764 votes, and that it was not a randomly chosen number (with a RNG skewed around "plausible" scores) ?
Groxx 7 minutes ago [-]
In this system: I have no idea.
In any system, I suspect it is possible. There are strategies that allow doing private set intersections (or similar): https://en.wikipedia.org/wiki/Private_set_intersection (i.e. a set with one member is "you", and you can check to see if you're in that 764, without knowing who the others are)
I'm not sure what strategies would also allow you to not reveal to the vote collectors where your vote went, but there might be something.
vincnetas 9 minutes ago [-]
Most likely similarly how you know in regular "paper" elections
maccard 9 minutes ago [-]
How do you convince yourself of this in a regular election?
InsideOutSanta 5 minutes ago [-]
In a paper election, you have a chain of people who supervise each other. Depending on where you live, you can volunteer to be part of that and see it for yourself.
In code, you have no insight into what actually happens.
samat 18 minutes ago [-]
Interesting that there are no updates for almost a year. Cool stable software, I guess?
6 minutes ago [-]
jeff_vader 8 minutes ago [-]
Explanation is in the README:
> The intention behind this repository is to make source code of the Estonian online voting system available for public review.
> The repository is not used for active development, but will be kept up to date, so the code that can be found here is the code that is used for election.
piiritaja 6 minutes ago [-]
from README
The repository is not used for active development, but will be kept up to date, so the code that can be found here is the code that is used for election. As the voting system used for legally binding elections must strictly follow the legislation, the actual development of Estonian I-voting system and I-vote verification application is supervised by State Electoral Office of Estonia. Please refer to www.valimised.ee for further information.
That still leaves tons of other technical problems to address, like security of mail-ballots / absentee ballots, the security of ballot boxes used for early voting (because you probably cannot run the above manual partial audit due to then having nightly results available to the public; or maybe you accept that), etc.
Your ID card contains a private key, you use that key to sign a transaction. It doesn't matter that machine you are running on is compromised as these details can be verified at a later date.
Example A: You vote for candidate A, but software changes to candidate B and software displays that you voted for candidate A. At any later time you can check with an independent device and look at the transaction finding out that it was altered with and retract your vote / change it.
Example B: How do you know your vote was counted? Publish a hash and the signature of every vote, recompute the final tally and compare with all the votes. If your vote is not in the final tally the hash will be different and you can visibly see your vote in the dataset as every transaction is published. To preserve privacy each round has a number, private key + number -> new key so each fingerprint will be unique between votes.
I mean that's too abstract and philosophical of a problem when talking about voting machines/software: there are much more prevalent and concrete risks including but not limited to APT-grade espionage if your country is important enough, and the various other issues (some in your comment itself).
In any system, I suspect it is possible. There are strategies that allow doing private set intersections (or similar): https://en.wikipedia.org/wiki/Private_set_intersection (i.e. a set with one member is "you", and you can check to see if you're in that 764, without knowing who the others are)
I'm not sure what strategies would also allow you to not reveal to the vote collectors where your vote went, but there might be something.
In code, you have no insight into what actually happens.
> The intention behind this repository is to make source code of the Estonian online voting system available for public review.
> The repository is not used for active development, but will be kept up to date, so the code that can be found here is the code that is used for election.
The repository is not used for active development, but will be kept up to date, so the code that can be found here is the code that is used for election. As the voting system used for legally binding elections must strictly follow the legislation, the actual development of Estonian I-voting system and I-vote verification application is supervised by State Electoral Office of Estonia. Please refer to www.valimised.ee for further information.