La seguridad absoluta en internet no existe, y esto es extensible a las votaciones en red. En Demokratian hemos tratado de reducir al máximo las posibilidades de uso fraudulento sin caer en la trampa de los sistemas criptográficos opacos.

Censos fiables: el fraude empieza antes del voto

La aplicación está dirigida a censos: solo pueden votar las personas que están censadas. Los censos son precisamente uno de los puntos donde se pueden cometer fraudes en cualquier elección, ya sea presencial u online.

Una tentación habitual en las votaciones online es, pensando en facilitar el voto al mayor número de personas, abrir un formulario para que todo el mundo pueda apuntarse introduciendo algún dato como el DNI cuyo número es fácilmente falsificable. Esta acción debe evitarse si no conlleva un sistema de verificación de que el inscrito existe efectivamente.

En Demokratian: el administrador importa el censo desde un CSV verificado. No hay autoinscripción abierta sin validación. La autoridad responsable del censo aplica los filtros y controles que considere oportunos antes de la importación.

Voto separado del votante, sin necesidad de criptografía mágica

En Demokratian el voto está absolutamente separado del votante. En la base de datos, ambos datos están en tablas distintas sin posibilidad de relacionar uno con otro. Al contrario que otros sistemas que mantienen la vinculación y necesitan complicados sistemas de encriptación para evitar que se conozca el sentido del voto, fiando esa seguridad a "autoridades externas".

El sistema se inspira en los modelos de votación tradicional: una vez metes tu voto en la urna, no puede ser modificado ni puede conocerse qué ha votado el votante.

Transparencia por encima de todo

Cualquiera puede ver que los votos son los que son. Pueden listarse directamente desde la base de datos sin necesidad de complicados programas o sistemas de desencriptación que generan al usuario con bajos conocimientos informáticos mucha inseguridad —al no estar claro que los algoritmos no estén cambiando datos.

"La opacidad criptográfica no es seguridad. Es fe en quien escribió el algoritmo."

Árbol de sellos: cualquier alteración deja huella

Para evitar que se puedan introducir ilegalmente votos en la base de datos hemos creado varios sistemas de seguridad:

  • Una segunda copia encriptada de forma unidireccional con SHA-256. Comparando datos, el sistema detecta diferencias entre el original y la copia.
  • Una tercera copia en fichero aparte con acceso restringido en el propio servidor.
  • Un árbol que combina las huellas de todas las papeletas en un único valor raíz, lo que permite una comprobación completa de integridad al cierre: si se toca un solo voto, la raíz deja de coincidir.

Esta estructura es un árbol de Merkle (árbol de hash) —la misma pieza que una blockchain usa dentro de cada bloque— pero optimizada para RDBMS relacional. Ante votos simultáneos, la integridad la garantiza una transacción atómica con un índice único haciendo de cerrojo: dos peticiones a la vez del mismo votante chocan en la clave duplicada y la segunda nunca llega a la urna.

Capa adicional: interventores independientes

El sistema tiene otra capa de seguridad, muy aconsejable en aras de la transparencia, que el administrador puede habilitar: el envío a interventores independientes de las papeletas emitidas, sin ninguna referencia al votante, en lotes de varias papeletas ordenadas por su identificador. Una especie de "copia en papel" en manos de terceros. Van agrupadas y sin la hora de cada papeleta a propósito: un aviso por voto revelaría el orden de llegada, y ese orden, cruzado con la hora en que participó cada persona, deshace el secreto del voto.

Verificabilidad individual sin comprometer el secreto

Al terminar el proceso de votación, el sistema entrega una clave alfanumérica única que el votante puede guardar. Cuando termine la votación y se listen todos los votos del recuento, podrá comprobar que su voto sigue allí inalterado.

Y hay un segundo mecanismo que se suma al anterior: si el administrador activa la comprobación de voto en esa votación, el votante elige además una clave propia —una que pueda recordar— con la que recuperar ese código si lo pierde. Se guarda cifrada en un solo sentido, así que nadie puede leerla ni buscar votos por ella.

Conclusión

Cualquier sistema informático es, como norma, inseguro. Depende en gran medida de la integridad de los administradores, sean cuales sean las medidas implementadas. Otros sistemas "lo fían" todo a complicados sistemas de encriptación, pero incluso con encriptación asimétrica existen las mismas vulnerabilidades a la inclusión de votos ilegales: las claves públicas que encriptan el voto están accesibles en todo momento en el servidor.

La diferencia: en Demokratian la auditoría es transparente y comprobable por cualquiera, no por una autoridad externa que tienes que creerte.