Post

First, this is really unfortunate, and I feel really bad. Sure, you can say "the trustee should have saved their secret key", but ultimately, as a system designer, I want my systems to be resilient to human mistakes. To be human is to err. Although, it's really hard to strike the right balance.

If you want voter privacy, even from me, the administrator of the Helios server, you need to use strong encryption on the ballots – in fact you need a special form of encryption that allows for accumulating votes under the covers of encryption.

And then you need to manage how the decryption of the tally is performed, and the only way we know how to do that reasonably well is by having a set of trustees where no single individual can go rogue and break privacy. But there's a very specific design tradeoff here.

Do you require all trustees to be present for decryption, or do you tolerate a minority of trustees to be absent? For resilience, it seems clear you should tolerate some trustees being absent. But that complicates the setup process: all trustees need to log in once, then a second time.

And of course this is where designing Helios for different audiences is really tricky. Some users, like the IACR, are super expert and they can go through the complex setup process. Other users don't even understand what a key is.

0 reposts9 likes

I used to regularly get emails saying "I lost my private key, can you send me a new one?" But ... that doesn't work. So I made the trustee function really scary. By default, Helios manages the key, and privacy is not as strong. There's an ugly scary popup if you try to set up trustees.

And still, to this day, about once every 2 months, a user clicks through the scary popup that tells them that if they don't save their secret key, they won't be able to tally their election. Then they lose their key and email asking for help. Help that is mathematically infeasible for me to provide.

So the problem stands – how do you offer real security & privacy that different users can use safely? It's super hard. All I can say is, if you're making fun of someone who lost their secret key, you're doing it wrong. It will happen to you someday, too. And I need to make Helios better.

Longtime UXR here. TY Try telling them what to do (rather than what _not_) eg: "Take a photo of this number now and print it later." Use labels on buttons as part of the action eg:: "I saved the key". Counteract reflexes with friction: Map the Enter key to a safe action. Reduce words. Test.