Páginas

viernes, 9 de febrero de 2018

Introducción a blockchain y futuros problemas

Conceptos previos

Antes de empezar conviene recordar que blockchain se basa en un sistema criptográfico llamado RSA y en el concepto de huella electrónica.

Sistema RSA

En el sistema criptográfico RSA, cada participante es propietario de dos claves, una pública (disponible para cualquier otro usuario del sistema) y otra privada (exclusiva del usuario y que debe ser protegida).

Ambas claves están asociadas de forma que la operación que se realiza con una de las claves se puede deshacer con la otra clave.

En el sistema RSA cualquier usuario A puede firmar electrónicamente un documento (normalmente se firma una huella del documento y no el documento completo) con su clave privada y enviarlo a un usuario B. Como el usuario A firma con su clave privada, únicamente conocida por A, la firma garantiza que fué el usuario A quien firmó el documento. El usuario B, tras recibir el documento, puede disponer de la clave pública del usuario A (el firmante) para verificar que lo firmó A y que el documento no ha sido adulterado tras la firma.

En el sistema RSA cualquier usuario A puede enviar un documento encriptado a un usuario B, para encriptar el documento el usuario A obtiene la clave pública del usuario B y con dicha clave cifra el documento y lo envía. El documento cifrado sólo puede ser descifrado con la clave privada que posee el usuario B, por lo que aun siendo interceptado el documento por un tercer usuario, éste no podría leer el documento.

Al par de certificados que posee cada usuario se le llama certificado

Los certificados son emitidos por ciertas entidades (autoridades certificadoras) en las que confían implícitamente todos los participantes del sistema.

Huellas electrónicas

Existen procedimiento computacionales capaces de generar un extracto único de cualquier fichero. Dicho extracto se llama huella electrónica y tiene unas características especiales:

  • No es posible obtener el documento original a partir de la huella
  • No es posible encontrar un documento distinto que genere la misma huella (sería posible, pero serían millones de años de pruebas)
  • La huella tiene siempre el mismo tamaño (por ejemplo 256 bits) independientemente del tamaño del documento original
  • Si un documento resulta cambiado aunque sea una coma, la nueva huella electrónica es completamente distinta de la anterior
  • La generación de la huella es muy muy rápida

Conceptos generales de blockchain

Es una base de datos distribuida donde se almacena una CADENA de BLOQUES.

La cadena de bloques está REPLICADA en cada uno de los servidores de la red, a los que se llama MINEROS. Hay miles de servidores en la red de bloques, por lo que hay MILES DE COPIAS de la CADENA.

Cada bloque almacena las N transacciones que se han realizado en un cierto intervalo de tiempo.

La cadena de bloques sigue una secuencia temporal, cada bloque apunta al bloque anterior (a la huella HASH su bloque antecesor), por lo que siguiendo la secuencia de bloques tenemos la secuencia de transacciones de todos los usuarios del sistema desde que éste arrancó en el 2009. Es por tanto posible recorrer la cadena de bloques y recopilar el 'historial' de transacciones que un usuario del sistema ha realizado.

Si un nodo de la red (MINERO) fallase, no se pierde la información dado que hay miles de nodos adicionales.

Ninguno de los BLOQUES de la CADENA puede ser alterado dado que eso cambiaría su huella y rompería la cadena al quedar DESCONECTADO de su bloque sucesor. Esta alteración de un bloque en uno de los N servidores (MINEROS) se detecta inmediatamente al existir MILES de copias de la cadena.

Cada uno de los BLOQUES almacena N transacciones, el tamaño del bloque viene determinado por el número de usuarios y por la capacidad de cómputo necesaria para que los MINEROS generen la HUELLA del bloque. El formato de los bloques es el siguiente:

  CABECERA -> Tiene la huella hash del bloque anterior
  DATOS    -> Con un total de N transacciones
    TRANSACCION de un usuario
    TRANSACCION de un usuario
    TRANSACCION de un usuario
    ...
    TRANSACCION de un usuario
    TRANSACCION final del minero que cierra el bloque
  HUELLA   -> Huella SHA del presente bloque

Cada una de las transacciones almacenadas en un BLOQUE de la cadena tiene los siguientes datos:

  Clave pública del usuario A.
  Clave pública del usuario B.
  Dato transferido que podría estar cifrado para que únicamente B lo lea.
  Huella del dato transferido.
  Firma electrónica del dato por parte de A.
  Firma electrónica del dato por parte de B.

Participantes en blockchain

En blockchain únicamente hay tras roles:

  Usuarios que registran transacciones por pares
  Mineros que almacenan las transacciones
  Entidades certificadores que generan el par de claves (certificado) que identifica a cada usuario y cada minero

Funcionamiento de blockchain

El sistema tiene en líneas generales el siguiente funcionamiento:

