101
IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN ELECTRÓNICA BASADO EN LA TECNOLOGÍA BLOCKCHAIN PARA LAS ELECCIONES ESTUDIANTILES EN LA UNIVERSIDAD DE CÓRDOBA NEIFER GARCIA VILLADIEGO UNIVERSIDAD DE CÓRDOBA FACULTAD DE INGENIERÍA INGENIERÍA DE SISTEMAS MONTERÍA, CÓRDOBA 2019 1

IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN ELECTRÓNICA BASADO EN LA TECNOLOGÍA BLOCKCHAIN PARA LAS ELECCIONES

ESTUDIANTILES EN LA UNIVERSIDAD DE CÓRDOBA

NEIFER GARCIA VILLADIEGO

UNIVERSIDAD DE CÓRDOBA

FACULTAD DE INGENIERÍA

INGENIERÍA DE SISTEMAS

MONTERÍA, CÓRDOBA

2019

1

Page 2: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN ELECTRÓNICA BASADO EN LA TECNOLOGÍA BLOCKCHAIN PARA LAS ELECCIONES

ESTUDIANTILES EN LA UNIVERSIDAD DE CÓRDOBA

NEIFER GARCIA VILLADIEGO

Trabajo de grado presentado, en la modalidad de Trabajo de Investigación y/o Extensión, como parte de los requisitos para optar al Título de

Ingeniero de Sistemas.

Director (s):

JORGE E. GÓMEZ GÓMEZ, Ph.D.

UNIVERSIDAD DE CÓRDOBA

FACULTAD DE INGENIERÍA

INGENIERÍA DE SISTEMAS

MONTERÍA, CÓRDOBA

2019

2

Page 3: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

La responsabilidad ética, legal y científica de las ideas, conceptos y resultados del

proyecto, serán responsabilidad de los autores.

Artículo 61, acuerdo N° 093 del 26 de noviembre de 2002 del consejo superior.

3

Page 4: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Nota de aceptación

_______________________________

_______________________________

_______________________________

_______________________________

________________________________

Firma del jurado

________________________________

Firma del jurado

4

Page 5: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Agradecimientos especial a: Ph.D. Jorge Gómez Gómez, Asesor y tutor de este proyecto, que gracias a su paciencia y orientaciones logré culminar lo que se inició desde el momento que está pense esta idea de proyecto. A los profesores que aportaron en mi un grano de arena para llegar a la meta de formarme como un Ingeniero de Sistemas. A todas aquellas personas que alguna vez me han brindado ayuda y consejos relacionados con este proceso de formación Agradecimientos: A mis padres por su apoyo incondicional en este proceso académico. A toda mi familia, que siempre estuvo ahí con consejos que guían mi vida.

5

Page 6: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

TABLA DE CONTENIDO Página

RESUMEN 15

ABSTRACT 15

1 INTRODUCCIÓN 16

1.1 PLANTEAMIENTO DEL PROBLEMA 16

1.2 JUSTIFICACIÓN 17

1.3 OBJETIVOS 18

1.3.1 Generales 18

1.3.2 Específicos 18

2 ESTADO DEL ARTE 19

3 MARCO CONCEPTUAL 26

4 MATERIALES Y MÉTODOS 29

4.1 TIPO DE INVESTIGACIÓN 29

4.2 POBLACIÓN Y MUESTRA 29

4.3 FASES DEL PROYECTO 29

4.3.1 FASE I: Investigación Del Proyecto 29

4.3.2 FASE II: Identificación De Requerimientos 30

4.3.2.1 Requerimientos Funcionales 30

4.3.2.2 Requerimientos No Funcionales 31

4.3.3 FASE III: Diseño Del Software 31

4.3.4 FASE IV: Desarrollo Del Software 31

4.3.5 FASE V: Evaluación, Pruebas E Impacto 32

4.4 METODOLOGÍA DE DESARROLLO DEL PROYECTO 32

5 DESARROLLO DEL SOFTWARE 33

5.1 ANÁLISIS 33

5.2 ARQUITECTURA 33

6

Page 7: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3 DISEÑO 37

5.3.1 Modelo Entidad - Relación 37

5.3.2 Modelo Orientado A Documentos 38

5.3.3 Casos De Uso 39

5.3.3.1 Gestión De Candidatos 39

5.3.3.1.1 Registrar 39

5.3.3.1.2 Modificar 39

5.3.3.1.3 Eliminar 40

5.3.3.1.4 Listar 40

5.3.3.2 Gestión De Elecciones 41

5.3.3.2.1 Registrar 41

5.3.3.2.2 Iniciar 41

5.3.3.2.3 Finalizar 41

5.3.3.2.4 Modificar 42

5.3.3.2.5 Eliminar 42

5.3.3.2.6 Listar 43

5.3.3.3 Gestión De Votantes 43

5.3.3.3.1 Registrar 43

5.3.3.3.2 Modificar 44

5.3.3.3.3 Deshabilitar 44

5.3.3.3.4 Eliminar 44

5.3.3.3.5 Listar 45

5.3.3.4 Consultar Reportes 45

5.3.3.4.1 Mostrar Resultados 45

5.3.3.4.2 Listar Votos 46

5.3.3.5 Efectuar Voto 46

5.3.3.5.1 Validar Votante 46

7

Page 8: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.3.5.2 Seleccionar Candidato 46

5.3.3.5.3 Confirmar Voto 47

5.3.4 Diagramas UML 48

5.3.4.1 Casos De Uso 48

5.3.4.1.1 General 48

5.3.4.1.2 Gestión De Candidatos 49

5.3.4.1.3 Gestión De Elecciones 49

5.3.4.1.4 Gestión De Votantes 50

5.3.4.1.5 Consultar Reportes 50

5.3.4.1.6 Efectuar Voto 51

5.3.4.2 Diagramas De Clases 51

5.3.4.3 Diagramas De Actividades 52

5.3.4.3.1 Gestión De Candidatos 52

5.3.4.3.2 Gestión De Elecciones 53

5.3.4.3.3 Gestión de Votantes 54

5.3.4.3.4 Efectuar Voto 55

5.3.4.4 Diagramas De Secuencia 55

5.3.4.4.1 Gestión De Candidatos 55

5.3.4.4.2 Gestión De Elecciones 56

5.3.4.4.3 Gestión de Votantes 57

5.3.4.4.4 Efectuar Voto 57

5.4 PRUEBAS 58

5.4.1 Inicio de Sesión Del Administrador 58

5.4.2 Gestión De Elecciones 59

5.4.2.1 Listar 59

5.4.2.2 Registrar 59

5.4.2.3 Cambio De Estado 59

8

Page 9: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.4.2.4 Modificar 60

5.4.2.5 Eliminar 61

5.4.3 Gestión De Candidatos 61

5.4.3.1 Listar 61

5.4.3.2 Registrar 62

5.4.3.3 Desactivar/Activar 62

5.4.3.4 Modificar 63

5.4.3.5 Eliminar 64

5.4.4 Gestión De Votantes 65

5.4.4.1 Listar 65

5.4.4.2 Registrar 65

5.4.4.3 Desactivar/Activar 66

5.4.4.4 Modificar 66

5.4.4.5 Eliminar 67

5.4.5 Efectuar Voto 68

5.4.5.1 Validar Votante 68

5.4.5.2 Seleccionar Candidato Y Votar 70

5.4.6 Listar Resultados 71

5.4.6.1 Detalles De Los Votos 71

6 RESULTADOS Y DISCUSIONES 72

7 CONCLUSIONES 72

8 RECOMENDACIONES 72

9 BIBLIOGRAFÍA 73

ANEXOS 76

9

Page 10: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

LISTADO DE TABLAS Página

Tabla 1: Requerimientos funcionales 30

Table 2: Requerimientos no funcionales 31

Tabla 3: CU-GC-01 Registrar Candidato 39

Tabla 4: CU-GC-02 Modificar Candidato 39

Tabla 5: CU-GC-03 Eliminar Candidato 40

Tabla 6: CU-GC-04 Listar Candidatos 40

Tabla 7: CU-GE-01 Registar Elección 41

Tabla 8: CU-GE-02 Iniciar Elección 41

Tabla 9: CU-GE-03 Finalizar Elección 41

Tabla 10: CU-GE-04 Modificar Elección 42

Tabla 11: CU-GE-05 Eliminar Elección 42

Tabla 12: CU-GE-06 Listar Elecciones 43

Tabla 13: CU-GV-01 Registrar Votante 43

Tabla 14: CU-GV-02 Modificar Votante 44

Tabla 15: CU-GV-03 Deshabilitar Votante 44

Tabla 16: CU-GV-04 Eliminar Votante 44

Tabla 17: CU-GV-05 Listar Votantes 45

Tabla 18: CU-CR-01 Mostrar Resultados 45

Tabla 19: CU-CR-02 Listar Votos 46

Tabla 20: CU-EV-01 Validar Votante 46

Tabla 21: CU-EV-02 Seleccionar Candidato 46

Tabla 22: CU-EV-03 Confirmar Voto 47

Tabla 23: Cronograma de actividades para el desarrollo del sistema. 77

10

Page 11: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

LISTADO DE FIGURAS Página

Figura 1: Arquitectura del Sistema 34

Figura 2: Propuesta de Transacción 34

Figura 3: Conjuntos RW firmados 35

Figura 4: Servicio de ordenamiento 35

Figura 5: Nodos de registros 36

Figura 6: Notifica a la aplicación 36

Figura 7: Flujo de Transacción 37

Figura 8: Modelo Entidad - Relación simulado 38

Figura 9: Modelo Orientado a Documentos 38

Figura 10: Caso de uso general del sistema 48

Figura 11: Caso de uso Gestión de Candidatos 49

Figura 12: Caso de uso Gestión de Elecciones 49

Figura 13: Caso de uso Gestión de Votantes 50

Figura 14: Caso de uso Consultar Reportes 50

Figura 15: Caso de uso Efectuar Voto 51

Figura 16: Diagrama de Clases 51

Figura 17: Diagrama de Actividades Gestión de Candidatos 52

Figura 18: Diagrama de Actividades Gestión de Elecciones 53

Figura 19: Diagrama de Actividades Gestión de Votantes 54

Figura 20: Diagrama de Actividades Efectuar Voto 55

Figura 21: Diagrama de Secuencias Gestión de Candidatos 55

Figura 22: Diagrama de Secuencias Gestión de Elecciones 56

Figura 23: Diagrama de Secuencias Gestión de Votantes 57

Figura 24: Diagrama de Secuencias Efectuar Voto 57

Figura 25: Interfaz de Inicio de Sesión 58

11

Page 12: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 26: Inicio de Sesión con credenciales incorrectas 58

Figura 27: Listado de elecciones. 59

Figura 28: Registrar elección. 59

Figura 29: Cambiar Estado de la elección. 60

Figura 30: Modificar elección. 60

Figura 31: Formulario para modificar elección. 60

Figura 32: Eliminar elección. 61

Figura 33: Confirmación para eliminar elección. 61

Figura 34: Listado de candidatos. 62

Figura 35: Registrar candidato. 62

Figura 36: Desactivar/Activar candidato. 63

Figura 37: Modificar candidato. 63

Figura 38: Formulario para modificar candidato. 64

Figura 39: Eliminar candidato. 64

Figura 40: Confirmación para eliminar candidato. 65

Figura 41: Listado de Votantes. 65

Figura 42: Registrar votante. 66

Figura 43: Desactivar/Activar votante. 66

Figura 44: Modificar votante. 67

Figura 45: Formulario para modificar votante. 67

Figura 46: Eliminar votante. 67

Figura 47: Confirmación para eliminar votante. 68

Figura 48: Validar votante con número de identificación. 68

Figura 49: Validación del votante, no existe. 69

Figura 50: Listado de candidatos disponibles para elegir en la elección. 69

Figura 51: Voto registrado correctamente. 70

Figura 52: Voto errado, el votante ya había votado. 70

12

Page 13: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 53: Listado de Votos. 71

Figura 54: Detalles de Votos. 71

Figura 55: Acceder a la plataforma 78

Figura 56: Registrar una elección. 79

Figura 57: Modificar una elección. 79

Figura 58: Eliminar una elección. 80

Figura 59: Registrar un candidato. 80

Figura 60: Modificar un candidato. 81

Figura 61: Desactivar/Activar un candidato. 81

Figura 62: Eliminar un candidato. 82

Figura 63: Registrar un votante. 82

Figura 64: Modificar un votante. 82

Figura 65: Desactivar/Activar un votante. 83

Figura 66: Eliminar un votante. 83

Figura 67: Validar votante. 84

Figura 68: Seleccionar candidato. 84

Figura 69: Votar 85

Figura 70: Reportes 86

Figura 71: Detallar votos. 86

Figura 72: Carpeta network. 87

Figura 73: Archivo .env 88

Figura 74: Archivo .base.yaml 88

Figura 75: Archivo crypto-config.yaml 89

Figura 76: Archivo docker-compose-kafka.yaml 90

Figura 77: Archivo docker-compose.yml, sección servidor CA 91

Figura 78: Archivo docker-compose.yml, sección sistema de ordenamiento. 91

Figura 79: Archivo docker-compose.yml, sección peer 92

13

Page 14: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 80: Archivo docker-compose.yml, sección couch (base de datos de estado) 92

Figura 81: Archivo docker-compose.yml, sección cli (gestión de la red) 93

Figura 82: Comando para crear la red blockchain (./createNet.sh --generate). 93

Figura 83: Red blockchain creada. 94

Figura 84: Instalar chaincode. 95

Figura 85: Chaincode instalado. 95

Figura 86: Instanciar chaincode instalado. 96

Figura 87: Chaincode instanciado. 96

Figura 88: Contenedores iniciados. 97

Figura 89: Inscribir Admin y App (enroll) 97

Figura 90: Crear usuario administrador de la plataforma. 98

