Seguridad en la blockchain, conoce los elementos que la conforman

José Maldonado
19 ABR 2020
Seguridad en la blockchain, conoce los elementos que la conforman
1.

Introducción

Siempre escuchamos buenas cosas sobre la seguridad de la tecnología blockchain. Escuchamos sobre su integridad, la resistencia a la seguridad, su alto nivel de privacidad e incluso anonimato. Pero ¿Cómo puede una tecnología garantizar todo esto? ¿Cómo lo hace posible?

Pues bien, la verdad es que para lograr todo esto la tecnología blockchain reúne y hace funcionar en conjunto a una serie de tecnologías de primer nivel. Es el conjunto de estas tecnologías lo que permite que la blockchain pueda funcionar como lo hace y cumpliendo lo que promete.

Por esa razón, en este artículo nos centraremos en indagar y explicar los distintos elementos que hacen posible la alta seguridad de la blockchain. De esta manera, podrás comprender de mejor manera esta revolucionaria tecnología y lo mucho que puede ofrecernos.

2.

Construyendo la seguridad de la blockchain

La construcción de la seguridad de la blockchain podemos decir que se construye en varias etapas. Y en tal caso podemos definirlas en las siguientes:

Uso de criptografía de alto nivel

Uno de los elementos más usados en la tecnología blockchain es la criptografía o funciones criptográficas. Estas son parte elemental de la construcción del software que hace funcionar a la blockchain. De hecho, de la criptografía depende la integridad, la verificación de datos y la privacidad de esta tecnología.

Hashes únicos

En primer lugar, la criptografía es usada para identificar de forma única e irrepetible cada transacción y bloque dentro de la blockchain. Tal es el caso de los campos TXID (Identificador de transacción) y Block ID (Identificador de bloques). Estos son generados por las conocidas funciones hashes. Estas funciones son las encargadas en primera línea de garantizar que cada transacción u operación en la blockchain sea única e irrepetible. Al mismo tiempo, son las encargadas de brindar un mecanismo de verificación y consulta de datos de todo lo almacenado en la blockchain.

Las funciones hashes también tienen otra función dentro de la operatividad de la blockchain, hablamos de la minería. Las funciones hashes son las que hacen posible que los algoritmos como Prueba de Trabajo (Proof of Work) realicen una tarea computacionalmente intensa y segura para la generación de nuevas monedas. Esto se logra calculando hashes únicos e irrepetibles para cada bloque (Block ID), siguiendo unos parámetros indicados o nivel de dificultad. Un proceso que consume grandes cantidades de energía y poder de cálculo de cientos de miles de máquinas en todo el mundo.

Por ejemplo, en Bitcoin se usa la función hash SHA-256 para estas tareas. Esta función es usada para generar el hash de los transacciones, bloques e incluso se usa para la generación de las direcciones junto a la función RIPEMD-160. Con esto, Bitcoin busca ofrecer un espacio donde cada elemento que conforma el historial de su cadena de bloques. Algo positivo, puesto que con ello se garantiza que cada bloque, cada transacción, cada dirección de BTC, clave privada, pública o firma digital sea única e irrepetible.

El mismo esfuerzo se repite en otras blockchain donde incluso sus desarrolladores han creado nuevos y más complejas funciones hashes con la finalidad de garantizar todas estas características.

Relacionado: ¿Qué es la Prueba de Trabajo (PoW)?

Claves privadas y públicas

Otro punto importante relacionado con la criptografía son las claves privadas y claves públicas. Estas claves son el núcleo de lo que conocemos como criptografía asimétrica y su uso en blockchain es vital y se encuentra presente en todas ellas. El uso de las claves privadas y públicas nos permite básicamente dos cosas:

  1. Crear un medio para resguardar nuestras criptomonedas con la mayor seguridad posible. Esto es posible gracias a las privadas. Estas claves son las que como usuarios y dueños de criptomonedas nos permiten tener el control total de dichas monedas. Es decir, las claves privadas nos permiten gastar nuestras criptomonedas como deseemos. De allí, que la seguridad de las mismas deba ser muy alta. Esto se logra usando modelos criptográficos muy avanzados basado en curvas elípticas y cuyas soluciones son tan complejas que llevaría miles de años romperlas.
  2. Contar con un mecanismo para generar claves públicas seguras y únicas. Esto es posible gracias a que cada clave pública es una clave derivada de la clave privada de nuestras criptomonedas. Esto significa que clave pública está relacionada matemáticamente con la clave privada. Podemos verificar que efectivamente es una clave pública de alguna persona, pero con ella no podemos saber cuál es su clave privada. Un buen elemento si lo que deseamos es darles a las personas la capacidad de enviarnos dinero a una dirección que solo nosotros podemos manejar.

