Sistema de Votación

De Partido de Internet

Superior : Áreas de Trabajo

Contenido

Misión

La misión de este área de trabajo es crear una plataforma de voto que materialice la visión del partido, debiendo implementar una democracia líquida. Esta plataforma debe ofrecer las suficientes garantías de seguridad que permitan al PdI presentarse como iniciativa creíble en la que los ciudadanos puedan confiar y por tanto depositar su voto. Asimismo, la plataforma deberá ser accesible para el mayor número posible de ciudadanos.

Modelo operativo

Utilizamos las siguientes herramientas:

La coordinacion del trabajo se realiza en launchpad. Los textos y documentos se redactan y almacenan (o adjuntan) en esta wiki. Para comunicarnos utilizamos la lista de correo.

Se utilizan los blueprints de launchpad para definir, asignar y seguir el desarrollo de tareas, tanto de implementación, documentación o genéricas. La definición/especificación de tareas se hará en el blueprint mismo o, si es más extensa, en esta wiki, utilizando el campo "Specification URL" para enlazar. Las tareas de documentación se marcarán como Informational en el campo Implementation, utilizándose la wiki tanto para la definición/especificación como para su realización. Las tareas de documentación se marcan como completadas especificando Approved en el campo Definition. Las tareas de tipo genérico o de implementación se marcan como completadas especificando Implemented en el campo Implementation.

Las tareas se asignan de manera pasiva, cuando una persona se ofrezca voluntaria para realizar el trabajo. El voluntario puede contactar directamente con el responsable de la definicion del blueprint o en la lista de correo. Es necesario describir en el blueprint el perfil adecuado y los conocimientos necesarios para acometer el trabajo (preferiblemente en la pagina misma del blueprint)

Si existen varias líneas de avance (por ejemplo prototipo funcional) y es necesario se pueden crear series paralelas.

El código se almacena en las Branches bazaar de launchpad (asociadas al Series que corresponda). También usamos la gestión de incidencias de Launchpad.

Directorio

Aqui esta la lista de personas que colaboran en este area

Colabora!

Si quieres colaborar, visita esta pagina. Toda ayuda es bienvenida!

Estado actual

Esquema de voto seguro

Actualmente estamos investigando sobre sistemas de voto seguro para determinar el esquema a utilizar, asi como si existe algun prototipo de codigo abierto o algunas librerias que podamos usar como base. A continuacion un correo redactado recientemente que describe en mas detalle la situacion actual

El PdI pretende construir una aplicacion (codigo abierto) de voto seguro telematico utilizando internet como 
canal de comunicacion. El sistema debe soportar una democracia liquida 

http://en.wikipedia.org/wiki/Proxy_voting#Delegated_voting, 

por el momento con delegacion descrita en 

http://partidodeinternet.es/wiki/Multiple_Transitivo_Condicional_sobre_Categorias. 

Utilizaremos el DNIe para certificar la identidad del votante. El sistema debe ser seguro en el sentido 
expresado en la literatura academica al respecto (secure voting system), como por ejemplo en este pdf: 

http://partidodeinternet.es/w/images/5/56/An%2BIntroduction%2Bto%2BElectronic%2BVoting%2BSchemes.pdf  

o de manera mas extensa en la seccion 4 de este pdf 

http://vototelematico.diatel.upm.es/articulos/articulo_venezuela_revisado.pdf

Sabemos que lograr un sistema de voto seguro por internet es algo que muchos expertos 
consideran imposible. Para no ponerme a citar, cito solo lo que paso con el proyecto GNU Free, que se 
cerro en 2002 (explicado aqui http://www.gnu.org/software/free/). He hablado con Jason Kitcat (el 
responsable) recientemente para ver si su opinion ha cambiado desde entonces, y me dijo que sigue pensando 
que es muy dificil por no decir imposible, y ademas que aunque fuera posible hay otros motivos no tecnicos 
por los que las votaciones de una democracia no deberian intentar llevarse a un sistema informatico.

El estado actual de la investigacion es el siguiente:

El esquema de voto entre los tres mas citados (blind signature [Fujioka et al., 1992], mixnets [Chaum 1981], 
homomorphic [Cramer et al., 1997]) que contemplo es un elgamal homomorphic threshold cryptosystem, descrito 
inicialmente en http://www.win.tue.nl/~berry/papers/euro97.pdf [Cramer et al., 1997]. Este sistema cumple con 
los requisitos accuracy, democracy, verifiability y privacy*, al menos para votos directos (no delegados). 
La cuestion de incoercibility esta por ver, asi como tambien esta el reliability, que parece mas bien una 
cuestion separada (mas cercana a infraestructuras y resistencia a ataques DDOS que al esquema criptografico 
per se). En vez de relatar los avances otra vez aqui, os indico los enlaces donde se describio el progreso de 
esta investigacion. No hace falta leer los comentarios.

