Digital Voter ID

Arquitectura de Digital Voter ID

1. Introducción y objetivos

Digital voter ID es un proyecto para incorporar Identidad Autosoberana a los sistemas de registro de partidos políticos y sus afiliados.

1.1. Resumen de requisitos

El proyecto Digital Voter ID busca transformar los procesos de afiliación política y votación en América Latina mediante un sistema digital que mejora la transparencia, seguridad y accesibilidad. Este sistema está diseñado para proteger la información personal, prevenir afiliaciones no consentidas y permitir auditorías efectivas.

Principales características del sistema:

  • Registro digital de ciudadanos con validación biométrica.
  • Gestión y consulta de afiliaciones políticas con trazabilidad en blockchain.
  • Control y auditorías de calidad en el registro de datos.

Acceso al sistema:

  • Usuarios internos: Personal autorizado, como funcionarios de organismos electorales y partidos políticos, con roles y permisos específicos asignados.
  • Usuarios ciudadanos: Personas que acceden al sistema para registrar, verificar y gestionar su afiliación política y datos personales.
  • Usuarios públicos: Ciudadanos interesados en consultar estadísticas generales, sin necesidad de registro previo.

Componentes principales del sistema:

  • Aplicación Móvil (Flutter):

    Diseñada para ciudadanos, permite el registro y verificación de identidad mediante biometría, la gestión de afiliaciones políticas y la consulta de información personal en tiempo real. También envía alertas instantáneas sobre cambios en el estado de afiliación. Este componente es multiplataforma, compatible con dispositivos Android e iOS.

  • Aplicación Web:

    Destinada a usuarios internos y externos, esta plataforma facilita la gestión avanzada de afiliaciones políticas por parte de los partidos políticos y organismos electorales. Los ciudadanos pueden consultar su estado de registro y acceder a estadísticas. Además, incluye herramientas para auditorías y generación de reportes.

1.2. Metas de calidad

No. Calidad Motivación
1 Claridad Los requisitos funcionales y no funcionales están claramente definidos para garantizar que el desarrollo del sistema sea comprensible y facilite la implementación sin ambigüedades.
2 Seguridad El sistema asegura la protección de datos personales, utilizando tecnologías avanzadas como autenticación biométrica, trazabilidad mediante blockchain y mecanismos de encriptación para garantizar la integridad de la información.
3 Interoperabilidad Los componentes del sistema, tanto la aplicación móvil como la aplicación web, están diseñados para integrarse fácilmente con sistemas de identidad autosoberana (SSI) o plataformas de identidad digital, así como con sistemas de gestión de partidos políticos existentes, permitiendo una interoperabilidad eficiente y segura.
4 Escalabilidad La arquitectura del sistema es escalable, lo que permite adaptarse a un número creciente de usuarios y expandirse a otros países de América Latina con mínimos ajustes.
5 Capacidad de prueba El diseño modular del sistema permite probar de forma individual cada componente, asegurando que tanto la aplicación móvil como la aplicación web cumplan con los requisitos definidos.
6 Transparencia El sistema garantiza que todas las operaciones relacionadas con las afiliaciones políticas sean rastreables, verificables y estén respaldadas por registros inmutables. Al integrar tecnologías de identidad autosoberana (SSI), asegura que los ciudadanos mantengan el control total de su información personal, evitando el mal uso de los datos por parte de los partidos políticos y protegiendo sus derechos.

1.3. Partes interesadas

Rol Meta, Intención
Desarrolladores Implementar los algoritmos y funcionalidades definidos en la arquitectura del sistema, asegurando la integración con tecnologías como identidad autosoberana (SSI) y blockchain.
Organismos Electorales Evaluar y supervisar la solución propuesta para garantizar que cumpla con los estándares de transparencia, interoperabilidad y seguridad necesarios para los procesos de afiliación política.
Organizaciones Políticas Verificar que los sistemas de gestión de afiliaciones cumplan con los requisitos legales y técnicos, garantizando la correcta interoperabilidad con el sistema de identidad autosoberana y evitando el mal uso de datos.
Ciudadanos Tener control sobre sus datos personales mediante el uso de credenciales digitales verificables, asegurando que sus afiliaciones políticas sean gestionadas de manera transparente y segura.

2. Restricciones deArquitectura

Esta arquitectura ha sido diseñada considerando varias condiciones/restricciones específicas para llegar a la solución final, que se describen a continuación.

2.1. Limitaciones técnicas

