Anonimizar y Verificar

A diferencia de la democracia liquida, no queremos que el votante pueda traspasar a otro el derecho al voto, asi que cuando vaya a la urna debe estar claro que la autorizacion a votar es para la persona que esta conectada.  Pero a la vez hay que preserval el anonimato del votante.

Ademas, el votante quiere tener seguridad de que su papeleta ha sido introducida en la urna. Y quizas la autoridad de la urna quiere estar segura de que el certificado de voto emitido por ella no es falsificado, pero dejemos de momento este paso.

¿Se puede lograr todo esto sin tener que comprobar el codigo ni la seguridad de las maquinas que reciben los votos? Como apuntaba Galli en un par de posts, la insercion de un voto no autorizado es dificil de evitar si esta maquina ha sido de alguna manera comprometida, dado que podria simplemente esperar a la fase de autorizacion y sustituir el voto correcto por el falso. Para evitarlo, la solucion mas simple -asumiendo que el compromiso no se extiende al codigo html+js de la pagina web- es que el voto encriptado incluya el autentificador que es unico por usuario… pero entonces se rompe el anonimato.

Se me ocurre lo siguiente:

El agente censal emite un identificador unico, que conocera solo cada votante, y a la vez emite una clave publica, sin desvelar la privada.

El votante cifra su voto con las claves de los agentes de conteo, añade la fecha (o cualquier otro contador para sustituir mas tarde el voto si cambia de opinion) y el identificador unico, cifra nuevamente el voto ahora con la clave del agente censal, calcula el hash y envia todo ello, cifrado y hash, al receptor del voto, el cual le devuelve el hash firmado como prueba de voto.

Al finalizar el periodo de votacion, el agente censal revela su clave privada. Se descifran los envios y se descartan los que no contengan un identificador autorizado. Los votos asi cifrados pasan ahora a ser tarea de los agentes de contaje.

Aqui se ponen manos a la obra y todo ya funciona como describe agora voting: se barajea y rebarajea y se produce un resultado donde no se puede asociar a cada votante el voto particular descifrado.

Independientemente, los  apoderados de los partidos han recibido los hash firmados que permiten comprobar que los votos emitidos por los votantes estaban en la urna.


 

En resumen, la historia es CASI como AgoraVoting la describe pero no parece que haya implementado la primera fase. ¿quizas hay alguna vulnerabilidad que se me esta escapando?

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.