Servicios Tecnológicos sector empresarial

Conceptos Blockchain #2: Gestión de confianza & Registro

Escrito por Carlos Manuel López Muñoz | 05-jul-2018 11:48:54

Conceptos blockchain y su aplicación en "generación de confianza".

ÍNDICE

  1. Gestión de la confianza
  2. Consenso
  3. Caso de Uso: Registro de Personas y Documentos
  4. Conclusiones

1. Gestión de la Confianza

En el artículo anterior se trató sobre la “Inmutabilidad de la Blockchain”, uno de los principios en los que se fundamenta la tecnología de cadena de bloques que, esencialmente, son:

  • Inmutabilidad de la Blockchain.
  • Red entre iguales (peer to peer).
  • Archivos distribuidos y replicados.
  • Algoritmos de consenso.
  • Firmas criptográficas.
  • Contratos inteligentes.

 En esta nueva entrega vamos a tratar de la gestión de la confianza.

 En la economía, el Valor se genera por el flujo de bienes y servicios a través de redes empresariales, mediante transacciones y contratos. Para ello, se requiere implementar procesos de negocio que pueden estar abiertos a los ciudadanos o restringidos a empresas e instituciones.

 Por cuestiones financieras, legales, económicas, normativas, de regulación de mercados, de auditoría o de control de la calidad, se deben habilitar registros que contengan los contratos y las transacciones. El problema surge cuando cada participante (Empresarios, Entidades Financieras, Aseguradoras, Organismos Reguladores, Auditores, …) tienen su propio sistema de registro, lo que dificulta seriamente el desarrollo de los procesos y propicia las diferencias entre los distintos sistemas y, por lo tanto, la necesidad de conciliación. Todo ello se traduce en ineficiencia. Este problema se agudiza con el proceso de globalización en el que estamos inmersos y la enorme velocidad actual de los negocios, especialmente los que intercambian activos digitales.

Blockchain surge como respuesta a este reto y persigue:

  • Crear un solo registro (o al menos, una única referencia aceptada por todos), consensuado, no modificable y accesible.
  • Gestionarlo de manera segura y eficiente.

Como primera consecuencia, es esencial la gestión de la confianza, tanto entre todos los participantes, como ante terceros. En Blockchain, la gestión de la confianza se sustenta en tres (3) principios: 

  • Inmutabilidad de la cadena de bloques.
  • Confidencialidad de la información que contiene.
  • Consenso 

Cada uno de los principios interviene en las distintas etapas de gestión de la Blockchain: 

  1. El consenso interviene en la carga de los datos, acreditando la veracidad de la información. Se trata del aspecto más importante y dificultoso porque se ve afectado por cuestiones operativas y de rendimiento.
  2. La inmutabilidad tiene que ver con el almacenamiento y transporte de la información
  3. La confidencialidad se relaciona con el uso de los datos recogidos en la cadena de bloques.

1. 1. Inmutabilidad

La inmutabilidad se basa en dos (2) elementos:

  • Cada bloque de datos lleva grabado un código hash que se corresponde con un algoritmo sobre la totalidad de los datos que contiene el bloque.
  • Cada bloque va enlazado con el anterior, incorporando el código hash del bloque previo.

Con esto se garantiza que cada bloque es íntegro en sí mismo y, si alguien manipulase todos los datos de un bloque para simular que no ha sido alterado, la que se vuelve inconsistente es la propia cadena de bloques.

1. 2. Confidencialidad

La información que suele contener una Blockchain es muy sensible, debiéndose garantizar dos (2) propiedades contrapuestas:

  • Que sea accesible para todos los involucrados, que pueden ser muchos y con intereses diversos.
  • Que se restrinja el acceso a la información sólo a los participantes autorizados.

 La solución está en el uso de técnicas criptográficas para, con independencia del acceso a los archivos, la información sólo tenga valor para quien la pueda decodificar.

1. 3. Consenso