ID Restricción Explicación y/o motivación
TC1 Flutter La aplicación móvil debe desarrollarse en Flutter para garantizar compatibilidad multiplataforma (Android e iOS), maximizando el alcance entre ciudadanos.
TC2 React La aplicación web debe desarrollarse utilizando React para proporcionar una interfaz interactiva, flexible y eficiente para usuarios internos y externos.
TC3 Aiken El componente de blockchain y los contratos inteligentes serán implementados utilizando Aiken para garantizar la inmutabilidad y seguridad de los registros de afiliación.
TC4 SSI El sistema de identidad digital estará basado en Atala PRISM para gestionar credenciales autosoberanas, asegurando que los ciudadanos mantengan el control total sobre su información personal.
Restricciones del sistema operativo
SO1 Compatibilidad con Windows Los sistemas de captura y procesamiento de información deben ser compatibles con equipos estándar que operen con Windows 10 o versiones superiores.
SO2 Servidores Linux/Windows Los módulos web deben ser implementables en servidores estándar basados en Linux o Windows, asegurando flexibilidad en el despliegue.
Restricciones de Hardware
HW1 Cloud El despliegue del sistema se realizará en la nube, utilizando infraestructura escalable como AWS, Azure o GCP para soportar grandes volúmenes de usuarios.

2.2.Restricciones organizativas

 

Restricción

Explicación y/o motivación

OC1

Licencia

El proyecto es de código abierto.

OC2

Librería de terceros

Los componentes de terceros no requieren licencias.

2.3.Convenciones

           

 

Restricción

Explicación y/o motivación

CC1

Código fuente

Control de fuente en GitHub, https://github.com/democracyonchain

CC2

Documentación arquitectónica

Terminología y estructura según la plantilla alemana arc42 en la versión 6.0

CC3

Seguimiento de defectos

Jira / Github

CC4

Documentación

Camel Case convention

CC5

