Votaciones independientes de autoridad
Introducción
Aquí se presenta una propuesta para asegurar la autenticidad de los votos en una encuestas organizada por un grupo independiente de la autoridad, el cual no cuenta con un padrón completo de votantes elegibles. Este sistema permite certificar la adscripción de los votantes sin la necesidad de revelar o intercambiar información confidencial. La propuesta fue desarrollada para la Facultad de Ciencias, UNAM y por eso tiene ejemplos de un contexto académico.
La propuesta se basa en la implementación de un servicio web por parte de la autoridad para generar certificados firmados digitalmente que avalen que un usuario es un miembro de la comunidad.
Cuando el usuario emite su voto ante los organizadores de la elección presenta su certificado para comprobar su adscripción. El certificado además contiene información acerca de los roles que el votante desempeña en la comunidad sin revelar su identidad para que los organizadores de encuestas puedan determinar su elegibilidad para votar de acuerdo al criterio que determinen.
¿Qué es una firma digital?
Un sistema de firma digital o firma critpográfica requiere de dos llaves: una privada y una pública. La privada se utiliza para firmar documentos y la pública se usa para verificar que la firma es válida y que el documento no ha sido modificado desde que fue firmado.
Dado que las firmas digitales no pueden ser falsificadas de manera práctica este sistema se puede utilizar para garantizar la autenticidad de un documento siempre que la llave privada se mantenga secreta.
Funcionamiento del sistema
- La autoridad genera una llave secreta que usará para firmar los certificados y publica la parte pública de esta llave para que los miembros de la comunidad puedan verificar la autenticidad de la firma.
- Un organizador de votaciones elige un
id_votación
que se utilizará para identificar la votación de manera única. Esto puede ser un número o una cadena de texto. - Para votar, cada votante se identifica con el sistema web de la autoriadad y solicita un token para votar introduciendo el
id_votación
. - El sistema genera un token que incluye la siguiente información:
id_certificado=SHA256(id_usuario+id_encuesta)
elSHA256
sirve para anonimizar el certificado.- El
id_votación
proporcionado por el usuario. - El rol o roles del usuario (estudiante, profesor, ayudante) y último semestre de actividad en cada rol.
- El sistema de la autoridad genera el token y lo presenta al usuario.
- El usuario emite su voto en el sistema designado por los organizadores de la elección presentando al mismo tiempo que presenta el token.
- Los organizadores de la elección usan el certificado firmado para verificar que el votante cumpla los requisitos para votar en esta votación de acuerdo a un criterio que fijan de elegibilidad (i.e. sólo estudiantes votan, todos votan, sólo profesores y ayudantes, sólo activos el último año, etc.).
- Al final de la votación los organizadores publican el total de votos y la lista de certificados que fueron contados como válidos y los que no, con el propósito de que la comunidad pueda auditar que los certificados sean válidos. Esta lista de certificados sirve como comprobante de que se recabaron los votos que se presentan en el resultado final.
Observaciones
- El certificado generado por la autoridad no necesita contener datos que permitan conocer la identidad del votante.
- Los organizadores de la votación pueden optar por dos niveles de transparencia:
- Transparencia completa: publicar la lista de certificados y el voto de cada uno. Esto le permite a los miembros de la comunidad verificar que su voto fue contado correctamente. Esta opción permitiría a la autoridad, en teoría, saber cómo votó cada quién si reconstruyera los certificados. En este caso se mantiene la anonimidad de votos ante la comunidad.
- Sólo publicar certificados: esto mantiene la anonimidad de la votación pero limita su auditabilidad por la comunidad.
- Con este sistema se pueden hacer encuestas anónimas con identidad verificada.
- Cualquiera que cuente con la llave pública de la autoridad puede verificar los certificados publicados y auditar la elección por su cuenta.
- El campo
id_certificado
es único para cada votante en cada encuesta y se puede utilizar para asegurar que ningún usuario votó más de una vez.