Figura 91: Ejecutar ./add-org.sh --generate 98

Figura 92: Nueva organización agregada a la red. 99

Figura 93: Unir nodos a la red. 99

Figura 94: Instalar chaincode peer0.ene.example.com 100

Figura 95: Instalar chaincode peer1.ene.example.com 100

Figura 96: Actualizar chaincode 101

14

Page 15: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

RESUMEN La votación electrónica ha buscado mejorar los procesos de elección popular hechas a papel, tratando puntos claves como aumentando la eficiencia y reduciendo los errores que se puedan presentar en este proceso complejo por la cantidad de personas que participan en estos eventos, claves para el desarrollo de una sociedad. Blockchain es una tecnología en auge, posee características que podrían aportar al desarrollo de sistemas capaces de dar confianza a las personas que intervienen en una elección de un cargo popular. Con este trabajo, se hace un esfuerzo para implementar la tecnología blockchain en un sistema de votación electrónica, que esté orientado a la transparencia. Se desarrolló una interfaz web para la interacción del administrador de la elección (para registrar los candidatos y votantes) y los votantes (que efectuarán el voto) con el sistema, implementando Hyperledger Fabric, que provee la red blockchain y una base de datos de estado de la red (CouchDB). Palabras Clave: votación electrónica, blockchain, e-voting, voto electrónico.

ABSTRACT Electronic voting has sought to improve popular election processes on paper, addressing key points such as increasing efficiency and reducing errors that may arise in this complex process due to the number of people participating in these events, which are key to the development of a society. Blockchain is a booming technology, has characteristics that could contribute to the development of systems capable of giving confidence to the people involved in a popular election. With this work, an effort is made to implement the blockchain technology in an electronic voting system, which is oriented towards transparency. A web interface was developed for the interaction of the election administrator (to register the candidates and voters) and the voters (who will vote) with the system, implementing Hyperledger Fabric, which provides the blockchain network and a state database of the network (CouchDB). Keywords: electronic voting, blockchain, e-voting, electronic vote.

15

Page 16: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

1. INTRODUCCIÓN

1.1 PLANTEAMIENTO DEL PROBLEMA

Cómo en toda sociedad o sub-sociedad democrática se disponen de ciertos procesos para delegar representación de cierto sector de la sociedad en mención, por lo que generalmente, se recurren a elecciones donde se postulan los candidatos y las personas (votantes) deciden individualmente por el candidato con el que más se sienten identificado y con sus propuestas las más acordes a lo que consideran se necesitan para continuar con el buen desarrollo de la sociedad, en este el que consideren entienda las problemáticas que se estén presentando y sean expuestas, al consejo académico de nuestra Universidad. La logística de un evento como este, necesita organizar la forma en que las personas se acercan a las urnas, verifican su identidad, validan que no hayan votado y efectúen su voto. Este proceso se repetirá las veces que una nueva persona llegue a votar, ocasionando que varias personas deban esperar su turno para marcar la cara de su candidato en la boleta de voto, después que todas las personas hayan efectuado su voto o se haya finalizado el tiempo que se habilitó, se procede al conteo de votos, el cual deberá estar acompañado de testigos, para evitar un conteo fraudulento beneficiando a un candidato. La tecnología cada vez más se está apoderando de todos los ámbitos donde el ser humano ha hecho intervención, de lo que ha descubierto y ha inventado, el turno ahora podría ser aquellos procesos donde necesitamos veracidad de la información que conlleva a decisiones que sean importantes para el desarrollo de nuestra sociedad, como lo son los procesos de elecciones populares, los cuales cada día se ven afectados por el fraude, la manipulación y altos costos de logística. En la Universidad de Córdoba cada año se llevan a cabo elecciones para elegir el representante estudiantil, el cual es un escenario ideal para implementar nuevas soluciones para mejorar la confianza, reducir el nivel de riesgos de fraudes y disminuir costos de estos procesos que sin duda son y seguirán siendo importantes para el desarrollo de nuestra sociedad. Estas elecciones, con las que se elige representante estudiantil en la Universidad, al igual, que otro proceso de elecciones populares tienen boletas de votos que para algunas personas pueden llegar a ser tediosas al momento de identificar a su candidato en ellas, en muchas ocasiones el voto es anulado, por esta razón. Para reducir los principales problemas que se presentan en este proceso democrático, se diseñará una solución de software basada en una tecnología que está dando mucho de qué hablar, debido a su principal característica que permite la información no pueda ser modificada.

16

Page 17: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

1.2 JUSTIFICACIÓN

Los procesos de elecciones populares han cumplido un papel importante en una sociedad democrática, y no es para menos, pues permite a las personas expresar sus intereses apoyando a un candidato o ideas en forma de voto. Dada su gran importancia en el desarrollo de una sociedad, estos procesos de elecciones deben ser transparentes y confiables para garantizar a las personas credibilidad en los resultados que se obtengan al final de la jornada democrática. Los sistemas de votación electrónica han buscado mejorar la eficiencia, desde su primer uso con tarjetas perforadas como boletas en la década de los 60, estos sistemas han logrado un progreso notable con su adaptación utilizando las nuevas tecnologías de la información (Gobel et al., 2015). Para la adopción generalizada de los sistemas de votación electrónica se requiere que estos cumplan con ciertas características, como lo es, el voto anónimo, la integridad del voto y que sea verificable fácilmente (K. Khan, 2018).

Blockchain se ha vuelto popular en los últimos años, y no es para menos, dado que su arquitectura ha seducido al mundo de la información digital, por ser descentralizada y que la información es inmutable (M. Muzammal et al, 2019). Blockchain o Cadena de Bloques, es principalmente una base de datos descentralizada distribuida, que mantiene una lista completa de las transacciones de datos, protegidos de manipulaciones (E. Androulaki, 2018). Blockchain es una estructura de datos ordenada que contiene bloques de transacciones, cada transacción se va empaquetando en un bloque. Cada bloque de la cadena está vinculado al bloque anterior, y de ahí su nombre (A. Ben Ayed, 2017).

Debido al funcionamiento de la tecnología Blockchain es inevitable pensar que esta puede llegar a solucionar problemas de fraude en los sistemas de información, hablando generalmente, generando confianza plena en sistemas que implementen esta tecnología.

En el mundo, se están realizando implementaciones de sistemas basados en la tecnología Blockchain que permiten el registro de votos durante una jornada de elecciones en escenarios reales, como es el caso de Sierra Leona en 2018 (Chohan, U. 2018), el cual, ilustró el alto grado de transparencia que puede generar un sistema basado en tecnología Blockchain para elecciones populares. Así mismo, en se llevo a cabo un prototipo funcional de un sistema de votación basado en Blockchain para elecciones respectivas en 2 colegios de la ciudad de Bogotá, se destacó que el uso de esta tecnología permite el desarrollo de procesos electorales ágiles y rápidos, desde el momento de la votación hasta el momento de consolidación de los resultados (Alta Consejería Distrital de TIC, 2018).

17

Page 18: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

1.3 OBJETIVOS

1.3.1 Generales

Diseñar una solución de software de votaciones basada en la tecnología Blockchain usando el framework Hyperledger, para las elecciones de representante estudiantil en la Universidad de Córdoba.

1.3.2 Específicos

● Analizar documentación sobre la tecnología Blockchain.

● Analizar las aplicaciones que ha tenido la tecnología Blockchain en sistemas de

votaciones electrónicas.

● Recopilar información sobre el proceso de elecciones de representante estudiantil que se celebran en la Universidad de Córdoba.

● Implementar el framework Hyperledger en el diseño del sistema de votaciones.

18

Page 19: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

2. ESTADO DEL ARTE Toda la literatura encontrada y descrita en este proyecto obedeció a criterios donde el uso del blockchain era lo primordial, en muchos casos logramos ver los estudios y proyectos aquí mencionados no refieren exclusivamente a sistemas de votaciones electrónicas. En el 2009 se lanzó Bitcoin (S. Ølnes, 2017), una moneda virtual descentralizada que puede transferirse desde una persona a otra sin la intervención de un tercero como parte de la transacción (peer-to-peer) la característica descentralizada de esta moneda es heredada de un protocolo llamado Blockchain o cadena de bloques, el cual se ha consolidado como referente a los registros distribuidos (Nakamoto, 2018). Esta tecnología ha demostrado ser segura y robusta, principalmente por la característica de que la información es inmutable y procesada por algoritmos criptográficos, logrando que no solo sea aplicada para monedas virtuales o criptomonedas sino para cualquier ámbito donde se necesite tener transacciones seguras y eficaces de elementos virtuales, como lo serían el arte digital, historias clínicas, derechos de autor o votación electrónica, entre otros (S. Ølnes, 2017). Allen, D. W. E., Berg, C., Lane, A. M., & Potts, J. (2017). The economics of crypto-democracy. In CEUR Workshop Proceedings (Vol. 1897, pp. 63–73). CEUR-WS. Los procesos democráticos generan un problema económico, por los costos de logística que estos generan, un proceso electoral democrático implica validar al votante, registrar su voto, contar todos los votos efectuados y hacer público los resultados, teniendo en cuenta que los votos son contados por personas y son millones de votos realizados, abriendo la posibilidad de que se presenten eventos fraudulentos. Blockchain reduce los costos y garantiza seguridad, transparencia y anonimato, siendo esta descentralizada. Moura, T., & Gomes, A. (2017). Blockchain Voting and its effects on Election Transparency and Voter Confidence. In Proceedings of the 18th Annual International Conference on Digital Government Research - dg.o ’17(pp. 574–575). New York, New York, USA: ACM Press. Las elecciones públicas son una de las bases sobre las cuales se construye la democracia representativa, se utilizan varios métodos para llevar a cabo dichos procesos, de los cuales varios son electrónicos, los autores argumentan que los actuales métodos, especialmente los electrónicos, brindan satisfacción de transparencia a los votantes, es por ello, que sugieren la modernización mediante uso de tecnologías emergentes, como lo es el Blockchain para resolver los problemas de transparencia y confianza ante las elecciones públicas. Analizaron como la adopción de Blockchain en un marco de gobierno digital puede contribuir y promover la transparencia electoral, aumentar la auditabilidad, mejorar la confianza de los votantes y fortalecer la democracia. Ben Ayed, A. (2017). A Conceptual Secure Blockchain Based Electronic Voting System. International Journal of Network Security & Its Applications, 9(3), 01–09. En el mundo se han implementado sistemas de votaciones electrónicas, los países pioneros en esas implementaciones han sido Estonia y Noruega, unos de los principales beneficios ha sido el aumento significativo de la participación ciudadana, pero ha generado problemas de seguridad y transparencia, dado que estos sistemas no son de código abierto, y como son centralizados, son muy vulnerables ante ataques DDos, en algunos haciendo inaccesibles a los votantes. Los autores describen como Blockchain puede transmitir confianza y

19

Page 20: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

transparencia a los votantes, dado que la tecnología es de código abierto y es un sistema descentralizado. Baocheng Wang, (2017). Large-scale Election Based On Blockchain. North China University Of Technology, No.5 Jinyuanzhuang Road, Shijingshan District Beijing, Beijing 100144, China. Analizaron la seguridad de un sistema de votación basado en Blockchain y el rendimiento de los nodos en una elección democrática a gran escala, donde los votantes fueron aleatorios, para reproducir unas elecciones implementaron contratos inteligentes, que se usa para registrar, administrar, calcular y verificar durante el proceso de votación. Boucher, P. (2016). What if blockchain technology revolutionised voting? European Parliament Think Tank - Scientific Foresight: What If? El autor plantea si Blockchain fuese la tecnología revolucionaria que necesitan los sistemas actuales de votación electrónica para solucionar los problemas de seguridad que estos presentan. La democracia como la conocemos cambia consideradamente, actualmente los procesos son monitoreados por una autoridad centralizada, con la implementación de Blockchain se habla de Blockchain Enabled E-Voting (BEV), que deberia empoderar a los votantes, haciendo que un proceso de votación sea gestionado por la gente, siendo transparente y descentralizado. Martin, Samuel, Blockchain as a Solution to the United States’ Voter Turnout Issue (May 12, 2018). Son muchos los problemas que presentan un proceso de elección en los Estados Unidos, largas filas, poca participación, fallas mecánicas, errores humanos, intimidación de votantes y leyes electorales mal aplicadas. Un sistema de votación electrónica blockchain podría resolver esta serie de problemas que los estadounidenses enfrentan en las urnas. Shelkovnikov, A. (2016). Blockchain applications in the public sector. Deloitte. En el sector público se podría implementar Blockchain para abordar ineficiencias en los sistemas actuales y aumentar la eficacia de la prestación de servicios públicos, podría facilitar la votación en las elecciones, asegurando que cada persona elegible use un solo voto, este protocolo garantiza la seguridad y transparencia en este proceso. En este caso y otros más, Blockchain podría reducir el fraude y el error al tiempo que ofrece grandes beneficios en términos de eficiencia y productividad. Casi todas las partes del sector público podrían beneficiarse de alguna manera de la tecnología blockchain. Roy Lai, David LEE Kuo Chuen (2018), Chapter 7 - Blockchain – From Public to Private, Handbook of Blockchain, Digital Finance, and Inclusion, Volume 2, Pages 145-177. Antes de aplicar Blockchain a un proceso comercial se deben considerar algunos aspectos tecnológicos, cómo funciona, cómo implementar el protocolo, cómo usar contratos inteligentes, etc. Marijn Janssen, (2017), Blockchain in government: Benefits and implications of distributed ledger technology for information sharing, Government Information Quarterly, Volume 34, Issue 3, Pages 355-364. Blockchain se refiere a una gama de tecnologías de propósito general para intercambiar información y realizar transacciones de activos digitales en redes distribuidas. Una

20

Page 21: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