Los dos puntos anteriores podemos verlos así: el primero (la clave privada) nos ayuda a crear una caja fuerte donde guardar dinero, una caja de la que solo nosotros como dueños de esas monedas tenemos la llave. Así tenemos el total control de dichas monedas en todo momento.

El segundo punto (la clave pública), nos permite crear un sobre o recipiente que permite a otras personas enviarnos dinero de forma segura. Todo el dinero enviado a este recipiente es contabilizado y es visible públicamente para quienes tienen la dirección o clave pública del mismo.

Esto lo podemos ver en práctica en un explorador de bloques. Si nos dirigimos a él y revisamos alguna dirección (clave pública) podemos ver las transacciones y la cantidad de monedas que ha manejado la misma. Sin embargo, no podemos ver la clave privada ni el resto de información asociable a la persona detrás de esa clave pública o dirección. Un elemento que ciertamente nos da una enorme seguridad y nos brinda un nivel de transparencia y privacidad sin precedentes.

Técnicas o modelos de firmas avanzados

Sin embargo, todo lo anterior no es solo que la punta del iceberg si consideramos las posibilidades que podemos crear con el uso de la criptografía. Esto es algo que los desarrolladores de tecnología han tenido en mente en todo momento. La mayoría de estos desarrolladores son criptográficos y cypherpunks de larga data, y siempre han buscado la forma de crear nuevos modelos de criptografía más y más seguros.

Un trabajo que ciertamente ha tenido éxitos importantes en la comunidad, por ejemplo, con la creación de modelos como las ECDSA o las futuras firmas Schnorr en Bitcoin. Un sistema de firmas digitales únicas que buscan garantizar que una determinada información realmente haya sido creada por quien dice ser. 

También podemos mencionar las Bulletproofs de Monero o las zk-SNARKs de ZCash. Estos dos últimos ejemplos, son sistemas de criptografía que buscan llevar al mínimo la información disponible sobre una determinada transacción. De hecho, ambos modelos buscan garantizar el anonimato total de quienes realizan transacciones en sus respectivas blockchain.

Esto nos da una idea de los inmensos trabajos que muchos desarrolladores hacen en el mundo de la blockchain. No es solo crear una criptomoneda, es crear tecnología que garantice la descentralización, la seguridad, la descentralización, la no censura y la privacidad de nuestra vida digital.

Descentralización

Otro punto central en la construcción de la seguridad de la tecnología blockchain se basa en la descentralización. Pongamos un ejemplo sencillo y que seguro que han vivido: ¿Qué pasa cuando un servicio vital de una red social como Facebook o Twitter se cae? Sencillo, la red social deja de funcionar parcial o totalmente en una región e incluso en todo el mundo. Este problema se debe a que estos servicios no son descentralizados.

La descentralización lo que busca es crear una comunidad a nivel mundial que sirva en el funcionamiento de la blockchain. En ella no hay nodos más importantes unos que otros, no hay un punto o unos pocos puntos de comunicación entre ellos, no se encuentran ubicados en un solo país o región. Por el contrario, los nodos tienen la misma importancia y hacen el mismo trabajo, los medios de comunicación son muchos, y lo más importante están desperdigados por todo el planeta.

Esto garantiza que cualquier persona pueda acceder a estos medios de una u otra forma, y así podrá hacer uso de los mismos. Pero lograr la descentralización no es tarea fácil. De hecho, es un trabajo complejo, difícil de realizar y en el que participan diversos elementos, que en su conjunto también ayudan a mejorar la seguridad de la blockchain.

Transmisión de datos

