Sistema de Votación
De Partido de Internet
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:
- Launchpad
- Esta wiki
- La lista pdi-aplicacion2
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.