evaluación crítica de los beneficios y discusiones sobre las implicaciones para las organizaciones y procesos gubernamentales, que ofrecen indicaciones para futuras investigaciones sobre los beneficios potenciales de las aplicaciones Blockchain en el gobierno electrónico y podeR cumplir con las necesidades sociales y los valores públicos. Pierre Noizat, (2015), Chapter 22 - Blockchain Electronic Vote, Handbook of Digital Currency, Academic Press, Pages 453-461. Un problema de los sistemas de votación electrónico es que son centralizados, es decir, un solo proveedor que controla la base de códigos, la base de datos y las salidas del sistema, además carecen de un producto de código abierto e independiente verificable para ganarse la confianza que requieren los votantes y los organizadores electorales. Aprovechar la tecnología Blockchain como una base de datos de transacciones segura, para registrar los votos y auditar los resultados de las votaciones, es una solución que brinda transparencia a los candidatos y votantes para verificar el registro electoral y el recuento de votos a la vez que se protege el secreto de los votos. Jan Willemson, (2018), Bits or paper: Which should get to carry your vote?, Journal of Information Security and Applications, Volume 38, Pages 124-131. Comparar el sistema de votación tradicional (tarjetones) y votación por internet, en los aspectos como el voto el secreto, verificabilidad, integridad en la urna electoral, transparencia y confianza, ambos sistemas de votación presentan desventajas o debilidades, y se percibe más seguridad en las elecciones con tarjetones por la experiencia histórica, y las principales críticas a las votaciones por internet están injustamente asociadas a los riesgos y se han descuidado los beneficios, entre los cuales, reducir el costo de participación. Se debe dar una oportunidad a la votación por Internet, incluso si eso significa arriesgar amenazas desconocidas y aprender por ensayo y error. Chohan, U. (2018). Blockchain Enhancing Political Accountability? Sierra Leone 2018 Case. Se considera las posibilidades de reforzar la responsabilidad política utilizando sistemas Blockchain, y se utiliza las elecciones sierraleonesas de 2018 para ilustrar el caso de mayor transparencia y responsabilidad a través de la instalación de tecnologías basadas en Blockchain. Los hallazgos sugieren que las arquitecturas de Blockchain similares se pueden desplegar en otros países con el fin de reforzar la responsabilidad y la transparencia en el ámbito político. Vukolić, M. (2017). Hyperledger Fabric - an open-source distributed operating system for permissioned blockchains. Swiss Blockchain Summer School. Se describe Hyperledger Fabric (sistema de código abierto modular y extensible para implementar y operar Blockchain con permisos), su arquitectura, la lógica detrás de varias decisiones de diseño, su modelo de seguridad y garantías, sus aspectos de implementación más destacados, así como su modelo de programación de aplicaciones distribuidas. Hyperledger Fabric es el primer sistema blockchain verdaderamente extensible para ejecutar aplicaciones distribuidas. Admite protocolos de consenso modulares, lo que permite que el sistema se adapte a casos de uso particulares y modelos de confianza. Gönenç Gürkaynak, İlay Yılmaz, Burak Yeşilaltay, Berk Bengi, (2018), Intellectual property law and practice in the blockchain realm, Computer Law & Security Review, Volume 34, Issue 4, Pages 847-862.

21

Page 22: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Los avances tecnológicos ofrecidos por Blockchain prometen amplios rangos de uso en una variedad de sectores y áreas legales, incluida la ley de propiedad intelectual (PI), se discute sobre el impacto potencial en el registro, gestión y el cumplimiento de los derechos de propiedad intelectual. Los autores ofrecen las soluciones basadas en Blockchain para fomentar el funcionamiento de las oficinas de PI, reforzar los procedimientos aduaneros para detectar productos falsificados y mejorar la eficacia de la gestión de los derechos de PI por parte de los titulares de los derechos y concluyen brindando algunas sugerencias para allanar el camino para el avance de la tecnología blockchain y para aumentar el número de personas que esta tecnología alcanza. Khan, K. M., Arshad, J., & Khan, M. M. (2018). Secure Digital Voting System Based on Blockchain Technology. International Journal of Electronic Government Research (IJEGR), 14(1), 53-62. Existen desafíos para lograr la adopción generalizada de sistemas de votación electrónica, especialmente con respecto a la mejora de su resiliencia frente a posibles fallas, a pesar de sus beneficios frente al sistema de tarjetones, como una mayor eficiencia y reducción de errores. Blockchain es una tecnología disruptiva de la era actual y promete mejorar la resiliencia general de los sistemas de votación electrónica y con el fin de aprovechar los beneficios de Blockchain, como los fundamentos criptográficos y la transparencia, se propone esquema efectivo para el voto electrónico, el cual se ajusta a los requisitos fundamentales para los esquemas de voto electrónico y logra la verificabilidad de extremo a extremo, evaluado en profundidad demostrando el éxito de su eficacia. E. Yavuz, A. K. Koç, U. C. Çabuk and G. Dalkılıç, "Towards secure e-voting using ethereum blockchain," 2018 6th International Symposium on Digital Forensic and Security (ISDFS), Antalya, 2018, pp. 1-7. El Blockchain con los contratos inteligentes, emerge como un buen candidato para usar en desarrollos de sistemas de votación electrónica más seguros, más baratos, más transparentes y más fáciles de usar. Ethereum y su red es una de las más adecuadas, debido a su consistencia, uso generalizado y provisión de lógica de contratos inteligentes. Los autores desarrollaron una aplicación para el voto electrónico, basada en Blockchain usando la red Ethereum y los contratos inteligentes, y se considera que los votantes puedan usar aplicaciones Android para efectuar sus votos. Catalini, C. (2017). The Potential for Blockchain to Transform Electronic Health Records. Harvard Business Review, 3, 1–7. Al intentar conciliar manualmente los datos médicos entre clínicas, hospitales, laboratorios, farmacias y compañías de seguros. No funciona bien porque no hay una lista única de todos los lugares donde se pueden encontrar dichos datos o el orden en que se ingresaron. Además, aunque los estándares de datos son mejores que nunca, cada registro de salud electrónico (EHR) almacena datos usando diferentes flujos de trabajos, por lo que no es obvio quién guardó qué y cuándo. Imagine que cada EHR enviará actualizaciones sobre medicamentos, problemas y listas de alergias a un libro de confianza, de código abierto, de toda la comunidad, de modo que las adiciones y sustracciones al registro médico fueran bien entendidas y auditables en todas las organizaciones. En lugar de solo mostrar datos de una única base de datos, el EHR podría mostrar datos de todas las bases de datos a las que se hace referencia en el libro mayor.

22

Page 23: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Yunsen Wang, Alexander Kogan, (2018), Designing confidentiality-preserving Blockchain-based transaction processing systems, International Journal of Accounting Information Systems. Blockchain es una de las tecnologías emergentes más disruptivas y prometedoras, y parece tener el potencial de afectar significativamente los campos de auditoría y contabilidad. Los autores plantean un diseño para un sistema de procesamiento de transacciones basado en blockchain (TPS) y desarrollan un prototipo para demostrar la funcionalidad del TPS basado en blockchain en contabilidad en tiempo real, continuo monitoreo y prevención de fraude, además superan algunas de las principales barreras en la adopción de esta tecnología. Muhammad Muzammal, Qiang Qu, Bulat Nasrulin, (2018), Renovating blockchain with distributed databases: An open source system, Future Generation Computer Systems, Volume 90, Pages 105-117. Un blockchain es una estructura de datos descentralizada vinculada que se caracteriza por su resistencia inherente a la modificación de datos, pero es deficiente en consultas de búsqueda principalmente debido a su formato de datos inferior. Los autores describen a ChainSQL una plataforma de código abierto de aplicación de base de datos blockchain que tiene las características descentralizadas, distribuidas y de audibilidad del blockchain y procesamiento rápido de consultas y bien diseñado estructura de datos de las bases de datos distribuidas, y le realizan una evaluación experimental exhaustiva para demostrar la efectividad del sistema. Wattana Viriyasitavat, Danupol Hoonsopon, (2018), Blockchain characteristics and consensus in modern business processes, Journal of Industrial Information Integration. La tecnología Blockchain ha atraído una gran cantidad de atenciones como una forma efectiva de innovar procesos de negocios. Tiene que estar integrado con otros componentes del sistema Business Process Management (BPM) para implementar funciones específicas relacionadas con las aplicaciones. Los esfuerzos actuales para integrar esta tecnología en BPM se encuentran en una etapa muy temprana. Los autores plantean una arquitectura de procesos de negocio en la era Blockchain para superar los problemas de inconsistencia de tiempo y sesgo de consenso, ocasionado por los nodos. La arquitectura proporciona persistencia, validez, auditabilidad y desintermediación que ofrece Blockchain. A. Alimoğlu and C. Özturan, "Design of a Smart Contract Based Autonomous Organization for Sustainable Software," 2017 IEEE 13th International Conference on e-Science (e-Science), Auckland, 2017, pp. 471-476.

Las organizaciones autónomas distribuidas pueden implementarse utilizando contratos inteligentes disponibles en la cadena de bloques de Ethereum. Los autores proponen un modelo de organización de software autónomo distribuido que implementa contratos inteligentes de Ethereum llamada AutonomousSoftwareOrg para proporcionar una organización virtual que opera continuamente para comunidades y usuarios de desarrollo de software. AutonomousSoftwareOrg facilita un mecanismo de financiación basado en criptomonedas, un mecanismo de toma de decisiones basado en la votación y el mantenimiento de registros para citaciones y ejecuciones de uso de software. Clare Sullivan, Eric Burger, (2017), E-residency and blockchain, Computer Law & Security Review, Volume 33, Issue 4, Pages 470-481.

23

Page 24: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Se examina las implicaciones legales, políticas y técnicas del E-Residency, un sistema que permite que cualquier persona, en cualquier lugar del mundo, se postule para convertirse en residente electrónico. La aplicación de blockchain en E-Residency tiene el potencial de cambiar fundamentalmente la manera en que se controla y auténtica la información de identidad, dado que esta aplicación implementa un E-ID que es emitido a residentes electrónicos de Estonia y permite actividades comerciales con los sectores público y privado. Dubovitskaya, A., Xu, Z., Ryu, S., Schumacher, M., & Wang, F. (2017). Secure and Trustable Electronic Medical Records Sharing using Blockchain. AMIA ... Annual Symposium Proceedings. AMIA Symposium, 2017, 650–659. Las perspectivas sobre el manejo de datos de cuidado de la salud basado en blockchain, en particular, para compartir datos de los registros médicos electrónicos (EMR) entre proveedores de servicios de salud y para estudios de investigación. Por lo que proponen un marco para administrar y compartir datos de EMR para la atención del paciente con cáncer. Implementaron un su marco un prototipo que garantiza la privacidad, la seguridad, la disponibilidad y el control de acceso detallado sobre los datos EMR. El trabajo que proponen puede reducir significativamente el tiempo de respuesta para el intercambio de EMR y mejorar la toma de decisiones para la atención médica y reducir el costo total. Cunningham, J., & Ainsworth, J. (2017). Enabling patient control of personal electronic health records through distributed ledger technology. In Studies in Health Technology and Informatics(Vol. 245, pp. 45–48). La gestión de registros electrónicos de salud, donde la conformación a las regulaciones legislativas y el mantenimiento de la confianza pública son primordiales, es un área donde el impacto de estas nuevas tecnologías puede ser particularmente beneficioso. Los autores presentan un sistema que permite el control personalizado y detallado del acceso de terceros a los registros electrónicos de salud de los pacientes, lo que permite a las personas especificar cuándo y cómo se accede a sus registros con fines de investigación. El uso del contrato inteligente basado en la tecnología blockchain de Ethereum para implementar este sistema le permite operar en un entorno verificablemente seguro, confiable y auditable, características cruciales para el avance de los sistemas de información de salud. Roberto Casado-Vara, Javier Prieto, Fernando De la Prieta, Juan M. Corchado, (2018), How blockchain improves the supply chain: case study alimentary supply chain, Procedia Computer Science, Volume 134, Pages 393-398. Los autores proponen un nuevo modelo de cadena de suministro a través de blockchain. Este nuevo modelo permite el concepto de economía circular y elimina muchas de las desventajas de la cadena de suministro actual, como las relaciones entre los miembros de la cadena de suministro o la falta de información para el consumidor sobre el origen de los productos. Para coordinar todas las transacciones que tienen lugar en la cadena de suministro, se crea un sistema multiagente. Karp, N. (2015). Tecnología de cadena de bloques (blockchain): la última disrupción en el sistema financiero. Observatorio Económico EEUU, 3. Los beneficios de Blockchain se están viendo casi masivamente en el sector financiero, las instituciones han sido lentas en reconocer el potencial de la tecnología de blockchain; sin embargo, muchos grandes bancos han invertido considerables sumas de dinero en esta tecnología. Esta atención probablemente es el resultado de lo disruptiva que es dicha tecnología para el sector financiero, especialmente si permite la simplificación masiva de los

24

Page 25: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

procesos bancarios y reduce notablemente los costos. La probabilidad de que un sistema descentralizado se convierta en algo común no está clara, ya que tendría que ofrecer el mismo o un mayor nivel de confianza y protección que el sistema actual, las mejoras y modificaciones de la tecnología blockchain podrían superar algunos de estos obstáculos y dar lugar a una aceptación más generalizada. Por tanto, ahora la pregunta clave no es cómo sino cuándo la disrupción será de amplio alcance. Como ha sucedido en otros sectores que se han transformado por las nuevas tecnologías y la digitalización, la tecnología blockchain podría reestructurar el sector financiero mucho más allá del sistema de pagos.

25

Page 26: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

3. MARCO CONCEPTUAL

