14 jul 2015

Estrategia de Voto en la Cadena de Bloques - ¿Confiarías en esto?

Análisis de procedimiento simple para la búsqueda de un sistema 
de toma de decisiones mediante el uso de tecnología de Criptomoneda
 
¿Confiarías en esto?
Luis Rodríguez
mekhane@vmail.me



Introducción. Descentralización y contabilidad.


El voto secreto electrónico es un asunto pendiente desde los comienzos de la era de las computadoras. Realizar un proceso sencillo y anónimo de recibir y contabilizar los votos es una promesa que hasta la fecha no ha sido posible realizar para la mayoría de la población de forma anónima.

El método que a continuación relato no soluciona el problema de la confianza dentro de la comunidad, por lo tanto no es adecuado para grupos grandes de personas que no estén involucrados y motivados en el proceso de toma de decisiones, haciéndolo mas adecuado para grupos pequeños y medianos con objetivos claros y dedicación, deseosos de participar en este uso experimental de una tecnología existente

Este documento consiste en un análisis subjetivo de como la tecnología de cadena de bloques relativa a las criptomonedas descentralizadas podría ser empleada para el propósito del recuento de voto electrónico, con el objetivo de disponer de un sistema de elecciones relativamente anónimo y seguro.

Las redes de Criptomoneda están diseñadas para leer y escribir en un gran archivo de transacciones llamado cadena de bloques, junto a un intenso trabajo de encriptación en el proceso de creación y consolidación.

Para acceder a una determinada cantidad de criptomoneda se crean llaves públicas y privadas. Estas correlación alfanumérica es única y es probable que no sea generada de nuevo en una concepción de tiempo humano. Las carteras permiten crear distintas direcciones. Si no estas familiarizado con la tecnología de Bitcoin y otras criptomonedas alternativas te ruego que dediques un tiempo a averiguar mas sobre este fascinante aspecto de nuestra emergente vida digital.

 
Carteras como prueba de autentificación en proceso de identificación.

Es posible usar carteras de una determinada criptomoneda para establecer un sistema de votación. La cartera responsable de contabilizar votos puede crear diferentes direcciones que representan las opciones a considerar en la decisión. Esta información (dirección = opción) es enviada a los votantes, cada uno con una cartera y suficientes fondos para participar. Votar consistirá pues en enviar una transacción predefinida a la dirección elegida durante un cierto periodo de tiempo, considerando una transacción como un voto.

Existen algunos requerimientos para la integridad de este método, siendo el mas destacable el hecho de que cada votante debe ser un miembro respetado de la comunidad, y que solo efectuará el número y cantidad de transacciones especificado para cada proceso consultivo. No seguir este procedimiento invalidaría automáticamente el proceso. Las carteras para envío y recepción de votos deben ser creadas nuevas para cada proceso de votación, y las opciones de voto ser visibles tan solo para los participantes durante el tiempo efectivo de votación.


Un voto, una transacción. Referendum simple Si/No.

En este escenario consideramos una cartera de administrador donde los votos = pagos serán registrados, y distintas carteras (una cartera = una persona / operador de confianza) con n participantes.

Cartera 1

→ genera dirección A (opción = Sí)

→ genera dirección B (opción = No)

→ genera dirección C (opción = Blanco)


  Cartera n

→ envío pago a opción  = dirección elegida.

Cada votante elegiría una de las opciones y generaría una transacción hacia una de las direcciones previamente creadas de la cartera representando las opciones disponibles. En este esquema básico una persona = un voto la opción mas votada correspondería con la dirección con la mayor cantidad de moneda según consulta en el registro público denominado "Blockchain". La implementación podría ser escalada para acomodar preguntas mas complejas y posibilidades de salida.



Implementación local. Operador de confianza.

Este método descrito es valido para realizar decisiones validadas de forma descentralizada y adistancia, pero el proceso de votación podría disponerse de manera local, con tan solo una segunda cartera que generaría las transacciiones equivalentes a los votos y operada por una tercera parte, denominado operador de confianza. Esto permitiría la participación a cualquier persona que no dispusiera de una cartera e criptomoneda y/o los conocimientos técnicos necesarios para operar.

