IS1710CP03
BYZANTIN: RED BLOCKCHAIN PARA APOYO A LOS SISTEMAS FINANCIEROS
DAVID ARMANDO GUZMÁN CANTILLO
LAURA CAMILA ROJAS VALBUENA
JUAN SEBASTIÁN CORTÉS PALACIOS
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERÍA
CARRERA DE INGENIERÍA DE SISTEMAS
BOGOTÁ, D.C.
Página 2
CIS1710CP03
BYZANTIN: RED BLOCKCHAIN PARA APOYO A LOS SISTEMAS FINANCIEROS
Autores:
David Armando Guzmán Cantillo
Laura Camila Rojas Valbuena
Juan Sebastián Cortés Palacios
MEMORIA DEL TRABAJO DE GRADO REALIZADO PARA CUMPLIR UNO
DE LOS REQUISITOS PARA OPTAR AL TITULO DE INGENIERO DE
SISTEMAS
Director
Ing. Rafael Vicente Páez Méndez
Jurados del Trabajo de Grado
---
Página web del Trabajo de Grado
http://pegasus.javeriana.edu.co/~CIS1710CP03
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERÍA
CARRERA DE INGENIERÍA DE SISTEMAS
BOGOTÁ, D.C.
Página 3
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERÍA
CARRERA DE INGENIERÍA DE SISTEMAS
Rector Magnífico
Jorge Humberto Peláez Piedrahita, S.J.
Decano Facultad de Ingeniería
Ingeniero Jorge Luis Sánchez Téllez
Director de la Carrera de Ingeniería de Sistemas
Ingeniera Mariela Josefina Curiel H.
Director Departamento de Ingeniería de Sistemas
Página 4
Artículo 23 de la Resolución No. 1 de junio de 1946
“La Universidad no se hace responsable de los conceptos emitidos por sus alumnos en sus proyec-tos de grado. Sólo velará porque no se publique nada contrario al dogma y la moral católica y por-que no contengan atapor-ques o polémicas puramente personales. Antes bien, por-que se vean en ellos el anhelo de buscar la verdad y la Justicia”
Página 5
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
AGRADECIMIENTOS
David Armando Guzmán Cantillo
Quisiera agradecer al que siempre debe estar primero, Dios quien a pesar de todas las pruebas tanto de salud como académicas siempre estuvo a mi lado, me dio fuerzas y además sabiduría.
También a mi Padre quien a pesar de todas mis fallas me dio los mejores consejos posibles para avanzar, además de prestar su apoyo moral y su experiencia; además de ello a toda mi familia, Mamá y hermanos que compartieron conmigo este trayecto académico. Otro gran agradecimiento a mis ami-gos más cercanos (Edgar, Carlos y Mayerli), quienes ampliaron mis horizontes y me ayudaron a com-prender más allá de lo que significaba mi carrera y mi misión de vida. Para concluir este gran éxito se resumen en dos frases una la dijo el gran empresario Henry Ford: “el fracaso es una gran oportu-nidad para empezar otra vez con más inteligencias” también quiero agregar una frase famosa dicha por Steve Jobs la cual es: “aquellos que están tan locos como para pensar que pueden cambiar el mundo son aquellos que lo hacen”
Laura Camila Rojas Valbuena
Antes que nada, para entrar en contexto, debo decir que tengo dos grandes pasiones que han llenado mi vida durante estos años. Una es mi deporte y la otra es mi carrera. Teniendo esto en cuenta, daré los agradecimientos respectivos a las personas que han hecho parte de ello.
Quiero agradecer principalmente a mi madre, Sonia Valbuena, pues además de criarme y sacarme adelante con mucho esfuerzo, me acompañó durante todo este proceso. Ha sido mi voz de aliento, mi compañera y amiga en los mejores y peores momentos. No solo ha estado conmigo en la parte aca-démica, también ha sido un apoyo fundamental en mi desarrollo como deportista. Vivió conmigo los triunfos y fracasos en cada campeonato sin excepción, nunca me faltó su abrazo al final de cada competencia.
También agradezco principalmente a mi abuela, Blanca Cecilia Díaz y mis tías maternas Martha y Gloria Valbuena, quienes me apoyaron incondicionalmente en todos los aspectos a lo largo de la carrera y a mi familia en general. Realmente, gracias a ellos siempre conté con lo necesario para culminar esta meta con éxito.
A Daniella Dueñas, mi novia, por su compañía, apoyo, colaboración, comprensión y consejos en este proceso. El taekwondo me permitió conocer a esta gran mujer que admiro profundamente por sus numerosas capacidades a nivel profesional y personal. Además de alegrar mis días con su locura y
Página 6
ser mi paño de lágrimas en momentos difíciles, ha sido mi compañera de entrenamiento en el camino del arte marcial.
Agradezco a mis compañeros de trabajo de grado, David Guzmán y Juan Sebastián Cortés por su dedicación en el desarrollo de este reto que supimos afrontar con perseverancia, disciplina, respeto y responsabilidad. Agradezco a cada uno de los profesores que compartió sus conocimientos en este proceso de formación y a nuestro director de trabajo de grado Rafael Páez por su tiempo y orientación para llevar a buen término este proyecto.
Quiero agradecer especialmente a la Fundación Bolívar-Davivienda por permitirme estudiar en una de las mejores universidades del país y por todas las comodidades que me proporcionó. Sin su apoyo económico esto no hubiese sido posible. Agradezco el respaldo, la confianza y la paciencia incondi-cionales que me brindó durante estos años.
Mucho antes de entrar a la universidad empecé a practicar taekwondo, un deporte que me apasiona, es mi descanso y mi felicidad. Es un aspecto muy importante en mi vida, así que debo agradecer a mi entrenador, Víctor Castañeda, por la formación deportiva e integral a lo largo de la carrera. Por todas las experiencias vividas en tantos años de entrenamiento. Por permitirme hacer parte de la selección y representar a la universidad en campeonatos distritales, nacionales e incluso internacionales. Gra-cias a él me formé como una mujer fuerte tanto física como mentalmente, fortaleció mi carácter. También agradezco a mis compañeros y amigos de entrenamiento por tan buenos momentos de sudor, lágrimas y sobre todo, patadas.
También quiero agradecer a todo el equipo de profesionales de la salud del Centro Javeriano de For-mación Deportiva conformado por la doctora Betty Stella Rico (fisioterapeuta), la doctora Maritsabel Ruiz (nutricionista) y a los doctores Julio Bermúdez y Ronald Fonseca (médicos deportólogos) por su apoyo, colaboración, confianza, motivación y paciencia a lo largo de mi desarrollo deportivo. Son grandes personas que aportaron mucho en mi formación como persona y como deportista.
Por todo esto, me siento orgullosa de ser Javeriana, durante estos años adquirí un gran sentido de pertenencia por la Universidad que me hizo vibrar y dar lo mejor de mí en cada representación a nivel deportivo y que me hizo crecer cognitivamente a medida que cursé cada semestre. Es gratificante ver que la formación integral de los estudiantes juega un papel muy importante, no solo se enfoca en formar profesionales sino también, buenos seres humanos. Mi compromiso, es dejar en alto el nombre de la Universidad en los nuevos retos que vienen para mi vida profesional.
Página 7
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
Juan Sebastián Cortés Palacios
Mis agradecimientos van destinados a quienes han hecho parte de mi proceso de crecimiento a lo largo de la carrera, esto incluye principalmente a mi mamá, quien siempre fue mi compañía en las noches en vela y a quien confié mis más profundos miedos e inseguridades, pero quien con consejos asertivos siempre lograba disipar la densa bruma de mis temores. También quisiera destacar en este proceso de formación a mi papá ya que siempre se mostró orgulloso de mí, lo cual me permitió avan-zar con denuedo en las vicisitudes del ámbito académico. No podría pasar por alto a mis familiares, amigos y a mi novia, ya que siempre representaron una fuente de alegría e insondable amor, lo que permitió levantarme cada vez que la adversidad me robaba el aliento. Por último, me encuentro agra-decido con los docentes que impulsaron mi formación tanto académica como personal, ya que en ocasiones sin ellos saberlo causaron un gran impacto en mí.
Página 8
CONTENIDO
CONTENIDO ... 8
TABLA
DE
FIGURAS ... 10
TABLAS ... 11
INTRODUCCIÓN ... 13
I
-
DESCRIPCIÓN
GENERAL ... 13
1.
O
PORTUNIDAD,
P
ROBLEMÁTICA,
A
NTECEDENTES... 13
1.1. Formulación del problema ... 14
1.2. Impacto Esperado ... 14
2.
D
ESCRIPCIÓN DELP
ROYECTO... 14
2.1. Objetivo general ... 14
2.2. Objetivos específicos ... 15
3.
M
ETODOLOGÍA... 15
II
–
MARCO
TEÓRICO ... 15
1.
M
ARCOC
ONCEPTUAL... 15
2.
E
STADO DEL ARTE... 30
2.1.
T
ECNOLOGÍA FINANCIERA:
B
LOCKCHAIN Y ESCENARIO ECONÓMICO. ... 31
2.1.1
NASDAQ
YC
ITI... 31
2.1.2
C
ORDA... 32
2.1.3
IBM
G
LOBALF
INANCING... 32
2.1.4
E
THEREUM... 32
2.1.5
C
HAIN... 32
2.1.6
E
VERLEDGER... 33
2.1.7
D
IGITALX ... 33
2.1.8
R3 ... 33
2.1.9
N
IVAURA... 33
2.1.10
T
RAMONEX... 33
2.1.11
T
RADLE... 34
2.1.12
A
NONCOIN... 34
2.1.13
D
ECRED... 34
2.1.14
K
OMODO... 34
Página 9
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
2.3
T
ECNOLOGÍAB
LOCKCHAIN PRIVADA,
PÚBLICA Y DE CONSORCIO. ... 36
2.4
I
MPORTANCIA DEB
LOCKCHAIN PARA LA ECONOMÍA COMPARTIDA... 37
2.5
T
ECNOLOGÍAB
LOCKCHAIN PARA MEJORAR LA CALIDAD DE LA INVESTIGACIÓN CLÍNICA... 38
III
–
ANÁLISIS ... 38
1.
F
UNCIONES DEL SISTEMA... 38
2.
L
IMITACIONES... 39
IV
–
IMPLICACIONES
LEGALES ... 41
V
–
DISEÑO ... 42
VI
–
DESARROLLO
DE
LA
SOLUCIÓN ... 46
VII
–
RESULTADOS ... 53
3.
P
RUEBAS UNITARIAS... 53
4.
P
RUEBAS INTEGRACIÓN... 53
5.
P
RUEBA DE VALIDACIÓN... 54
6.
P
RUEBAS DE ACEPTACIÓN... 55
VIII
-
CONCLUSIONES ... 56
7.
A
NÁLISIS DEI
MPACTO DELD
ESARROLLO... 56
8.
C
ONCLUSIONES YT
RABAJOF
UTURO... 57
IX
-
REFERENCIAS ... 58
Página 10
TABLA DE FIGURAS
Figura 1. Ejemplo de función SHA256 ... 19
Figura 2. Red distribuida ... 20
Figura 3. Bloque del sistema Blockchain ... 20
Figura 4. Ejemplo de nonce... 21
Figura 5. Ejemplo de árbol de Merkle ... 23
Figura 6. Ejemplo de Proof of Stake ... 25
Figura 7. Ejemplo de bloque génesis ... 26
Figura 8. Ejemplo de conversión a decimal ... 28
Figura 9. Ejemplo de cambio de bits entre 0 y 1 ... 28
Figura 10. Ejemplo de doble gasto ... 30
Figura 11. Diseño de la interfaz móvil ... 39
Figura 12. Modelo de dominio ... 40
Figura 13. Modelo vista controlador para el cliente móvil. ... 42
Figura 14. Arquitectura P2P para los nodos de Byzantin ... 43
Figura 15. Arquitectura blockchain ... 43
Figura 16. Diagrama de despliegue ... 43
Figura 17. Máquina de estados finitos ... 44
Figura 18. Crear llave pública y privada, cliente móvil ... 46
Figura 19. Función transferir, cliente móvil ... 47
Figura 20. Función recibir, cliente móvil ... 47
Página 11
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
TABLAS
Tabla 1. Funciones de hash [28]. ... 19
Tabla 2. Funciones de hash ... 28
Tabla 3. Ejemplo de palabras a buscar ... 30
Tabla 4. Comparación proyectos similares ... 35
Tabla 5. Características de la Blockchain público, por consorcio y privado ... 37
Tabla 6. Integración entre componentes... 44
Tabla 7. Librerías utilizadas para el nodo ... 45
Tabla 8. Librerías utilizadas para el cliente móvil ... 46
Tabla 9. Equipos utilizados para las pruebas ... 53
Tabla 10. Prueba de integración No. 1 ... 54
Tabla 11. Prueba de integración No. 2 ... 54
Tabla 12. Equipo utilizado para la prueba de validación ... 55
Tabla 13. Equipo físico utilizado para la prueba de aceptación ... 55
Página 12
ABSTRACT
Byzantin is a thesis project intended to support the current financial system and provide an alternative to our traditional banking system practices.
It is a Blockchain-based prototype and the implementation could be accessed by a mobile application, where the users can deposit, and transfer information to users as well as to the banking institutions. Furthermore, the project aims to achieve improvements to the informatic security system through the principles of Blockchain. Byzantin also permits generate reports, useful to the banking institution.
RESUMEN
Byzantin es un prototipo para el apoyo de sistemas financieros, se origina como alternativa a los sistemas tradicionales bancarios.
Byzantin está centrado en la tecnología Blockchain, y la implementación de una red similar que per-mite el acceso desde una aplicación móvil, donde se puedan realizar transacciones electrónicas finan-cieras. Por otro lado, este proyecto propone mejorar la seguridad de los sistemas informáticos de las entidades bancarias por el principio de Blockchain, además permite que la entidad bancaria pueda generar reportes; que posibiliten entender el estado financiero de la misma.
Página 13
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
INTRODUCCIÓN
Esta memoria de grado contiene el desarrollo de la plataforma Byzantin, se plantea toda la problemá-tica que se trata de solucionar y los conceptos necesarios para poner al lector en contexto.
Este trabajo se encuentra dirigido a las entidades bancarias, y como parte de una investigación que pretende expandir el conocimiento humano y mejorar la calidad de vida de las personas, a través de una aplicación que permitirá a los usuarios realizar transacciones financieras de forma segura y con-fiable desde cualquier dispositivo móvil.
Este documento consta de las siguientes seis secciones:
1. Descripción General: describe la formulación del problema identificado, que dio origen al pro-blema aquí solucionado y además también se muestra los objetivos que debe cumplir para que la solución de la problemática sea válida.
2. Marco Teórico: contiene todos los conceptos teóricos necesarios para entender la problemática y a partir de esto desarrollar una solución.
3. Estado del arte: abarca todos los algoritmos criptográficos, de decisión y de validación y la interacción natural de usuario. De igual manera, en esta sección se encuentra la justificación del proyecto y el por qué se desarrolló de esa manera; además de cuáles son las ventajas frente al sistema tradicional.
4. Desarrollo de la Solución: Describe todos los planes realizados como parte del desarrollo del prototipo Byzantin que soluciona la problemática planteada.
5. Resultados: describe los resultados obtenidos como parte del desarrollo de la solución y muestra cómo se dio cumplimiento a cada objetivo planteado.
a. Resultados comparativos: Describe un contraste entre los diferentes resultados de otros proyectos similares, sus respectivos algoritmos y como se pudo mejorar a partir de ellos. 6. Conclusiones: presenta las conclusiones obtenidas como parte del desarrollo de este trabajo de grado, el impacto esperado del mismo y los planes que pueden llegar a ser parte del trabajo futuro que se propone a realizar.
I - DESCRIPCIÓN GENERAL
1. Oportunidad, Problemática, Antecedentes
La banca moderna es un sistema complejo donde el manejo del dinero es la prioridad, y dependiendo de cada país tienen diferentes objetivos, pero sus principales propósitos son el de crear las condiciones necesarias para facilitar el acceso a servicios de crédito y otros servicios financieros como ahorro, transferencias, pagos, giros, remesas y seguros; herramientas indispensables para el desarrollo de una población y el crecimiento sano de la economía; un banco como negocio puede mejorar en diferentes aspectos, entre ellos está: reducción de costos, mayores ganancias, y/o un mayor alcance en los mer-cados.
Teniendo como referencia el contexto planteado previamente, identificamos la oportunidad de utilizar Blockchain para otorgar fiabilidad financiera, reducción de la transacción directa interna, garantías preservando de una mejor manera la información acerca de las deudas, préstamos o transferencias de dinero.
La Blockchain (o cadena de bloques) es una base de datos compartida (descentralizada y distribuida) en la que se pueden realizar transacciones electrónicas. Su mayor beneficio es que elimina varias
Página 14
falencias (de los cuales se pueden contar: la reducción de fraudes, reducidas plataformas de negocia-ción o procedimientos KYC -Know Your Client-) en la red bancaria, gracias a sus singulares caracte-rísticas [50].
Actualmente, uno de los mayores problemas identificados en los bancos es la confiabilidad, donde se pueden encontrar: falsificación de documentos y/o de dinero, robos por el uso del papel moneda. Incluso, teniendo en cuenta la utilización de tarjetas débito y crédito para el manejo de dinero, es claro que, si un usuario extravía su tarjeta, corre el riesgo de perder su dinero.
Mediante la implementación de Blockchain, se podrían mitigar los riesgos mencionados anterior-mente y a la vez, se reducirá la vulnerabilidad generada por el uso de dichos intermediarios. Un ejemplo de esto, es la inmutabilidad de las transacciones hechas durante una sesión en consecuencia no solo es fácilmente rastreable las transacciones, sino que además es sencillo bloquear cuenta o transacciones que involucren movimientos sospechosos.
Aunque existen soluciones similares a las de Blockchain, como por ejemplo, los pagos online con el algoritmo Riverst-Shamir-Adleman (RSA) o sistemas con criptografía de clave pública; éstas pueden ser más costosas para la entidad bancaria, además éstos sistemas requieren redundancia, que al final generan costo extra (Discos duros y un sistema con tolerancia a fallos) y limitan la velocidad de cada transacción.
1.1.
Formulación del problema
Gracias al conocimiento de la problemática y sus repercusiones en la banca actual, donde se gastan inmensas sumas de dinero por seguridad informática e infraestructura y además de ello el usuario carece de la total seguridad, surge la siguiente pregunta:
¿Cómo aumentar la confianza de los usuarios de un sistema bancario y reducir los gastos en el proceso de proteger las transacciones realizadas?
1.2.
Impacto Esperado
A corto plazo, con Byzantin se espera dejar sentadas las bases para el desarrollo de una plataforma que sirva de apoyo de entidades financieras, dando la posibilidad de mejorar la seguridad de la plata-forma, tanto para las entidades como para sus usuarios; a mediano plazo, se espera que pueda funcio-nar como base para profundizar en este nuevo e innovador tema. Dado su alto nivel de versatilidad se podrán crear proyectos derivados, donde puedan utilizar todos los recursos acá mencionados para el desarrollo de nuevas herramientas para mejorar la calidad de vida de las personas.
A largo plazo (después de que el prototipo pase a ser un sistema completamente funcional) se espera poder crear una herramienta basada en el prototipo, que pueda ser comercializada o licenciada a en-tidades financieras colombianas y que a partir de ella puedan desarrollarse mejores herramientas para la construcción de un sistema con una confiabilidad superior a la actual.
2. Descripción del Proyecto
2.1.
Objetivo general
Desarrollar un prototipo de una red Blockchain que permita realizar transacciones financieras entre usuarios y/o entidad bancaria.
Página 15
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
2.2.
Objetivos específicos
• Establecer y analizar los requerimientos de acuerdo con el contexto
• Diseñar la arquitectura y componentes de una red Blockchain que cumpla con los requeri-mientos principales.
• Construir prototipo del sistema basado en la arquitectura y diseño anteriormente menciona-dos.
• Realizar la validación del prototipo funcional.
3. Metodología
El proyecto está sujeto a las estrategias propuestas por la metodología DAD (Disciplined Agile Deli-very). DAD provee un marco de trabajo capaz de adaptarse a las necesidades de un proyecto, está orientado a metas y su ciclo de vida está dirigido a entregas. Esta metodología permite una aproxi-mación más robusta a una solución ágil, ya que adopta prácticas de fuentes existentes (SCRUM, XP, UP, etc.) y proporciona una guía de cómo implementarlas (DAD, 2016).
Los roles que emplea DAD, permiten asignar tareas de acuerdo con las competencias de cada miem-bro, logrando así un progreso continuo en las actividades propuestas en el proyecto. Las tareas de cada rol serán ejecutadas en cortos periodos de tiempo con el fin de incrementar, agilizar y retroali-mentar el estado proyecto.
DAD recomienda llevar a cabo tres fases que son: concepción, construcción y transición. De las tres fases propuestas se van a implementar dos, que son la fase de concepción y la de construcción, y la última fase será reemplazada por una de documentación. Con la modificación de las fases se pretende satisfacer las demandas del trabajo de grado y el alcance propuesto para éste.
II – MARCO TEÓRICO
1. Marco Conceptual
La finalidad de esta sección es presentar al lector los conceptos básicos para comprender la propuesta de la plataforma Byzantin, donde se tocarán las ideas, conceptos y fundamentos que son necesarios para abordar la problemática a tratar. En primer lugar, se dará toda la información de tipo teórico y que será usada en este proyecto de grado. Por otro lado, se explicarán los proyectos, investigaciones y/o trabajos importantes que sean relacionados y que permitan esclarecer que problema resuelven y como éste proyecto es diferente y tiene un valor agregado.
1.1Problema de los generales Bizantinos o problema del ataque coordinado Es un mito o historia pintoresca, donde se muestra un escenario de un problema creado, para ilustrar el dilema de lograr un consenso entre un conjunto de entidades con un objetivo común. Es una analogía de un escenario de guerra, donde un grupo de generales bizantinos se encuentran acampando con sus tropas alrededor de una ciudad enemiga turca que desean atacar. Después de observar el comportamiento del enemigo los generales deben comunicar sus análisis y ponerse de acuerdo en un plan de batalla común que permita atacar la ciudad y ganar. Para establecer comunicaciones, los generales usan únicamente mensajeros traídos de varias tierras dentro del imperio, que saben el lenguaje de todos los generales. Por otro lado, existe la posibilidad que algunos de los generales sean traidores y, por lo tanto, deci-dan enviar mensajes con información errónea con el objetivo de confundir a los generales leales. Un algoritmo que solucione el problema debe asegurar que todos los generales leales
Página 16
acuerdan un mismo plan de acción y que unos pocos traidores no pueden conseguir que el plan adoptado por los generales leales sea equivocado.
1.2Criptografía
Criptografía es una rama proveniente de las matemáticas, que nos permite enmascarar o esconder las comunicaciones de una lengua o información de forma discreta sobre canales inseguros. La criptografía proporciona altos niveles de seguridad; proviene de las palabras griegas “criptos” que se significa oculto y “grafe” que significa escritura oculta[1].
Tiene como finalidad que un mensaje o información que sea enviado no sea leído o modi-ficado por otra persona que no sea el destinatario, todo esto gracias a una conversión que se lleva a cabo con distintas técnicas que giran en torno a un codificado o cifrado.
Una de las aplicaciones de la criptografía está ligada a envío y recepción de mensajes de e-mail, también se puede encontrar en distribución de archivos a través de una red, donde se niega o se permite el acceso a la información, otra de sus aplicaciones es el almacenamiento de información.
Esta herramienta es un medio para la confidencialidad, integridad (la confidencialidad y la integridad puede ser garantizada con la criptografía simétrica) de los recursos de un sis-tema. Donde la integridad viene dada por la garantía de que la información cumple con los términos de completitud y corrección, por otro lado, respalda la pertenencia de un archivo, transacción o mensaje a cierto individuo permitiendo la vinculación entre un usuario y un contenido [12].
1.3Criptografía Simétrica
La criptografía simétrica consiste en un proceso de cifrado y descifrado donde tanto emi-sor como receptor comparten una llave secreta que les permite transformar y entender la información que se ha enviado.
A modo de ejemplo, si se cuenta con dos usuarios(X y Y) donde X escribe un mensaje a Y, el primer paso e que se realiza través de una comunicación previamente concertada, y se define el algoritmo y la llave que se desea usar, el usuario X cifra el mensaje utilizando esta llave secreta, al ser recibido el mensaje por parte de X, Y puede descifrarlo mediante la llave secreta compartida, el beneficio de usar clave simétrica es su velocidad de respuesta al realizar el proceso de cifrado, además es muy conveniente cuando se usa para el desci-frado de enormes cantidades de información, el inconveniente que se presenta al usar un sistema de clave simétrica es la distribución de la clave que se planea usar, ya que el medio donde se quiera transmitir dicha clave puede ser inseguro [12].
1.4Criptografía Asimétrica
Para el caso de la criptografía asimétrica, quienes quieren hacer intercambio de informa-ción deben contar con un par de llaves, una de clave privada y otra pública. Donde la clave privada solo la sabe el propietario y la pública es conocida por todos los usuarios de un sistema. La clave pública y privada están relacionadas matemáticamente, de manera que, si una información se cifra con la clave privada, se debe usar la clave pública correspon-diente para descifrar y viceversa.
Por ejemplo, si hay dos usuarios (A y B), donde el usuario A quiere enviar un mensaje al usuario B, A cifra el mensaje con la clave pública de B, después de ello el mensaje cifrado es enviado a B el cual lo descifra con su clave privada, uno de los beneficios de usar crip-tografía asimétrica es que no hay necesidad de tener una calve compartida, permitiendo así un sistema más seguro. Por otro lado, una de las desventajas es la lentitud al hacer una operación, para agilizar el proceso, por esta razón la criptografía asimétrica o de clave pú-blica se utiliza en conjunto con la criptografía simétrica [12].
Página 17
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
1.5Certificado Digital
Estos certificados son recursos electrónicos, emitidos, respaldados y firmados digitalmente por varias empresas de tecnología (Para Colombia: Certicamara, ANDES S.A. GSE, Otros países: Digicert, GeoTrustGlobal, entre otras). Por otra parte, el certificado digital es un documento electrónico que almacena una clave privada, la cual está asociada a una clave pública y esta a su vez a la identidad de su dueño, el certificado digital contiene información relacionada a la fecha de inicio de validez y expiración del certificado; también se pueden agregar detalles extras como el nombre del dueño o una identificación especial relacionada con éste. Es importante mencionar que el certificado digital valido x.509V3 contiene con-tener [23]:
• Versión: El campo de versión contiene el número de versión del certificado codi-ficado. Los valores aceptables son 1, 2 y 3.
• Número de serie del certificado: Este campo es un entero asignado por la autoridad certificadora. Cada certificado emitido por una compañía debe tener un número de serie único e irrepetible.
• Identificador del algoritmo de firmado: Este campo identifica el algoritmo em-pleado para firmar el certificado (como por ejemplo el RSA o el DSA).
• Nombre del emisor: Este campo identifica la compañía que ha firmado y emitido el certificado.
• Periodo de validez: Este campo indica el periodo de tiempo durante el cual el cer-tificado es válido y la compañía está obligada a mantener información sobre el estado del mismo. El campo consiste en una fecha inicial, la fecha en la que el certificado empieza a ser válido y la fecha después de la cual el certificado deja de serlo. Ejemplo (2017/03/02 – 2018/03/02)
• Nombre del sujeto: Este campo identifica la identidad cuya clave pública está cer-tificada en el campo siguiente. El nombre debe ser único para cada entidad certifi-cada por una compañía dada.
• Información de clave pública del sujeto: Este campo contiene la clave pública, sus parámetros y el identificador del algoritmo con el que se emplea la clave.
• Identificador único del emisor: Este es un campo opcional que permite reutilizar nombres de emisor.
• Identificador único del sujeto: Este es un campo opcional que permite reutilizar nombres de sujeto.
• Extensiones: las extensiones en la versión tres cuentan con tres importantes cam-pos, el tipo de extensión donde se encuentra el tipo de información que se va a explicar a continuación, valor de la extensión e indicador de importancia.
1.6Llave pública
Fragmento de información de caracteres usada para cifrar mensajes o transacciones de un usuario a otro, ésta depende de una fórmula matemática en concreto. La clave pública únicamente puede ser descifrada a través de la clave privada [2].
1.7Llave privada
Es un fragmento de información o caracteres que se usa para acreditar (porque solamente a través de esta llave se puede descifrar el mensaje cifrado con la llave publica, si no es posible esto quiere decir que el mensaje ha sido cambiado o hubo un error en la transferen-cia del mensaje) una transacción de un usuario a otro (también cuenta para la entidad ban-caria); estas son almacenadas localmente en el dispositivo que creó la transacción [2].
Página 18
1.8Firma Digital
Una firma digital permite obtener información acerca del origen de un objeto y verifica la integridad de la información del mismo, de modo que no haya sido alterado por terceros no autorizados en su proceso de envío. Una firma digital es un resumen matemático cifrado de los datos de un objeto, mas no es responsabilidad de la firma digital que el objeto y la información que contiene queden cifrados, pero el propio resumen está cifrado con el fin de restringir modificaciones que no hayan sido autorizadas.
1.9Hash
Es una función de un sentido que se aplica a documentos, texto, contraseñas que. A partir de las funciones hash se genera una salida alfanumérica (secuencia de bits) de longitud fija, esta salida es un resumen de toda la información que se le ha dado (en otras palabras, a partir de cierta información de entrada esta crea una cadena que solo puede volverse a generar con esa misma información), las características fundamentales para el buen uso de las funciones Hash se encuentra:
• Resultado de la función es de longitud fija e independiente de la longitud del men-saje.
• Fácil cálculo sobre cualquier mensaje.
• Computacionalmente imposible recuperar el mensaje original a partir del Hash.
• Implícitamente se debe dar la condición de que el tamaño de este mensaje debe ser por lo menos de 128 bits para minimizar la probabilidad de colisiones entre men-sajes, lo cual significa que existen dos mensajes o archivos diferentes que generan la misma cadena de hash.
Entre las funciones hash más conocidas se encuentra el MD5 y SHA (Secure Hash Algo-rithm) en múltiples versiones (tabla 1) [24].
1.10 Hash Sha256
Es una función unidireccional, lo cual significa que a partir de un texto/archivo se genera una función de resumen, pero a partir de esa función resultante no se puede obtener el texto/archivo original (figura 1); este proceso se ejecuta para proveer integridad de los da-tos, ya que el receptor del mensaje puede ejecutar la misma función y el resumen resultante debe coincidir con el que envió el emisor. Esto lo hace adecuado para la validación de contraseñas, autenticación hash de desafío, anti-sabotaje, firmas digitales), es una firma para un texto o un archivo de datos de tamaño variable o fijo, para el Hash Sha256 no requiere un tamaño en concreto con el cual trabajar.
Esta firma está comprendida por 64 caracteres hexadecimales y un tamaño de 256 bits o 32 bytes.
A continuación, se muestra una tabla donde se muestra las colisiones, tamaño de palabra y rendimiento [25]:
Nombre Tamaño máximo de palabra(bits)
Operaciones Colisiones en-contradas.
Rendimiento MiB/s MD5 128 +, and, or, xor,
rot
Si 335
SHA-0 160 +, and, or, xor,
rot
Página 19
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
SHA-1 160 +, and, or, xor,
rot
Si 192
SHA-2 (solo SHA-256)
256 +, and, or, xor, shr, rot
No 139
SHA-3 1600 and, xor, not,
rot
No -
Tabla 1. Funciones de hash [28].
Figura 1. Ejemplo de función SHA256
1.11 Computación móvil
La Computación Móvil está dado por el uso de una computadora que como característica de que carece de la necesidad de estar conectadas físicamente a una red, es fácil referir el término computación móvil como teléfonos celulares, pero con la excepción que es todo lo referente al trabajo que se hace en esta plataforma [3].
También el termino de computación móvil puede ser definido como todos los equipos y hardware se encuentran en las siguientes categorías: calculadoras, telefonía celular, palms, notebook, netbook, laptops, tablets y entre otros; varias de las características principales para llegar a entrar en la categoría de computación móvil es que deben ser suficientemente pequeñas y disponen de conexión inalámbrica.
1.12 Red P2P (Peer to Peer, punto a punto)
P2P es un modelo topológico de red que permite conectividad directa a toda la red permi-tiendo a que el dispositivo más alejado pueda comunicarse con cualquier otro en la red (en otras palabras, significa que no existen clientes ni servidores fijos en una red), esto quiere decir que no necesita de un sistema, servidor o dispositivo intermediario. Dado a esto se puede decir que las redes P2P posibilita la comunicación casi inmediata entre dispositivos, además de ello también provee un mejor rendimiento, indexación más profunda entre los dispositivos conectados [4].
1.13 Red distribuida (Topología distribuida)
Es una derivación de las redes P2P, en donde la diferencia reside en que ya no son dispo-sitivos, sino que pueden ser Software o información proveniente de las redes P2P. En otras palabras, una red distribuida es un sistema que consisten en una colección de má-quinas que son autónomas conectadas a una red y estas se encuentran provistas de un
soft-Página 20
ware que les permite crear un ambiente que las integre entre ellos (figura 2). Las caracte-rísticas principales de una red distribuida son: escalabilidad, los recursos son compartidos, concurrencia y transparencia [13].
Figura 2. Red distribuida 1.14 Blockchain
Blockchain es un sistema que se caracteriza por ser descentralizado y es usado para el in-tercambio de información; en el que se registra un historial de todas las transacciones he-chas desde el inicio, que tiene lugar en una red P2P; éste sistema tiene como base la con-fianza, responsabilidad y transparencia, donde no depende de una entidad central [5]. Otra forma de definir Blockchain es como una cadena de bloques con información, con forma de libro contable distribuido y además esta entrelazado (pues cada transacción o información necesaria es añadida en forma de bloques, donde cada bloque tiene una direc-ción hacia su bloque antecesor y siguiente) para evitar que este no ha sido cambiado. Este libro contable es guardado en todos los nodos o computadores sincronizados en la red en forma de bloques (figura 3).
Figura 3. Bloque del sistema Blockchain
1.15 Bloque
Un bloque es un registro dentro de la cadena Blockchain, que contiene todas las transac-ciones hechas en los pasados 10 minutos (o como una página individual de un registro notarial), estos se organizan de forma de secuencia lineal en el tiempo y al final de una verificación estos son añadidos a una cadena de bloques que es conocida como Blockchain [2].
1.16 Confirmación
Significa que una transacción que fue procesada fue validada por la red y esta fue incluida en un bloque, por lo cual es poco probable que esta transacción sea revertida, las confirma-ciones pueden ser válidas para cualquier tipo de información incluida; una transacción puede ser varias veces confirmada, lo cual reduce exponencialmente el riesgo de que la transacción(es) sea(n) revertida [2].
Página 21
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
1.17 Timestamp
Es un evento que se produce en una computadora y es guardado en forma de caracteres; estos caracteres representan una fecha u hora específica en que sucedió el evento, estos caracteres son guardados de tal manera que pueda permitir la comparación entre ellos [6].
1.18 Nonce
Es un campo dentro de un bloque de 4 bytes de tamaño, cuyo valor siempre contiene úni-camente ceros (resultado de una modificación de una línea de caracteres previamente mo-dificado), que sirve para la verificación de que el bloque fue confirmado y además tiene un significado definido para las posteriores confirmaciones [26].
Ejemplo:
El proceso que se empleó para la obtención del nonce es un método de fuerza bruta donde cada iteración fue revisada si cumplía con los parámetros deseados (los parámetros desea-dos son definidesea-dos por la red Blockchain, estos pueden ir desde comenzar con “0” o generar una frase en concreto como “Blockchain” dentro de la cadena de caracteres; para el ejemplo el parámetro deseado a cumplir es que la cadena comience con “0000”) del nonce. Los caracteres empleados son el reto por resolver en la red, dónde debe añadir un String alea-torio y así llegar al resultado deseado (figura 4).
Figura 4. Ejemplo de nonce
1.19 Velocidad Hash
También conocido como hash rate es una medida que se tiene para mostrar cuantas ope-raciones (o cálculos) hash se pueden hacer en un determinado tiempo, por ejemplo: 1 TH/s (Tera Hash por segundo) quiere decir que el nodo puede procesar 1 billón de cálcu-los por segundo [2].
1.20 RIPEMD 256
Es una función hash derivada de MD4 y MD5, permite cifrar y comprimir mensajes; la longitud de la cadena resultante (hash) es de 256 bits. Es una función hash que opera utili-zando un bloque de 512 bits que se divide en 16 partes cada una de 32 bits. Todas las funciones que ofrece el RIPEMD 256 comienzan con la transformación de cada uno de los 16 bloques individuales que conforman la información donde las cifra individualmente y después las concatena en un solo hash [31].
Un ejemplo de cifrado RIPEMD 256 sería la siguiente frase “esto es un cifrado RIPEMD 256” y su salida seria:
f2adc38b0c6bf4ad19011e25e6721405747bd5b8c6f8a00d92984b5c2b03f887
1.21 Base58
Base58 es un código para representar números largos en forma compacta, usando más sím-bolos, muchos sistemas informáticos utilizan representaciones alfanuméricas mezcladas con una base mayor a 10. El sistema tradicional utiliza los numerales de 0-9, la Base 16 o
Página 22
hexadecimal se comprende de los numerales de 0-9 y las letras mayúsculas A , B, C, D, E, F; en cambio la base 64 utiliza los numerales de 0-9, las 26 letras minúsculas del alfabeto, las 26 letras mayúsculas del alfabeto, dos caracteres especiales “/” y “+”. Por otro lado la base 58 es usada para que sea entendible y legible para un lector que este transcribiendo o leyendo la línea, es por eso que a diferencia de la base 64, en éste código se remueve el 0 (número cero), la O (letra o mayúscula), l (letra L minúscula), I (letra i mayúscula) y los símbolos "\+" y "/" [32].
El alfabeto Base58 es: 1 2 3 4 5 6 7 8 9 A B C D E F G H J K L M N P Q R S T U V W X Y Z a b c d e f g h i j k m n o p q r s t u v w x y z.
Al convertir la frase “El proyecto se llama Byzantin” en base 58 quedaría:
49nsnQrof3cGju1PNucudDyD76jsYyUL6xsS6pcD
1.22 Base58Check
Es un formato de codificación de Base58, el cual posee un código de chequeo de errores. El checksum consiste en cuatro bytes adicionales añadidos al final de los datos que fueron codificados. El checksum es derivado del hash de los datos codificados y puede por ende ser usado para detectar y prevenir errores de transcripción o tipeo. Cuando el código de decodificación es presentado con un código Base58Check calculará el checksum de los datos y lo comparará con el checksum incluido en el código. [32]
Para la creación de una secuencia Base58Check se debe proseguir de la siguiente manera:
1. Asignar un byte correspondiente a la versión del proyecto o aplicación que se está usando en el momento.
2. Calcular el SHA256 (SHA256(byte de la versión del proyecto)), después retener los primeros 4 bytes del Hash obtenido.
3. Concatenar los bytes hallados en los pasos anteriores.
4. Transformar esos bytes a bignumber, este bignumber se transforman en base58 y siguiente se normaliza.
5. Se concatena, los primeros bytes del paso 4 y después los del paso 5 [33].
Utilizando el mismo ejemplo anterior donde, la base58:
49nsnQrof3cGju1PNucudDyD76jsYyUL6xsS6pcD,
Al convertirlo a base58Check seria:
456C2070726F796563746F207365206C6C616D612042797A616E74696E
1.23 Dirección Wallet (dirección donde estará la información sensible) Una dirección es un método de identificación usado por Blockchain para recibir o transferir información, usada únicamente una vez por cada transacción; esta dirección es similar a la usadas por las calles de una ciudad o similar a las del correo electrónico [2].
1.24 Árbol de Merkle
Es una estructura de datos en forma de árbol binario que se basa en funciones hash, usadas para una verificación eficiente, pues reducen el espacio ocupado por cada bloque; el árbol de Merkle aplica una función hash SHA256 por cada transacción, posteriormente conca-tena pares de hash de estas transacciones, y a partir de la concaconca-tenación genera un nuevo hash, el proceso se repite hasta que queda un único hash y por lo tanto, no es posible seguir
Página 23
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
haciendo agrupaciones; éste último hash se llama hash raíz (root) del árbol de Merkle (fi-gura 5), este hash se registra dentro del bloque que se va a añadir en la cadena de Blo-ckchain. Las ventajas de usar un árbol de Merkle es que permite la validación rápida de una transacción dentro de un bloque sin necesidad de cargar todas las transacciones creadas en la red[7], ya que los hashes se propagan desde los nodos finales hacia la raíz, de manera que si se hace alguna modificación es fácil detectar el cambio.
Figura 5. Ejemplo de árbol de Merkle
1.25 Prueba de trabajo (Proof of Work - PoW)
Es una operación que se hace inmediatamente después de la creación de un bloque y poste-rior incorporación al árbol de Merkle, tiene como fin que la mayor parte de los nodos de la red puedan confirmarlo (el 51% de estos), las confirmaciones deben hacerse reiteradas veces hasta que permita cierto grado de retraso, lo suficientemente amplio para rechazar cualquier bloque con transacciones anómalas o fraudulentas antes que se añadan a la red Blockchain. El proceso de calculo que se realiza para validar dichos bloques es la función criptográfica SHA-256, donde el hash que se obtiene tiene que ser inferior a un valor objetivo (este valor objetivo es fijado a través del azar, pero que tiene que cumplir con un tamaño mayor a 4 bytes) que se impuso en toda la red Blockchain.
Supongamos, por ejemplo, que A necesita comprobar que un usuario B es quien dice ser, para ello A le envía una cadena de caracteres a B “Hola, ¿cómo estás?”, y su objetivo es crear un nonce con el SHA256 donde este hash comience con “000”, entonces para resolver este problema el usuario B procederá a resolverlo agregando un numero entero al final de la
Página 24
frase, con el objetivo de hallar el hash que requiere el usuario A, para lograrlo, el usuario B ejecuta varias veces la prueba hasta encontrar la respuesta:
Cuando el usuario B va en la iteración 5281, encuentra un hash acorde con las especifica-ciones planteadas por el usuario A, éste envía un mensaje con él hash:
0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9
Y los caracteres “Hola, ¿cómo estás?5281” con el cual se resolvió, de manera que el usuario A comprueba que el resultado es válido y el usuario B es quien dice ser.
Algunos datos importantes sobre la prueba de trabajo son:
• La cabecera del bloque a confirmar tiene que tener: hash del bloque anterior, raíz del árbol que tiene las transacciones, versión del bloque, timestamp, valor objetivo buscado y el nonce.
• Un bloque con 500 transacciones se computa a la misma velocidad que un bloque de una sola transacción, puesto que todas las transacciones se desarrollan en un árbol de Merkle donde se provee integridad y consistencia.
• Nonce de la prueba de trabajo: es usada por los nodos de la red para validar si la transacción es correcta, si es que ésta cumple con las reglas impuestas por la red.
• El timestamp cambia cada cierto número de segundos, agregando mayor dificultad para hallar el hash para la validación.
• Nuevas transacciones pueden ser añadidas mientras se hace la prueba de trabajo.
• Para comprobar que el valor obtenido es inferior al valor objetivo la red procede a someter el SHA-256 a otro SHA-256 [SHA-256(SHA-256(carácter))], si éste no es válido, el nodo que dio la respuesta tendrá que volver a intentar todo el proceso.
• Cada 2016 bloques que se confirman, la dificultad para encontrar un Nonce valido en la red aumenta; así mismo la cantidad de bytes aumenta [8].
1.26 Prueba de participación (Proof of Stake-PoS)
PoS es una alternativa para el PoW (también es otro método para validación y creación de bloques como PoW), construido con el esquema de menor costo computacional. PoS no está basado en cálculos matemáticos y validaciones continuas de bloques como PoW, sino que el creador de cada nuevo bloque es elegido de forma determinística, dependiendo de la cantidad de información que este posee.
En caso contrario el nodo no recibe ninguna compensación por la validación, en otras pa-labras, quienes toman el costo son los mismos nodos; en otros tipos de redes que se usa PoS las comisiones cobradas por transacciones son para el nodo [22]. A modo de ejemplo, si se tienen cuatro usuarios A, B, C, D, donde A tiene el 38.5% de los datos, B 25%, C 20.5%, D 16%, cuando se inicia la validación A tiene una probabilidad de 38.5% de que su bloque sea añadido a la red Blockchain, es decir que entre más información o datos perte-nezcan a un validador mayor probabilidad tiene (figura 6) [15].
Página 25
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
Figura 6. Ejemplo de Proof of Stake
1.27 locking-script
Es un código de bloqueo que se coloca sobre una transacción de salida, el cual especifica las condiciones que deben cumplirse para abrir dicha salida en el futuro y poder ser usada. Históricamente a los scripts de bloqueo se los llamaba un scriptPubKey, ya que usualmente contenían una clave pública o dirección en la red Blockchain [35]. El locking-script es hecho por la aplicación o wallet del usuario que acaba de recibir la transacción, y única-mente éste es el único que puede proveer la solución para desbloquear dicha transacción. Para ello el wallet a través de un lenguaje sencillo plantea una condición o “reto” y subse-cuentemente se cifra con la llave pública. Por ejemplo: “3 5 ADD 8 RESULT”, esto quiere decir que el reto impuesto es resolver 3+5 y que como resultado se obtenga 8, pero al estar cifrado únicamente se verá de la siguiente manera:
dsblqv1poLPt3S8rKW5ezwX7YyUbKpJrszfK+61vXUCKZnio8LZdcDiw5W/zCc8z
Las operaciones y el resultado están cifradas con el objetivo de que el reto únicamente pueda ser resuelto con un Unlocking-script.
1.28 Unlocking-script
Es un código que presenta una solución y/o satisface, las condiciones establecidas por una salida de un Locking-script de bloqueo y permite que la salida sea gastada (gastada signi-fica que la transacción puede ser liberada de bloqueo y posteriormente añadida a otra transacción de salida). Los scripts de desbloqueo son parte de cada entrada de transacción, y la mayoría de las veces contienen una firma digital producida por la cartera del usuario a partir de su clave privada [35]. El Unlocking-script tiene dos objetivos importantes, el pri-mero es el de descifrar el Locking-script y el segundo es el de brindar una solución al “reto” planteado por el Locking-script. Por ejemplo:
dsblqv1poLPt3S8rKW5ezwX7YyUbKpJrszfK+61vXUnio8LZdcDiw5W/zCc8z
El Unlocking-script permitirá que esta cadena de caracteres sea descifrada y posteriormente brinde de manera exacta como se resuelve el reto que se planteado, es decir que le informara al nodo que para resolver el reto tiene que sumar 3 con 5 y que ese resultado será 8 (véase el ejemplo de Locking-script).
1.29 UTXO
También conocido como unspent transaction output, son fragmentos indivisibles de transacciones que se encuentran atadas a un propietario específico, asociados a direcciones de salida o entrada, éstas contienen información acerca de lo que se está recibiendo y lo
38% 25% 21% 16%
Información
A B C DPágina 26
que entra como parte de la cadena de datos, registrados en la cadena de bloques y recono-cido como unidades de transacción por toda la red [35].
1.30 Bloque Genesis.
El bloque Genesis es también conocido como el bloque 0 de una red Blockchain. Éste por lo general es casi siempre un bloque hardcoded, es decir, que es un bloque con información deliberadamente incrustada o grabada en el código fuente, es el único caso en toda la red Blockchain que no tiene un antecesor [27].
Como ejemplo para la creación de un bloque génesis, se debe tener en cuenta el tamaño del nonce inicial que va a tener y una cadena de caracteres inicial que contendrá el hash del bloque raíz (figura 7).
Para este ejemplo pondremos el nonce en el valor de 4 ceros: “0000” y la cadena de carac-teres será: “David, Juan, Laura año 2017”. Posteriormente, con un programa externo (la función de este programa externo era el de solucionar una prueba de trabajo basado en los parámetros anteriores), se hace una prueba de trabajo hasta que se encuentra que el hash256 para la cadena de caracteres es:
0000948b1ffed0c8108f54759dca36cf3634bfcfec2e43c936509fbe37d5f1bc
Después de obtener esta cadena Hash, la red Blockchain genera un bloque con la cabecera hash que se mencionó anteriormente. Seguido de esto se construye un árbol de Merkle a partir de este bloque, con un antecesor nulo.
Figura 7. Ejemplo de bloque génesis
1.31 Minería
Es un proceso en que se invierte capacidad computacional (a través de una regla de con-senso como PoW o PoS) en procesamiento de transacciones o garantizar la seguridad de la red, y permite que todos los participantes en una red Blockchain estén coordinados. La minería es el método que usan los mineros (nodos computacionales de la red Blo-ckchain, es decir, computadores o dispositivos móviles) en la red Blockchain para crear y procesar los bloques, además de validar que cada transacción realizada en el plazo estable-cido por consenso se cumpla.
Página 27
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
Las principales características de la minería son:
• La minería cuenta con mineros que contienen una copia completa de toda la red Blockchain, así como sus transacciones.
• Los participantes de la minería (es decir los mineros) tiene la característica de eva-luar las respuestas dadas por otros mineros al desafío dado por la regla de consenso, y de ellos dependen si estos aceptan o no la respuesta dada por otros mineros a modo de votación.
• Todos los mineros evalúan las respuestas de otros mineros y también crean sus propias soluciones.
• Todos los mineros generan bloques según las transacciones realizadas en la red, estos a su vez después de generar el bloque compiten (por medio del método de consenso) para que este bloque sea añadido a la red Blockchain.
1.32 Filtro de Bloom
Es un algoritmo probabilístico con estructura propia que trabaja sobre conjuntos de datos (esto lo hace indicado para buscar elementos en estructuras con gran cantidad de datos, y por tal razón tienen un costo alto. éstas estructuras pueden estar ubicadas en red (nube, LAN, internet, etc.)) o discos duros, con el fin de apoyar consultas que quieren contestar la pregunta “¿Qué probabilidad hay de que el elemento X se encuentre en el conjunto Y?”, este algoritmo consiste en una manera eficiente de verificar que una entrada dada NO se encuentra en un arreglo de objetos o colección de datos. Las principales características que tiene son:
• Tiene un margen de error (falsos positivos), calculable y ajustable.
• Cuando se busca un elemento, un resultado negativo significa que con toda segu-ridad no está en la lista.
• Un resultado positivo significa que un elemento probablemente está en la lista.
• Requiere muy poco espacio en memoria y las consultas son muy rápidas.
Para la creación del filtro, lo primero que se debe tener en cuenta es el tamaño del arreglo (importante para construir un arreglo y almacenar los bytes de las búsquedas); para ello se debe tomar en cuenta el número de elementos que se desea guardar y el margen de error (valor que varía de 0 a 1, es decir que si se quiere un margen de error del 1% este valor seria 0.01), la fórmula está dada por la función techo, que tiene el negativo de la cantidad de elementos por el logaritmo en base 10 de la tasa de error que piensas tolerar divido con el logaritmo en base diez de dos elevado a la dos:
(1)
Antes de agregar un elemento dentro del arreglo, se le deben aplicar alguna de las siguientes funciones de hash (tabla 2):
Nombre Tipo Funciones Creación Resultado
MurmurHash Hash no cripto-gráfico
multiplicar (MU) y rotar (R)
Creado en 2008 por Austin Ap-pleby.
Número deci-mal
FNV Hash Hash no cripto-gráfico
Función piso Creada por Glenn Flowler y Landon Curt en 1991
Número Hexa-decimal
Página 28
HashMix Hash no cripto-gráfico
Esta función mez-cla dos o más ta-blas hash de otra denominación en una nueva tabla hash identificada mediante hash ID, con un resul-tado Hexadeci-mal. Creado para Chromium en 2011 Número Hexa-decimal
Tabla 2. Funciones de hash
Cabe aclarar que las anteriores tres funciones hash son usadas para búsquedas de elementos en es-tructuras basadas en hash. Cuando se obtiene este número entero de cada una de las funciones Hash lo siguiente es calcular para cada un módulo de este número con base en el tamaño del arreglo hallado en el anterior paso, y en el caso de FNV Hash o HashMixed estos deben ser convertidos a decimal como indica en la figura 8.
Figura 8. Ejemplo de conversión a decimal
El número que se obtiene de esta operación es la posición en el arreglo de bits, y allí se escribirá un uno (1). Supongamos que tras hacer la operación anterior sobre un elemento X, éste obtiene un valor de 3 por lo cual se cambia el bit de 0 a 1 en esa posición (ver figura 9).
Figura 9. Ejemplo de cambio de bits entre 0 y 1
El proceso de búsqueda de un elemento dentro de un arreglo se puede hacer utilizando MurmurHash. Para que éste arroje una probabilidad, es igual a cuando se agrega, con la diferencia que se utilizan 2 funciones hash no criptográficas diferentes como FNV Hash y la misma versión MurmurHash con que fue creado el arreglo, para ello compara el resultado en la posición dada por MurmurHash y FNV, si en esas posiciones encuentra un 1 es posible que el elemento buscado se encuentre [49].
Como ejemplo tenemos las siguientes 4 palabras: David, Laura, Juan y Rafael. El error máximo per-mitido será de 18% (entre mayor sea el rango del error, menor será el tamaño del arreglo; el valor de 18% fue escogido para tener un arreglo de un tamaño considerable para el ejemplo). Únicamente se usarán las funciones hash FNV Hash y MurmurHash.
Página 29
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
El tamaño según las necesidades dadas para el ejemplo es 15:
Cuando se añade la palabra: David
FNV: 12, Murmur: 7
Cuando se añade la palabra: Laura
FNV: 6, Murmur: 11
Cuando se añade la palabra: Juan
FNV: 13, Murmur: 1
Cuando se añade la palabra: Rafael
FNV: 3, Murmur: 8
Cuando se buscan palabras dentro del arreglo como (tabla 3):
Palabra a buscar FNV (posi-ción en arre-glo) Murmur (posición
Página 30 banano 10 10 100% seguro que este no se encuentra en el arreglo.
Como la posición 10 halla por el FNV y Murmur, no se en-cuentran anotadas esto nos dice
que la palabra no se encuentra en el arreglo. davis 8 6 Es posible que la pala-bra se en-cuentre en el arreglo.
Es posible que se encuentre dentro del arreglo porque la
po-sición número 6 y 8 está mar-cada en el arreglo, pero es
pro-bable que no se encuentre.
encon-trar 4 8 100% seguro que este no se encuentra en el arreglo.
aunque la posición número 8 se encuentra marcada, pero la nu-mero 4 no, esto nos dice que la palabra tiene 100% de probabi-lidad de que no se encuentre en
el arreglo Tabla 3. Ejemplo de palabras a buscar
1.33 Doble gasto
Es cuando un usuario trata de enviar la misma información a dos destinatarios distintos. La verificación por la prueba de trabajo permite que los nodos acepten por consenso una única transacción y la otra sea descartada (figura 10).
Figura 10. Ejemplo de doble gasto
2. Estado del arte
En la presente sección se muestran algunos trabajos y aplicaciones relacionados con el proyecto Byzantin, realizados a partir del uso de Blockchain con el fin de entender hasta qué punto se encuentra desarrollada esta tecnología y así mismo que tan avanzada se encuentra el área en la que se desarro-llará Byzantin. Lo anterior, con el propósito de sopesar las ventajas y desventajas del área de trabajo y así construir una aplicación que represente un aporte para la misma.
Blockchain se ha convertido en un referente de seguridad, por lo que esta tecnología se afianza como un concepto útil para realizar transacciones entre usuarios o entidades. Con el tiempo Blockchain se ha abierto paso en distintas áreas a la financiera (como era su propósito inicial), esto ha hecho de este concepto el centro de atención de grandes compañías que han buscado aportar nuevos conocimientos a esta área. La Blockchain actualmente tiene características que lo definen y que hacen de esta herra-mienta potencialmente atractiva. Estas características son:
• Almacenamiento y transmisión de información entre usuarios utilizando métodos seguros de cifrado.
Página 31
Preparado por el Grupo Investigación Istar- Versión 1.01 – 12/03/2008
• No existe un intermediario específico de transacciones. • Los mecanismos de consenso son capaces de resistir ataques.
A continuación, se encontrarán ejemplos de trabajos realizados con Blockchain para hacer un segui-miento del estado de la tecnología y como aprovecharla para el desarrollo de Byzantin.
2.1. Tecnología financiera: Blockchain y escenario económico.
La tecnología financiera o “Fintech”, se utiliza para identificar las empresas que ofrecen servicios y/o productos financieros, haciendo uso de tecnologías de la información y comunicación, como páginas de internet, redes sociales y aplicaciones para celulares.Las instituciones financieras están buscando alianzas colaborativas con las empresas que proporcio-nan dicha tecnología. Dentro de FinTech, la tecnología Blockchain está atrayendo una atención espe-cial debido a las posibilidades que ofrece, sobre todo como una herramienta nueva para facilitar las transacciones.
Esta nueva tecnología, puede llegar a tener una contribución importante en la infraestructura del mer-cado de valores, y en la introducción al papel de cadenas de bloques en las transacciones financieras. Dicha tecnología es innovadora y está mejorando rápidamente. Sin embargo, cualquier empresa que desee adoptar la tecnología Blockchain tendrá que actualizar sus procesos de negocio y mantener una discusión continua con las partes interesadas.
En cuanto a limitantes para adoptar dichas tecnologías, se tienen cifras aproximadas bajo las cuales se afirma que sólo el 20% de las mismas, están basadas en tecnología. El otro 80% es atribuible a los actuales procesos empresariales y modelos de negocio. Es necesario tomar el tiempo para utilizar y aplicar la tecnología Blockchain en los mercados financieros. Llevará más de un par de años para que la tecnología de bloques se despliegue completamente dentro de la infraestructura financiera, pero podría tardar menos de una década [9].
2.1.1 NASDAQ y Citi
NASDAQ es una bolsa de valores automatizada y electrónica. Es la segunda bolsa de valores más grande de los Estados Unidos [29].
Como muestra de solidez en transacciones, NASDAQ y Citi hicieron una colaboración que se con-virtió pionera en la aplicación del paradigma descentralizado y distribuido de Blockchain, esta inno-vación los ha puesto en la delantera en el sector financiero. La implementación de este modelo ha incrementado la eficiencia operacional y la transparencia en el proceso de la transacción, acceso a pagos globales desde NASDAQ. La alianza entre NASDAQ y Citi tiene como propósito la creación de una solución de pago integrada, que permite el procesamiento directo de pagos y automatiza los procesos de conciliación bancaria, esto se logra mediante un libro contable distribuido que guarda y genera instrucciones de pago, esto se logra gracias a una plataforma de Blockchain [19].
Estos esfuerzos muestran como se ha marcado una tendencia hacia un conocimiento compartido, con el fin de realizar transacciones transparentes, evitando engorrosos trámites burocráticos ya que Blo-ckchain procesa directamente peticiones sin intermediarios. Se tomó en cuenta NASDAQ y Citi por-que tiene varias ventajas como: facilidad en los procesos de auditoría, verificación de transacciones sin intermediario, menor probabilidad de dobles pagos, mayor control en transacciones, mayor con-trol de transacciones, mayor velocidad de transacciones y transparencia.
Página 32
2.1.2 Corda
Fue un proyecto lanzado en 2015 que surgió por los constantes problemas de interoperabilidad entre las plataformas bancarias, lo que causaba elevados costos e ineficiencias. Corda se define como un libro contable distribuido que mediante el consenso de sus nodos puede albergar información de dis-tintos tipos de transacciones entre personas y entidades. Para manejar los acuerdos electrónicos Corda
cuenta con contratos inteligentes, estos contratos inteligentes combinan la lógica del negocio con los requerimientos legales asociados. El único acceso que se tiene a la plataforma de Corda es a través de la plataforma Web de la que disponen [20]. En cuanto a Corda, se debe manifestar que al emplear la tecnología Blockchain se puede encontrar las siguientes ventajas: Eficiencia en pagos, reducción de costo es infraestructura y reducción de riesgos bancarios (Riesgo crediticio, Riesgo de liquidez, Riesgo cambiario, Riesgo de tasa de interés).
2.1.3 IBM Global Financing
IBM utiliza Blockchain con el fin de evitar disputas financieras, ya que reduce las diferencias de operaciones entre clientes, proveedores o cualquier Stakeholder. Esto lo logra integrando los datos de las compañías involucradas y estableciendo las relaciones sobre una misma red distribuida. Al utilizar Blockchain, IBM busca alcanzar un seguimiento transparente de las transacciones, eficiencia en la búsqueda de transacciones, productividad mediante la reducción de tiempos y flujo de activos [21]. IBM Global Financing inicio el proyecto con miras a aprovechar las ventajas de la visibilidad de la evolución de la transacción, de no presentar problemas de interoperabilidad, los clientes pueden ob-servar el momento en que una eventualidad ocurre y retrasa el proceso, reducción en los tiempos de una transacción porque todos los datos se mueven sobre una misma plataforma, y que puede ser pri-vado o público.
2.1.4 Ethereum
Es una plataforma basada en Blockchain, de código abierto que permite a los desarrolladores construir y desplegar aplicaciones descentralizadas. Ethereum funciona a través de una máquina virtual llamada
Ethereum Virtual Machine (EVM). Esta máquina ejecuta un código intermedio o bytecode el cual es una mezcla de LISP (familia de lenguajes de tipo multiparadigma). Su objetivo es brindar contratos inteligentes, códigos criptográficos que contienen valor y sólo se desbloquean si se cumplen ciertas condiciones, también pueden ser incorporados encima de la plataforma, con mucho más poder que la ofrecida por el script clásico Blockchain propuesto para la red Bitcoin debido al poder agregado del Turing completo [36].
2.1.5 Chain
Es un Framework y plataforma empresarial que permite a instituciones empresariales emitir y trans-ferir activos financieros por medio de una red Blockchain. Esta plataforma permite a las empresas operar bajo Blockchain, el objetivo principal es asociar bajo ésta varias empresas que quieran crear productos y servicios financieros innovadores.
La tecnología provista por Chain permite que cada empresa dada pueda tener control, creación y transferencias de activos, por medio de una red que se encuentra centralizada; esta red a su vez permite que cada participante (o empresa) pueda participar de manera equitativa a manera de federación con otros participantes de la red. Este modelo permite a las empresas trasladar activos financieros de todo tipo con la transparencia de la moneda digital, manteniendo los estándares de gobernabilidad, escala-bilidad y privacidad requeridos en los mercados financieros [37].