Para lograr el desarrollo de este proyecto, se requiere conocer algunos conceptos que se relacionan y se usan en este trabajo. La votación es una herramienta de los sistemas democráticos, la cual es en esencia una consulta a las personas que pueden intervenir en la decisión que se va a tomar con un sistema de votación, independientemente de la tecnología o procedimientos que se lleven a cabo. Existen ciertas características que definen a una votación popular, las cuales se tuvieron en cuenta para llevar a cabo el objetivo de este trabajo.

- Voto Único: el voto debe ser ejercido de forma efectiva una sola vez por la misma persona durante la votación.

- Voto Privado: el voto es secreto. - Integridad de los Votos: una vez emitido, nadie podrá modificarlo. - Integridad de la Votación: no debe ser posible modificar los resultados finales de la

votación. - Auditoría Individual: se debe garantizar que un voto individual se cuenta

correctamente. - Auditoría Universal: se debe garantizar que el proceso y recuento de votos se hace

correctamente. (A. Marín Bermúdez, 2016) Los sistemas de votación tradicional se basa depositar en urnas las papeletas de voto marcadas con la elegida por el votante, a medida que ha avanzado la tecnología se han implementado sistemas electrónicos (implementación TIC a un proceso de votación) que satisfagan las características y/o necesidades de un sistema de votación. Actualmente se habla de una tecnología que puede implementarse en sistemas de votación electrónica, debido a ciertas características que hacen que esta tecnología se la ideal para estos sistemas. Blockchain es una base de datos descentralizada distribuida, donde la información almacenada se replica en todos los nodos que hacen parte de la red, se caracteriza por su resistencia inherente a la modificación de los datos (K. Khan, 2018). Una red descentralizada, la cual se componen por nodos se conocen como red Peer to Peer (P2P) y cada nodo presente en la red, se superpone como servidor y cliente dependiendo de lo requerido en el momento. En una red Blockchain, la información que será almacenada en el libro de registros (Ledger) o libro mayor, viene encriptada dentro de una transacción, la cual es validada por un protocolo de consenso y si cumple con los requisitos mínimos, esta transacción será a agregada a un bloque, que no es más que un conjunto de transacciones que se van empaquetando hasta la capacidad (tamaño) disponible del bloque, la cual siempre es fija, a cada bloque se le agrega un hash que lo enlaza con el bloque anterior. La transacción es enviada por un cliente (aplicación o servicio que interactúa con la red para consultar o registrar la información), cabe a anotar que la información que entra a la red se encripta para garantizar la inmutabilidad de los datos. Por otro lado, se crean aplicaciones que viajan por la red blockchain y son capaces de registrar información, pautar reglas que si se cumplen ejecutan alguna acción, o almacenar información en una base de datos de estado de la red, estas aplicaciones son llamadas contratos inteligentes y logran la versatilidad de la red en ser implementados en cualquier ámbito de nuestro sociedad, en este caso votaciones.

26

Page 27: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Muchas plataformas de blockchain están siendo adaptadas para uso empresarial, y se ha creado un marco de trabajo (framework) con una arquitectura para uso empresarial, que no requiere criptomoneda en la red (no hay proceso de minado) para validar las transacciones que llegan a la red. Hyperledger Fabric es un proyecto de código abierto para empresas con tecnología de libro mayor autorizado (DLT), es modular y de arquitectura configurable, no es anónima, es decir, que cada participante de la red es conocido por todos. Hyperledger Fabric, se componen de ciertos elementos, los cuales se describen a continuación: Canales: son mecanismos de partición de datos que permiten la visibilidad de las transacciones sólo para las partes interesadas. Cada canal es una cadena independiente de bloques de transacciones que contiene sólo transacciones para ese canal en particular. Este mecanismo funciona mediante la delegación de transacciones a diferentes ledgers. Solo los miembros del canal participan en el consenso, mientras que otros miembros de la red no ven las transacciones en el canal. Por ejemplo, los miembros de un canal pueden ver sus precios pero no los precios a los que se vende un producto a los miembros de otro canal. Contratos Inteligentes (Chaincode): encapsula las definiciones de los activos o modelos de información y la lógica de negocios (o transacciones) para modificar esos modelos. Las invocaciones de transacción producen cambios en el libro mayor. Libro Mayor (Ledger): contiene el estado actual de la red y una cadena de invocaciones de las transacciones. Servicio de Ordenamiento: es una colección de nodos que ordena las transacciones que llegan a la red, dentro de este servicio es donde se realiza el consenso, que valida las transacciones. Estado Global: refleja los datos actuales sobre todos los activos en la red. Esta información se almacena en una base de datos para un acceso eficiente. Las invocaciones de chaincode ejecutan transacciones contra los datos de estado actuales. Para que estas interacciones de chaincodes sean extremadamente eficientes, los últimos pares clave / valor para cada activo se almacenan en una base de datos de estado (motor CouchDB). La base de datos del estado es simplemente una vista indexada de las transacciones que han hecho commit en el blockchain. Por lo tanto, puede regenerarse en cualquier momento. La base de datos del estado se recuperará automáticamente (o se generará, si es necesario) tras el arranque de los nodos, antes de que se acepten nuevas transacciones. Proveedor de Servicios de Membresía (MSP): administra la identidad y el acceso permitido para clientes y pares. Hyperledger Fabric es una red autorizada, lo que significa que solo los participantes que han sido aprobados pueden obtener acceso a la red. Para gestionar la membresía y la identidad de la red, los proveedores de servicios de membresía administran los IDs de usuario y autentican a todos los participantes en la red. MSP permiten la membresía dinámica para agregar o eliminar miembros, mantiene la integridad y el funcionamiento de la red.

27

