Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is protocol self-tallying? #1

Open
Kevin-Mok opened this issue Feb 18, 2023 · 1 comment
Open

Is protocol self-tallying? #1

Kevin-Mok opened this issue Feb 18, 2023 · 1 comment

Comments

@Kevin-Mok
Copy link

From this paper, it defines self-tallying as "if the post-ballot-casting (tally) phase can be performed by any interested party". But in this line:

const sharedKey = genEcdhSharedKey(votingPrivKey, [unstringifyBigInts(key[0]), unstringifyBigInts(key[1])])

It seems that you need a voting authority's private key to do the tallying. So, is this protocol really self-tallying?

@creepteks
Copy link
Owner

The implementation I provided currently lacks the DKG phase I included in the protocol theoretically. "Initializers", the authorities who start the voting process, would be unable to violate e-voting requirements such as privacy and "fairness" because each one only holds its share of private key. The tallying phase is done when the initializers collaborate to create the secret key and publish it. So, you're correct: the tallying phase is dependent on voting authorities' private key, and in the PoC I provided, a malicious authority could withhold the private key or can violate the fairness and count all the votes before the ballot-casting is finished. However this can be prevented by integrating the protocol with DKG as I mentioned.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants