La criptografía es la columna vertebral detrás de la seguridad de blockchain. Con el lanzamiento de Bitcoin en 2009 vino la llegada de la blockchain, que decía ser casi imposible de comprometer o piratear. Más de una década después, la blockchain ha demostrado ser muy segura, pero no perfecta.
Algunos factores que garantizan la la resistencia de la blockchain a la piratería y los ataques maliciosos son su diseño distribuido, la verificación de las transacciones por consenso y la inmutabilidad de los registros. El principal factor subyacente que hace que la tecnología blockchain sea altamente segura es la criptografía; concretamente, las comunicaciones digitales seguras basadas en la criptografía.
¿Qué es la criptografía?
La criptografía es un campo de estudio interdisciplinar cuyo objetivo es desarrollar comunicaciones privadas seguras en presencia de posibles terceros malintencionados. En pocas palabras, es una forma de codificar los mensajes que se envían entre las partes para que sólo el emisor y el receptor puedan entender el mensaje.
¿Qué es la criptografía en blockchain?
En el contexto de la tecnología blockchain, la criptografía se utiliza para varios fines:
- Desarrollar el intercambio seguro de datos entre dos nodos que realizan transacciones, como una cartera que envía criptodivisas a la cartera de otro usuario
- Verificar las transacciones en la red mediante nodos mineros
- Para garantizar la inmutabilidad de los registros en la blockchain
- Para fines de aplicación específicos, como garantizar la confidencialidad de los datos en los contratos inteligentes
Cifrado y descifrado de Blockchain
Hay dos componentes clave para un intercambio criptográfico de datos:
- El cifrado, que es el proceso de convertir un mensaje de texto plano en una forma críptica que no puede ser leída ni comprendida por terceros. El remitente del mensaje lo encripta para su transmisión segura.
- El descifrado, que es el proceso de convertir el mensaje cifrado en texto plano. El receptor descifra el mensaje cuando se le ha entregado de forma segura.
El algoritmo que se utiliza para cifrar y descifrar los datos se llama cifrado. Un ejemplo de cifrado primitivo podría ser cuando cada letra de un intercambio de mensajes se sustituye por un dígito que hace referencia a la posición de esa letra en el alfabeto, de forma que 01 se refiere a A, 02 a B, 26 a Z, y así sucesivamente. Por ejemplo, en este cifrado simple, “08-09” se referiría a “Hi”.
El cifrado real del mensaje de “Hi” a “08-09”, y el posterior descifrado de “08-09” a “Hi”, se realiza mediante una clave criptográfica, un dato que cifra y descifra los mensajes basándose en un algoritmo/cifrador.
Afortunadamente, el blockchain y otros sistemas informáticos modernos utilizan algoritmos de encriptación mucho más sofisticados y seguros que nuestro sencillo ejemplo. Los trataremos más adelante en el artículo.
Los principales tipos de cifrado criptográfico
Hay tres tipos principales de cifrado/descifrado criptográfico que utilizan los sistemas modernos:
Cifrado simétrico
En esta forma de cifrado, la misma clave se utiliza tanto para cifrar y descifrar la comunicación entre las partes. En nuestro ejemplo simplificado, se necesita la misma clave (el mapeo de letras a números) para convertir “Hi” en “08-09”, y luego para descifrar “08-09” de vuelta a “Hi”.
El cifrado simétrico es la más sencilla de las tres formas de cifrado modernas. Su ventaja es la alta velocidad de ejecución. Sin embargo, el cifrado simétrico tiene una grave limitación, si la clave llega a ser conocida por personas ajenas malintencionadas, toda la comunicación se verá comprometida. Esto hace que sea poco práctico para su uso con una tecnología descentralizada como el blockchain.
Cifrado asimétrico
también conocido como cifrado de clave pública: Esta forma de encriptación utiliza un par de claves, una clave pública y una clave privadapara asegurar la comunicación. El emisor utiliza la clave pública para cifrar el mensaje, mientras que el receptor utiliza la clave privada para descifrarlo. Ambas claves pertenecen al receptor de la comunicación. La clave pública puede ser utilizada por cualquiera para cifrar un mensaje y enviarlo al cartera del receptor.
De hecho, las claves públicas y las direcciones de los monederos son conceptos estrechamente relacionados. En la mayoría de las cadenas de bloques públicas como Bitcoin (BTC), a dirección del monedero es la versión con hash de la clave pública del usuario. Cuando el mensaje se entrega a la cartera, el receptor utiliza su clave privada para descifrar y leer el mensaje. La clave privada del receptor sólo la conoce él, no el remitente ni nadie más en la red. El uso del emparejamiento de claves públicas y privadas hace que el cifrado asimétrico sea una forma más segura de intercambio criptográfico en comparación con el simétrico, es decir, el cifrado de una sola clave.
Encriptación de la función Hash
Considerado un tipo de cifrado muy seguro, el hashing no utiliza claves en absoluto. El hash utiliza un algoritmo para tomar una entrada de cualquier longitud y producir una salida de una longitud fija.
Existen varias funciones hash en uso, de las cuales sólo algunas (conocidas como “funciones hash criptográficas”) se consideran suficientemente seguras para fines criptográficos. Por ejemplo, Bitcoin utiliza la función SHA-256 mientras que el cifrado hash de Ethereum se basa en KECCAK-256.
Las funciones hash criptográficas poseen una serie de características que las hacen ideales para el cifrado seguro:
- Las posibilidades de que se produzcan colisiones son extremadamente bajas. Esto significa que las posibilidades de que dos entradas diferentes conduzcan a la misma salida con hash son astronómicamente pequeñashaciendo imposibles los ataques de fuerza bruta.
- El mensaje original no puede ser objeto de ingeniería inversa a partir del resultado del hash
- Son deterministas, es decir, cualquier entrada producirá la misma salida cuando se ejecute a través de la función hash
- Incluso un pequeño cambio en la entrada, como cambiar un solo bit de 0 a 1, producirá un hash de salida completamente diferente
Algoritmo de hash (Fuente: Networkencyclopedia.com)
De los tres tipos de cifrado, el cifrado simétrico no se utiliza prácticamente nunca en las redes de cadenas de bloques establecidas más populares. El cifrado asimétrico y el hashing, sin embargo, se utilizan ampliamente en la tecnología blockchain.
Uso de criptografía en Blockchain
El cifrado asimétrico se utiliza en blockchain para permitir transacciones seguras de nodo a nodo. Cada vez que envías o recibes criptomonedas o tokens a o desde otro monedero de la red, tus transacciones están protegidas con el cifrado asimétrico.
El cifrado de hash tiene un uso aún más amplio en la blockchain. Uno de los usos del hashing es cifrar las claves públicas de los usuarios en direcciones de la blockchain. Cuando se crea una clave pública para un nuevo usuario, se ejecuta a través de una función hash para generar la correspondiente dirección de monedero en la red. Esto añade una capa adicional de seguridad al sistema de direcciones de la blockchain.
El hashing también se utiliza en la minería de blockchain en Proof-of-Work (PoW). La minería se refiere a la verificación de las transacciones en la red por parte de los “nodos mineros” participantes. Cuando se produce una transacción en la blockchainsu autenticidad debe ser verificada por un número de usuarios de la red llamados mineros.
Cada bloque de datos de la transacción contiene un número único generado mediante hashing. Los nodos mineros de la red dedican una considerable potencia de cálculo a resolver un rompecabezas matemático para encontrar otro número, llamado “nonce”. Una vez añadido al hash del bloque a verificar, el nonce ayudará a completar la verificación.
Los algoritmos de hashing, por tanto, sirven como columna vertebral de la verificación de datos a través de la minería en las cadenas de bloques. También se utilizan para unir los registros de la red en una cadena inmutable. Cada bloque de datos en la red contiene su propio código hash único y el hash del bloque anterior.
Esto asegura que cualquier intento de cambio en un bloque de datos requerirá hacer cambios en todos los bloques anteriores de la cadena, una tarea que es imposible a todos los efectos prácticos. Este encadenamiento mediante códigos hash es una característica de seguridad clave en la tecnología blockchain.
Además del uso estándar de la criptografía asimétrica y de hash en la blockchain, hay áreas específicas dentro del ecosistema de la blockchain en las que el cifrado es útil. Una de ellas es la de los los contratos inteligentes.
¿Están cifrados los contratos inteligentes?
Debido a la naturaleza pública de la mayoría de las cadenas de bloques, los contratos inteligentes son fácilmente visibles para cualquier participante de la red y, por lo tanto, carecen de la característica clave de confidencialidad que a menudo se busca en la contratación. A medida que los contratos inteligentes se hagan más comunes, la criptografía basada en algoritmos de hashing se utilizará más ampliamente para proteger los datos contractuales sensibles.
Tecnologías de blockchain como Halcón son un área emergente de desarrollo destinada a garantizar la privacidad y la confidencialidad de los contratos inteligentes de la blockchain. Hawk es un protocolo que oculta criptográficamente la información sensible clave de un contrato inteligente de la vista del público en la blockchain. En esencia, las tecnologías y los protocolos como Hawk se basan en alguna forma de criptografía de hash.
A continuación se presenta un resumen de los métodos criptográficos utilizados habitualmente en diferentes aspectos de la blockchain:
Uso en Blockchain | Tipo de criptografía |
Transacciones entre nodos (por ejemplo, compra y venta de monedas y tokens) | Asimétrico |
Minería/Verificación de las transacciones | Hashing |
Inmutabilidad/seguridad de los registros en la blockchain | Hashing |
Protección de datos en los contratos inteligentes | Hashing |
Conclusión
De los tres tipos de métodos de cifrado criptográfico -simétrico, asimétrico y hashing-, blockchain utiliza los dos últimos. El cifrado simétrico se utiliza raramente en las cadenas de bloques debido a sus características de seguridad comparativamente pobres y a su inadecuación para las aplicaciones descentralizadas.
El cifrado asimétrico, basado en el emparejamiento de claves públicas y privadas, es la base para garantizar la seguridad en las transacciones entre usuarios.
El cifrado de hash se utiliza para una serie de procesos críticos que garantizan la seguridad general de la blockchain. El hashing se utiliza en la verificación de transacciones a través de la minería; en el mantenimiento de la inmutabilidad de los registros en la blockchain; y también para aplicaciones especializadas, como la garantía de la confidencialidad y la privacidad de los datos en los contratos inteligentes. Además, el hashing también se utiliza para convertir las claves públicas en direcciones de la blockchain.
Las plataformas de blockchain más populares, como Bitcoin o Ethereum, utilizan algoritmos de hashing seguros y de alto nivel, como SHA-256 y KECCAK-256. El uso de estos sofisticados algoritmos garantiza que sus blockchains se encuentran entre las redes digitales más seguras que existen actualmente.
Por el momento, la protección criptográfica de los datos en los contratos inteligentes es un área de desarrollo más reciente para la tecnología blockchain. La criptografía basada en algoritmos de hashing será cada vez más importante a medida que los contratos inteligentes ganen popularidad.