El funcionamiento digital de las blockchains y las criptomonedas nos lleva a comprender que todo lo que realizamos en ellas es un mero flujo de datos que viaja por Internet. Todo en blockchain y criptomonedas está viajando por la red de redes a nivel global. Pero además el software de la blockchain está hecho para construir redes descentralizadas. Redes donde cada parte actúa por su cuenta sin un control central, pero sincronizados en mantener la red funcionando bajo determinados parámetros.

Así la transmisión de datos en blockchain sigue una serie de pasos o protocolos de comunicación. Este protocolo sirve para garantizar que todas las partes de la red blockchain puedan intercambiar información. Pero al mismo tiempo, garantizan que sólo los nodos confiables puedan hacerlo. Con ello se evitan ataques malintencionados que pretendan robar información o difundir información falsa en la red.

Para lograr esto las redes blockchain basan el funcionamiento de sus operaciones de transmisión de datos en un protocolo con capacidad de comunicación descentralizada o P2P. De hecho, Bitcoin la primera criptomoneda del mundo basa el funcionamiento de su red en un protocolo de nombre Kademlia, usado en aplicaciones de compartición de archivos P2P como Bittorrent, eMule o LPhant. 

El objetivo de esto es claro, en primer lugar, permitir que cualquiera pueda usar la blockchain y su criptomoneda desde cualquier lugar del mundo. Dos, permitir que cualquiera que forme parte de la red se transforme en parte de la misma, realizando las tareas necesarias para su funcionamiento. Así sin importante si uno o dos o cientos de nodos se caen, la red blockchain seguirá en funcionamiento. Porque cada nodo, incluso el más pequeño, realiza todas las operaciones necesarias para que la red pueda seguir funcionando.

Organización del trabajo

Otro punto importante en la seguridad de la blockchain y en su descentralización es la forma en cómo el trabajo es realizado. En organizaciones centralizadas (como nuestro ejemplo de redes sociales), gran parte del trabajo de la red recae en pocos puntos (centralización con puntos de respaldo) o en un único punto (centralización absoluta).

Esto no sucede así en la blockchain. En estas redes los nodos que la conforman realizan todo el mismo trabajo. Todos reciben la misma información y por medio de unas reglas de consenso, estos deciden si la información es correcta o no. Si la mayoría de la red decide que la información es correcta entonces podemos decir que la información ha sido confirmada exitosamente. Caso contrario, la información es rechazada de forma absoluta.

El hecho de que en las redes blockchain no exista un punto central de control, garantiza que no hay censura y que nadie puede controlar nuestro dinero. Además de caerse un nodo por algún problema técnico, esto no supone ningún problema a la red, puesto que existen miles de nodos capaces de realizar el trabajo y que cuentan con la capacidad de verificar la información sin problemas. De allí que las redes blockchain sean tan seguras en este punto.

La realidad de este hecho la podemos ver en Bitcoin. Desde su nacimiento en 2009, Bitcoin ha trabajado de forma ininterrumpida. Sin fallos en su red, sin pérdidas de información, sin tiempos fuera de servicio, sin caída de servicios a nivel regional siquiera. Eso es un logro que muy pocos sistemas han alcanzado hasta el momento, y una muestra más del potencial y seguridad de la red.

Inmutabilidad

Una de las principales características que llegamos a escuchar sobre blockchain es la de la inmutabilidad de la información que almacenan. Es decir, la incapacidad de realizar cambios en el historial o libro mayor de la blockchain.

Esta es quizás la característica de seguridad más valorada de esta tecnología y es posible gracias al uso en conjunto de la descentralización y la criptografía.

Para explicar un poco esto conozcamos primeramente los puntos básicos que hacen posible dicha inmutabilidad:

En primer lugar, cuando emitimos una transacción en una blockchain, la información que enviamos ya va marcada con un hash (el TXID o ID de transacción) y una firma digital. El TXID nos ayuda a rastrear la transacción en todo momento, asignándole un identificador único para toda su existencia. 

Por otro lado, la firma digital le dice al mundo, que dicha transacción ha sido hecha de forma genuina por la persona que maneja los fondos que han sido movilizados. Esto es importante, porque ya con este primer paso podemos tener a la mano la información de nuestra transacción y si la misma es genuina o no.