http://foro.partidodeinternet.es/viewtopic.php?f=3&t=37

http://foro.partidodeinternet.es/viewtopic.php?f=3&t=147

En este ultimo post se ve que hay un problema serio para soportar una democracia liquida masiva. El tamaño de 
los votos, ZKP's y el tiempo de cifrado serian prohibitivos para N-vectores tan grandes. Se propuso como solucion 
adhoc limitar el tamaño del vector a por ejemplo 500, seleccionando los restantes 499 componentes no votados de 
manera que se maximizara la entropia del voto. No tengo claro que este camino vaya a dar resultado, porque aunque 
se limitara el tamaño de los votos, el numer de recuentos (por componente) seria igualmente enorme, teniendo que 
participar las autoridades en cada uno de ellos (aportando sus shares)

Por ultimo, el responsable de Adder me ha dicho esta semana que estan trabajando en una nueva version con release 
prevista en uno o dos meses, aunque todavia estoy esperando a que me conteste sobre si el sistema sera receipt-free 
(para lograr coercion resistance) y si es compatible con un sistema de democracia liquida, que requiera votaciones 
uno de N con N muy grande.

En resumen, no esta claro que un esquema basado en cifrado homomorfico sea compatible con un sistema de democracia 
liquida masivo. Si no fuera viable volveriamos al punto de partida, pudiendose investigar sistemas basados en 
mixnets o blind signatures para seguir, pero estariamos otra vez bastante lejos de poder empezar un prototipo, y 
sin recursos de software como los que hemos encontrado.

otro mail

El prometido mail acerca del estado de investigacion en sistemas de voto seguro. Lo divido en las lineas de avance 
que veo en estos momentos. Por favor leed antes este post:


http://foro.partidodeinternet.es/viewtopic.php?f=3&t=147

1) Univote

Dudo que esta linea de investigacion nos lleve a ningun sitio. Creo que el requisito de delegacion 
masiva es incompatible con este prototipo. La idea de reducir los vectores como solucion no me 
convence, porque probablemente el descifrado del recuento seria igualmente inviable, al haber tantos 
descifrados (de umbral) como delegados posibles.

2) Adder http://cryptodrm.engr.uconn.edu/adder/

A pesar de que puede pasar lo mismo que con Univote, la buena noticia es que el investigador que 
esta detras de este proyecto me ha dicho que estan trabajando en una nueva version, que estara lista 
en 1-2 meses. Le he preguntado tambien sobre el asunto de delegacion masiva y estoy esperando respuesta. 
Aparte de las ventajas sobre Univote que expuse en el foro, esta nueva version sera mas facil de instalar, 
y puede incorporar un mecanismo contra la coaccion. En esta linea estamos a la espera de la nueva version.

3) Civitas http://www.cs.cornell.edu/projects/civitas/

Civitas es un proyecto que miré hace bastante tiempo y que abandone en favor de Univote y esquemas 
mas sencillos. Ahora creo vuelve a tener mucho sentido evaluarlo, ver como funciona, y ver si 
podriamos adaptarlo a nuestras necesidades (en concreto ver como casa con un sistema web que usa 
el DNIe y con delegacion masiva). De los prototipos que he visto Civitas es el mas avanzado, es 
bastante reciente, e incluye mecanismo contra la coaccion. Clarkson, el investigador, me respondido 
sobre el tema de la delegacion masiva:

"The good news is that, as I recall, the amount of work is linear in the number of candidates.  So 
Civitas should scale well.  However, I've never done experiments with that many candidates, so I can't 
give you specific performance numbers."

Por otro lado recuerdo que es un proyecto complejo que utiliza bastantes tecnicas criptograficas, 
asi que puede ser dificil entender como funciona.

4) Diatel http://vototelematico.diatel.upm.es/pag/presentacion.htm

