¿Qué propiedades debería tener idealmente un sistema de votación en línea?
-
Seguro
- Cada votante puede votar solo una vez
- La autoridad de votación no puede agregar o eliminar votos sin ser atrapada
-
Privacidad / Anonimato
Otras personas (incluido el estado) no pueden averiguar por qué votó.
-
No debería poder demostrarle a otra persona cómo votó, para evitar votos comprados o votos bajo coacción
-
Los troyanos no deberían poder modificar los votos
-
El proceso debe ser comprensible / verificable por no expertos
¿Qué podemos lograr?
5) verificación no experta
Eso es bastante desesperado para un sistema en línea. El crypto requerido es simplemente demasiado complicado. Pero no considero que esto sea una propiedad esencial.
4) troyanos
No puedo pensar en una manera de mantener el sistema seguro en presencia de troyanos. Uno puede simplemente tratar de no tenerlos. Por ejemplo, utilizando un live-cd. No puedo pensar en una manera de mantener el sistema seguro en presencia de troyanos.
En un mundo ideal, al menos podemos lograr un sistema que ofrezca 1) seguridad y 2) anonimato, sin estar seguro de 3). Pero implementar un sistema que logre 1) y 2) ya es bastante molesto en la práctica.
Esquema de cómo construir un sistema de este tipo
Debe poder comunicarse de forma anónima con los servidores de votación utilizando TOR o algo similar.
Luego debe separar el derecho a votar una vez de la votación real. Las firmas ciegas lo permiten en principio. Pero requieren dos pasos:
- Convertir su autorización de voto no anónimo en una votación
- Enviar el voto al servidor de recolección de votos.
Debe tener cuidado para evitar un ataque de canal lateral que permita la correlación de estos dos pasos, por ejemplo, por tiempo o IP.
Al final, se publica una lista de todos los votos recibidos, lo que permite a cada votante verificar que su voto se haya contabilizado, y se publica una lista de los nombres de todos los votantes, para que los no votantes puedan verificar que nadie votó en su nombre. Y que no hay más votos que los votantes. Una cantidad significativa de votantes y no votantes debe verificar esto para que el sistema esté seguro.
Este esquema no ofrece 3), y no estoy seguro si es posible agregar esta propiedad.
Incluso la construcción de este sistema en la práctica parece bastante desafiante si quiere evitar todos los ataques de canal lateral al anonimato. Por ejemplo, uno necesita poner un retraso suficiente entre los pasos 1 y 2, y probablemente necesite un anonimizador de reenvío lento para evitar el análisis del tráfico.
Conclusión
Me parece que implementar un sistema de votación en línea que se acerque incluso a lo que ofrece un sistema convencional basado en papel no es prácticamente posible. Por lo tanto, recomiendo quedarse con el viejo papel para las elecciones importantes, pero podría ser posible utilizar los votos en línea con votos menos importantes.