Hashing se refiere al proceso de generar salidas de tamaño fijo a partir de entradas de tamaño variable. Esto se hace mediante fórmulas matemáticas conocidas como funciones hash (implementadas como algoritmos hash).

Aunque no todas las funciones hash implican el uso de criptografía, las llamadas funciones hash criptográficas son el núcleo de las criptomonedas. Gracias a ellos, las cadenas de bloques y otros sistemas distribuidos pueden alcanzar niveles significativos de integridad y seguridad de los datos.

Tanto las funciones hash normales como las criptográficas son deterministas. El determinismo significa que mientras los datos de entrada no cambien, el algoritmo hash siempre producirá el mismo resultado (también conocido como resumen o hash).

Los algoritmos de hash de criptomonedas suelen estar diseñados como funciones unidireccionales, lo que significa que no se pueden revertir sin mucho tiempo y recursos informáticos. En otras palabras, es bastante fácil generar una salida a partir de una entrada, pero relativamente difícil ir en la dirección inversa (generar una entrada sólo a partir de una salida). En general, cuanto más difícil es encontrar la entrada, más seguro se considera el algoritmo hash.


¿Cómo funciona una función hash?

Diferentes funciones hash producirán resultados de diferentes tamaños, pero los posibles tamaños de salida de cada algoritmo hash son siempre constantes. Por ejemplo, el algoritmo SHA-256 solo puede producir resultados de 256 bits, mientras que SHA-1 siempre generará un resumen de 160 bits.

Para ilustrar, pasemos las palabras "Binance" y "binance" a través del algoritmo hash SHA-256 (el que se usa en Bitcoin).

SHA-256

Salida

Salida (256 bits)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

Binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Tenga en cuenta que un ligero cambio (el caso de la primera letra) dio como resultado un valor de función hash completamente diferente. Pero como usamos SHA-256, las salidas siempre tendrán un tamaño fijo de 256 bits (o 64 caracteres) independientemente del tamaño de la entrada. Además, no importa cuántas veces ejecutemos las dos palabras a través del algoritmo, las dos salidas permanecerán constantes.

Y si pasamos las mismas entradas a través del algoritmo hash SHA-1, obtenemos los siguientes resultados:

SHA-1

Salida

Salida (160 bits)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

Binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Curiosamente, la abreviatura SHA significa Secure Hash Algorithms (algoritmos de cifrado seguros). Es un conjunto de funciones hash criptográficas que incluyen algoritmos SHA-0 y SHA-1, así como grupos de SHA-2 y SHA-3. SHA-256 forma parte de la familia SHA-2, junto con SHA-512 y otras variantes. Actualmente, sólo los grupos SHA-2 y SHA-3 se consideran seguros.


¿Cuál es la importancia de esta tecnología?

Las funciones hash convencionales tienen una amplia gama de usos, incluidas búsquedas en bases de datos, análisis de archivos grandes y gestión de datos. Por otro lado, las funciones hash criptográficas se utilizan ampliamente en aplicaciones de seguridad de la información, como la autenticación de mensajes y la toma de huellas digitales. Cuando se trata de Bitcoin, las funciones hash criptográficas son una parte integral del proceso de minería y también desempeñan un papel en la generación de nuevas direcciones y claves.

El verdadero poder del hash se revela cuando se trabaja con grandes cantidades de información. Por ejemplo, puede ejecutar un archivo grande o un conjunto de datos a través de una función hash y luego usar sus resultados para verificar rápidamente la precisión e integridad de los datos. Esto es posible debido a la naturaleza determinista de las funciones hash: la entrada siempre da como resultado una salida comprimida y simplificada (el hash). Este método elimina la necesidad de almacenar y "memorizar" grandes volúmenes de datos.

El hashing es particularmente útil en el contexto de la tecnología blockchain. La cadena de bloques de Bitcoin tiene varias operaciones relacionadas con el hashing, la mayoría de las cuales se realizan en el proceso de minería. De hecho, casi todos los protocolos de criptomonedas se basan en hash para vincular y combinar grupos de transacciones en bloques y para crear vínculos criptográficos entre cada bloque, creando así una cadena de bloques.


Funciones hash criptográficas

Nuevamente, una función hash que utiliza técnicas criptográficas se puede definir como una función hash criptográfica. En general, descifrar una función hash criptográfica requiere muchos intentos de fuerza bruta. Para "desplegar" una función hash criptográfica, es necesario seleccionar las entradas mediante prueba y error hasta obtener una salida adecuada. Sin embargo, también existe la posibilidad de que diferentes entradas produzcan el mismo resultado, en cuyo caso se producirá una "colisión".

Técnicamente, una función hash criptográfica debe cumplir tres propiedades para poder considerarse bien segura. Podemos describirlos como: resistencia a la colisión y resistencia al ataque de encontrar el primer y segundo prototipo.

Antes de describir cada propiedad, resumamos su lógica en tres oraciones cortas.

  • Resistencia a la colisión: imposibilidad de encontrar dos entradas diferentes que produzcan el mismo hash.

  • Robustez para encontrar la primera vista previa: No poder "revertir" la función hash (encontrar la entrada a través de una salida determinada).

  • Resistencia a encontrar un segundo ejemplo: la incapacidad de encontrar una segunda entrada que tenga el mismo hash que la primera.


