2

Let's have the following problem:

There is something like a voting application. Every participant can cast a vote. There are more than one watchers who control the election. I want to make every single vote encrypted until election ends. If there were only one watcher, the solution would be straightforward - the watcher would generate private, and public keys and participant just encrypted the vote with this public key, and after the election ends, watcher decrypted these votes and calculated the results.

My problem is there is more than one watcher so I need to create something I would call a shared private key. Is there any scheme to generate a public key and many private keys which decrypted the message after watcher put their shared private keys together?

It could be imaginable as a lock that could only be opened if you have all keys.

  • Why not divide one private key among the watchers so every watcher has just a fraction of it? – not2savvy Apr 3 at 18:55
  • Designing a secure voting scheme is hard. See Helios (article ) used by IACR – kelalaka Apr 4 at 8:05
3

There is Shamir's Secret Sharing algorithm, that allows to encrypt something in a way, that it can only be decrypted when a certain number of parts of the key are available.

You will probably need some additions for your voting system, as SSS is not a public/private key system.

  • Understand. But there is still need someone who would generate the public/private pair. This person then could distribute shares of course but there would still be a person who knows the secret key earlier than others. Do I understand it right? – hardcheese Apr 3 at 15:08
  • Yes, this is only a starting point in your search how to build such a system, not a full solution. But you could possibly use it e.g. to distribute a private key, so that the watchers can reconstruct it afterwards. Then the votes can be encrypted using the public key. I am not sure if this would be a full solution to your problem, which seems quite complex. – allo Apr 4 at 9:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.