Voto en la UNC con Belenios
La Universidad Nacional de Córdoba ha definido utilizar un mecanismo de voto remoto mediado por tecnología para el estamento de graduados.
Implementar un mecanismo de este tipo presenta una serie de desafíos. Podemos identificar ciertos requerimientos que debe satisfacer cualquier solución a este problema:
- El voto debe ser secreto. Nadie debe ser capaz de vincular un voto emitido con la identidad de un votante.
- El voto debe ser verificable. Cada votante debe poder verificar que su voto ha sido contado.
- Solo los votantes habilitados deben poder votar, y cada votante debe poder emitir solo un voto.
- No debe ser posible acceder a resultados parciales. Es decir, los resultados de la elección no deben estar disponibles para nadie hasta la realización del escrutinio.
- El proceso debe ser auditable. Deben publicarse registros que permitan a auditores controlar el desarrollo de la elección.
- El código debe ser abierto. Dadas las características de un proceso democrático, el sistema no puede depender de código que no sea público y auditable.
- Ninguna de las propiedades anteriores debe depender de la honestidad del servidor o sus administradores. Es decir, un administrador no debe poder vincular un voto con un votante, o acceder a datos parciales, o introducir votos válidos de manera indetectable.
Ningún mecanismo de voto remoto puede satisfacer estos requerimientos de manera universal. En particular, es muy difícil garantizar el secreto del voto si existe riesgo de coerción o compra de votos. Sin embargo, en el caso particular del voto de graduados podemos asumir que este riesgo es bajo.
Para esta elección, la UNC ha definido utilizar Belenios, un sistema desarrollado por investigadores del INRIA (Institut National de Recherche en Informatique et en Automatique), y distribuido bajo la licencia AGPL.
La confidencialidad del voto se logra cifrando los votos en la máquina del votante. Se utiliza criptografía homomórfica para obtener el resultado de la elección sin descifrar los votos individuales. Los votos se cifran con una clave pública, y para realizar el escrutinio se utiliza una clave privada, la cual se encuentra distribuida en un cierto número de fedatarios. Se usa un mecanismo de umbral en el cual se requiere cierta cantidad de fedatarios para realizar el escrutinio (por ejemplo, 3 de 5).
La verificabilidad del voto se logra porque:
- El votante recibe un código de seguimiento que permite verificar que su voto forma parte del recuento final.
- Los votos cifrados cuentan con pruebas de conocimiento cero (zero knowledge proofs) de que son votos válidos:
- El voto es, o bien un voto por una de las opciones, o bien un voto en blanco.
- Solo una de las opciones ha sido elegida, y esa opción es una opción válida.
- Cualquiera puede calcular el resultado cifrado de la elección a partir de los votos cifrados publicados.
- El descifrado de la elección por parte de los fedatarios cuenta con una prueba de conocimiento cero de que el descifrado es correcto.
Esta documentación no abarca todos los aspectos de Belenios, sino aquellos que se utilizan para implementar el sistema de elección aprobado en la Universidad Nacional de Córdoba. Puede encontrarse información más completa sobre Belenios en el sitio https://belenios.org
Los participantes en el proceso de votación pueden cumplir uno o más de los siguientes roles:
- Votante
- Administrador de la elección (Instrucciones)
- Autoridad de emisión de credenciales (Instrucciones)
- Fedatario (Instrucciones)
- Junta Electoral (Instrucciones)
- Auditor (Instrucciones)