Aunque no es imprescindible, especialmente en cadenas de bloques privadas, la confianza dentro de la tecnología Blockchain suele ser distribuida. Esto significa que se requiere de un proceso informático de acreditación de la veracidad de la información cargada en la Blockchain. Este proceso se llama consenso y es el más complejo de implementar.

 

2. Consenso

Se trata de encontrar una mayoría de participantes que opine que la información propuesta para incorporarse a la cadena de bloques es veraz. En el procedimiento se deben decidir tres (3) cuestiones: 

  • Quienes son los que participan.
  • Qué peso tiene cada uno en el proceso.
  • Si el proceso está además vinculado a un determinado esfuerzo computacional, lo que evita el desorden y la posible explosión incontrolada de bloques con información errónea o manipulada.

Para detallar los diferentes tipos de consenso, se seguirá el excelente artículo de Karl Niebuhr de mayo / 2017 (https://www.karlbooklover.com/consensos-del-blockchain/).

Básicamente, se dispone de tres (3) tipos de algoritmo de consenso:

  • Proof-of-Work (PoW). Algoritmo de prueba de trabajo, que fue el primero en implementarse y que es el que utiliza, entre otras redes, Bitcoin. Consiste en probar un entero (nonce) como sufijo de los datos del bloque, iterando hasta que el código hash correspondiente a los datos del bloque junto con el nonce, comience con un determinado número de ceros (hexadecimales). En Bitcoin el número de “0” que se exigen actualmente es de 18. Como el tiempo de cálculo requerido es muy elevado, se recompensa con Bitcoins.
  • Proof-of-Stake (PoS). Vinculado a la disponibilidad de recursos en el sistema. Más eficiente y equilibrado.
  • Proof-of-importance (PoI). Es una variante de PoS, donde se introducen, además de los recursos adquiridos por el participante, el nivel de participación e involucración del usuario.

 Los tres (3) son seguros. PoW es deficiente desde el punto de vista del consumo de energía y conduce a la implementación de “granjas de minado” que, en general, sólo pueden instalarse y operar con rentabilidad en países con precios intervenidos de la energía.

PoS y PoI son menos exigentes en el consumo de energía, pero requieren de un determinado nivel de organización y control.

Vamos a poner un ejemplo de minado mediante un programa (desarrollado con la librería node.js), que trata de encontrar una serie de caracteres en la parte izquierda de un código hash obtenido a partir de un texto fijo. Los datos son los siguientes

  • Texto fijo: “CIBERNOS”.
  • Algoritmo de Hash: SHA256
  • Número de caracteres fijos a conseguir en el inicio del código hash (dificultad): de 1 a 6.
  • Carácter a conseguir: hexadecimal “c”.
  • Número de pruebas para obtener un promedio del esfuerzo de minado: 10 por cada nivel de dificultad.

 

El programa que se ha desarrollado es muy sencillo, y se puede acceder a él con el siguiente enlace: "programa minado"

El resultado que se obtiene es el siguiente:

 

 

  • La progresión es logarítmica.
  • Se trata de un método muy efectivo para controlar el ritmo de entrada de los bloques en la Blockchain. Es el que utiliza Bitcoin y otras criptomonedas.
  • Si se proyecta el esfuerzo para obtener 64 caracteres hexadecimales “c” (o cualquier código hexadecimal), se llegaría a un orden de 1077 , de modo que, actualmente, el criptoanálisis es computacionalmente inviable. Este tema lo retomaremos en el caso de uso.

 

3. Caso de Uso: Registro de Personas Y Documentos

Para explicar los conceptos de gestión de la confianza, se propone como caso de uso la creación de un Registro de Personas y de Documentos utilizando tecnología Blockchain. La solución de este tipo de problemas de aseguramiento de la identidad de las personas y de la integridad de los documentos es una de las aplicaciones más demandadas en este momento.

 La Blockchain dispondría de las siguientes funciones: 

  • Dar de alta los datos de identidad de una persona.
  • Crear una pareja de claves pública y privada (con RSA, ElGamal, …) junto con una identidad digital, como hash de la clave pública. La posibilidad de colisión entre dos identidades digitales utilizando estas técnicas es prácticamente nula.
  • Dar de alta el código hash de un/os documento/s o archivo/s de cualquier tipo, en formato digital, de titularidad de la persona.
  • Grabar en la Blockchain los datos de la persona y de los documentos:
    • Encriptados con la clave pública asignada a la persona, dentro de un archivo de tipo JSON.
    • Los códigos hash de cada campo (sin codificar, incluidos los documentos y archivos).
  • Verificar la integridad de la Blockchain grabada:
    • De cada bloque.
    • De la cadena completa.
  • Recuperar de la Blockchain los datos de una persona, junto con los documentos y archivos incorporados
  • Enviar estos datos a un tercero, con acceso a la Blockchain.
  • Verificación del tercero de que los datos remitidos son correctos.

 El diseño del proceso sería el siguiente:

La prueba de concepto consiste en cargar inicialmente la Blockchain con dos (2) usuarios: 

  • MARÍA GARCÍA RODRÍGUEZ, con NIF: 24751909E y autora de la Tesis Doctoral 1.
  • ANTONIO DOMÍNGUEZ GÓMEZ, con NIF: 28380532G y autor de la Tesis Doctoral 2.

Con estos datos se lanza la actualización de la Blockchain. Por simplicidad, se omiten las claves utilizadas para el proceso de codificación de los datos.

El resultado es el que se presenta en la siguiente figura:

Se puede comprobar:

  • La Blockchain solo tiene datos codificados con la clave pública de cada usuario y, por lo tanto, sólo pueden ser decodificados por dicho usuario.
  • Cada atributo almacenado, así como la Tesis Doctoral, genera un código hash que se utilizará para comprobar que estos datos no han sido manipulados.
  • Sin el conocimiento de las claves, esta estructura de datos carece de ninguna utilidad.

 ¿Cómo se usa?

 En la siguiente figura se tiene el procedimiento para recuperar datos de la Blockchain, decodificarlos y transmitirlos a un tercero.

 

El usuario 1, María García Rodríguez, recupera sus datos de la Blockchain (Componente “Recuperar Datos Bloque”), los decodifica con su clave privada, le añade el archivo que contiene su Tesis Doctoral y se los envía a su profesor, que comprueba en la Blockchain que estos datos no han sido manipulados. Para ello, ejecuta el componente “Comprobar Datos Bloque”, que calcula los códigos hash de cada uno de los atributos y archivos enviados por María García y comprueba que coinciden con los almacenados en la Blockchain. De esta manera, se garantiza la veracidad de los mismos.

Por el contrario, si alguien hubiera alterado el contenido de la Blockchain, aunque fuera un solo carácter, o hubiera modificado la Tesis Doctoral, el resultado sería el recogido en la siguiente figura. Es conveniente comentar que la posibilidad de encontrar un archivo con una Tesis Doctoral cuyo hash coincida con el almacenado en la Blockchain es prácticamente nula; en concreto 1 / 1077 .

 

4. Conclusiones

El objetivo más importante del uso de la tecnología de Blockchain es la gestión de la confianza. Esta gestión se corresponde con una serie de propiedades que se aplican en función del momento en el desarrollo del proceso que se apoya en la cadena de bloques: 

  1. Consenso para asegurar la veracidad de los datos que se graban en la Blockchain.
  2. Inmutabilidad para acreditar que no se han alterado en las tareas de almacenamiento y transporte.
  3. Confidencialidad para permitir el acceso a los datos solo de las personas autorizadas.

 Se ha propuesto un caso de uso en el que una persona puede ceder sus datos a un tercero, sólo de aquellos que verdaderamente sean necesarios y, en algún caso, de información (archivos de Tesis Doctorales) que no está almacenada en la Cadena de Bloques.

En este caso de uso se demuestra la gran capacidad de acreditación de la información que tiene esta tecnología, sin requerir la disponibilidad de una tercera parte de confianza.

En el próximo artículo trataremos de los Smart Contracts.