[Members] cryptographic votes

Jesus Cea jcea at argo.es
Tue Nov 29 19:20:25 CST 2005

Trejkaz wrote:
> Do you mean that OpenPGP-enabled clients talk to an OpenPGP-enabled bot,
> or something else?

Something far more simple.

There are several scenaries. Supose a simple one:

a. Any voter can verify that his/her vote was accounted.
b. The votes are secret for all except the bot and its administrator.

The procedure is something like this:

1. Every voter votes as usual, but include a random number in his/her
vote. If there are several questions, the voter should use a different
number for each one.

2. When the vote period finishes, the bot publishes the aggregated
results, as ever.

3. In addition, for each question voted, the bot publishes a list of
votes values and numbers asigned.

4. Each voter can verify his/her own vote simply looking at his/her
secret numbers. If a voter doesn't see his/her numbers, or the vote
values are not correct, he/she can cry loud.

5. Since nobody (except the bot and their admins) knows the relation
between votes and secret numbers, the votes are (mosly) secret.

No crypto here. You only crack the anonymity if:

a. The bot is tampered with.
b. Their admins are are bad guys.

You can only falsify an election if:

a. The bot admins add more votes. For example, using vote slots of
people that didn't vote. They can't change other people votes, since
each voter can verify the integrity of his/her own votes.

Now suppose you want to garantee anonymity even if the bot/admins are
not "trusteable". ( I don't know the right translation, sorry).

Definition: blind signature - a cryto tool. You can create a document
that another guy signs without be able to read its content. Then you can
"open" the document and the signature will be still valid, verifiable by

That tool exists. Trust me :).

The procedure could be:

1. The voter use a small program to create an encrypted document saying
something like "I vote Yes, random nonce=ewfjid3h". The program gives an
output, base64, let say 100 caracters long.

2. The voter sends that string to the voting bot. The bot can't see the
vote value, but it can sign it. If the voter is in the right census and
no vote signature was already issued, the bot will send a blind signature.

3. The voter gets the signature and paste it to the program. The program
use the bind signature to create a plaintext "I vote Yes, random
nonce=ewfjid3h", signed by the bot.

4. Now the voter connects to XMPP network using an anonymous ad-hoc
use&dump account, not traceable to his/her real JID. The voter simply
paste the "I vote Yes, random nonce=ewfjid3h"+blind signature to the bot.

5. The bot verifies that the signature is correct, since it signed
itself. Since the signature is a "blind signature", the bot is unable to
link this creartext vote, sent from an anonymous account, to the
encrypted vote signed in step 2, sent by an authorized voter.

The final audit, published votes and secret numbers, is the same that in
the scenario before.

Jesus Cea Avion                         _/_/      _/_/_/        _/_/_/
jcea at argo.es http://www.argo.es/~jcea/ _/_/    _/_/  _/_/    _/_/  _/_/
                                      _/_/    _/_/          _/_/_/_/_/
PGP Key Available at KeyServ   _/_/  _/_/    _/_/          _/_/  _/_/
"Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
"My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz

More information about the Members mailing list