En este escenario local una sola cartera permitiría no enlazar al usuario con la opción elegida, garantizando por lo tanto el voto anónimo. Sin embargo, enlazar los tiempos de entrada al recinto físico de votación a las marcas horarias en la cadena de bloques podría significar una falla en la implementación de este derecho.

Un interfaz superficial de usuario podría ser desarrollada para este fin, permitiendo a los votantes potenciales sin conocimiento en criptomoneda poder emplear esta técnica, pero debería ser considerado como un punto crítico en la seguridad del proceso.


Consideraciones generales de seguridad. Superficie de contacto entre hombre y máquina.

Dado que las llaves públicas son traceables de manera inherente en la cadena de bloques, la identidad del votante podría ser obtenida enlazando usuario y cartera, tal y como es por todos sabido. Las carteras para votación deben ser privadas si el proposito es aportar cierto anonimato. El acceso a una cartera de votación podría significar exponer las opciones previamente elegidas por el usuario aún y cuando se emitan distintas direcciones para los envíos al mostrar el historial de transacciones.

La información que enlaza las opciones de la consulta y las direcciones debería ser generada de nuevo para cada uno de los procesos consultivos, y sería considerado información sensible durante el periodo de votación y recuento, dado que cualquier no participante malicioso exterior podría inundar la consulta fácilmente invalidadndo este método.

Este y otros aspectos deben ser considerados si se desea desarrollar una interfaz de usuario hacía la posibilidad de este tipo de referendum, o incluso en el caso de escribir una simple aplicación para leer los resultados. La cantidad y el número de transacciones deben ser comprobados de acuerdo al número de participantes. Los participantes deben tomar parte activa en el proceso sin dejar hueco para votos ilegítimos.


¿Fuerte y anónimo? No te fíes de nadie.

Hemos visto como es relativamente sencillo establecer al menos tanta seguridad y anonimato en la votación como podemos conseguir hoy en día en las carteras de criptomonedas, probablemente el método de pago electrónico y garantía de valor mas seguro, de código abierto descentralizado, que junto al uso extendido de conexiones encriptadas de punto a punto sobre los nuevos horizontes de IPv6 están dándo forma al futuro cercano.

De alguna manera es posible separar la opción de la información individual en el proceso de recuento, por lo tanto asegurando el transporte y la publicación de los votos, pero la superficie de contacto siempre será susceptible de ser comprometida, tal y como sucede en las redes de criptomonedas y en muchos aspectos de la vida humana.

Si estas accediendo a una cartera en una terminal comprometida no hay anonimato posible en el proceso. Si se genera una marca de tiempo al identificar a los votantes en la entrada este registro podría ser enlazado a las marcas de tiempo en la cadena de bloques, y muchas otras consideraciones de seguridad de la vida real que solo se aprenden en una actividad de implementación en pruebas.


Consulta nueva, cartera nueva. Como "enladrillar" un programa o "El mito de Killswitch".

Una manera posible para prevenir la correlación de datos es implementar y generar una nueva cartera para cada consulta. Tras el proceso de votación las claves de acceso y los datos de la cartera serían destruidos, enterrados, quemados.

Si una cartera encargada del recuento de votos fuera comprometida todas las transacciones equivalentes a los votos podrían ser obtenidos, permitiendo la correlación de la opción elegida y usuario. La mejor manera -quizás única- de no filtrar información sensible es simplemente no poseerla. Es por tanto recomendable que la cartera creada para el recuento sea vaciada y destruida una vez finalizada la consulta.

El mito de  Killswitch se refiere a este juego que se autodestruía una vez el personaje moría, pensado para ser jugado solo una vez y nunca mas. De una manera similar las carteras serían terminadas una vez el periodo de votación hubiera finalizado, y la información de acceso destruida. De esta manera nadie guardaría ni claves de acceso ni el archivo de datos de las carteras usadas..


Seguridad interna débil. Confianza en la comunidad. "Todos para uno y uno para todos".

Este simple método de votación requiere la confianza entre los participantes. En la misma manera en la que confías que -al pagar por adelantado por un servicio o bien- el vendedor te enviará aquello acordado, los participantes de este proceso son requeridos como responsables de todo el proceso, disponiendo de "derechos de administrador" para sabotear la votación. Gran poder que viene con gran responsabilidad.

La información para participar en la encuesta debe ser propagada por los medios mas seguros posibles. ¿Porqué no usar TOR y algún tipo de servidor de email seguro? Cada votante es responsable también de mantener esa información a salvo durante el tiempo de la votación. Sería fácil inundar la consulta simplemente conociendo las direcciones relativas a las opciones.

Es por esto por lo que los votantes deben disponer de algún tipo de reputación, no por la opción elegida pero por participar de forma correcta en el proceso de toma de decisiones. En el ejemplo anterior un voto por persona es requerido. Si alguien no vota, ovota doble, toda la consulta queda invalidad y deslegitimizada.

Esto puede parecer un defecto a primera vista, pero bien puede ser una buena -y anónima- manera de protestar por estar en desacuerdo con la pregunta o las opciones representadas.


Derecho a no participar. La "máquina sin contraseñas" de la vieja escuela.


Cuando la confianza se rompe en una comunidad de usuarios no tiene mucho sentido seguir adelante.  No es un error, es una característica.Si el proceso de votación es atacado desde el exterior sí es posible defenderlo. Pero si es saboteado desde el interior es peligroso pensar que los participantes están desarrollando un proceso de voto libre. Así que si tan solo uno de los votantes no quiere permitir unas elecciones limpias -en caso de discordancia entre transacciones y votos recibidos-, todo el proceso debe ser reconsiderado de forma radical.



Demo 1: Pregunta simple: Sí o No.

No estoy al tanto del estado de la técnica respecto a las plataformas de voto anónimo disponibles en este momento. Siempre fue asunto de mi interés, pero no esperaba encontrar una posible solución empleando tecnología diseñada para la contabilidad de monedas como de votos. No puedo leer código, así que tengo que confiar en que su naturaleza abierta lo hará interesante de leer para otros, y confiar en que otros hagan consideraciones públicas respecto a lo que esta corriendo en mi máquina. Y la ignorancia es desconfiada. No confío en el código por defecto, así que encontrar una manera de votar sin necesidad de una aplicación específica me hizo aún mas feliz.


Así que tenemos una serie de requerimientos para crear fácilmente un sistema de recuento de votos anónimo y democrático. En primer lugar hay que decidir que criptomoneda vamos a emplear. Yo decidí usar Feathercoin (moneda pluma) porque es relativamente barata en estos días, he podido minar una poca de ella con mi torre y personalmente siento "simpatía" por esta criptomoneda. Cualquier otra en la que confíes servirá. Lo siguiente es descargar una cartera, Feathercoin-qt para Windows en mi caso, y descargar la cadena de bloques completa, cosa que tardará un rato si lo haces por primera vez.


Una vez tenemos u¡nuestra cartera operativa necesitamos crear un nuevo juego de direcciones para recibir moneda, una por cada opción contemplada en el proceso consultivo. Cada dirección y código qr representará una de las opciones posibles, y se pide 1 FTC para apoyar la opción elegida. Esto, junto a un periodo de votación útil preestablecido, nos permite tener todo preparado para la consulta. Ahora es el turno de los votantes.


Aquí encontramos toda la información necesaria para que los votantes cumplan con sus obligaciones democráticas. Un archivo *.zip es enviado con instrucciones de la manera mas segurea posible. Vota rápido, ¡y cuelga antes de que la máquina identifique una consulta en marcha!



Aquí encuentro dos opciones interesantes. La primera permite el voto desde el dispositivo del votante tal y como se describe a continuación: El votante recibe la información que contiene las opciones y direcciones de pago, hace su elección y procede al pago en la opción seleccionada. La segunda opción es disponer de un operador de confianza para una cartera que permita una consulta local con suficiente privacidad como para permitir a los usuarios escanear un código qr empleando todos la misma terminal o dispositivo. En este caso la autentificación de los usuarios en forma convencional sería requerida, así como el derecho a votar en privacidad respetado.