Idioma

  • Idioma Español (principal).
  • Idioma Inglés.
  • CC6 Estilo de código Todos los desarrollos deben alinearse a los estándares de codificación establecidos, como ESLint para JavaScript/React y Dart Analysis para Flutter.

    3. Alcance y Contexto del Sistema

    3.1 Contexto empresarial

     

    Componente Descripción
    Credenciales Digitales (SSI) Identidades digitales autosoberanas gestionadas a través de Atala PRISM. Los ciudadanos controlan completamente su información personal, asegurando transparencia y privacidad en los procesos de afiliación política.
    Sistema de Afiliación Plataforma web que permite a los partidos políticos registrar, gestionar y verificar las afiliaciones, asegurando trazabilidad mediante blockchain.
    Blockchain Tecnología de registro distribuido utilizada para almacenar de forma inmutable las afiliaciones políticas y las auditorías asociadas al proceso, garantizando transparencia y seguridad.
    Aplicación Móvil Desarrollada en Flutter, es la herramienta principal para que los ciudadanos realicen su afiliación política de manera segura, utilizando credenciales digitales verificables. También permite consultar el estado de afiliación, verificar su identidad y recibir notificaciones sobre cambios en tiempo real.
    Portal de Transparencia Plataforma pública donde los ciudadanos pueden verificar información general sobre afiliaciones y estadísticas, garantizando transparencia en el proceso.

     

    3.2. Contextos técnicos

     

    Componente Descripción
    Voters Módulo que permite a los ciudadanos registrarse, inscribirse y validar su identidad mediante credenciales digitales autosoberanas (SSI), asegurando autenticidad y seguridad.
    Political Organizations Plataforma donde los partidos políticos pueden registrar afiliaciones y validar la información recibida de los votantes, garantizando integridad y transparencia en los procesos de inscripción.
    Electoral Organizations Entidad encargada de la gestión y supervisión de las organizaciones políticas, asegurando el cumplimiento normativo y la correcta administración de los datos afiliados.
    SSI (Self-Sovereign Identity) Sistema de identidad descentralizada basado en Atala PRISM, que permite la emisión, certificación y verificación de credenciales digitales para los usuarios.
    Blockchain Utiliza Aiken sobre la blockchain de Cardano para almacenar registros inmutables de las afiliaciones, implementando contratos inteligentes para automatizar validaciones y auditorías.
    Transparency Portal Plataforma que permite auditar, trazar y generar reportes sobre las afiliaciones políticas, proporcionando visibilidad pública y acceso a datos agregados del sistema.

     

    4. Estrategia de solución

    La estrategia de la solución arquitectónica presentada se fundamenta en los siguientes ejes clave, identificados a partir de los resultados de encuestas y entrevistas realizadas:

    1. Modularidad: La arquitectura será modular, permitiendo que cada componente (aplicación móvil, portal de transparencia, sistema de gestión de afiliaciones, etc.) sea desarrollado, probado e implementado de manera independiente.
    2. Microservicios: Se utilizará un enfoque basado en microservicios para garantizar escalabilidad, flexibilidad y facilidad de mantenimiento. Cada servicio manejará una responsabilidad específica, como autenticación, gestión de afiliaciones y trazabilidad en blockchain.
    3. Interoperabilidad: Se priorizará la capacidad del sistema para integrarse con tecnologías externas, como sistemas de identidad autosoberana (Atala PRISM) y plataformas de gestión de partidos políticos, utilizando estándares como JSON para intercambio de datos sobre protocolos HTTP/HTTPS.
    4. Seguridad: Basado en los hallazgos de las entrevistas, se garantizará la seguridad mediante autenticación biométrica, cifrado de datos sensibles y trazabilidad en blockchain, evitando el mal uso de información personal.
    5. Capacidad de pruebas: Cada componente del sistema será probado exhaustivamente, incluyendo pruebas de carga, integración y funcionalidad. Esto abarca métodos críticos como setters y getters, así como pruebas específicas para garantizar el correcto manejo de datos sensibles.
    6. Arquitectura limpia: Se emplearán principios de diseño como separación de responsabilidades, dependencias mínimas y un código fuente optimizado, asegurando claridad y facilidad de mantenimiento.
    7. Escalabilidad: La arquitectura está diseñada para soportar un aumento gradual en la cantidad de usuarios y la integración de nuevos módulos, permitiendo su expansión a otros países de la región.
    8. Transparencia: Respaldada por blockchain, permitirá a los ciudadanos verificar sus afiliaciones y consultar estadísticas públicas, promoviendo confianza en el sistema.

     

    5. Vista de bloques de construcción

    Esta sección describe el desglose de la solución propuesta en módulos, como se refleja en la estructura de componentes funcionales.

    5.1. Voters

    Subsistema/Método Breve Descripción
    Registro (Register) Permite a los votantes registrarse en el sistema mediante la creación de una cuenta y el ingreso de información personal. Los datos se almacenan en la base de datos transaccional.
    Inicio de Sesión (Login) Mecanismo de autenticación que permite a los usuarios acceder al sistema verificando sus credenciales mediante un API y la base de datos transaccional.
    Inscripción (Enroll) Proceso mediante el cual los votantes registran su afiliación política. La información se valida antes de ser almacenada en la blockchain para garantizar su integridad.
    Validación (Validation) Módulo que verifica la autenticidad de los datos de inscripción antes de emitir una credencial digital. Se conecta con el sistema de credenciales digitales SSI.
    Base de Datos Transaccional Almacena temporalmente los datos del registro, inicio de sesión y validación antes de ser enviados a la blockchain o al sistema de credenciales digitales.
    Blockchain Plataforma basada en Cardano que almacena los registros inmutables de afiliaciones políticas, garantizando transparencia y trazabilidad mediante contratos inteligentes en Aiken.
    Certificación Generación de credenciales digitales verificables a través de Atala PRISM. Estas credenciales permiten a los votantes demostrar su afiliación sin compartir datos sensibles.
    Credenciales Digitales Documento digital autosoberano emitido a los votantes tras la validación de su inscripción. Puede ser verificado de manera descentralizada sin necesidad de una base de datos central.

    5.2. Political Organizations

     

    Subsistema/método Breve descripción
    Register Facilita la creación de cuentas para representantes de organizaciones políticas. Se recopila información de los usuarios y se valida su identidad.
    Login Permite a los usuarios autenticarse en el sistema para acceder a sus registros y gestionar su información.
    Pre-registration of organization Permite que una organización política inicie su proceso de registro en el sistema. En esta etapa, se capturan los datos preliminares.
    Official Registration Una vez que la organización ha completado su preinscripción y ha sido aprobada, se procede con el registro oficial, generando credenciales digitales y asegurando su validez dentro del sistema.
    API DATA Módulo de integración que conecta el sistema con bases de datos transaccionales, permitiendo la verificación y consulta de información en tiempo real.
    Digital Credentials Generación de credenciales digitales verificables basadas en principios de identidad autosoberana (SSI).
    Certification Proceso de validación y certificación de las credenciales emitidas a las organizaciones políticas, asegurando su autenticidad y cumplimiento con los estándares del sistema.

    5.3. Electoral Organizations

     

    Subsistema/método Breve descripción
    Validation Proceso en el que la organización electoral revisa los datos de una organización política en proceso de registro. Se validan documentos y requisitos previos antes de proceder a la aprobación incluyento el número de afiliados.
    Approval Una vez que la validación ha sido exitosa, la organización electoral aprueba formalmente la solicitud de registro de la organización política. Este paso permite continuar con la inscripción oficial.
    Register Registro oficial de la organización política en el sistema. En este punto, la información se almacena en la blockchain para garantizar inmutabilidad y transparencia.
    API DATA (Transactional Data Base) Base de datos transaccional utilizada para la consulta y verificación de información en tiempo real antes de su aprobación final.
    API DATA (Blockchain) Módulo encargado de registrar la información aprobada en la blockchain, asegurando su integridad y evitando modificaciones no autorizadas.

    5.4. Transparency Portal

                           

     

    Subsistema/método Breve descripción
    Data Access Policies Módulo encargado de gestionar los niveles de acceso y restricciones dentro del portal de transparencia, asegurando que la información esté disponible de acuerdo con los permisos establecidos.
    Audit Subsistema que permite el seguimiento y registro de todas las acciones realizadas dentro del sistema, asegurando la trazabilidad de la información almacenada.
    Reports Generación de informes y visualización de datos relacionados con afiliaciones, registros y validaciones, proporcionando transparencia y acceso público a la información relevante.
    Trazability Rastreo de los procesos de afiliación y validación de credenciales a lo largo del ciclo de vida, permitiendo conocer el estado actual y el historial de cambios.
    API DATA (Transactional Database) Interfaz para la consulta y almacenamiento de datos transaccionales, permitiendo la gestión segura de la información de los ciudadanos y las organizaciones políticas.
    API DATA (Blockchain) Conexión con la red blockchain de Cardano para almacenar información de manera descentralizada y garantizar la inmutabilidad de los datos registrados.
    Certification Proceso de certificación de credenciales digitales autosoberanas (SSI), validando la autenticidad e integridad de las identidades emitidas en el sistema.

    6. Vista de tiempo de ejecución

    La interacción del usuario con el sistema y sus módulos se describe en los siguientes casos de uso.

    6.1. Usuarios/Votantes

     

    Participantes del Flujo Descripción
    Usuario (Votante) Persona que desea registrarse y afiliarse a una organización política mediante el sistema de identidad descentralizada.
    Sistema de Registro Plataforma responsable de recopilar y almacenar los datos del votante para su posterior validación.
    Sistema de Validación Verifica la autenticidad de los datos del votante y responde a las solicitudes de emisión de credenciales.
    SSI (Identidad Autosoberana) Plataforma encargada de la emisión y gestión de credenciales digitales verificables para los usuarios.
    Organización Política Entidad que recibe, revisa y aprueba las solicitudes de afiliación de los votantes.
    Flujo del Proceso Descripción
    Inicio de Registro El votante inicia el proceso de registro (Start Registration()) proporcionando sus datos personales.
    Captura de Datos El sistema de registro recopila y almacena los datos del votante (Capture Data(), Store Data()).
    Validación de Identidad Se verifica la autenticidad de los datos y, si es correcto, se genera una credencial digital (Validate Data(), Response, Credential Request()).
    Generación de Credencial SSI La plataforma de identidad autosoberana emite la credencial digital y la almacena en la billetera del usuario (Issue Credential()).
    Inicio de Sesión El usuario inicia sesión utilizando su credencial SSI (Login(), SSI Authentication()).
    Afiliación a Organización Política El votante selecciona una organización política y solicita su afiliación (Select Organization(), Request Affiliation()).
    Aprobación de Afiliación La organización revisa y aprueba la solicitud de afiliación (Approve Affiliation()).
    Registro en Blockchain La afiliación se registra en la blockchain para garantizar trazabilidad (Register Affiliation on Blockchain()).
    Confirmación de Afiliación El usuario recibe una confirmación de su afiliación (Affiliation Confirmed()).

    6.2. Political Organizations

    Participantes del Flujo Descripción
    Organización Política Entidad que busca registrarse en el sistema y gestionar la afiliación de ciudadanos de forma descentralizada.
    Sistema de Registro Plataforma encargada de recopilar la información de la organización para su validación.
    Sistema de Validación Verifica la autenticidad de los datos proporcionados por la organización política.
    SSI (Identidad Autosoberana) Emisión de credenciales digitales verificables que certifican la organización política en el sistema.
    Autoridad Electoral Institución responsable de la validación final y aprobación de la organización política.
    Flujo del Proceso Descripción
    Registro de Organización La organización política inicia su registro proporcionando información detallada (Start Registration()).
    Captura de Información Se recopilan los datos de la organización, como documentos legales y representantes (Capture Data()).
    Validación de Documentos La autoridad electoral valida la autenticidad de los documentos proporcionados (Validate Data()).
    Emisión de Credencial SSI Tras la validación, se emite una credencial digital para la organización (Issue Credential()).
    Inicio de Sesión La organización política inicia sesión en el sistema con sus credenciales digitales (Login()).
    Gestión de Afiliaciones La organización administra las solicitudes de afiliación de los ciudadanos (Manage Affiliations()).
    Registro en Blockchain Las afiliaciones aprobadas se registran en la blockchain para garantizar la transparencia (Register on Blockchain()).
    Confirmación La organización recibe la confirmación de que ha sido registrada con éxito (Confirmation()).

    6.3. Electoral Organizations

    Subsistema/método Breve descripción
    Recepción de solicitud El organismo electoral recibe solicitudes de registro o validación de una organización política o votante.
    Validación de datos Se verifican los datos recibidos, comparándolos con registros oficiales para garantizar su autenticidad.
    Emisión de credenciales SSI Se genera y emite una credencial digital verificable a través de la plataforma de identidad autosoberana.
    Registro en Blockchain El sistema registra la información validada en la blockchain de Cardano para garantizar su inmutabilidad.
    Auditoría Se realiza un proceso de auditoría para verificar el cumplimiento de las normativas y la transparencia del proceso.
    Generación de informes Se publican informes con la información relevante del proceso electoral en el portal de transparencia.

    7. Vista de implementación.

     

    Subsistema/Módulo Descripción
    Aplicación Móvil Plataforma desarrollada en Flutter para la gestión de usuarios y afiliaciones.
    • register(): Permite a los ciudadanos registrarse en el sistema.
    • login(): Autenticación de usuarios con credenciales autosoberanas.
    • get_credential(): Recupera credenciales digitales emitidas.
    • get_org_pol(): Obtiene información sobre organizaciones políticas.
    • validate_request(): Envía solicitudes para validación de datos.
    • enroll(): Afiliación de usuarios en una organización política.
    • get_status(): Consulta del estado de afiliación.
    Aplicación Web Plataforma web para la gestión de registros y afiliaciones.
    • register(): Proceso de registro de organizaciones políticas.
    • login(): Autenticación de administradores del sistema.
    • pre_registration(): Pre-registro de nuevas organizaciones políticas.
    • register_orgpol(): Registro oficial de la organización política.
    API DATA Servicios backend que manejan la lógica del sistema y la comunicación con la base de datos y blockchain.
    • save_user: Endpoint para guardar datos de usuarios.
    • validate_user: Valida la identidad de los usuarios.
    • get_orgpol: Obtiene información de las organizaciones políticas.
    • save_enroll: Guarda la información de afiliación.
    • get_affiliation: Consulta el estado de afiliaciones.
    • save_preregister: Guarda registros de pre-afiliaciones.
    Blockchain Infraestructura descentralizada basada en Cardano para almacenar registros inmutables de afiliación.
    • save_enroll: API para registrar afiliaciones en la blockchain.
    Base de Datos Transaccional Almacenamiento seguro de información en PostgreSQL con respaldo automatizado.
    • PostgreSQL: Base de datos relacional para almacenar la información de usuarios y organizaciones.
    • backup: Procedimientos de respaldo y recuperación de datos.
    SSI (Self-Sovereign Identity) Plataforma de identidad autosoberana basada en Atala PRISM.
    • Digital Credentials: Gestión de credenciales digitales verificables.
    • Certification: Emisión y validación de credenciales.

    8. Conceptos

    Esta sección describe estructuras y aspectos generales que se aplican en todo el sistema. También presenta diversos conceptos de soluciones técnicas.

    8.1. Dependencias entre módulos

    El sistema de afiliaciones políticas basado en blockchain e identidad autosoberana (SSI) se compone de múltiples módulos interconectados que operan de manera altamente interoperable y escalable. La arquitectura del sistema está diseñada para garantizar la modularidad, permitiendo la fácil integración y desacoplamiento de módulos según las necesidades del sistema o de terceros interesados.

    8.1.1. Tabla de Dependencias entre Módulos

    Módulo Dependencias Descripción de la dependencia
    Aplicación Móvil API DATA, SSI La aplicación móvil se comunica con la API para el registro y consulta de afiliaciones. Depende del módulo SSI para obtener y almacenar credenciales digitales del usuario.
    Aplicación Web API DATA, Blockchain La plataforma web interactúa con la API para registrar y validar organizaciones políticas y depende de la blockchain para almacenar registros inmutables.

    8.1.2. Principios de Interoperabilidad

    • Desacoplamiento: Los módulos pueden operar de manera independiente, permitiendo futuras actualizaciones sin afectar la funcionalidad del sistema general.
    • Interfaces abiertas: Se implementan API REST para la comunicación entre módulos, facilitando la integración con sistemas de terceros.
    • Seguridad: Todas las interacciones entre módulos están protegidas mediante cifrado y mecanismos de autenticación.

    8.2. Modelo de Dominio

    8.2.1 Actores Clave

    Actor Descripción
    Ciudadano (Voter) Persona que desea afiliarse a una organización política.
    Su identidad debe ser verificada con el registro electoral.
    Puede desafiliarse y afiliarse a otra organización en el futuro.
    Organización Política Entidad que recibe solicitudes de afiliación de los ciudadanos.
    Debe estar previamente registrada y aprobada por el organismo electoral.

    8.2.2 Procesos Principales

    Proceso Descripción
    Registro del Ciudadano El ciudadano inicia el registro mediante la aplicación móvil o web.
    El sistema verifica su identidad en el registro electoral.
    Se almacena su información en el sistema.
    Validación y Aprobación El organismo electoral revisa la solicitud.
    Si es aprobada, se registra en la blockchain.

    8.3. Persistencia

    El sistema de afiliaciones políticas basado en blockchain e identidad autosoberana (SSI) utiliza una estrategia de persistencia híbrida, combinando bases de datos relacionales y almacenamiento descentralizado para garantizar la integridad, seguridad y trazabilidad de la información.

    8.3.1. Componentes de la Persistencia

    Componente Tecnología Descripción
    Base de Datos Relacional PostgreSQL Almacena información estructurada de ciudadanos, organizaciones políticas y registros de afiliación.
    Implementa esquemas de seguridad y replicación para garantizar la disponibilidad y consistencia de datos.
    Blockchain Cardano Registra transacciones inmutables de afiliaciones y verificaciones de identidad.
    Garantiza la transparencia y trazabilidad del proceso mediante contratos inteligentes (Smart Contracts).

    8.3.2. Estrategias de Persistencia

    • Redundancia: La base de datos PostgreSQL implementa estrategias de replicación para garantizar la continuidad operativa.
    • Seguridad: Se aplican políticas de cifrado en la base de datos y la blockchain para proteger la información confidencial.
    • Trazabilidad: Cada acción relevante es registrada en la blockchain, asegurando su rastreabilidad a lo largo del tiempo.

    8.3.3. Flujo de Persistencia

    El proceso de almacenamiento y gestión de la información sigue los siguientes pasos:

    1. El ciudadano realiza su registro en el sistema, y su información se almacena temporalmente en PostgreSQL.
    2. Una vez validada, se genera una credencial digital en el sistema SSI y se registra en la blockchain.
    3. Los documentos de afiliación son almacenados en el sistema de archivos antes de su procesamiento final.
    4. El portal de transparencia accede a la blockchain para generar reportes de afiliaciones confirmadas.

    8.4. Interface de usuario.

    Las principales interfaces de usaurio que servirán como guia en el diseño ui/ux dle proyecto son los siguientes:

    a. Aplicación móvil

    b. Organización Política

    8.5. Procesamiento de transacciones

    El sistema utiliza PostgreSQL como gestor de base de datos relacional para garantizar la integridad y consistencia de la información. La interacción con la base de datos se realiza mediante ORMs (Object-Relational Mapping) para facilitar la gestión de consultas y transacciones.

    Tipos de operaciones principales:

    • Consultas: Obtención de datos ciudadanos y registros de afiliaciones.
    • Mutaciones: Operaciones de INSERT, UPDATE y DELETE para la gestión de ciudadanos y afiliaciones.
    • Procedimientos almacenados: Se utilizan para mejorar el rendimiento en procesos de validación masiva.

    Para garantizar la inmutabilidad, los registros críticos se almacenan en la blockchain de Cardano, asegurando la trazabilidad del sistema.

    8.6. Manejo de sesiones

    La autenticación de los usuarios se realiza mediante JSON Web Tokens (JWT) para proporcionar una solución segura y escalable.

    Proceso de autenticación:

    • Generación del token: Contiene información del usuario y se firma digitalmente.
    • Almacenamiento: El token se almacena en cookies HTTP seguras con las banderas HttpOnly y Secure.
    • Validación: El servidor verifica la validez del token en cada solicitud.
    • Renovación automática: Se genera un nuevo token antes de la expiración del actual.

    8.7. Seguridad

    El sistema implementa medidas de seguridad para proteger la información sensible y garantizar la autenticidad de los datos.

    Principales medidas:

    • Autenticación: Gestión de usuarios mediante JWT y credenciales SSI.
    • Despliegue seguro: Instalación en una red privada con acceso controlado.
    • Blockchain: Registro inmutable de afiliaciones.
    • Cifrado: Protección de datos sensibles mediante AES-256 (alternativo).

    8.8. Comunicación e integración

    La integración entre módulos se realiza mediante servicios web REST que garantizan la interoperabilidad del sistema.

    Interacciones principales:

    • Aplicación móvil ↔ API REST ↔ Blockchain / SSI
    • Portal de Transparencia ↔ API REST ↔ Blockchain
    • Organismos Electorales ↔ API REST ↔ Base de Datos

    8.9. Manejo de errores y excepciones

    El sistema emplea técnicas avanzadas de manejo de errores para garantizar la resiliencia y trazabilidad.

    Estrategias:

    • Registro de errores: Mediante gestor de archivos logs para auditoría.
    • Errores de conectividad: Implementación de reintentos automáticos.
    • Errores de seguridad: Bloqueo de cuentas tras múltiples intentos fallidos.

    9. Decisión de diseño

    9.1. Uso de PostgreSQL

    PostgreSQL ha sido seleccionado como el sistema de gestión de bases de datos relacional del proyecto Digital Voter ID. Su elección se debe a su capacidad de manejo eficiente de grandes volúmenes de datos, su confiabilidad, su capacidad de soportar datos geoespaciales y su compatibilidad con el almacenamiento de JSON, lo cual permite una integración fluida con sistemas externos como el Registro Electoral Nacional. PostgreSQL garantiza la integridad de los datos mediante transacciones ACID y proporciona funciones avanzadas como replicación y respaldo, asegurando alta disponibilidad y recuperación ante fallos.

    9.2. Uso de microservicios

    El sistema ha sido diseñado con una arquitectura basada en microservicios, lo que permite la escalabilidad, modularidad y mantenimiento independiente de los componentes del sistema. Cada funcionalidad clave, como el registro de ciudadanos, la validación de credenciales, la afiliación a organizaciones políticas y la generación de reportes de transparencia, está implementada como un servicio independiente que se comunica a través de API REST. Este diseño facilita la integración con sistemas externos como el portal de transparencia y la blockchain.

    9.3. Uso de Blockchain

    La blockchain de Cardano ha sido adoptada para registrar de forma inmutable las afiliaciones de los ciudadanos a organizaciones políticas. Cardano ofrece bajos costos de transacción, alta seguridad y compatibilidad con sistemas de identidad autosoberana (SSI). La blockchain permite garantizar la trazabilidad del proceso electoral, proporcionando un registro transparente y auditable de cada transacción realizada en el sistema. Se emplean smart contracts para gestionar el registro de afiliaciones de manera automatizada y descentralizada.

    9.4. Uso de Identidad Autosoberana (SSI)

    El sistema incorpora la tecnología de Identidad Autosoberana (SSI) a través de la solución Atala PRISM (a la fecha identus), la cual permite a los ciudadanos poseer y controlar sus credenciales digitales verificables. La implementación de SSI garantiza que la identidad de los ciudadanos sea validada de manera descentralizada y segura, reduciendo riesgos de suplantación de identidad y eliminando la necesidad de intermediarios. Las credenciales emitidas permiten el acceso seguro a los servicios de afiliación política.

    9.5. Uso de Aplicaciones Móviles y Web

    Para mejorar la accesibilidad y la experiencia del usuario, el sistema ofrece una aplicación móvil y una plataforma web que permiten a los ciudadanos realizar su registro, verificar su afiliación política y gestionar sus credenciales digitales. Las aplicaciones están desarrolladas utilizando React.js para la web y Flutter para la versión móvil, brindando una experiencia fluida en diferentes dispositivos. Ambas aplicaciones interactúan con la API del sistema para garantizar la sincronización de datos en tiempo real.

    9.6. Uso de Autenticación basada en Credenciales Digitales

    La autenticación en el sistema se basa en credenciales digitales verificables emitidas mediante SSI. Los ciudadanos inician sesión escaneando un código QR desde su aplicación móvil o utilizando un identificador único proporcionado por la blockchain. Esto permite un acceso seguro sin necesidad de contraseñas tradicionales, mejorando la seguridad y usabilidad del sistema.

    9.7. Uso del Portal de Transparencia

    El Portal de Transparencia permite a los organismos electorales, ciudadanos y auditores externos consultar información relevante sobre afiliaciones políticas de manera transparente. La información consultada proviene de la blockchain y la base de datos transaccional, proporcionando reportes detallados y gráficos interactivos para el análisis de datos.

    10. Escenario de calidad.

    10.1. Árbol de calidad.

     

    11. Riesgos Técnicos

    11.1. Riesgos Asociados a la Migración de Atala PRISM a Identus

    La transición de Atala PRISM a Identus representa uno de los riesgos más críticos para el proyecto, ya que involucra posibles cambios en la interoperabilidad, seguridad y disponibilidad de los servicios de identidad autosoberana (SSI). Es fundamental garantizar una migración sin interrupciones y evaluar los siguientes riesgos clave:

    • Compatibilidad de Integración: La API y las credenciales emitidas deben seguir siendo compatibles con los sistemas actuales. Cualquier cambio podría requerir ajustes en las aplicaciones móviles, web y backend.
    • Disponibilidad del Servicio: Durante la migración, podría haber tiempos de inactividad o inestabilidad, lo que afectaría la validación y emisión de credenciales digitales.
    • Gestión de Identidades Existentes: Las credenciales previamente emitidas con Atala PRISM deben mantenerse operativas y compatibles con el nuevo sistema Identus.
    • Soporte Técnico y Actualizaciones: Dependencia del equipo de desarrollo de Identus para resolver problemas de implementación y garantizar actualizaciones periódicas.
    • Seguridad de Datos: La transición podría introducir vulnerabilidades si no se maneja correctamente, comprometiendo la privacidad de los ciudadanos.

    11.2. Riesgos Generales del Proyecto

    • Indisponibilidad de Servicios: Cualquier falla en los servicios de backend, blockchain o API podría interrumpir los procesos de afiliación y validación de identidad.
    • Encolamiento de Peticiones a la Base de Datos: La alta demanda de solicitudes simultáneas puede generar cuellos de botella en la base de datos PostgreSQL, afectando los tiempos de respuesta del sistema.
    • Tiempo de Respuesta en la Blockchain: Los tiempos de confirmación en la blockchain de Cardano pueden ralentizar el proceso de registro de afiliaciones y generar demoras en la confirmación del usuario.
    • Errores en la Validación de Identidad: La falta de precisión en la validación contra el registro electoral podría derivar en registros incorrectos o bloqueos indebidos.
    • Escalabilidad del Sistema: Un crecimiento exponencial de usuarios podría requerir una infraestructura más robusta, generando costos adicionales e impacto en el rendimiento.
    • Seguridad y Fraudes: Intentos de suplantación de identidad, ataques de phishing o acceso no autorizado podrían comprometer la confiabilidad del sistema.

    11.3. Mitigación de Riesgos

    Para minimizar los riesgos técnicos identificados, se implementarán las siguientes estrategias:

    • Planes de contingencia: Implementación de estrategias de respaldo en caso de interrupciones en los servicios.
    • Monitoreo Proactivo: Uso de herramientas de monitoreo para identificar cuellos de botella en tiempo real.
    • Pruebas de Carga: Simulación de alto tráfico para evaluar la capacidad del sistema antes del despliegue a producción.

    La gestión de riesgos es un proceso continuo, y se recomienda realizar revisiones periódicas para adaptarse a los cambios tecnológicos y operativos.

    Observaciones y Contacto

    Este documento puede ser mejorado con tus sugerencias. ¿Tienes comentarios o recomendaciones? Contáctanos aquí.