Info
Content

Descripción y resumen general

Preámbulo

Este proyecto nace como un intento de acercar la verdadera democracia al pueblo mediante la otorgación de un sistema que le permita al mismo elegir directamente qué quiere y qué no quiere evitando el uso de reprensentantes, potencialmente corruptos o sobornados.

La idea es crear un sistema que le permita a cualquier persona de un grupo de iguales crear y votar sobre asuntos que afecten al mismo de forma que todos tengan el mismo valor de voto, todos tengan la misma posibilidad y facilidad al votar, todos tengan seguridad y anonimato durante el proceso de votación y todos tengan garantizado que el resultado será legítimo.

Crear un sistema de tales características es poco menos que ambicioso, pero es definitivamente posible y será lo que se tratará a lo largo de este libro.

Descripción de la propuesta actual

Se ha considerado el siguiente diseño como un intento de solución al problema:

Sistema de Voto

Existe un enlace en el apartado de adjuntos para descargar el XML de este diagrama y poder editarlo en draw.io

El diseño actual tiene un funcionamiento basado en el patrón MVC ejecutandose la capa modelo y servicio en las "Aplicación de Servicio X" y el cliente en la "Aplicación de Usuario".

El funcionamiento de cada parte en particular se detallará en su correspondiente página, pero el funcionamiento general es el siguiente:

  • La aplicación usuario (el cliente) se encargará de tan solo visualizar los datos del sistema y de las operaciones criptográficas a la hora de autenticar y firmar paquetes de datos. Esta aplicación puede ser ejecutada en dispositivos móviles o navegadores, por ejemplo.
  • Una vez la petición atraviesa Internet, los proxys inversos se encargan de tratar la conexión segura (HTTPS).
  • Las peticiones pueden ser públicas (sin autenticar) o privadas (autenticadas). Las primeras serán redirigidas por el clúster de reverse proxys a la Aplicación de Servicio pública y las segundas a la Aplicación de Autenticación.
  • En caso de ser una petición a la Aplicación de Servicio pública, esta responderá con el dato solicitado de la Base de datos pública (acceso de sólo lectura). No realiza ninguna tarea de autenticación puesto que estos datos puede solicitarlos cualquiera como por ejemplo, obtener información sobre una encuesta existente.
  • En caso de ser una petición a la Aplicación de autenticación, esta se encargará de autenticar y verificar la integridad del mensaje. Para ello, se comprueba contra el almacén de certificados. También se realizan tareas adicionales como por ejemplo, funcionalidades anti-replay.
  • El almacén de certificados no es más que un lugar donde guardar los certificados públicos de los usuarios (debe incluir DNI).
  • La aplicació de Servicio Privada se encarga de tratar las peticiones ya autenticadas y verificadas que atravesaron la Aplicación de autenticación. Las tareas pueden ser tanto contra la Base de datos pública como la Base de datos privada, tanto escribiendo como leyendo de las mismas.
  • La base de datos está divida en dos secciones, una pública, accesible por la Aplicación de servicio pública en modo sólo lectura y por la Aplicación de servicio privada en modo lectura-escritura, y otra privada accesible sólo por la Aplicación de servicio privada en modo lectura-escritura. La parte pública contiene datos que podría leer cualquiera y la parte privada contiene datos confidenciales. En un intento por mitigar el daño de una potencial publicación de la parte privada, esta zona debe estar cifrada o protegida de alguna manera.
Autenticación y seguridad de la información

Aunque esta información se tratará con más detalle en la página de Aplicación de autenticación y Aplicación de usuario, creo necesario tratar aquí de una parte esencial de la seguridad.

Para garantizar el no repudio y la seguridad, y debido a la naturaleza de este sistema el mejor sistema de autenticación es mediante un certificado personal otorgado por la Fábrica Nacional de Moneda y Timbre.

El registro es instantáneo y gratuito requiriendo tan solo subir la parte pública del certificado al sistema, donde el mismo detectará el DNI y creará el perfil privado correspondiente o actualizará el actual en caso de revocación del certificado o cambio voluntario por parte el usuario.

Esto anterior implica una cosa muy importante: Cada persona física debe tener un número de DNI único. Si conoces a alguien que tenga un número de DNI compartido con otra persona, indícale que debe contactar de alguna forma con la administración pública para solicitar un número único. Fallar en este requisito implicaría la posibilidad de impersonación para los poseedores de dicho número puesto que ambos compartirían cuenta en el sistema.

Moderación

Aunque los subsistemas de autenticación, registro, voto, etc, son automáticos y no requieren moderación, los sistemas de, por ejemplo, creación de nuevas votaciones y población de las mismas con datos, sí lo requieren para evitar la introducción de datos falsos o con propósitos de hacer daño a las personas.

Para ello, debe existir un conjunto de moderadores voluntarios que analizen las diferentes votaciones en busca de maldad. Por supuesto, estos moderadores no tendrán poder absoluto y deberán ser múltiples los reportes de varios moderadores y usuarios distintos para eliminar una votación o una sección de la misma.

Los moderadores deben actuar con la objetividad como principio, reportando sólo cuestiones absurdas o malvadas independientemente de su idología particular. Fallar en lo anterior reiteradas veces puede poner fin a la capacidad de moderar de dicho usuario.

Back to top