La cartera Feathercoin-qt parece una buena opción para el recuento de votos. El panel de administración tan simple como lo ves.

Resultados públicos mostrados en tres ventanas de navegador. En directo y listos para ser digeridos.

Una cartera de Android enviando los fondos que representan el voto.


Demo 2: Carteras amnésicas para votar: Bitcoin sobre Tails.


Live cd de TAILS con sabor a Windows corriendo una en un antiguo portátil, con la cartera de Electrum preinstalada.

Este proceso permite la creación de una cartera desechable para recibir fondos de votación o para emitir votos participando en el evento. Tras el envío del voto a la dirección = opción elegida, la cartera es destruida y el usuario no retiene información de acceso. Para este fin podemos emplear una distribución amnésica por diseño llamada Tails que dispone de una cartera de Bitcoin ya instalada.

Pago enviado a la opción deseada. Solo para la vista del votante.

Envío fondos a la cartera, junto a la información necesaria para emitir el voto. En este ejemplo particular y debido a los costes de comisión altos para cantidades bajas el proceso sera realizado por una sola persona y habrá solo una opción. ¡Libertad de elección garantizada!


Muestra de tres opciones disponibles mediante códigos qr para ser escaneados. Urna criptográfica preparada.

Es posible usar este método tanto para hacer recuento de los votos como para su emisión. Las carteras deben ser destruidas una vez finalizado el periodo de votación. La idea es dar fondos a la cartera, realizar las votaciones, vaciar la cartera anfitrión de votos (no sería recomendable enladrillar valor junto a la información por un despiste) recuperando los fondos menos los gastos de comisiones y tras esto destruir la cartera.


Alta comisión para cantidades bajas. Nada bueno.


Al realizar transacciones se cobra comisión.En este caso particular 0.01 FTC de comisión fueron cargados en las tres transacciones de 1 FTC cada una. Esto es barato. Realicé dos transacciones que me sustrajeron 0.0008 BTC y 0.002 desde una cartera qt y otra de 0.0005 desde Android. Esto es caro. Si vas a intentar esto en casa te recomiendo emplear cualquier criptomoneda alternativa de tu confianza. También necesitas hardware y software, y algún que otro ser humano para hacerlo funcionar.



Conclusiones: Sí y/o No.


Tal y como se menciona con anterioridad nada de esto se encarga del problema de falta de confianza dentro de la comunidad votante. Pero considerando exclusivamente su aspecto anonimizador, parece sencillo y relativamente seguro implementar un sistema económico de voto que permitiría la toma de decisiones instantánea y vinculante de cualquier comunidad con voluntad de experimentar la forma mas parecida a una democracia que puedo pensar. Sin embargo, yo personalmente no tengo certeza en la seguridad del uso seguro de esta tecnología para votar. Yo no la emplearía salvo que ya estuviera usando otro sistema que no considerará del todo seguro y anónimo.


¿Cuál era la pregunta?

Existe un asunto radical a considerar: ¿Cuál es la pregunta? El acceso a la información y el conocimiento específico sobre cualquier materia es necesario, pero también lo es mantener en mente el aspecto global y la visión universal. Si no disponemos de toda la información, de todos los puntos de vista, o al menos de la mayoría el proceso conducirá a la toma de decisiones erróneas.

En mi opinión es posible hacer algo de experimentación en grupos pequeños y medianos, con participantes involucrados en el proceso de formular las preguntas y los términos de las mismas, capaces de asumir responsabilidad con las decisiones y la participación en la implementación, todo ello con un cierto grado de privacidad, al menos durante un rato. Todas las indicaciones y procedimientos aquí expuestos son tan solo para uso experimental. Si puedes usar métodos convencionales de voto secreto, incluso mejor. Úsalo bajo tu propia responsabilidad.


Este trabajo es publicado bajo una licencia Creative Commons Reconocimiento - No Comercial - Compartir Igual - 4.0 Internacional.


Gran Canaria, Julio 2015.

Download pdf file in English here

No hay comentarios:

Publicar un comentario