Una vez emitimos nuestra transacción esta es capturada por la red. El objetivo de la red es verificar que dicha transacción es correcta. En este punto, los mineros toman todas las transacciones que pueden insertar en un bloque y comienzan con el proceso de minería. Al terminar el proceso de minería, este genera un nuevo hash que identificará el bloque de forma única (Block ID). Este es el paso más importante en la integridad e inmutabilidad de la información de la blockchain.

Vale recordar que el hash de un bloque es generado teniendo en cuenta la información contenida en dicho bloque, adicionando además el hash del bloque anterior. Es decir, el hash del bloque es resultado de sumar la información de nuestra transacción junto a la de miles de personas, junto al hash del bloque anterior si este existe. Esto en definitiva hará que el bloque está lleno de información que no se puede falsear de forma sencilla.

Una vez se genera el hash del bloque, esta información es enviada a los nodos de la red. Desde allí, los nodos ponen en ejecución un protocolo de verificación y consenso. El objetivo de este protocolo es que toda la red pueda verificar si la información es correcta y si es así incluirla en el ledger, libro mayor o historial de la blockchain. 

Una vez que la información es agregada, recibe lo que se llama la primera confirmación. En este punto, es posible que el bloque sea rechazado, pero a medida que se van agregando más bloques y confirmaciones, alterar esa información se hacer más y más difícil. El proceso sigue hasta un punto, en que modificar dicha información resulta prácticamente imposible de realizar porque necesitaría de mucho poder de cómputo para lograrse.

En este momento quizás te preguntes ¿Significa que la información de una blockchain puede cambiar y no es inmutable eternamente si tengo suficiente poder de cómputo? La respuesta correcta es sí, y es un mito muy extendido entre quienes llegan al mundo de la blockchain, creer lo contrario. 

Sin embargo, no te preocupes realizar este tipo de acciones es muy improbable. De hecho, para realizar algo como eso necesitas tener el 51% del poder de cómputo de la red blockchain que vayas a atacar. De allí, que se conozca cómo Ataque de 51% a esta “vulnerabilidad” conocida en la blockchain. ¿Cómo combatirla? Muy sencillo, descentralizando el poder de minería y los nodos de la red. De esta forma, podemos protegernos de este tipo de ataques.

3.

La seguridad de la blockchain en el futuro

Si algo no se detiene en el mundo es la creación de nuevas tecnologías que dejan muy atrás lo conocido. En este momento, la blockchain se erige como una de las tecnologías más seguras que existen, pero ¿Qué pasará en el futuro a cercano, mediano y largo plazo?

Pues la verdad es que a cercano plazo no hay nada de qué preocuparse. Los proyectos blockchain en la actualidad utilizan las mejores tecnologías disponibles para garantizar la seguridad. De hecho, constantemente se mejoran perfeccionando las mismas.

A mediano plazo, aparecen ciertas amenazas como la computación cuántica y su capacidad de romper la criptografía asimétrica sobre la cual funciona la blockchain. También está que el hardware se hace más potente y especializado, permitiendo el acceso a enormes cantidades de poder de cómputo para romper sistemas criptográficos o afectar el funcionamiento de las redes. Estos dos puntos serían un peligro si los desarrolladores no crear mecanismos para defenderse.

Sin embargo, eso ya es un trabajo que está en proceso en la actualidad. Existen por ejemplo, algoritmo de criptografía asimétricas resistentes a la computación cuántica que nos permitirían seguir contando con altos niveles de seguridad sin mayores riesgos. Un proceso que también hace más complejo usar la fuerza bruta de las computadoras para romper dichos algoritmos criptográficos.

A largo plazo es difícil definirlo. Lo que sí podemos decir es que los proyectos blockchain y de criptomonedas evolucionaron para tomar lo mejor de la tecnología del momento y seguir garantizando lo que hoy prometen y cumplen, seguridad, privacidad, descentralización, transparencia y libertad económica.

En todo caso, la seguridad de la blockchain seguramente estará bien protegida no solo por los desarrolladores de los proyectos sino también por la comunidad que hace vida en ellos.

Relacionado: Desarrolladores de Bitcoin y Ethereum se preparan para la computación cuántica