Diatel es un grupo de la UPM (Universidad Politécnica de Madrid) que investiga sobre democracia 
electronica y sistemas de voto seguro. El otro dia me reuni con el catedratico Justo Carracedo 
http://vototelematico.diatel.upm.es/pag/justo.htm y Emilia Perez Belleboni 
http://vototelematico.diatel.upm.es/pag/emilia.htm que tuvieron la amabilidad de escucharme. 
Les hice unas cuantas consultas tecnicas que no tuvieron respuesta clara por el momento, por 
no conocer ellos en detalle la problematica nuestra de la delegacion relativa al esquema homomorfico. 
Tambien les pregunte sobre Votescript (http://vototelematico.diatel.upm.es/pag/articulos.htm), 
el sistema que han desarrollado ellos, y me dijeron que era dificilmente aplicable, es un sistema 
hecho para usar cabinas de voto. A parte de esto la reunion fue muy positiva. (Justo Carracedo me 
dijo que claro, si fueramos un grupo de ingenuos que se ponen a desarrollar un aplicacion 
web chorra y nos presentamos publicamente como partido, viene una autoridad en la materia como el, 
escribe un articulo en los medios y adios muy buenas)

Para resumir el camino a seguir: creo que debemos concentrar nuestros esfuerzos inmediates en 
la opcion 3) Civitas. Descargarlo, instalarlo, ponerlo a funcionar, entender como esta hecho, y 
ver si podriamos adaptarlo y usarlo. Es un trabajo dificl, pero es la opcion que veo mas viable.

Actualizacion 20/4

Os informo sobre el estado de la investigacion en esquemas de voto seguro. Los antecedentes 
los teneis en

http://foro.partidodeinternet.es/viewtopic.php?f=3&t=37
http://foro.partidodeinternet.es/viewtopic.php?f=3&t=147
http://partidodeinternet.es/wiki/Sistema_de_Votaci%C3%B3n#Esquema_de_voto_seguro

Como sabeis, la investigacion sobre estos esquemas habia avanzado razonablemente bien hasta 
toparse con el problema de la delegacion. Nuestro concepto de democracia liquida requiere una 
sistema de delegacion masivo. Este requisito es unico nuestro, no esta contemplado en ningun 
esquema de votacion (que yo conozca). Estos esquemas se centran en el problema (que ya es muy 
complejo de por si) de una votacion normal. En este punto estabamos, con dos lineas practicas 
de investigacion, Civitas y Adder.

1) Civitas

No he tenido tiempo suficiente para analizar Civitas en profundidad, dado que es un sistema 
complejo y ademas no pasa de ser un prototipo de investigacion, con lo que su aplicabilidad 
practica es mas dificil de evaluar. Por otro lado no hemos tenido suerte en encontrar 
colaboradores para echar una mano. A pesar de esto, mi conclusion tentativa es que Civitas no 
es el camino a seguir a corto plazo. Primero, porque al ser un prototipo complejo, y al no 
tener recursos, seria dificil sacar algo en claro. Segundo, porque su rendimiento es bajo, 
incluso sin requisitos de delegacion masiva. Tercero, porque utiliza un mixnet para anonimizar 
votos, cosa que intuyo va a ser incompatible con nuestro sistema de delegacion, ya que el cambio 
de delegado requiere una sustitucion del voto previo (esto me huele un poco mal en general, 
pero no lo tengo claro)

2) Adder

En enero hable con el responsable de este proyecto y me dijo que habria una version nueva 
en 1-2 meses. Se han cumplido hace poco tres meses de esto, y no ha aparecido dicha version. 
He intentado contactar de nuevo con el investigador, pero no me ha respondido (el condenao 
de el). No nos queda mas remedio que actuar como si dicha nueva version no fuera a existir 
(el proyecto ya estuvo suspendido antes). Si dentro de unos meses hay un release, pues habra 
que ver en que consiste. Pero, de inmediato, podemos probar la version actual. Mi intencion 
es determinar si esta version puede soportar una delegacion masiva, al menos con mi sugerencia 
de n-vectores reducidos. Para esto voy a proponer una tarea concreta en mi siguiente correo, 
solo para la lista pdi-aplicacion2. Si podeis participar y no estais en esa lista, suscribiros 
ahora pls.

Analisis funcional

Los aspectos funcionales ya analizados son:

  • Analisis de representatividad
  • Analisis de la funcion de representacion
  • Analisis de sistemas de delegacion
  • Algoritmo e implementacion del sistema de delegacion elegido. Hay una tarea pendiente que consiste en modificar el algoritmo para manejar mejor la categorizacion
  • Algoritmo (falta redactar) de recuento para una votacion en democracia liquida (recuento liquido)
  • Integracion (falta redactar) de la delegacion en esquema de voto seguro con papeleta 1 de N

