La seguridad absoluta en internet no existe, y esto es extensible a las votaciones en red, pero en DEMOKRATIAN se ha intentado reducir al máximo las posibilidades de uso fraudulento de la plataforma.
La aplicación DEMOKRATIAN está dirigida a censos, es decir, solo pueden votar las personas que están censadas. Los censos de votantes son precisamente uno de los puntos donde se pueden cometer fraudes en cualquier elección, ya sea presencial como online, por ello es preciso que los censos sean fiables, y que la autoridad que verifica los censos tenga los filtros y controles adecuados. 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 para votar introduciendo algún dato como el DNI cuyo numero es fácilmente falsificable. Esta acción que debe de evitarse si no conlleva algún sistema de control verificación de que el inscrito existe efectivamente. Este es uno de los puntos donde más fraude puede existir en las votaciones online
En DEMOKRATIAN el voto está absolutamente separado del votante, es decir en la base de datos donde se guardan los votos ambos datos están separados y no hay posibilidad de relacionar un dato con otro. Al contrario que otros sistemas de votación que mantienen vinculación de este dato y necesitan por tanto complicados sistemas de encriptación para evitar que se sepa la orientación del voto del votante fiando esta seguridad a “autoridades externas”. En ese sentido DEMOKRATIAN ha sido creado pensando en los modelos de votación tradicional en el que una vez metes tu voto en la urna no puede ser modificado ni puede conocerse que ha votado el votante (aunque en aras de la verificabilidad individual hay una posibilidad que no compromete la privacidad, que se explica más adelante).
DEMOKRATIAN ha primado la transparencia por encima de todo, cualquiera puede ver que los votos son los que son y pueden ser listado 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 pueden estar cambiando datos.
Para evitar que se puedan meter ilegalmente votos en la base de datos se han creado varios sistemas de seguridad, por un lado se guarda una segunda copia de los datos, estos si estan encriptados de forma unidireccional (hash) con el algoritmo sha 256, posteriormente mediante comparación de datos verifica si hay diferencias entre el original y la copia encriptada. Este tipo de encriptación, al contrario de la encriptación asimétrica, no permite desencriptación por lo que los datos son seguros.
Cuando se realiza el recuento de votos, la aplicación genera un listado de todos los votos de la base de datos, comprueba si existe copia en la tabla encriptada generando una marca de error si no existe e indica en la lista junto a cada voto, un código aleatorio único que se ha generado y entregado en el momento del voto a cada votante con lo que el votante puede verificar que su voto sigue allí inalterado, incluso cualquier votante podría realizar su propio recuento con la lista de todos los votos, .
Además se guarda una tercera copia (en fichero aparte y con acceso restringido) de los datos en el propio servidor de forma que si alguien tiene acceso a la base de datos quedaría una copia con un acceso más difícil.
Adicionalmente, se guarda en cada voto una referencia (hash) de una combinación secreta de los 5 últimos votos que permite una nueva comprobación de la integridad de los datos.
Por último, el sistema tiene otra capa de seguridad, muy aconsejable en aras de la transparencia, que puede habilitar el administrador de la votación, y es el envío de un correo anónimo con cada voto en el momento que se genera este, a interventores independientes (que lógicamente serán limitados en número), es decir, se envía un correo en el que no figura ninguna referencia del votante con los datos numéricos de su voto, sería una especie de “copia en papel” de cada voto. Para el uso de este sistema el buzón de correo de los interventores tiene que estar habilitado para que no rechace los correos como spam.
En todo el proceso de votación no se encripta el voto en el ordenador cliente ya que puede tener varios inconvenientes entre ellos ataques por “Man-in-the-middle”, por ello se recomienda el uso de servidores seguros SSH para que la información viaje codificada. Hay quien considera que los datos deben de ser encriptados en el cliente para evitar que un administrador malicioso pueda modificar el código y capturar los datos de los votos, esto es del todo innecesario y solo crea una falsa sensación de seguridad ya que si hay un administrador malicioso podría cambiar el código para que el cliente envíe los datos dobles, encriptados y sin encriptar. (En todo caso esto se resolvería con la posibilidad de poder auditar en todo momento el código que se está ejecutando en el servidor por programadores independientes)
Como se mencionó anteriormente, nn método de verificación de la integridad del voto por parte del votante (verificabilidad individual), es que al terminar el proceso de votación, el sistema entrega una clave alfanumérica única que el votante puede guardar para posteriormente, cuando termine la votación, y se listen todos los votos que han sido usados en el recuento pueda comprobar que se encuentra allí su voto. Otro método (puede habilitarse a elección del administrador) es que el votante, cuando está realizando el proceso del voto introduzca una clave que desee (el sistema se asegura de que ésta es única), que es encriptada de forma unidireccional (no puede ser desencriptada) y una vez terminado el proceso de votación, cuando los resultados sean públicos, podrá introducir su clave para comprobar que su voto se encuentra correctamente registrado.
Cualquier sistema informático es como norma inseguro, depende en gran medida de la integridad de administradores del sistema, sea cual sean las medidas implementadas para securizarlo. Otros sistemas de votación ”lo fían” todo a complicados sistemas de encriptación, pero incluso con sistemas de encriptación asimétrica o de doble llave existen las mismas vulnerabilidades a la inclusión de voto de forma ilegal ya que las claves públicas, las que encriptan el voto, están accesibles en todo momento en el servidor, o cadena de servidores si se usan sistemas tipo mixnets más pensados realmente para la ofuscación.