I am wondering if a digital voting scheme would be possible by combining ring signatures, blind signatures and nostr.

With ring signatures a voter can sign their vote anonymously, and anybody can verify that "someone" that is registered as a voter has cast a valid vote.

The problem with this is that a voter can cast multiple valid votes, while we'd want to constrain that to one.

If everybody votes the cheating can be spotted, because the votes would surpass the number of voters. But even then, it would not possible to distinguish which votes are duplicate.

If we introduce and authority figure, then we can use blind signatures.

A voter creates their vote, turns it into a number, blinds that number and then communicates it to the authority.

The authority only signs that blinded vote if it can confirm the identity of the voter and that it hasn't already cast a vote.

The voter can then unblind the vote (only they can do that) and create a ring signature of the vote with the public keys of other plausible voters.

Now I am thinking: could we split that authority amongst nostr relays and have it collaboratively blindly sign something?

Reply to this note

Please Login to reply.

Discussion

Voting is lame

This is interesting. Have you thought about a legal system (or an arbitration system) based on Nostr?

Idk what it could look like with nostr. initially I thought the authority could be the municipality or the district where you go to vote, which would verify your identity before signing your blinded ballot.

The benefit of this is mainly the assurance that your vote is anonymous and that each vote that is cast is surely signed by someone within the public keys set (for example a foreigner cannot vote)

Sorry didn't"t read the question properly. No haven't yet thought of that.

Surely it would be possible to broadcast a vote to relays for verification, like the Bitcoin network.

Now, how would you ensure that each user only has access to one set of keys (to mitigate the ability to vote several times) without some form of KYC?

On the state level, the most advantageous voting system would be a foolproof system where no matter how many tried to cheat, the result wouldn’t matter because the state would have no power to do jack shit either way.

Yes initially I thought the authority could be the municipality or the district where you go to vote, which would verify your identity before signing your blinded ballot.

The benefit of this is mainly the assurance that your vote is anonymous and that each vote that is cast is surely signed by someone within the public keys set (for example a foreigner cannot vote)

Sure, I can see that. But now we are left with another problem: if there is a central authority issuing your keys, how can you be certain that the keys are safe?

I’m not against the idea, but if the “solution” requires some form of central authority to verify your identity, then you don’t need to cryptographically sign anything. Show up, prove your identity, put a ballot in a box.

The benefit of cryptographically signing a ballot would probably be a verifiable ledger (which could be verifiable by (nostr?)relays).

I might have misunderstood what you meant by authority. Another solution I just thought of could be that you make your own keys (no central issuer), an authority verifies your identity and logs it. If you show up again to vote with another set of keys the person verifying your identity would stop you. In this scenario the ledger and the keys would not be controlled by an authority. But there’s still some trust involved; you would have to trust that the central authority itself isn’t cheating.

No you are mistaken. The central authority does not issue your key. You issue your keys and tell the authority and the world your public one

Yes, of course. I’m just slow today, sorry.

Make your own keys “Hey this is me: *npub*”

Relays and authority “Sure, one identity, one key, one vote. Go ahead”.

As for your other points:

Even if there is a central authority there would be some interest in having a digital system as opposed to very slow, error prone and privacy compromising legacy system.

If you ever worked as a scrutineer you'd know what I talk about.

Also, the benefit of this is you can cast your vote publicly and everybody can verify it. The authority only assures that you can't cast twice.

Of course. I’m all for cryptographically solving the old world’s problems.