Estos aspectos forman el nucleo funcional del sistema. Avanzar mas en el analisis funcional del sistema es problematico, porque este analsis empieza a depender del esquema de voto, que no conocemos todavia. La definicion del esquema de voto seguro tiene fuertes consecuencias en la arquitectura del sistema, desde los casos de uso que sean necesarios y posibles, hasta el modelo de datos, pasando por la arquitectura fisica, incluyendo el cliente de votacion. Por esto avanzar en el analisis funcional plantea problemas:

  • Primero, dicho analisis funcional puede tener que descartarse al no ser compatible con el esquema de voto
  • Segundo, trabajar en el analisis funcional y posibles prototipos puede distraer del problema de mayor riesgo, creando un falsa ilusion de avance.
  • Tercero, existe la posibilidad de que no se pueda resolver el problema del voto seguro y el proyecto fracase, con lo cual todo es trabajo habra sido inutil.

A pesar de esto, si contamos con recursos que no pueden dedicarse a la investigacion sobre esquemas de voto seguro seria buena idea aprovechar estos recursos en analisis funcional o prototipos no seguros (aunque es probable que parte de este esfuerzo luego se descarte). Para ello se pueden crear en Launchpad Series en paralelo, con sus Blueprints asociados. En cualquier caso, debemos ser conscientes de que el mayor riesgo, y por tanto la prioridad, es la parte de esquema de voto seguro.

Diseño de Interacción

El diseño final del sistema de voto y delegación dependerá de la resolución de los múltiples problemas que plantean los requisitos de seguridad. Mientras tanto, y en paralelo, queremos definir el sistema que idealmente presentaremos al usuario. Hemos trabajado en las necesidades de funcionalidad y usabilidad. El siguiente paso será hacer un prototipo mediante el que comprobar que nuestro diseño realmente funciona y responde a las altas exigencias con las que ha sido concebido.

Vamos a definir la interacción del sistema de voto describiendo las pantallas de usuario y el flujo entre ellas. Estas pantallas describen cómo se realiza la interacción del sistema con el usuario. Están inicialmente pensadas para ser una aplicación web, aunque nada impide que formen parte de una aplicación autónoma en cliente.


Glosario

Definiciones de algunos conceptos importantes:

  • invitado: usuario no identificado.
  • usuario: usuario identificado mediante nombre de usuario y contraseña
  • ciudadano: usuario con derecho a voto, identificado mediante DNIe o certificado digital
  • organización: usuario identificado que representa a una organización (partido político, ONG, asociación, grupo...)
  • portavoz: usuario que publica su voto (o intención de voto)
  • delegado: portavoz que un ciudadano ha elegido para que le represente.
  • propuesta: iniciativa o ley en discusión, sobre la que se va a votar.
  • ámbito: circunscripción política a la que pertenecen las propuestas actuales. Actualmente es el Congreso de los Diputados, pero el sistema vale también para un ayuntamiento o una organización. Para poder votar una determinada propuesta, el ciudadano debe tener derecho de voto en ese ámbito. Por ejemplo, para votar las leyes del Congreso, el usuario debe tener la ciudadanía española y ser mayor de edad, comprobado mediante DNIe o certificado digital.
  • taxonomía: en nuestro sistema, es una clasificación que agrupa las propuestas bajo una serie corta y predefinida de etiquetas como por ejemplo economía, industria, salud, defensa... Estas etiquetas estarán aplicadas por una o varias organizaciones competentes.
  • folksonomía: parecido a la anterior, pero la clasificación se basa en un número indefinido de etiquetas aplicadas por los usuarios.


Páginas del sistema

Cabecera: zona común a todas las páginas, situada en la parte superior.

Propuestas (home): contiene una lista de las propuestas de ley en el ámbito actual, junto con los votos del usuario para dichas propuestas. Es la página de inicio, donde el usuario puede conocer de un vistazo las próximas votaciones, su voto y acceder a las distintas propuestas.

detalle de propuesta: Amplía cada una de las propuestas. Muestra un "mapa de opinión" de diferentes portavoces y permite cambiar el voto. Incluye información adicional y acceso a otros servicios relacionados con la propuesta.

Delegados: Permite seleccionar y editar las opciones de delegados.

Perfil: Permite editar el perfil de usuario.

Página pública de portavoz: Muestra los votos públicos de un portavoz. Permite seleccionarlo como delegado.

Prototipo

Herramientas personales
Web