Lista de proyectos a realizar 14-15

De Wiki de EGC
Saltar a: navegación, buscar

Esquema conceptual del sistema Agora Voting

Comic explicativo del proceso de cifrado y de anonimización de AgoraVoting

Mapa conceptual de Agora Voting

En éste enlace y en éste otro se pueden ver descripciones más detalladas del procedimiento usado por Agora Voting para el proceso de votación por Internet. Se sugiere leerlo detenidamente por parte de los equipos de trabajo.

1. Sistema de autenticación

Un sistema para autenticar usuarios y controlar quién puede votar y quién ya ha votado para evitar multiples votos de la misma persona. Este sistema tiene que ofrecer una api clara y sencilla para que otras partes del sistema puedan usarlo. Un sistema básico podría ser uno basado en un censo cerrado usando como identificador el correo electrónico. El sistema de autenticación tiene que ofrecer métodos para:

   * saber si un usuario determinado ha votado ya
   * realizar una prueba de verificación de identidad
   * marcar un usuario como que ya ha votado


2. Cabina de votación

Una interfaz para mostrar las opciones de la votación donde el votante pueda realizar la votación. El voto tiene que cifrarse en cliente, nunca debe llegar al servidor el voto en claro. A la cabina sólo podrán llegar usuarios autenticados que aún no hayan votado. El voto se enviará cifrado al almacenamiento de votos.


3. Almacenamiento de votos

Una base de datos de votos cifrados. Se almacenarán los votos sin información alguna del votante. Antes de añadir un nuevo voto a la base de datos el almacenamiento tiene que verificar que el voto viene de un votante válido, por lo que deberá consultar al sistema de autenticación. Una vez almacenado el voto debe notificar al sistema de autenticación que el usuario ya ha votado.


4. Recuento

Realizará el recuento de una votación determinada. Para realizar el recuento tendrá que pedir los votos al almacenamiento de votos y deberá lanzar la tarea de recuento sincronizando las diferentes autoridades.


5. Verificación

Sistema de verificación compuesto básicamente por dos pruebas o verificaciones:

   * Verificación de que un voto está en en la votación y no ha sido
     alterado
   * Verificación de que el recuento global no ha sido alterado

El software deberá ser una aplicación descargable y ejecutable en local para que cualquier persona pueda realizar cualquiera de las pruebas de verificación. Además se puede ofrecer una interfaz web dar el servicio de verificación de una votación en concreto de manera sencilla.


6. Modificación de resultados

Sistema para interpretar los resultados de una votación y ofrecer un ordenamiento de opciones concreto según diferentes reglas variables. La mayoría de las votaciones no son directas, sino que hay una serie de reglas que ordenan los resultados. Esto puede servir por ejemplo para formar listas con criterios de paridad, criterios de localidad, quitar de los resultados candidatos retirados, etc. Este sistema además de alterar el resultado final debe ofrecer una serie de estadísticas y desviaciones.


7. Frontend para creación/administración de votaciones

Interfaz para la creación y administración de votaciones. Debe ofrecer un formulario con lo necesario para crear una votación y debe gestionar las votaciones en una base de datos o un almacenamiento similar. Se puede ofrecer como servicio o API la información de las votaciones para que los diferentes sistemas tengan acceso.


8. Frontend de votación completa

Interfaz completa de votación. Este sistema debe enlazar todas las partes implicadas en el flujo de votación y mostrar una interfaz única para el proceso:

   * Pantalla inicial de votación
   * Formulario de autenticación
   * Redirigir a la cabina de votación
   * Ofrecer una interfaz de verificación


9. Frontend para creación/administración de censos

Se trata de una interfaz del sistema de autenticación, donde un administrador puede definir diferentes tipos de censos y estos censos serán usados por el sistema de autenticación para una votación determinada.


10. Frontend de resultados y estadísticas:

Interfaz para mostrar el proceso de una votación en tiempo real y los resultados finales de una forma gráfica y amigable. Debe ofrecer conexión con diferentes redes sociales para motivar la discusión y difusión continua de una votación en concreto. También puede tratar los datos y ofrecer gráficas y estadísticas usando la información recopilada por los diferentes sistemas implicados, siempre teniendo en cuenta la importancia de la privacidad.