Contenidos

La función de los hashes criptográficos en la blockchain

Para entender la blockchain es importante entender qué son los hashes criptográficos, si bien la criptografía sustenta gran parte de su tecnología.  

La palabra hash es utilizada en el mundo de la informática para describir a una cadena de texto codificada.  Es decir, un conjunto de letras y números de una longitud fija y en un orden único e irrepetible que representan una serie de datos. Esta cadena de datos es creada gracias a una función criptográfica, llamada función hash. 

En este sentido, el objetivo de la función hash es resumir un dato, o una gran cantidad de datos, en una cadena mucho más pequeña y de una forma irrepetible. 

Este sería un ejemplo de hash: 

cd6357efdd966de8c0cb2f876cc89ec74ce35f0968e11743987084bd42fb8944

Existen diferentes tipos de funciones hash criptográficas, y cada una funciona de manera diferente, ofreciendo diferentes grados de seguridad. La función del ejemplo anterior, y la también utilizada por Bitcoin, es el hash SHA-256. Pero también podemos encontrar SHA-512, Keccak y SHA-3 pertenecientes a la misma familia, Blake3 o MD5, entre otras. 

.

La seguridad en las funciones hash 

Una de las razones que ha llevado a desarrollar las funciones hash era conseguir una estructura que ofreciera la seguridad de la información digital.  Con el paso del tiempo este objetivo se ha conseguido usando una base de la criptografía, la cual ha servido desarrollar funciones hash. 

Una de las características que intervienen en garantizar la seguridad en la información es que el hash es completamente único e irrepetible. En aplicar la misma función hash a los mismos datos, se obtiene el mismo resultado. Asimismo, no permite ninguna modificación. En el caso que esto se produjera, el resultado crearía un hash diferente, el cual se daría a conocer de su propia manipulación. Esto permite verificar la integridad de la información y demostrar que no ha sido manipulada. 

Otra de las particularidades que ofrecen seguridad es que es que el proceso del hashing solo puede hacerse en un sentido, es unidireccional. Una vez obtenido el hash, a partir de éste nunca podremos obtener los datos originales de lo cuales se originó. 

.

Funciones hash en la tecnología blockchain

La principal aplicación de las funciones hash en la tecnología blockchain es la verificación de la integridad de los nuevos bloques que registran en la red distribuida. 

Dado que la blockchain es un sistema descentralizado basado en un conjunto de nuevos bloques, los nuevos bloques que se registran a la red deben ser autenticados por la red en su conjunto. Este procedimiento se realiza mediante los mineros, encargados de verificar los bloques. Ellos entran en un juego de probabilidades basado en los hashes criptográficos, llamado “Prueba de trabajo”, o también conocido en inglés como “Proof of work”. 

“Proof of work”

En el sistema de blockchain, para que la información se registre de una forma totalmente segura e íntegra,  hay un trabajo de creación de nuevos bloques y de verificación de los mismos, que llevan a cabo los conocidos mineros. 

Para que los nuevos bloques sean añadidos a la cadena distribuida, los mineros compiten en un juego de hash llamado “Proof of work”. En este juego de probabilidades, gana el minero que adivine el hash que, en combinación con todos los datos anteriores de la cadena de bloques, cumpla con el requisito de dificultad.

Es decir, todos los mineros en el mundo, a través de máquinas muy potentes, ejecutan simultáneamente un programa de adivinanzas similar en busca del hash correcto que, cuando se suma a los datos registrados de la cadena de bloques y se ejecuta a través de la función hash SHA-256, produce un hash aleatorio.

Sin embargo, no es trabajo fácil, ya que el hash debe tener una forma concreta, y ha de ceñirse a un parámetro de dificultad que se va ajustando automáticamente dependiendo de la velocidad en la que los mineros minen los bloques. 

El trabajo se basa en calcular un hash que empiece por lo general, por 20 ceros a la izquierda. El parámetro de dificultad aumenta cuando se requieren más ceros al inicio del algoritmo, y aún más si tiene que ajustarse a la velocidad a la que se generan los bloques de la cadena. 

El parámetro de dificultad se ajusta para que la media del tiempo de encontrar el hash sea de 10 minutos. Si los mineros encuentran hashes en menos de 10 minutos, el parámetro de dificultad aumenta. De forma análoga, si tardan más de 10 minutos en encontrar el hash objetivo, la dificultad de disminuye.

Así pues, los mineros deben calcular de forma aleatoria un “nonce” (número aleatorio) que empiece por dicha cantidad de zeros. El primer minero que obtenga el hash que satisfaga los requisitos gana el derecho a añadir el siguiente bloque, y como recompensa por el cálculo realizado, recibe 12.5 bitcoins.

Para este trabajo, los mineros se apoyan del sistema de Árbol de Merkle, el cual permite crear una estructura de datos con el fin de resumir y verificar de una manera eficiente la integridad de grandes conjuntos de datos. 

.

Generador de direcciones

Otro de los usos más comunes de la función hash es el proceso de generación de direcciones de criptomonedas.  

Para recibir una transferencia de un activo a una dirección electrónica el emisor debe de mostrar una dirección, generada a partir de la clave pública. Con el fin de formalizar una transacción, requiere también de una clave privada. 

Por lo tanto, primero se genera una clave privada, y, a partir de ésta, se deriva una clave pública.  

La clave privada, que solamente debe mantener el propietario, se genera para custodiar los activos digitales que se dispongan en la wallet. Por su lado, la clave pública, se genera con el fin de crear una dirección para recibir criptomonedas.  La clave privada es similar a lo que sería al PIN secreto, y la pública al número de cuenta bancaria. 

Cabe destacar que en un inicio, no existían direcciones en la blockchain, los fondos eran enviados directamente a las llaves públicas. Posteriormente, para dotar de una capa mayor de seguridad, se crearon las direcciones usando las funciones hash a partir de las claves públicas, de modo que, ya no se enviaban fondos directamente a las claves públicas, sino a su dirección derivada. 

De esta manera, se ofusca también la clave pública, lo cual otorga más seguridad al sistema, puesto que ya son dos problemas los que deben romperse para obtener información sensible del sistema: la criptografía de llave pública basada en curvas elípticas y las funciones hash.

Técnicamente, las direcciones se generan a partir de dos funciones hash: primero el SHA256 y después el RIPEMD-160.  Además, incluyen un “checksum” para verificar que se han copiado bien. 

.

Sin duda, las funciones hash son determinantes en la blockchain, ya que son la manera elegida de encadenar bloques. En este sentido,  ofrecen registrar información a la red distribuida verificando su integridad, y llegando a un consenso por parte de todos los miembros de la comunidad, es decir, aportando una gran seguridad en el sistema y evadiendo posibles fraudes. 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *