Blockchain: Transferencias & Seguridad

BI Geek / Blockchain  / Blockchain: Transferencias & Seguridad
blockchain

Blockchain: Transferencias & Seguridad

Como ya se presentó en el artículo de introducción a Blockchain, uno de los usos más extendidos de la cadena de bloques es el de intercambio de bienes. Para ejemplificarlo vamos a tomar como referencia la lógica que hay detrás de una transferencia de bitcoins y el sistema de seguridad que garantiza su autenticidad.

Antes de empezar, es importante destacar que Bitcoin es un protocolo de comunicación entre máquinas P2P (peer-to-peer). Es un sistema de reglas que permiten el intercambio de información entre distintos ordenadores conectados a la red.

 

¿Qué se intercambia a través del protocolo Bitcoin?

Unidades de cuenta (tokens), que toman el nombre de bitcoins. Responder a preguntas relacionadas con el valor económico de los bitcoins y por qué estos son utilizados como una divisa o, en este caso, una criptodivisa, requiere un artículo por sí mismo, aunque, como cualquier otro activo, el valor del mismo depende del precio que se esté dispuesto a pagar por él, es decir, de la oferta y la demanda. Lo que está claro, es que se utiliza como moneda de cambio, al igual que otras tantas criptodivisas existentes a día de hoy (muchas de las cuales soportadas bajo su propio protocolo).

En este punto, la cadena de bloques es utilizada como un libro de contabilidad distribuido en el que puede registrarse todo tipo de información. Cuando hablamos de criptodivisas, que al fin y al cabo, no deja de ser información almacenada en blockchain, al realizarse una transacción entre un emisor y un receptor, el movimiento de activos es actualizado en la contabilidad de cada nodo, quedando el sistema uniforme. Aquí radica la principal diferencia con un banco, pues mientras que en blockchain la contabilidad es mantenida y compartida por un amplio grupo de nodos que garantizan que los movimientos son válidos (esta contabilidad ha de ser idéntica en cada nodo), en un banco la contabilidad solamente es mantenida por la entidad en cuestión, es una caja negra donde nadie más conoce los movimientos.

Sin embargo, en blockchain se realizan transacciones en la red entre gente desconocida y con la presencia de actores con sus propios intereses que buscarán la forma quedarse con bienes que son propiedad de otros. Por ello, es necesario contar con un sistema seguro que cuente con la confianza de los usuarios. Aquí es donde intervienen los algoritmos de cifrado y el sistema de seguridad de los protocolos en blockchain.

Cuando una persona A le envía una transacción a otra B, A emite un mensaje con la información de dicha transacción, como la cuenta de emisión, la de recepción y la cantidad de dinero a transferir (inputs y outputs). Una vez realizada la transacción, esta será validada por los diferentes nodos de la red y confirmada, momento en que el movimiento de dinero quedará actualizado en la contabilidad de blockchain.

Las preguntas que nos vienen a la cabeza en este punto son:

¿Cómo se valida una transacción?  ¿Cómo se garantiza la autenticidad del movimiento de dinero?

Gracias a la criptografía asimétrica y al uso de las claves públicas y privadas (ya expusimos brevemente este tipo de criptografía en un artículo anterior).

Cuando la persona A realiza una transferencia, ésta queda firmada con su clave privada, clave que nunca ha de compartir y que ha de guardar de forma segura. Dicha firma garantiza que el movimiento lo está realizando A y que es A el dueño real del activo que se está moviendo.

¿Cómo se puede comprobar la autenticidad de dicha firma? Verificando la firma con la clave pública del emisor. La clave privada es utilizada para crear la firma y la pública para validar su autenticidad.

A diferencia de las firmas tradicionales realizadas a mano, que son fácilmente copiadas y reutilizadas, las firmas digitales son generadas mediante el empleo de algoritmos matemáticos de cifrado que previenen su plagio y re-utilización. Es importante destacar que no se trata de un password estático reutilizado en cada transferencia, sino que cada transferencia estará asociada a una firma encriptada diferente que la hará única.

Estas claves pública y privada están matemáticamente relacionadas de tal forma que la pública deriva de la privada. Sin embargo, se considera imposible generar la clave privada partiendo de la pública.

Adicionalmente, la clave pública no solo constituye la clave para validar la firma, sino que es el origen de la dirección pública de los monederos de criptodivisas, es decir, la dirección a la que se envía o de la que se recibe dinero (dicha dirección es generada como un hash en base 58 con checksum integrado a partir de la clave pública). Viene a ser el número de cuenta bancaria de los usuarios. En este sentido, cuando una persona A quiere enviar dinero a otra B, intervienen dos direcciones públicas, la emisora y la receptora.

Para quien no esté familiarizado con este tipo de claves, cuando nos abrimos una cuenta en un monedero de criptodivisas y se nos generan ambas claves, éstas tienen el siguiente aspecto:

Clave privada:

4E6FB74B0CC4DA4C130F5E1FF59F6C90E491DC9F1A0B5C820CF5DA39040447C2

Clave pública generada con la privada:

B9AB55834DA03925E557919336162DF5C5A0CADA

 

¿Cómo se utilizan las claves privada y pública en la firma digital?

La información que le envía A a B en una transferencia se compone de los siguientes puntos:

  •  Mensaje: datos de la transacción, compuestos por los inputs, los outputs (luego hablaremos un poco sobre estos componentes)
  •  Firma: generada en dos pasos:
    • Se genera un código hash a partir del mensaje (ya hablamos de lo que era un código hash en un el artículo “Data Vault – Hash Keys”)
    • Se encripta el código hash utilizando la clave privada
  •  Clave pública del emisor

Podemos verlo representado en la siguiente imagen:

firma-digital-blockchainComo hemos comentado, la firma, única garantía de autenticidad de la transferencia, es generada mediante la encriptación del código hash generado con el mensaje. ¿Como se comprueba que la firma es real y da garantía de que el emisor es el dueño de la misma y del dinero de la transferencia? Con la clave pública del emisor.

La clave pública del emisor, compartida con el receptor al realizar una transferencia, permite desencriptar la firma y obtener el código hash original. Como el receptor también recibe el mensaje sin codificar, éste es codificado con la función hash y comparado con el código hash desencriptado. Si ambos hash son idénticos, la transferencia queda validada, de lo contrario, es rechazada.

Este proceso podemos verlo representado en el siguiente diagrama:

firma-digital-2-blockchain

De esta manera, en el caso de que la transferencia (mensaje) sea interceptada y manipulada, el código hash resultante de dicha transferencia manipulada será distinto del original, incrustado en la firma, de forma que al compararse ambos, la transacción quedará invalidada y no se hará efectiva.

Es importante destacar que en este proceso de desencriptación de la firma mediante la clave pública la clave privada nunca queda expuesta.

Antes hemos dejado caer que cada transferencia tiene una firma única, no reutilizable. Si nos paramos a pensar en que la firma es el resultado de encriptar con la clave privada el código hash generado con el mensaje y que dicho mensaje contiene los datos de la transferencia, dado que cada transferencia es única, con sus propios inputs y outputs, es obvio pensar que por relación directa el código hash generado será único y también la firma final. Este vínculo entre el contenido del mensaje y la firma previene al sistema de posibles manipulaciones.

 

¿Qué son los inputs y outputs de una transferencia?

Componen el mensaje de la transferencia. Los inputs son las referencias de las transferencias que recibió el emisor, es decir, muestran el origen de los bitcoins que A está enviando a B. Los outputs contienen los datos de la salida de la transferencia, los bitcoins que A está enviando a B.

En el siguiente diagrama se representa, a modo de ejemplo, cómo podría estar compuesta la transferencia entre A y B. Se ve claramente que outputs e inputs están conectados entre sí.

trasnferencia-blockchainDe esta manera, a medida que se van acumulando transferencias, este gran libro de contabilidad va registrando las conexiones que hay entre las mismas, quedando validadas, confirmadas e insertadas en nuevos bloques dentro de blockchain.

Llegados a este punto, unos nuevos agentes entran en escena, conocidos como “mineros”. Estos actores y sus funciones dentro de blockchain merecen un artículo aparte pero, para poder contextualizar el funcionamiento general de la cadena de bloques, vamos a comentar ligeramente cuál es función.

Como hemos expuesto, cuando A le envía dinero a B lo que hace es generar una transferencia, firmarla y enviarla. Inmediatamente después, ésta es distribuida por la red y validada por el resto de nodos mediante la verificación de la firma. Sin embargo, hasta aquí, la transferencia aún no ha sido confirmada y ejecutada, tan solo verificada.

Las transferencias validadas son agrupadas por los nodos en una lista de transacciones pendientes de confirmación. Son los mineros los que tomarán estas transferencias, las volverán a validar y las incluirán en un nuevo bloque dentro de la cadena de bloques, quedando finalmente confirmadas e insertadas definitivamente en blockchain, es decir, en el gran libro de contabilidad distribuido.

Solamente comentar que la función de estos mineros es de vital importancia, pues son ellos los que mantienen el sistema. ¿Y qué ganan ellos por su trabajo? Bitcoins.

Los detalles sobre los mineros, el sistema de recompensa, la inclusión de transferencias en bloques y de éstos en la cadena de bloques los abordaremos en un nuevo artículo.

Como cabe esperar, hay mucho que contar sobre blockchain, su funcionamiento y usos, cada vez más extendidos en todos los sectores relacionados con el registro de la propiedad y el intercambio de bienes y servicios.

El objetivo de nuestra empresa es retomar los valores originales de la consultoría y poder ofrecer un valor añadido real a nuestros clientes.