1

There is an online membership community. Every member has the ssh key that they use to perform various functions.

There is the need to vote on sensitive issues. Members don't want to disclose their votes, only want them to be securely counted. Members don't want to trust a human to do this.

Can there be a computer program that can accept votes from members without the possibility of easy tampering and disclosure?

I imagine it the way that every member can connect with the ssh key, perform some operation like answer a voting question, the system will change its state and record the vote, but will be only able to tell the final count after the minimum number of votes is counted and the voting is closed, and won't theoretically be able to tell individual answers.

I imagine that there should be some cryptographic algorithm that can do this.

Flying Jay
  • 11
  • 1

1 Answers1

1

Yes, it's quite simple.

Each member forms their vote and blinds it. They submit it using their SSH key to a system that performs one blind signature for each member. They then unblind their signed vote and return it to the site anonymously for tallying.

This ensures that each member gets one vote but provides no way to tell which member supplied which vote because the votes were only associated with a member while blinded.

David Schwartz
  • 4,203
  • 24
  • 21
  • Thank you for answering, I really appreciate it! I am really a crypto-dummy. But I am thinking one more step ahead here. In such membership community, how can one put a question up for vote anonymously? Is there a protocol to authenticate to a group of identities, without disclosing your identity? The members could anonymously suggest issues, and if let's say 25% of members agreed, such question could be later voted on. Do you think such thing is possible? – Flying Jay Feb 21 '18 at 21:32
  • Those are all possible with blind signatures. – David Schwartz Feb 21 '18 at 21:37