Resistencia a la colisión

Como se mencionó anteriormente, se produce una colisión cuando diferentes entradas producen el mismo hash. La función hash se considera entonces resistente a colisiones hasta que alguien descubre dicha colisión. Tenga en cuenta que siempre existirán colisiones para cualquiera de las funciones hash debido al número infinito de entradas y al número finito de salidas.

Por lo tanto, una función hash es resistente a colisiones cuando la probabilidad de detectar una colisión es tan pequeña que requeriría millones de años de cálculo. Por esta razón, aunque no existen funciones hash libres de colisiones, algunas son tan potentes que pueden considerarse estables (por ejemplo, SHA-256).

Entre los diferentes algoritmos SHA, los grupos SHA-0 y SHA-1 ya no son seguros porque se han detectado colisiones. Actualmente, sólo los grupos SHA-2 y SHA-3 se consideran resistentes a colisiones.


Resistencia a encontrar el primer prototipo

Esta propiedad está estrechamente relacionada con el concepto de funciones unilaterales. Una función hash se considera sólida para encontrar la primera vista previa siempre que exista una probabilidad muy baja de que alguien pueda encontrar la entrada utilizando la salida generada.

Tenga en cuenta que esta propiedad es diferente de la anterior porque el atacante necesita adivinar la entrada en función de una salida específica. Este tipo de colisión ocurre cuando alguien encuentra dos entradas diferentes que producen la misma salida, independientemente de qué entrada en particular se utilizó.

La propiedad de prueba de primera vista es valiosa para la seguridad de los datos, ya que un simple hash de un mensaje puede demostrar su autenticidad sin la necesidad de divulgar información adicional. En la práctica, muchos proveedores de servicios y aplicaciones web almacenan y utilizan hashes generados a partir de contraseñas en lugar de utilizarlos en formato de texto.


Resistencia a encontrar un segundo prototipo

Este tipo de estabilidad se encuentra entre las dos propiedades anteriores. El ataque de encontrar el segundo prototipo consiste en encontrar una entrada específica con la que sea posible generar una salida que ya ha sido generada utilizando otra entrada que se conocía previamente.

En otras palabras, un segundo ataque de búsqueda implica la detección de colisiones, pero en lugar de encontrar dos entradas aleatorias que generen el mismo hash, el ataque tiene como objetivo encontrar una entrada que pueda reproducir un hash que ya ha sido generado por otra entrada.

Por lo tanto, cualquier función hash que sea resistente a colisiones también lo es al ataque de encontrar el segundo primo, ya que este último siempre necesita una colisión. Sin embargo, todavía es posible realizar un primer ataque de búsqueda en una función tolerante a colisiones, ya que esto implica buscar una entrada con una salida.


Minería

Hay muchos pasos en la minería de Bitcoin que se realizan mediante funciones hash. Se trata de verificar el saldo, vincular las entradas y salidas de las transacciones y combinar todas las transacciones en un bloque para formar un árbol Merkle. Pero una de las principales razones por las que la cadena de bloques de Bitcoin es segura es que los mineros deben realizar tantas operaciones de hash como sea posible para encontrar finalmente la solución correcta para el siguiente bloque.

Un minero debe utilizar varias entradas diferentes al generar un hash para su bloque candidato. Será posible verificar el bloque solo si la salida generada correctamente en forma de hash comienza con un cierto número de ceros. La cantidad de ceros determina la dificultad de la minería y varía según el hashrate de la red.

En este caso, el hashrate es una medida de la potencia de tu computadora que inviertes en la minería de Bitcoin. Si el hashrate comienza a aumentar, el protocolo Bitcoin ajustará automáticamente la dificultad de extracción para que el tiempo promedio necesario para extraer un bloque sea de unos 10 minutos. Si varios mineros deciden dejar de minar, lo que resulta en una caída significativa en el hashrate, la dificultad de minado se ajustará para facilitar temporalmente el cálculo (hasta que el tiempo promedio de formación de bloques vuelva a 10 minutos).

Tenga en cuenta que los mineros no necesitan buscar colisiones porque hay varios hashes que pueden generar como salida válida (comenzando con una cierta cantidad de ceros). Por lo tanto, hay varias soluciones posibles para un determinado bloque, y los mineros deben encontrar sólo una de ellas, según un umbral determinado por la dificultad de la minería. 

Dado que la minería de Bitcoin es una tarea costosa, los mineros no tienen ningún motivo para engañar al sistema, ya que ello resultaría en pérdidas financieras significativas. En consecuencia, cuantos más mineros se unan a la cadena de bloques, más grande y más fuerte se volverá.


Resultados

No hay duda de que las funciones hash son una de las principales herramientas de la informática, especialmente cuando se trabaja con grandes cantidades de datos. Cuando se combinan con la criptografía, los algoritmos hash pueden resultar muy útiles, ya que proporcionan seguridad y autenticación de diversas formas. Por lo tanto, las funciones hash criptográficas son vitales para casi todas las redes de criptomonedas, y comprender sus propiedades y mecanismos de funcionamiento es ciertamente útil para cualquier persona interesada en la tecnología blockchain.