Page 28: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Certificado de Autoridad: un nodo puede participar en la red blockchain a través de una identidad digital emitida por una autoridad de confianza del sistema. En el caso más común, las identidades digitales (o simplemente identidades) tienen la forma de certificados digitales validados criptográficamente que cumplen con el estándar X.509 y son emitidos por una Autoridad de Certificación (CA). La red que funcionará en este proyecto, usa la tecnología Docker, que es una plataforma abierta para que desarrolladores y administradores de sistemas desarrollen, envíen y ejecuten aplicaciones distribuidas, ya sea en computadoras portátiles, máquinas virtuales de centros de datos o en la nube. Docker empaqueta software en “contenedores” que incluyen en ellos todo lo necesario para que dicho software se ejecute, incluidas librerías. Con Docker se puede implementar y ajustar la escala de aplicaciones de una forma rápida en cualquier entorno con la garantía de que el código se ejecutará. [Recibido desde: https://platzi.com/contributions/guia-del-curso-de-docker]

28

Page 29: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

4. MATERIALES Y MÉTODOS

4.1 TIPO DE INVESTIGACIÓN

Este proyecto se llevará a cabo por medio de una investigación descriptiva, por lo que primeramente se recopilará documentación sobre el funcionamiento de la tecnología Blockchain, se tendrá en cuenta artículos o trabajos nacionales e internacionales para poder desarrollar nuestro proyecto en un ámbito global, se le dará relevancia a aquellos escritos que describen la implementación de sistemas de votación electrónica en el mundo y los avances que se han tenido hasta el momento, de igual forma, se tratará toda la documentación que refiere a sistemas de votación electrónica basados en la tecnología Blockchain. Se estudiará las características de Fabric del marco de trabajo de Hyperledger con el que se implementará el desarrollo de este proyecto, posteriormente, se planteará los patrones de diseño para estructura de los datos y el desarrollo de la interfaz y se definirá la arquitectura del sistema. Una vez teniendo un prototipo funcional, se procederá a realizar las pruebas del funcionamiento básico del sistema, organizando una corta jornada de votaciones, simulando el escenario a pequeña escala de lo que seria las elecciones para representante estudiantil en la Universidad de Córdoba, para efectuar dichas pruebas, se solicitará los permisos correspondientes en la facultad para llevar a cabo dicho proceso. Luego de culminada la jornada, se revelarán los resultados y se analizará el comportamiento del sistema para sugerir cambios o mejoras de este.

4.2 POBLACIÓN Y MUESTRA

La población que se tuvo en cuenta para el desarrollo de este trabajo, abarca a todos los estudiantes de la Universidad de Córdoba que son potenciales participantes de las votaciones a representante estudiantil ante el consejo académico, que se llevan a cabo en el plantel. La muestra representativa de la población, descrita anteriormente, fue tomada de un cierto número de estudiantes de la carrera de Ingeniería de Sistemas del alma mater, con el fin de materializar una prueba del sistema.

4.3. FASES DEL PROYECTO

A continuación se describen las fases que se llevaron a cabo para el desarrollo de este proyecto.

4.3.1 FASE I: Investigación Del Proyecto

Con el objetivo de familiarizarse con la documentación referente a este proyecto, como lo es los sistemas de votación electrónica y la tecnología que se busca implementar en un sistema de estos, se procedió a indagar en Internet, principalmente en Mendeley.com para localizar artículos y tesis relacionados con el tema fundamental de este trabajo.

29

Page 30: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Conforme al desarrollo de esta fase del proyecto, se logró organizar conceptos y adquirir nuevos conocimientos necesarios para diseñar y desarrollar la plataforma, en la que implementaremos la tecnología blockchain. Se consultó sobre sistemas de votación electrónica que han usado la tecnología, también sobre el marco de trabajo que usaremos para el desarrollo de nuestra red blockchain, las características que posee este marco de trabajo y como podemos adecuarlo para la necesidad de nuestro proyecto.

4.3.2 FASE II: Identificación De Los Requerimientos En esta fase, logramos identificar los requerimientos que deberían ser parte de nuestro proyecto, los cuales consideramos son los necesarios para llevar a cabo el funcionamiento de un sistema de votación.

4.3.2.1 Requerimientos Funcionales

Tabla 1: Requerimientos funcionales

Código Requerimiento Prioridad

RF1 Para gestionar la plataforma, el administrador debe iniciar sesión con usuario y contraseña.

ALTA

RF2 Se debe permitir al administrador registrar elecciones, en las cuales se agruparan los candidatos; registrar candidatos, votantes y votos.

ALTA

RF3 Permitir al administrador modificar la información registrada para las elecciones, candidatos y votantes.

ALTA

RF4 Consultar y validar si un votante puede ejercer el voto. ALTA

RF5 Permitir al administrador eliminar candidatos. BAJA

RF6 Visualizar los candidatos y poder elegir solo uno de la opciones.

ALTA

RF7 Permitir al administrador deshabilitar un votante. MEDIA

RF8 Permitir al administrador cambiar el estado de una elección (Iniciada o Finalizada)..

ALTA

RF9 Visualizar los resultados parciales o finales de la elección. ALTA

30

Page 31: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

4.3.2.2 Requerimientos No Funcionales

Tabla 2: Requerimientos no funcionales

Código Requerimiento Prioridad

RN1 Visualizar para efectuar el voto desde cualquier computador o dispositivo móvil.

ALTA

RN2 La plataforma debe contar con una interfaz amigable para el administrador y para el votante.

MEDIA

RN3 La plataforma debe ser intuitiva para el administrador. ALTA

4.3.3 FASE III: Diseño Del Software

Llegando a esta fase, describimos de forma general los procesos que se llevaron a cabo para diseñar la plataforma de este proyecto. El diseño de la interfaz, está basado en ciertas técnicas de diseño Interfaz de Usuario (UI) para la intuitividad de la plataforma y en el registro de la información de los respectivos modelos, aplicando técnicas de experiencia de usuario (UX) para lograr una interfaz agradable. Para continuar, con la descripción de esta fase, más adelante en la sección 5.3, entramos en detalle sobre la funciones del sistema a través de casos de usos y diagramas.

4.3.4 FASE IV: Desarrollo Del Software

Durante esta fase, tuvimos en cuenta todo lo que se desarrolló en la fase anterior, aquí inició el proceso de construcción del sistema de este proyecto, programando las funciones que permitieron cumplir con los requisitos funcionales y no funcionales descritos en la sección 4.3.2. Se hizo uso de los lenguajes de programación: Javascript y Go, se implementaron tecnologías vanguardistas en el desarrollo de plataformas web, como lo son React, NodeJs, Docker. Se desarrolló un aplicación cliente (reactjs), con la que se interactúa con los usuarios; una aplicación servidor (nodejs) o web service que sería el puente entre la aplicación cliente y Software Developer Kit (SDK) de Hyperledger Fabric, que permite el envío y recepción de la información en la red; se configuró la red blockchain con Hyperledger Fabric (dockers), basándose en indicaciones descritas en la documentación oficial de este marco de trabajo.

31

Page 32: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

4.3.5 FASE V: Evaluación, Pruebas E Impacto

Durante el desarrollo de la fase anterior, se llevaron a cabo pruebas individuales por cada funcionalidad, a medida que se fue avanzando en el desarrollo del sistema, se iban realizando pruebas en grupo que relacionen a los requerimientos, dichas pruebas se describen a continuación:

- Inicio de sesión del administrador en la plataforma, cuando se proporcionan correctamente los datos de acceso, el sistema lo redirecciona a panel de administración (dashboard).

- El registro de elecciones, funciona sin inconvenientes, después de registrar una se actualiza la lista.

- El registro candidatos y votantes, se valida que no existan registrados, los cuales son identificados por un número de identificación personal.

- Consulta de votante y validar si puede votar en el sistema, además de efectuar el voto y registrarlo correctamente.

- Listar los votos de una elección y para cada candidato.

4.4 METODOLOGÍA DE DESARROLLO Para cumplir con los objetivos propuestos y requerimientos de este proyecto, se optó por usar una metodología de desarrollo híbrida RUP-SCRUM (COMPARANDO SCRUM Y RUP, 2012), con el fin de aprovechar las ventajas de cada una de estas metodologías, se tuvo en cuenta el énfasis que propone RUP para la generación de la arquitectura del proyecto, se realizaron únicamente los diagramas necesarios para el entendimiento de la arquitectura, se especificaron los casos de usos en formatos formales, la planeación se basó en las etapas del RUP (inicio, análisis, construcción e implementación), no se especifica las iteraciones, dado que son características similares entre las dos metodologías. Las etapas de desarrollo (RUP) del proyecto se llevaron a cabo de la siguiente forma:

- Inicio: se definieron los casos de usos con base a los requerimientos funcionales y no funcionales, así mismo se definió el alcance del proyecto.

- Análisis: basándonos en los casos de usos definidos, se desarrolló la arquitectura del sistema.

- Construcción: en esta etapa, y con los casos de uso y la arquitectura del sistema, se desarrolló el sistema, con todos sus componentes (aplicación cliente, web service, red blockchain), a medida que se fue desarrollando funcionalidades individuales, fueron puestas a prueba.

- Implementación: se llevó a cabo una vez el sistema estuviera terminado, haciendo una prueba final y simulando una votación con estudiantes voluntarios que algunos se eligieron como candidatos y el resto como votantes. Posterior a esto, se desarrolló un manual de usuario, con el que se ilustra el funcionamiento de la plataforma.

32

Page 33: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5. DESARROLLO DEL SISTEMA

5.1. ANÁLISIS

Se desarrolló una plataforma web, que permite al administrador registrar y modificar a votantes, elecciones y candidatos a una elección, de igual forma, permite a un votante registrado seleccionar un candidato de una lista registrada a la elección que previamente fue iniciada (estado de la elección) y efectuar un voto por el candidato seleccionado, además en la plataforma se puede ver los resultados de una votación de forma parcial o final. Para garantizar confianza de este sistema, se implementó una red blockchain, usando el marco de trabajo (framework) Hyperledger Fabric, en el cual proporciona varios componentes que levantan a nuestra red. Nuestra plataforma web por medio de un web service intercambia información con nuestra red. Debido a que nuestra plataforma está enfocada en la web, para acceder a ella debemos dirigirnos a un enlace de acceso, que se puede visualizar en cualquiera de los navegadores web más populares.

5.2 ARQUITECTURA

La plataforma consta de 3 componentes generales que interactúan entre sí, para dar funcionamiento a este sistema, los cuales se describen a continuación:

- Cliente: consiste en la aplicación web, con la que el usuario final (administrador y votante) accederán a las funcionalidades de esta plataforma, corresponde a la interfaz de usuario con la que se busca que los actores mencionados interactúen con la información registrada en la red blockchain.

- Servidor: es un web service, que implementa SDK de Hyperledger Fabric, para el registro de transacciones y la consulta de datos de estado de la red blockchain, básicamente funciona como un puente entre el cliente y la red blockchain

- Red Blockchain: es donde se registra todas las transacciones que el cliente envía o consulta, funciona de forma independiente a los componentes anteriormente mencionados.

El modelo de la arquitectura de este sistema, se basó en el modelo cliente-servidor, debido a la división que se da entre la interacción con el usuario y la parte lógica-funcional de la plataforma, este modelo permite que se pueda desarrollar una aplicación cliente en las diferentes plataformas existentes, como lo es, web, móvil y aplicaciones de escritorio.

33

Page 34: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 1: Arquitectura del Sistema

Cuando se desea registrar información en la red blockchain, desde el cliente se envían la información al servidor, el servidor lleva a cabo el flujo de la transacción, el cual se describe a continuación:

- Propuesta de transacción: donde las aplicaciones clientes mandarán sus transacciones hacia la red, por medio de los nodos de aprobación (endorsing peer, EP), cada EP simula la transacción propuesta, sin actualizar el ledger. Los EP capturan el conjunto de datos leídos y escritos, llamados conjuntos RW. Un cliente usa un SDK para crear un propuesta de transacción que es enviada a los nodos de aprobación (endorsing peer), tal cual como se aprecia en la Figura 2.

Figura 2: Propuesta de Transacción. Recibida desde https://hyperledger-fabric.readthedocs.io/en/release-1.4/txflow.html

34

Page 35: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

- Los conjuntos de RW tienen lo que se leyó del estado global mientras se simulaba la transacción, así como lo que se habría escrito si se hubiera ejecutado la transacción. Estos conjuntos RW son luego firmados por el EP y devueltos a la aplicación cliente para ser utilizados en futuros pasos del flujo de transacción, como se puede apreciar en la Figura 3. Estos EP tendrán, por lo tanto, los contratos inteligentes que han de simular.

Figura 3: Conjuntos RW firmados. Recibida desde https://hyperledger-fabric.readthedocs.io/en/release-1.4/txflow.html

- La aplicación envía la transacción aprobada y los conjuntos RW al servicio de

ordenamiento, este servicio ordena esta información en un bloque y entrega el bloque a todos los nodos que registran el bloque a la red (committing peer, CP). El servicio de ordenamiento acepta las transacciones aprobadas y especifica el orden en que esas transacciones se registran en el libro mayor, en la Figura 4 se logra apreciar lo descrito anteriormente. La implementación específica de del servicio de ordenamiento es configurable en Fabric.

Figura 4: Servicio de ordenamiento. Recibida desde https://hyperledger-fabric.readthedocs.io/en/release-1.4/txflow.html

- El servicio de ordenamiento envía la transacción los CP y estos validan la transacción

comprobando que los conjuntos de RW aún coinciden con el estado global actual, este proceso es descrito en la Figura 5. Específicamente, que los datos de lectura que existieron cuando los EP simularon la transacción son idénticos al estado global actual. Una vez validada la transacción se ejecuta y el estado global cambia. Si la transacción falla, esto es que el estado global no corresponde con el aprobado, la transacción ordenada en un bloque seguirá incluyéndose en ese bloque, pero se

35

Page 36: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

marcará como no válida, y el estado global no se actualiza. Los CP son responsables de agregar bloques de transacciones al ledger y actualizar el estado. Pueden tener contratos inteligentes, pero no es un requisito.

Figura 5: Nodos de registros. Recibida desde https://hyperledger-fabric.readthedocs.io/en/release-1.4/txflow.html

- Por último, los CP son los encargados de notificar de forma asíncrona a la aplicación

cliente el éxito o el fracaso de la transacción, este proceso es descrito en la Figura 6.

Figura 6: Notifica a la aplicación. Recibida desde https://hyperledger-fabric.readthedocs.io/en/release-1.4/txflow.html

36

Page 37: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 7: Flujo de Transacción. Recibida desde https://hyperledger-fabric.readthedocs.io/en/release-1.4/txflow.html

5.3 DISEÑO

Se utilizó Cacco (cacco.com) como herramienta para el diseño de los diagramas UML y la arquitectura del sistema, los cuales ilustra el proceso que se llevó a cabo para el desarrollo del sistema en general.

5.3.1 Modelo Entidad-Relación

Debido a la naturaleza del proyecto, la base de datos no es relacional, y el motor que utilizamos (CouchDB) solo es para almacenar el estado de la aplicación, la arquitectura blockchain permite que la persistencia de datos de la red sea distribuida entre los nodos, como se había explicado anteriormente, cada nodo almacena una copia de toda la información existente en la red, esta información está contenida en bloques (cadena de bloques) y cada bloque tiene consigo un conjunto de transacciones, estas transacciones llevan consigo la información que se ha almacenado en la red. Para estructurar cómo se almacenan los datos se desarrolló un modelo simulado de Entidad - Relación.

37

Page 38: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 8: Modelo Entidad - Relación simulado.

5.3.2 Modelo Orientado A Documentos

Con base a lo descrito en la sección 5.3.1, se planteó un modelo orientado a documentos para visualizar como la persistencia de datos está estructurada en la red blockchain y en la base de datos de estado.

Figura 9: Modelo Orientado a Documentos

38

Page 39: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.3 Casos De Usos

5.3.3.1 Gestión De Candidatos

5.3.3.1.1 Registrar

Tabla 3: CU-GC-01 Registrar Candidato.

CU-GC-01 Registrar Candidato

Descripción El sistema deberá permitir registrar un candidato tal como se describe en este caso de uso

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea registrar un candidato

Secuencia Normal 1. El administrador diligencia la información requerida del candidato en el formulario

2. Selecciona una imagen del rostro del candidato

3. Envía el formulario diligenciado. 4. Se valida la información del formulario

a. Si se registra correctamente, el sistema mostrará mensaje de confirmación.

Excepciones 4. Si la información no se puede validar a. Se mostrará un mensaje informando del

error

Comentarios

5.3.3.1.2 Modificar

Tabla 4: CU-GC-02 Modificar Candidato.

CU-GC-02 Modificar Candidato

Descripción El sistema permitirá al administrador modificar información del candidato

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea modificar un candidato previamente seleccionado

Secuencia Normal 1. El administrador diligencia la información que desea cambiar 2. Si se selecciona una nueva imagen 3. Envía el formulario 4. Se valida la información diligenciada 5. Se procede a identificar si hay una nueva imagen seleccionada

a. Si la hay, se procede a modificar la existente b. Si no la hay, se ignora

6. En cualquiera de los dos casos el sistema mostrará un mensaje confirmando la modificación

39

Page 40: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Excepciones 4. Si la información no se puede validar b. Se mostrará un mensaje informando del error

Comentarios

5.3.3.1.3 Eliminar

Tabla 5: CU-GC-03 Eliminar Candidato.

CU-GC-03 Eliminar Candidato

Descripción El sistema permitirá eliminar a un candidato del sistema, siempre y cuando no haya iniciado la contienda en el sistema.

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea eliminar un candidato previamente seleccionado

Secuencia Normal 1. El sistema enviará una alerta de confirmación preguntando si desea continuar con el proceso

a. Si el usuario confirma continuar, se procederá a eliminar al candidato

b. Si el usuario cancela el proceso, no se eliminará al candidato

2. .En cualquier de los dos casos, se cierra la alerta de confirmación y se procede a invocar el caso de uso CU-GC-04

Excepciones

Comentarios

5.3.3.1.4 Listar

Tabla 6: CU-GC-04 Listar Candidatos.

CU-GC-04 Listar Candidatos

Descripción El sistema permitirá visualizar el listado de los candidatos registrados en el sistema.

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea ver el listado de candidatos registrados

Secuencia Normal 1. El sistema visualizará los candidatos que están registrados en el sistema, podrá elegir la opción de modificar o eliminar

a. Si el usuario administrador selecciona modificar se aplicara el caso de uso CU-GC-02

b. SI el usuario administrador selecciona eliminar continuará en el caso de uso CU-GC-03

Excepciones 1. Si no hay candidatos registrados se mostrará el mensaje ‘No hay candidatos registrados’

Comentarios

40

Page 41: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.3.2 Gestión De Elecciones

5.3.3.2.1 Registrar

Tabla 7: CU-GE-01 Registar Elección.

CU-GE-01 Registrar una Elección

Descripción El sistema permitirá agregar una elección, y configurarla con los parámetros necesarios con los que se llevará a cabo dicho proceso.

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea registrar una elección.

Secuencia Normal 1. El administrador diligencia la información requerido para una nueva elección.

2. Envía el formulario diligenciado. 3. Se valida la información del formulario

a. Si se registra correctamente, el sistema mostrará mensaje de confirmación.

Excepciones 3. Si la información no se puede validar a. Se mostrará un mensaje informando del error

Comentarios

5.3.3.2.2 Iniciar

Tabla 8: CU-GE-02 Iniciar Elección.

CU-GE-02 Iniciar Elección

Descripción El sistema permitirá dar inicio a un proceso de elección previamente registrada en el sistema.

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea iniciar una elección previamente seleccionada, esta elección debe tener candidatos asignados y que hayan votantes registrados.

Secuencia Normal 1. El sistema enviará una alerta de confirmación indicando si está seguro continuar con el proceso.

a. Si el administrador responde afirmativamente, se llevará a cabo el inicio de la elección en cuestión.

b. Si el administrador cancela el proceso no se dará inicio a la elección seleccionada.

2. En cualquiera de los dos casos, se cierra la alerta de confirmación y se invoca el caso de uso CU-GE-06

Excepciones

Comentarios

5.3.3.2.3 Finalizar

Tabla 9: CU-GE-03 Finalizar Elección.

CU-GE-03 Finalizar Elección

41

Page 42: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Descripción El sistema podría finalizar automáticamente una elección para clausurar el proceso de elección. El sistema permitirá al administrador finalizar una elección..

Precondición Cumplir con el parámetro de finalización, se tiene en cuenta la fecha y hora agregada al momento de registrar la elección o El administrador ha iniciado sesión y ha indicado que desea finalizar una elección previamente seleccionada..

Secuencia Normal Cuando el administrador ha indicado finalizar el proceso. 1. El sistema mostrará una alerta de confirmación preguntando si

desea continuar con el proceso. a. Si desea continuar el proceso se finalizará la elección. b. Si se cancela, no se finalizará la elección.

2. En cualquier de los dos casos, se cerrar la alerta de confirmación y se invocará el caso de uso CU-GE-06

Automáticamente 1. El sistema llevará a cabo finalizar la elección

Excepciones

Comentarios

5.3.3.2.4 Modificar

Tabla 10: CU-GE-04 Modificar Elección.

CU-GE-04 Modificar una Elección

Descripción El sistema permitirá modificar los parámetros de una elección.

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea modificar una elección previamente seleccionada.

Secuencia Normal 1. El administrador diligencia la información requerido. 2. Envía el formulario diligenciado. 3. Se valida la información del formulario

a. Si se modifica correctamente, el sistema mostrará mensaje de confirmación.

Excepciones 3. Si la información no se puede validar a. Se mostrará un mensaje informando del error

Comentarios

5.3.3.2.5 Eliminar

Tabla 11: CU-GE-05 Eliminar Elección.

CU-GE-05 Eliminar una Elección

Descripción El sistema permitirá eliminar una elección.

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea eliminar una elección que no ha sido iniciada..

Secuencia Normal 1. El sistema mostrará una alerta de confirmación preguntando si desea continuar con el proceso.

42

Page 43: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

a. Si desea continuar el proceso se eliminará la elección. b. Si se cancela, no se elimina la elección.

2. En cualquier de los dos casos, se cerrar la alerta de confirmación y

se invocará el caso de uso CU-GE-06

Excepciones

Comentarios

5.3.3.2.6 Listar

Tabla 12: CU-GE-06 Listar Elecciones.

CU-GE-06 Listar Elecciones

Descripción El sistema permitirá listar las elecciones que se hayan registrado..

Precondición El usuario administrador ha iniciado sesión y ha indicado que listar las elecciones.

Secuencia Normal 1. El sistema visualizará las elecciones que están registradas en el sistema, podrá elegir la opción de iniciar o finalizar elección, modificar y eliminar

a. Si el usuario administrador selecciona iniciar se aplicará el caso de uso CU-GE-02

b. Si el usuario administrador selecciona finalizar se llevará a cabo el caso de uso CU-GE-03

a. Si el usuario administrador selecciona modificar se aplicará el caso de uso CU-GE-04

b. SI el usuario administrador selecciona eliminar continuará en el caso de uso CU-GE-05

Excepciones 1. Si no hay elecciones registradas se mostrará el mensaje ‘No hay elecciones registradas’

Comentarios

5.3.3.3 Gestión De Votantes

5.3.3.3.1 Registrar

Tabla 13: CU-GV-01 Registrar Votante.

CU-GV-01 Registrar Votante

Descripción El sistema permitirá registrar un votante.

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea registrar un votante.

Secuencia Normal 1. El administrador diligencia la información requerida en el formulario. 2. Envía el formulario diligenciado 3. Se valida la información del formulario

a. Si se registra correctamente, el sistema mostrará mensaje de confirmación.

43

Page 44: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Excepciones 3. Si la información no se puede validar a. Se mostrará un mensaje informando del error

Comentarios

5.3.3.3.2 Modificar

Tabla 14: CU-GV-02 Modificar Votante.

CU-GV-02 Modificar Votante

Descripción El sistema permitirá al administrador modificar información del votante

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea modificar un votante previamente seleccionado

Secuencia Normal 1. El administrador modifica la información del formulario 2. Envía el formulario 3. Se valida la información diligenciada

a. Si se modifica correctamente, el sistema mostrará mensaje de confirmación.

Excepciones 3. Si la información no se puede validar a. Se mostrará un mensaje informando del error

Comentarios

5.3.3.3.3 Deshabilitar

Tabla 15: CU-GV-03 Deshabilitar Votante.

CU-GV-03 Deshabilitar Votante

Descripción El sistema permitirá deshabilitar a un votante del sistema, para que no pueda votar en las elecciones iniciadas.

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea deshabilitar un votante previamente seleccionado.

Secuencia Normal 1. El sistema enviará una alerta de confirmación preguntando si desea continuar con el proceso

a. Si el usuario confirma continuar, se procederá a deshabilitar al votante

b. Si el usuario cancela el proceso, no se deshabilitará al votante

2. .En cualquier de los dos casos, se cierra la alerta de confirmación y se procede a invocar el caso de uso CU-GV-05

Excepciones

Comentarios

5.3.3.3.4 Eliminar

Tabla 16: CU-GV-04 Eliminar Votante.

CU-GV-04 Eliminar Votante

44

Page 45: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Descripción El sistema permitirá eliminar a un votante del sistema.

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea eliminar un votante previamente seleccionado, este votante no debe haber votado en el sistema.

Secuencia Normal 3. El sistema enviará una alerta de confirmación preguntando si desea continuar con el proceso

c. Si el usuario confirma continuar, se procederá a eliminar al votante

d. Si el usuario cancela el proceso, no se eliminará al votante 4. .En cualquier de los dos casos, se cierra la alerta de confirmación y

se procede a invocar el caso de uso CU-GV-05

Excepciones

Comentarios

5.3.3.3.5 Listar

Tabla 17: CU-GV-05 Listar Votantes.

CU-GC-05 Listar Votantes

Descripción El sistema permitirá mostrar el listado de los votantes registrados en el sistema.

Precondición El usuario administrador ha iniciado sesión y ha indicado que desea ver el listado de los votantes registrados

Secuencia Normal 1. El sistema visualizará los votantes que están registrados en el sistema, podrá elegir la opción de modificar, deshabilitar o eliminar

a. Si el usuario administrador selecciona modificar se aplicara el caso de uso CU-GV-02

b. Si el usuario administrador selecciona deshabilitar votante se invocará el caso de uso CU-GV-03

c. SI el usuario administrador selecciona eliminar continuará en el caso de uso CU-GV-04

Excepciones 1. Si no hay votantes registrados se mostrará el mensaje ‘No hay votantes registrados’

Comentarios

5.3.3.4 Consultar Reportes

5.3.3.4.1 Mostrar Resultados

Tabla 18: CU-CR-01 Mostrar Resultados.

CU-CR-01 Mostrar Resultados

Descripción El sistema permitirá mostrar los resultados de una elección.

Precondición Se ha indicado al sistema que se desea ver los resultados de una elección.

Secuencia Normal 1. Seleccionar la elección.

45

Page 46: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

2. Confirmar que se desea mostrar los resultados.

Excepciones 2. Si no se puede mostrar los resultados de la elección seleccionada se mostrará un mensaje indicando el error.

Comentarios

5.3.3.4.2 Listar Votos

Tabla 19: CU-CR-02 Listar Votos.

CU-CR-02 Listar Votos

Descripción El sistema permitirá mostrar el listado de los votos por cada elección.

Precondición Se ha indicado al sistema que desea ver el listado de los votos registrados en una elección iniciada o finalizada.

Secuencia Normal 1. Seleccionar la elección. 2. Confirmar que se desea mostrar el listado de votos.

Excepciones 2. Si no se puede mostrar los resultados de la elección seleccionada se mostrará un mensaje indicando el error.

Comentarios

5.3.3.5 Efectuar Voto

5.3.3.5.1 Validar Votante

Tabla 20: CU-EV-01 Validar Votante.

CU-EV-01 Validar Votante

Descripción El sistema permitirá validar un votante que desea efectuar su voto.

Precondición Se ha seleccionado una elección y se ha indicado al sistema hacer efectivo un voto, el votante no debe haber votado en la elección seleccionada.

Secuencia Normal 1. Digitar el número de identificación registrado en el sistema. 2. Enviar información diligenciada. 3. Validar información

a. Si se validó correctamente la información, se invocará el caso de uso CU-EV-02.

Excepciones 3. Si no se puede validar la información. a. El sistema mostrar un mensaje indicando el error.

Comentarios

5.3.3.5.2 Seleccionar Candidato

Tabla 21: CU-EV-02 Seleccionar Candidato.

CU-EV-02 Seleccionar Candidato

Descripción El sistema permitirá mostrar el listado de los candidatos en una elección seleccionada.

46

Page 47: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Precondición Se ha validado la identidad del votante en el sistema.

Secuencia Normal 1. Mostrar el listado de los candidatos. 2. Seleccionar el candidato por el cual se efectuará el voto. 3. Confirmar la selección.

a. Si se confirma se invocará el caso de uso CU-EV-03 b. Si se cancela, se invocará este caso de uso.

Excepciones

Comentarios

5.3.3.5.3 Confirmar Voto

Tabla 22: CU-EV-03 Confirmar Voto.

CU-EV-03 Confirmar Voto

Descripción El sistema permitirá confirmar el voto por el candidato elegido..

Precondición Se ha seleccionado al candidato y se ha confirmado la selección.

Secuencia Normal 1. Se solicitará confirmar el voto. a. Si se confirma, se efectuará el voto.. b. Si se cancela, no se efectuará el voto.

2. En cualquiera de los casos, se mostrará un mensaje indicando el resultado de la operación y se invocará el caso de uso CU-EV-01

Excepciones

Comentarios

47

Page 48: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.4 Diagramas UML

5.3.4.1 Casos De Uso

5.3.4.1.1 General

Figura 10: Caso de uso general del sistema, se describen los casos de uso específicos y los actores que interactúan con el sistema.

48

Page 49: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.4.1.2 Gestión De Candidatos

Figura 11: Caso de uso Gestión de Candidatos.

5.3.4.1.3 Gestión De Elecciones

Figura 12: Caso de uso Gestión de Elecciones.

49

Page 50: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.4.1.4 Gestión De Votantes

Figura 13: Caso de uso Gestión de Votantes.

5.3.4.1.5 Consultar Reportes

Figura 14: Caso de uso Consultar Reportes.

50

Page 51: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.4.1.6 Efectuar Voto

Figura 15: Caso de uso Efectuar Voto.

5.3.4.2 Diagrama De Clases

Figura 16: Diagrama de Clases.

51

Page 52: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.4.3 Diagrama De Actividades

5.3.4.3.1 Gestión De Candidatos

Figura 17: Diagrama de Actividades Gestión de Candidatos.

52

Page 53: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.4.3.2 Gestión De Elecciones

Figura 18: Diagrama de Actividades Gestión de Elecciones.

53

Page 54: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.4.3.3 Gestión De Votantes

Figura 19: Diagrama de Actividades Gestión de Votantes.

54

Page 55: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.4.3.4 Efectuar Voto

Figura 20: Diagrama de Actividades Efectuar Voto.

5.3.4.4 Diagrama De Secuencias

5.3.4.4.1 Gestión De Candidatos

Figura 21: Diagrama de Secuencias Gestión de Candidatos.

55

Page 56: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.4.4.2 Gestión De Elecciones

Figura 22: Diagrama de Secuencias Gestión de Elecciones.

56

Page 57: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.3.4.4.3 Gestión De Votantes

Figura 23: Diagrama de Secuencias Gestión de Votantes.

5.3.4.4.4 Efectuar Voto

Figura 24: Diagrama de Secuencias Efectuar Voto.

57

Page 58: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.4 PRUEBAS

5.4.1 Inicio De Sesión Del Administrador de la aplicación web.

El administrador es un usuario de blockchain, su registro es directamente en la red, este usuario debe ser proporcionado por el administrador de todo el sistema y cada transacción realizada es firmada con este usuario. Cuando el usuario administrador proporciona las credenciales correctas se redirecciona a un panel de administración (dashboard) y por el contrario las credenciales son incorrectas se indica un mensaje mostrando el error de acceso.

Figura 25: Interfaz de Inicio de Sesión.

Figura 26: Inicio de Sesión con credenciales incorrectas.

58

Page 59: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.4.2 Gestión De Elecciones

5.4.2.1 Listar Al acceder a “Elecciones” en el menú, se visualiza el listado de todas las elecciones registradas en el sistema, se logra apreciar una serie de opciones, tales como, cambiar estado, modificar, eliminar para cada elección.

Figura 27: Listado de elecciones.

5.4.2.2 Registrar Una vez dentro de “Elecciones”, se logra ver un formulario que solicita la información necesaria para el registro de una elección, al presionar agregar, se envía los datos al web service y cuando este nos responde se refresca el listado de elecciones registradas.

Figura 28: Registrar elección.

5.4.2.3 Cambio De Estado En el listado de elecciones registradas, una de las “acciones” disponible es cambiar estado, que cuando se presiona, cambia el estado de la elección, en un orden consecutivo, a medida que se presiona (0: Pendiente, 1: Iniciada, 2: Finalizada), después de finalizada regresa a pendiente.

59

Page 60: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 29: Cambiar Estado de la elección.

5.4.2.4 Modificar Al presionar la “acción” modificar, dentro del listado de elecciones, se carga un formulario con la información respectiva a la elección seleccionada, la cual podrá modificarse y presionar guardar para hacer efectivos los cambios.

Figura 30: Modificar elección.

Figura 31: Formulario para modificar elección.

60

Page 61: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

5.4.2.5 Eliminar Al presionar eliminar, se solicita una confirmación que al ser aceptada, se procederá con eliminar el registro de la elección seleccionada.

Figura 32: Eliminar elección.

Figura 33: Confirmación para eliminar elección.

5.4.3 Gestión De Candidatos

5.4.3.1 Listar Después de haber seleccionado desde el menú la opción “Candidatos”, se visualiza un listado de todos los candidatos registrados en la elección que está seleccionada en el respectivo campo.

61

Page 62: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 34: Listado de candidatos.

5.4.3.2 Registrar El formulario para registrar un candidato se encuentra visible dentro de la opción del menú principal “Candidatos”, una vez diligenciado el formulario y seleccionada la elección al que hará parte el candidato, se procede a presionar el botón agregar y la información se envía al web service y una vez que nos responde, inmediatamente se actualiza el listado de candidatos.

Figura 35: Registrar candidato.

5.4.3.3 Desactivar/Activar Dentro de la “acciones” del listado de candidatos, encontramos una que dependiendo del estado del candidato (activo: true, activo: false) se podrá cambiar intercalando, es decir, si está activo: true se cambia a activo: false y ocurre lo mismo en caso contrario.

62

Page 63: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 36: Desactivar/Activar candidato.

5.4.3.4 Modificar Al seleccionar la acción modificar carga un formulario con la información actual del candidato, la cual se puede cambiar, una vez hecho los cambios, se procede a guardar.

Figura 37: Modificar candidato.

63

Page 64: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 38: Formulario para modificar candidato.

5.4.3.5 Eliminar Antes de eliminar un candidato se solicita confirmación, la cual al hacer aceptada se eliminará el registro.

Figura 39: Eliminar candidato.

64

Page 65: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 40: Confirmación para eliminar candidato.

5.4.4 Gestión De Votantes

5.4.4.1 Listar El listado de votantes registrados es visualizado dentro de la opción del menú principal “Votantes”, cada registro que se muestra, tiene unas acciones que serán descritas en las secciones siguientes.

Figura 41: Listado de Votantes.

5.4.4.2 Registrar El formulario para registrar un votante, se muestra una vez se seleccione “Votantes” del menú principal, cuando se ha diligenciado el formulario, se puede presionar el botón agregar, una vez el web service responde nuestra petición se refresca el listado de los votantes registrados que se visualiza en la misma vista.

65

Page 66: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 42: Registrar votante.

5.4.4.3 Desactivar/Activar En el listado de los votantes registrados, por cada registro se logra apreciar la acción activa o desactivar, la cual cambia rápidamente el estado del votante, activado o desactivado.

Figura 43: Desactivar/Activar votante.

5.4.4.4 Modificar La acción modificar se encuentra en el listado de los votantes registrados, y una vez seleccionada esta acción, se cargará un formulario con los datos actuales del votante, los cuales podrán ser modificados y para ser efectivo los cambios se debe presionar el botón guardar.

66

Page 67: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 44: Modificar votante.

Figura 45: Formulario para modificar votante.

5.4.4.5 Eliminar Aunque no es recomendable eliminar un votante, existe esta acción dentro de el listado de votantes registrados, la cual al ser ejecutada, se visualiza un mensaje de confirmación, que si es aceptado, eliminará a este votante.

Figura 46: Eliminar votante.

67

Page 68: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 47: Confirmación para eliminar votante.

5.4.5 Efectuar Voto

5.4.5.1 Validar Votante La vista principal de la plataforma, que es de acceso público cuenta con un formulario, que recibe el número de identificación con el que registraron al votante, una vez diligenciado el campo se procede a presionar en el botón validar, si la información no se logra validar (no existe un votante con esa identificación) se muestra un mensaje indicando el error, pero si por el contrario la validación es correcta, se carga una nueva vista, la cual es descrita en la siguiente sección.

Figura 48: Validar votante con número de identificación.

68

Page 69: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 49: Validación del votante, no existe.

5.4.5.2 Seleccionar Candidato Y Votar Cuando se logra validar correctamente al votante (descrito en la sección anterior) se visualiza un listado con todos los candidatos activos de la elección que esté en el estado: iniciada. El votante podrá seleccionar el candidato o opción de preferencia y luego presionar el botón votar. Si el voto logra registrarse correctamente se enviará un mensaje con el mensaje respectivo, de igual forma ocurre si el voto no se efectúa.

Figura 50: Listado de candidatos disponibles para elegir en la elección.

69

Page 70: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 51: Voto registrado correctamente.

Figura 52: Voto errado, el votante ya había votado.

5.4.6 Listar Resultados

Los resultados (acceso desde la página principal) de una elección, ya sea parcial o final, se organizan por elección y a su vez por candidatos con los votos ya contabilizados, se podrán auditar todas las transacciones que contiene la información de cada voto (elección, candidato, fecha y hora). En el dashboard de la plataforma la opción Reportes se visualiza los resultados de todas elecciones que han tenido participación de los votantes, al seleccionar la elección

70

Page 71: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

correspondiente, se carga el listado de los candidatos y se logra apreciar los votos consolidados.

Figura 53: Listado de Votos.

5.4.6.1 Detalles De Los Votos Después de presionar la acción Ver en el listado de votos, se despliega un modal que muestra la fecha y hora de cada voto obtenido por el candidato seleccionado, este listado tiene a su vez una acción Auditar que la presionar muestra las transacciones asociadas al voto.

Figura 54: Detalle de Votos.

Observación: Estas vistas son las mismas para que los votantes visualicen los resultados de las elecciones, la única diferencia en es solo se mostraran las elecciones que están Iniciadas.

71

Page 72: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

6. RESULTADOS Y DISCUSIONES Los resultados comprende lo que hemos obtenido durante y después del proceso de desarrollo del sistema, el cual será descrito a continuación. Se desarrolló un prueba del sistema con voluntarios, estudiantes del programa de Ingeniería de Sistemas de la Universidad de Córdoba, con el fin, de conocer la experiencia que tuvieron al realizar una votación en el sistema que se ha desarrollado con este proyecto, y después de votar y monitorear ellos mismos los resultados que son mostrados en el sistemas de forma parcial, podemos describir que su percepción define claramente lo que deseábamos con este proyecto, al conocer de primera mano los resultados parciales (y finales), aseguran que un sistema de votación con las características que posee las de este proyecto, sería más seguro y transparente, transmitiendo así una confianza casi total de parte del votante hacia el sistema.

7. CONCLUSIONES La votación electrónica es un tema controvertido a lo largo y ancho del mundo, a pesar de existe soluciones que cuenta con las características para reemplazar de una vez por toda el sistema tradicional de elecciones, la percepción de las personas sobre la transparencia de estos sistemas es lo que pone en tela de juicio este tema, esa es la problemática principal que afrontan los sistemas de votación electrónica. Por otro lado, que se ha planteado con este proyecto o cualquier otro proyecto sobre votación electrónica que implemente blockchain, abordan fundamentalmente esos inconvenientes con los que se enfrentan actualmente los sistemas de votos electrónicos, como la privacidad de los votantes, la integridad de los votos y la transparencia del conteo. Este proyecto ayuda a seguir abriendo la puerta para que la tecnología Blockchain (cadena de bloques) logre establecerse en los sistemas de voto electrónico, con el fin, de que nuestras decisiones políticas en cualquier escenario tengan mayor participación ciudadana, la logística de estas jornadas de elecciones sean menos costosas y más aun importante, que el votante logre percibir la transparencia y sienta la confianza de votar.

8. RECOMENDACIONES Este proyecto solo está enfocado en un escenario particular, el cual nos muestra el potencial que tiene un sistema de votación electrónica implementando con blockchain, probablemente esta tecnología inspire a desarrollar más sistemas como estos, por tal razón, a continuación describimos una serie de recomendaciones para tener en cuenta.

● Implementar en la red blockchain (Hyperledger Fabric) protocolos cifrados TLS para que la información que se envié desde la appweb sea segura.

● Desarrollar una aplicación móvil para efectuar el voto que implemente el SDK de Hyperledger Fabric.

● Implementar sistemas biométricos para la identificación del votante.

72

Page 73: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

9. BIBLIOGRAFÍA

Nakamoto, S. (2008). Bitcoin: A Peer-to-Peer Electronic Cash System | Satoshi Nakamoto Institute. Retrieved from http://nakamotoinstitute.org/bitcoin/ Allen, D. W. E., Berg, C., Lane, A. M., & Potts, J. (2017). The economics of crypto-democracy. In CEUR Workshop Proceedings (Vol. 1897, pp. 63–73). CEUR-WS. Moura, T., & Gomes, A. (2017). Blockchain Voting and its effects on Election Transparency and Voter Confidence. In Proceedings of the 18th Annual International Conference on Digital Government Research - dg.o ’17(pp. 574–575). New York, New York, USA: ACM Press. Ben Ayed, A. (2017). A Conceptual Secure Blockchain Based Electronic Voting System. International Journal of Network Security & Its Applications, 9(3), 01–09. Baocheng Wang, (2017). Large-scale Election Based On Blockchain. North China University Of Technology, No.5 Jinyuanzhuang Road, Shijingshan District Beijing, Beijing 100144, China. Boucher, P. (2016). What if blockchain technology revolutionised voting? European Parliament Think Tank - Scientific Foresight: What If? Martin, Samuel, Blockchain as a Solution to the United States’ Voter Turnout Issue (May 12, 2018). Shelkovnikov, A. (2016). Blockchain applications in the public sector. Deloitte. Roy Lai, David LEE Kuo Chuen (2018), Chapter 7 - Blockchain – From Public to Private, Handbook of Blockchain, Digital Finance, and Inclusion, Volume 2, Pages 145-177. Marijn Janssen, (2017), Blockchain in government: Benefits and implications of distributed ledger technology for information sharing, Government Information Quarterly, Volume 34, Issue 3, Pages 355-364. Pierre Noizat, (2015), Chapter 22 - Blockchain Electronic Vote, Handbook of Digital Currency, Academic Press, Pages 453-461. Jan Willemson, (2018), Bits or paper: Which should get to carry your vote?, Journal of Information Security and Applications, Volume 38, Pages 124-131. Chohan, U. (2018). Blockchain Enhancing Political Accountability? Sierra Leone 2018 Case. Alta Consejería Distrital de TIC, & Martínez, S. (2018). Informe de Resultados Proceso de Elecciones Prototipo Blockchain. Retrieved from http://ticbogota.gov.co/sites/default/files/documentos/EstrategiaBlockchain.pdf Vukolić, M. (2017). Hyperledger Fabric - an open-source distributed operating system for permissioned blockchains. Swiss Blockchain Summer School.

73

Page 74: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Gönenç Gürkaynak, İlay Yılmaz, Burak Yeşilaltay, Berk Bengi, (2018), Intellectual property law and practice in the blockchain realm, Computer Law & Security Review, Volume 34, Issue 4, Pages 847-862. Khan, K. M., Arshad, J., & Khan, M. M. (2018). Secure Digital Voting System Based on Blockchain Technology. International Journal of Electronic Government Research (IJEGR), 14(1), 53-62. E. Yavuz, A. K. Koç, U. C. Çabuk and G. Dalkılıç, "Towards secure e-voting using ethereum blockchain," 2018 6th International Symposium on Digital Forensic and Security (ISDFS), Antalya, 2018, pp. 1-7. Catalini, C. (2017). The Potential for Blockchain to Transform Electronic Health Records. Harvard Business Review, 3, 1–7. Yunsen Wang, Alexander Kogan, (2018), Designing confidentiality-preserving Blockchain-based transaction processing systems, International Journal of Accounting Information Systems. Muhammad Muzammal, Qiang Qu, Bulat Nasrulin, (2018), Renovating blockchain with distributed databases: An open source system, Future Generation Computer Systems, Volume 90, Pages 105-117. Wattana Viriyasitavat, Danupol Hoonsopon, (2018), Blockchain characteristics and consensus in modern business processes, Journal of Industrial Information Integration. A. Alimoğlu and C. Özturan, "Design of a Smart Contract Based Autonomous Organization for Sustainable Software," 2017 IEEE 13th International Conference on e-Science (e-Science), Auckland, 2017, pp. 471-476. Clare Sullivan, Eric Burger, (2017), E-residency and blockchain, Computer Law & Security Review, Volume 33, Issue 4, Pages 470-481. Dubovitskaya, A., Xu, Z., Ryu, S., Schumacher, M., & Wang, F. (2017). Secure and Trustable Electronic Medical Records Sharing using Blockchain. AMIA ... Annual Symposium Proceedings. AMIA Symposium, 2017, 650–659. Cunningham, J., & Ainsworth, J. (2017). Enabling patient control of personal electronic health records through distributed ledger technology. In Studies in Health Technology and Informatics(Vol. 245, pp. 45–48). Roberto Casado-Vara, Javier Prieto, Fernando De la Prieta, Juan M. Corchado, (2018), How blockchain improves the supply chain: case study alimentary supply chain, Procedia Computer Science, Volume 134, Pages 393-398. Karp, N. (2015). Tecnología de cadena de bloques (blockchain): la última disrupción en el sistema financiero. Observatorio Económico EEUU, 3.

74

Page 75: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Marín Bermúdez, Antonio. (2016). Proyecto final de carrera: Estudio de la utilización de protocolos blockchain en sistemas de votación electrónica. recibido desde http://hdl.handle.net/2117/98545. Hyperledger Fabric. recibido desde https://hyperledger-fabric.readthedocs.io/en/release-1.4/whatis.html Elementos de Hyperledger Fabric. recibido desde https://viviendo20.wordpress.com/2018/07/16/hyperledger-fabric/ Villanueva, J. S., & Siachoque, M. M. (2014). COMPARANDO SCRUM Y RUP. Tecnología Investigación Y Academia, 2(1), 39-48. recibido desde https://revistas.udistrital.edu.co/index.php/tia/article/view/5697

75

Page 76: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

ANEXOS

76

Page 77: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

ANEXO 1. CRONOGRAMA DE ACTIVIDADES

Tabla 23: Cronograma de actividades para el desarrollo del sistema. CRONOGRAMA DE ACTIVIDADES

Las siguientes actividades descritas se desarrollaron en el tiempo estimado en semanas.

ACTIVIDAD TIEMPO (SEMANAS)

2 4 6 8 10 12 14 16 18 20 22 24

Recopilar documentación sobre la tecnología Blockchain y los Sistemas de Votaciones Electrónicas.

Analizar los casos donde se implementó la tecnología Blockchain en procesos electorales.

Análisis del sistema implementando Hyperledger Fabric.

Desarrollo del sistema.

Validación y pruebas del sistema.

Entregables

77

Page 78: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

ANEXO 1. MANUAL DE USUARIO

Funciones del Sistemas ● Gestión de Elecciones: registra, modifica, elimina y consulta elecciones. ● Gestión de Candidatos: registra, modifica, elimina y consulta los candidatos. ● Gestión de Votantes: registra, modifica, elimina y consulta los votantes. ● Votar: válida al votante y registra el voto con el candidato elegido. ● Reportes: consultar los resultados parciales y finales de una elección.

A continuación se describe el uso de plataforma web: ACCESO DEL ADMINISTRADOR A LA APPWEB Ingresando al enlace de la plataforma (appweb), la vista principal nos muestra un formulario para validar un votante, en la parte superior derecha, se puede apreciar la opción Iniciar Sesión el cual debemos presionar.

Figura 55: Acceder a la plataforma

78

Page 79: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

REGISTRAR UNA ELECCIÓN Seleccionar la opción Elecciones en el menú principal, rellenar el formulario presente y luego presionar agregar para guardar la información de la nueva elección.

Figura 56: Registrar una elección.

MODIFICAR UNA ELECCIÓN Dentro del menú Elecciones y en el listado de elecciones registradas, presionar la acción Modificar, se cargará el formulario con la información actual, después de hacer los cambios, presiona guardar para aplicar las modificaciones respectivas.

Figura 57: Modificar una elección.

ELIMINAR UNA ELECCIÓN Dentro del menú Elecciones y en el listado de elecciones registradas, presionar la acción Eliminar, se visualizará un diálogo de confirmación, el cual para continuar el proceso se presiona en continuar.

79

Page 80: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 58: Eliminar una elección.

REGISTRAR UN CANDIDATO Seleccionar la opción Candidatos del menú principal, diligenciar el formulario requerido, seleccionar la elección a la que el candidato hará parte y presionar en Agregar para registrar al candidato.

Figura 59: Registrar un candidato.

MODIFICAR UN CANDIDATO Dentro del menú Candidatos, seleccionar la acción Modificar del candidato que se desea editar la información ya registrada, hacer los nuevos cambios y para aplicar presionar en Guardar.

80

Page 81: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 60: Modificar un candidato.

DESACTIVAR/ACTIVAR UN CANDIDATO Dentro del menú Candidatos, seleccionar la acción Desactivar si el candidato está activo y Activar si el candidato está desactivado, una vez seleccionada la acción, se aplica el cambio.

Figura 61: Desactivar/Activar un candidato.

ELIMINAR UN CANDIDATO Dentro del menú Candidatos, seleccionar la acción Eliminar al candidato que desea aplicar esta acción, una vez presionado, se visualiza un diálogo de confirmación, si desea continuar el proceso, debe presionar continuar.

81

Page 82: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 62: Eliminar un candidato.

REGISTRAR UN VOTANTE Seleccionar en el menú principal la opción Votantes, dentro de este menú hay un formulario que debe diligenciar en su totalidad, una vez diligenciado se procede a presionar Agregar para registrar el votante.

Figura 63: Registrar un votante.

MODIFICAR UN VOTANTE Dentro del menú Votantes, presionar la acción Modificar, se cargará el formulario con la información actual del votante, se hacen los cambios y se presiona Guardar para aplicar las modificaciones que se hicieron.

Figura 64: Modificar un votante.

82

Page 83: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

DESACTIVAR/ACTIVAR UN VOTANTE Dentro del menú Votantes, seleccionar la acción Desactivar si el votante está activo y Activar si el votante está desactivado, una vez seleccionada se aplicará el cambio.

Figura 65: Desactivar/Activar un votante.

ELIMINAR UN VOTANTE Dentro del menú Votantes, seleccionar la acción Eliminar se desplegará un diálogo de confirmación, para confirmar si desea eliminar al votante seleccionado, para continuar el proceso, presiona Continuar.

Figura 66: Eliminar un votante.

VALIDAR VOTANTE Una vez dentro de la página principal de la plataforma, no requiere acceso, encontrará un formulario sencillo, que solicita el número de identificación del votante, que desea hacer efectivo el voto, una vez validado se visualizarán los candidatos que están disponibles para que voten por ellos. Nota: El votante debe estar registrado previamente.

83

Page 84: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 67: Validar votante.

SELECCIONAR CANDIDATO Después de que se haya validado al votante, se listaran los candidatos como opciones para elegir por quién votar.

Figura 68: Seleccionar candidato.

84

Page 85: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

VOTAR Una vez seleccionado el candidato, se presiona Votar, se intentará registrar el voto, y si el voto se registra correctamente o no se visualizará un mensaje de confirmación, indicando lo ocurrido.

Figura 69: Votar

REPORTES Para listar los resultados de las elecciones, se selecciona la opción Reportes del menú principal, se mostrarán todas elecciones registradas, para que se pueda seleccionar la elección que desea ver los resultados, una vez seleccionada, se visualizarán los candidatos de la elección con un consolidados de los votos obtenidos por cada uno. Para los votantes, los reportes se visualizan en otra página que no requiere el acceso y se puede acceder desde la página principal, pero las vistas son iguales a las Figura 70 y Figura 71

85

Page 86: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 70: Reportes

Para ver cada voto de un candidato, se selecciona la acción Ver, la cual visualiza un diálogo donde se listan los votos con fecha y hora, para auditar cada voto se presiona en la acción Auditar y se visualizarán los registros del voto.

Figura 71: Detallar votos.

86

Page 87: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

ANEXO 2. MANUAL DE DESARROLLADOR

CONFIGURAR BLOCKCHAIN En esta sección del Manual de Desarrollador describe el proceso para configurar la red blockchain, paso fundamental para el funcionamiento correcto de nuestra red. Dentro de la carpeta de archivos del proyecto, encontramos un carpeta llamada network la cual trae consigo los archivos de configuración de la red.

Figura 72: Carpeta network. En la carpeta, podremos encontrar archivos como .env, base.yaml, configtx.yaml, crypto-config.yaml, docker-compose-kafka.yaml, docker-compose.yml los cuales cumplen un papel importante en la configuración y puesta en funcionamiento de nuestra red.

● .env: define las variables de entorno que se usarán al momento de poner en funcionamiento la red, estas variables se usan en el archivo base.yaml, docker-compose-kafka.yaml y docker-compose.yml

87

Page 88: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 73: Archivo .env

● base.yaml: es un perfil de un peer de la red, se usa para generalizar la configuración

de un nodo de la red, este perfil es heredado en el archivo docker-compose.yml

Figura 74: Archivo .base.yaml

88

Page 89: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

● configtx.yaml: este archivo define el funcionamiento del servicio de ordenamiento, las organizaciones que harán parte de la red, los permisos de cada componente (orderer, peer, application) y los perfiles que tendrá el canal, este archivo se usa para generar los crypto materiales que hacen parte de la seguridad de acceso de la red. Nota: este archivo es extenso, por tal razón no es práctico para visualizarlo en este documento.

● crypto-config.yaml: en este archivo se configura como los nodos que gestionará las organizaciones, se define cuantos nodos tendrá cada organización, el dominio, y la cantidad de usuarios que tendrán acceso, además define el dominio del servicio de ordenamiento.

Figura 75: Archivo crypto-config.yaml

● docker-compose-kafka.yaml: los archivos docker-compose de este proyecto, definen

los perfiles y la configuración de los contenedores que iniciarán en el sistema de dockers. Este archivo, configura el tipo de ordenamiento bajo el cual este sistema funcionará, podrá ser solo, el cual no es recomendable para proyectos en producción y kafka, que es el que tenemos definido en este archivo.

89

Page 90: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 76: Archivo docker-compose-kafka.yaml

● docker-compose.yml: como se describió anteriormente, este archivo configura los

contenedores para el sistema de ordenamiento, servidor del certificado de autoridad (emite y valida los certificados de los actores de la red), los nodos (peers), base de datos de estado y un contenedor que nos ayuda a gestionar todos los contenedores de la red.

90

Page 91: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 77: Archivo docker-compose.yml, sección servidor CA

Figura 78: Archivo docker-compose.yml, sección sistema de ordenamiento.

91

Page 92: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 79: Archivo docker-compose.yml, sección peer

Figura 80: Archivo docker-compose.yml, sección couch (base de datos de estado)

92

Page 93: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 81: Archivo docker-compose.yml, sección cli (gestión de la red)

CREAR LA RED BLOCKCHAIN Se desarrolló un script en bash (createNet.sh) que automatiza todo el proceso, el cual se describe lo que ocurre después de ejecutarlo.

Figura 82: Comando para crear la red blockchain (./createNet.sh --generate). Cuando ese comando es ejecutado, el script, primero generará los archivos crypto materiales que basándose en los archivos crypto-config.yaml y configtx.yaml se creará la identidad digital de cada componente para que puedan funcionar o acoplarse en la red. Luego de haber creado los crypto materiales, el script, pone a correr los contenedores docker, los cuales

93

Page 94: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

después de que se ya hayan iniciado correctamente, el script, por medio del cli (contenedor que gestionar la red), crea el canal principal de la red (docker exec cli peer channel create), que es donde funcionará toda la plataforma, una vez creado el canal, por medio del cli se une los peers de la red (en nuestro caso, solo tenemos uno desde el inicio, docker exec cli peer channel join). Cuando exitosamente se une nuestros nodos a la red, podremos indicarle a la misma que nuestra principal organización tendrá un nodo principal, el cual, se define como Anchors peers para lograr esto, se debe actualizar el canal (docker exec cli peer channel update).

Figura 83: Red blockchain creada.

INSTALAR E INSTANCIAR CHAINCODE Después de que la red está creada, debemos instalar el contrato inteligente que hemos desarrollado para registrar la información que nuestra plataforma necesita para su funcionamiento, el contrato inteligente funciona como un API (Interfaz de Programación de Aplicaciones) el cual gestiona lo que se registra, consulta, modificar y elimina en la red. Los parámetros que recibe el script corresponden a el nodo donde se instalará el MSP del que hace parte el nodo (organización) y el dominio (./install-chaincode.sh peer0.unicor.example.com:7051 UnicorMSP unicor.example.com).

94

Page 95: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 84: Instalar chaincode.

Figura 85: Chaincode instalado.

Luego de haber instalado el chaincode, debemos instanciar el chaincode en la red, es indispensable para que nuestra red reconozca el chaincode que hemos instalado y lo pueda ejecutar (./instantiate-chaincode.sh i peer0.unicor.example.com:7051 UnicorMSP unicor.example.com).

95

Page 96: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 86: Instanciar chaincode instalado.

Figura 87: Chaincode instanciado.

INSCRIBIR ADMIN Y APP EN LA RED A este paso ya tenemos configurada e iniciada nuestra red blockchain, podemos ver los contenedores iniciados en la Figura 88. El paso a seguir consiste en inscribir (enroll) al usuario administrador y posteriormente inscribir a nuestra aplicación para que nuestra plataforma logre poder comunicarse con la red blockchain, los script que inscriben al administrador y a nuestra plataforma, genera unos certificados que son emitidos por el Certificado de Autoridad, el cual funciona en el contenedor ca.example.com. (node enrollAdmin.js y node enrollApp.js)

96

Page 97: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 88: Contenedores iniciados.

Figura 89: Inscribir Admin y App (enroll)

INICIAR PLATAFORMA Ya estamos listo para iniciar nuestra plataforma, como la tenemos en local, procedemos a instalar las dependencias del api (server) y las dependencias de nuestra interfaz de usuario que se encuentra en la carpeta gui dentro de app, npm install y cd gui && npm install. Luego de haber instalado las dependencias, modificamos el archivo config.js, dentro de la carpeta app, cuya información debe coincidir con los datos que tenemos de nuestro sistema. Después iniciamos la plataforma con el comando npm start, el cual se encarga de ejecutar nuestro api y nuestra interfaz. Después de que haya iniciado correctamente la plataforma, debemos crear el usuario administrador de la misma, para hacerlo usamos el script registerUser.js (node registerUser.js administrador demo1234).

97

Page 98: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 90: Crear usuario administrador de la plataforma.

AGREGAR UNA NUEVA ORGANIZACIÓN A LA RED Si desearíamos agregar una nueva organización con sus respectivos nodos (peers) a la red blockchain, debemos ejecutar add-org.sh que es un script que se encuentra dentro de la carpeta network/org. Antes de ejecutar este script, se debe configurar la nueva organización para esto, se debe tener en cuenta los archivos que están dentro de la carpeta network/org, .env, configtx.yaml, crypto-config.yaml y docker-compose.yml. Estos archivos cumplen la misma función que los archivos de los que habíamos hablado anteriormente con el mismo nombre, después de tener claro la configuración de la nueva organización se ejecuta el script (./add-org.sh --generate).

Figura 91: Ejecutar ./add-org.sh --generate

Este script generará (--generate) los crypto materiales para la nueva organización, y los respectivos nodos, esta información será exportada en un archivo .json, el cual se usará para actualizar el canal principal de la red, después de actualizar exitosamente el canal, la organización hará parte de la red blockchain.

98

Page 99: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 92: Nueva organización agregada a la red.

Después de que se haya agregado correctamente la nueva organización a la red, lo que tenemos que hacer es unir los nodos a la red blockchain, para lograr eso, ejecutamos el script ./join-network.sh

Figura 93: Unir nodos a la red.

Una vez que el proceso haya culminado, debemos instalar el chaincode en los nodos y actualizarlo en los nodos principales que se han definido para cada organización. Para instalar el chaincode en los nuevos nodos modificamos el script exports.sh incrementando el número de la versión, 1.0 a 1.1 (por ejemplo) y luego ejecutamos el script que ya hemos usado anteriormente, el cual está en la raíz del proyecto (./install-chaincode.sh) pero ahora con la parámetros de los nodos de la nueva organización.

99

Page 100: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

● nodo0: ./install-chaincode.sh peer0.ene.example.com:4004 EneMSP ene.example.com

Figura 94: Instalar chaincode peer0.ene.example.com

● nodo1: ./install-chaincode.sh peer1.ene.example.com:4006 EneMSP ene.example.com

Figura 95: Instalar chaincode peer1.ene.example.com

Después de que se haya instalado el chaincode en los nodos, debemos instalarlo en el nodo principal de la organización inicial, esto es para que coincidan las versiones del chaincode, para esto solo basta con ejecutar el comando: ./install-chaincode.sh --main. Una vez se instalado la nueva versión del chaincode, debemos actualizar la instancia del chaincode en la red, para esto debemos ejecutar el script ./instantiate-chaincode.sh cambiando algunos parámetros. ./instantiate-chaincode.sh u peer0.unicor.example.com:7051 UnicorMSP unicor.example.com "OR('UnicorMSP.peer', 'EneMSP.peer')"

100

Page 101: IMPLEMENTACIÓN DE UN SISTEMA DE VOTACIÓN …

Figura 96: Actualizar chaincode

101