Proyecto

This post is also available in: Inglés

 

¿Qué es el Proyecto Ágora?

En Ágora buscamos construir un sistema de votación seguro que permita el voto a través de internet en los ordenadores de los usuarios y que además admita la delegación del voto en representantes.

Pretendemos que se utilice dicho sistema para que los representantes elegidos en cualquiera de las cámaras españolas pueda recoger la voluntad de los ciudadanos y emitir su voto en función de los votos recogidos por internet.

Delegación de voto

Existen diferentes formas de delegar un voto: desde la delegación simple en un representante hasta la delegación múltiple transitiva

Nuestro objetivo final es conseguir una aplicación que permita dar soporte a la democracia líquida, pero por ahora nos estamos centrando en la delegación básica: esto es, se delega el voto a un representante para todas las votaciones siempre y cuando no votemos nosotros directamente.

Una vez tengamos una vesión operativa que implemente este tipo de delegación, abordaremos tipos de mayor complejidad.

Requisitos de seguridad

Un sistema de voto seguro debe cumplir con una serie de requisitos formales: no basta con la seguridad típica de una aplicación donde lo que se pretende es que los datos estén bien custodiados por un administrador. En un sistema de voto, ni siquiera se confía en los administradores, ya que podrían manipular la votación con resultados muy graves sin que fuera posible probarlo.

Mediante el desarrollo del  sistema Ágora pretendemos cubrir un subconjunto de los requisitos enumerados en [VOTESCRIPT], donde resumen los utilizados en la literatura académica sobre sistemas de votación:

  • Autenticidad o Autenticación: sólo los votantes autorizados pueden votar.
  • Acotabilidad o Singularidad (Uniqueness): el sistema tan solo autentica la votación dentro de las reglas establecidas. Es decir, por regla general, cada votante sólo puede votar una vez y en las circunscripciones donde sea pertinente
  • Anonimato: no se puede relacionar un voto con el votante que lo ha emitido. Dentro del anonimato pueden distinguirse dos aspectos.
    • Mecanismos que eviten que los agentes telemáticos presentes en el sistema puedan coludir.
    • Posible extensión del anonimato al ejercicio de la abstención. Este último apartado no se tendrá en cuenta para el desarrollo de Ágora
  • Imposibilidad de coacción: ningún votante debe ser capaz de demostrar ante terceros qué voto ha emitido.
  • Verificabilidad individual: cada votante deberá poder asegurarse de que su voto ha sido considerado adecuadamente, de forma que pueda obtener una prueba palpable de este hecho. Podemos distinguir dos tipos de verificabilidad individual:
    • Verificabilidad individual del contenido del voto emitido.
    • Verificabilidad individual de que el voto ha sido tenido en cuenta adecuadamente.
  • Verificabilidad Global. Otra forma mediante la cual el votante puede asegurarse de que su voto ha sido considerado adecuadamente es que dentro del propio sistema existan mecanismos que permitan a los ciudadanos autorizados comprobar la validez del recuento final.
  • Fiabilidad: El sistema debe de garantizar que no se produce ninguna alteración de los resultados, ya sea mediante ataques intencionados, fallos en el sistema o incluso si las Autoridades del sistema se ponen de acuerdo para coludir.
  • Certificabilidad o Auditabilidad: durante el proceso de votación deberían registrarse las pruebas de voto y elementos de auditoría que permitieran a las personas autorizadas disponer de pruebas para comprobar que todo el proceso de votación es correcto (funcionamiento del sistema, programas, equipos, protocolos y demás elementos), todo ello sin comprometer la integridad de la elección o la privacidad y anonimato de los votantes.

En resumen, lo que buscamos es construir un sistema donde ni siquiera las personas u organizaciones que operan el sistema puedan cometer un fraude.

Estado actual

En estos momentos estamos decidiendo si basaremos el desarrollo del esquema de seguridad en sistemas homomórficos o en mixnets. Es un trabajo fundamentalmente teórico, con pocos resultados “visibles”.

En cuanto al desarrollo del interface, estámos comenzando con la elaboración de requisitos y la elección del lenguaje y la arquitectura del sistema.

Como ves, el proyecto está en una etapa temprana donde todavía no tenemos demasiado que ofrecer, aunque si necesitas un sistema de este tipo quizá quieras colaborar con nosotros.  También podrás consultar los próximos avances que se vayan produciendo en la categoría “Hitos” de este blog. Puedes encontrar el código fuente aquí.

Hoja de ruta

Hemos dividido el desarrollo de Ágora en dos vertientes: el Front-End y los esquemas de seguridad. Esta división se debe a que las habilidades, técnicas y dificultades necesarias en el desarrollo de cada una de estas partes son diferentes:

Los aspectos de seguridad requieren conocimientos específicos que abarcan la criptología, la seguridad de sistemas de información y el manejo de firmas electrónicas, mientras que para el desarrollo funcional necesitaremos prototipado rápido, tener en cuenta aspectos de usabilidad, conocimientos del sistema político, etc.

En última instancia, el esquema de seguridad deberá integrarse en el esquema funcional realizando los cambios que sean necesarios, y que pueden ser importantes.

Por otro lado, desarrollar una aplicación operativa, aunque con carencias de seguridad, puede ser útil en determinados casos: para sustituir votaciones en foros, en juntas de accionistas, para la toma de decisiones en asociaciones, etc.

La hoja de ruta paracada uno de estas vertientes es la siguiente:

Desarollo del Front-End

  • Desarrollo de un sistema base que admita delegación
  • Pruebas alfa con un grupo reducido
  • Mejora de la usabilidad y rendimiento de la aplicación
  • Pruebas de comportamiento con un grupo real
  • Integración de proveedores externos de ordenación e información de propuestas y delegados
  • Pruebas de comportamiento del sistema en un ayuntamiento, comunidad autónoma, etc.

Desarrollo del esquema de  seguridad

  • Realizar un prototipo basico que sirva de prueba de concepto de la tecnología, con un número limitado de opciones donde delegar.
  • Ańadir al prototipo mecanismos de firmado y verificacion de votos utilizando DNI-e
  • Preparar el sistema para que los usuarios puedan delegar su voto en otros usuarios sin límite de opciones
  • Lograr escalabilidad y disponibilidad