Un usuario A quiere realizar una transaccion con un usuario B, con lo que envía su solicitud de transacción al MINERO de la red BLOCKCHAIN mas cercano. Dicha solicitud lleva:

  Clave pública del usuario A.
  Clave pública del usuario B.
  Dato transferido que podría estar cifrado para que únicamente B lo lea.
  Huella del dato transferido.
  Firma electrónica del dato por parte de A.

El MINERO de A almacena la transaccion en el bloque actual (el que todos los nodos de la red están rellenando con las transacciones de los últimos N minutos) y transmite la transaccion a los restantes MINEROS de la red (para que la almacenen en su copia del nodo actual) y uno de ellos la entrega al usuario B, quien la firma electrónicamente con lo que la transaccion ya yiene:

  Clave pública del usuario A.
  Clave pública del usuario B.
  Dato transferido que podría estar cifrado para que únicamente B lo lea.
  Huella del dato transferido.
  Firma electrónica del dato por parte de A.
  Firma electrónica del dato por parte de B.

La transaccion completa es entregada el MINERO de B que la propaga al restante grupo de mineros.

Cuando el bloque actual está casi completo (sólo cabe una transaccion mas), todos los mineros compiten por generar la HUELLA SHA256 de ese último bloque. Esta huella no se genera de la forma habitual (que sería un proceso casi inmediato) sino que tiene que cumplir cierta restricción que precisa mucho tiempo de computación. La restricción es que los N primeros bits de la huella SHA256 deben ser ceros.

Los MINEROS compiten por generar esa huella y quien la genera cierra el bloque (que aloja como última transacción que fué el minero X quien cerró el bloque) y propaga el bloque cerrado al resto de MINEROS para que arranque un nuevo bloque en la cadena.

Por cada bloque cerrado un MINERO recibe una importante cantidad de DINERO. Dinero que invierte en instalaciones y equipos informáticos que le permiten COMPETIR mejor con los restantes mineros para tener capacidad de cómputo suficiente como para cerrar un % mayor de los bloques.

Se cierra un bloque cada 10 minutos, por lo que todos los mineros tienen un fuerte incentivo económico.

Aplicaciones de blockchain

El sistema blockchain tiene potencial para cambiar muchos de los sistemas que operan hoy en día en el mundo dado que elimina intermediarios y registros privados:

  • Mis datos bancarios son una secuencia de operaciones de dos tipos, operaciones de cobro (nómina) y de pago (mis gastos), por tanto no necesito que únicamente sean los ordenadores de mi banco (unos cuantos MINEROS de su red privada) quienes guarden esa información y/o el dinero físico, puedo confiar en una criptomoneda y en la red de miles de MINEROS de blockchain. Evito así problemas de quiebras bancarias o problemas de corralitos en países inestables.
  • Las transferencias de dinero que realizan los emigrantes a sus países de destino pueden prescindir de entidades intermediarias si se realizan en criptomonedas basadas en blockchain
  • Los contratos de compraventa de propiedades (coches, terrenos, casas, etc) pueden realizarse entre pares prescindiendo de notarios y de un registro centralizado de la propiedad
  • El historial sanitario de una persona no tiene porqué estar almacenado en N hospitales, pertenece a la persona que lo almacena en blockchain
  • El registro de la propiedad intelectual (músicos, escritores, patentes, etc) no tiene que estar gestionado por N registros nacionales sino que puede ser universal y quedar almacenado en blockchain

Futuros problemas del blockchain

Tras este resumen quedan aún muchos detalles pendientes de aclarar:
  • ¿Todas las transacciones son por pares?
  • ¿Qué ocurre si al cabo de los años una CA grande que generó miles de certificados desaparece?
  • ¿Qué pasaría si un gigante tipo Google con millones de nodos entrase como minero?
  • ¿Cuanta energía se consume en labores de minería?
  • Si se usa blockchain de forma masiva ¿cuantas transacciones pueden registrarse por segundo?
  • Si se usa blockchain de forma masiva ¿será manejable el tamaño de la lista de bloques?
  • Si se quiere confidencialidad se deben cifrar los datos de la transacción antes de añadirla a un bloque, pero ¿cómo garantizamos que esos datos sigan estando protegidos dentro de 25 años cuando la técnica deje obsoletos los mecanismos de cifrado actuales?
  • Si en un futuro son los gobiernos quienes impulsan las criptomonedas y registran el 100% de nuestras transacciones, ¿donde queda la privacidad? y ¿quien garantiza que esos datos no terminan llegando a manos privadas?

Referencias
  • https://es.wikipedia.org/wiki/Cadena_de_bloques
  • https://www.youtube.com/watch?v=hEoYL5j0wYU
  • https://www.youtube.com/watch?v=9INjZuOVLfg
  • https://www.youtube.com/watch?v=ayRkvlC31y8
  • https://www.youtube.com/watch?v=44D9nVxqGIE

No hay comentarios:

Publicar un comentario