Hashing es el proceso de generar una salida de tamaño fijo a partir de una entrada de tamaño variable. Este proceso se logra mediante una fórmula matemática llamada "función hash" (implementada como un algoritmo hash).

No todas las funciones hash implican el uso de criptografía, pero las "funciones hash criptográficas" son el núcleo de las criptomonedas. Gracias a las funciones hash criptográficas, se pueden lograr altos niveles de integridad y seguridad de los datos en blockchain y otros sistemas distribuidos.

Tanto las funciones hash tradicionales como las funciones hash criptográficas son deterministas. El determinismo se refiere al hecho de que un algoritmo hash siempre producirá la misma salida (también llamada "resumen" o "valor hash") siempre que la entrada no cambie.

Normalmente, los algoritmos de hash de criptomonedas están diseñados para ser funciones unidireccionales, lo que significa que no pueden recuperarse fácilmente sin una cantidad significativa de tiempo y recursos informáticos. En otras palabras, es extremadamente fácil crear una salida a partir de una entrada, pero es relativamente difícil crear una entrada a partir de una salida a la inversa. En general, cuanto más difícil sea encontrar la entrada, más seguro será el algoritmo hash.


¿Cómo funciona una función hash?

Diferentes funciones hash producen resultados de diferentes tamaños, pero el tamaño de salida de cada algoritmo hash es siempre el mismo. Por ejemplo, el algoritmo SHA-256 solo puede producir una salida de 256 bits, mientras que SHA-1 siempre produce un resumen de 160 bits.

Para ilustrar esto, pasamos las palabras "Binance" y "binance" a través del algoritmo hash SHA-256 (el algoritmo utilizado en Bitcoin).

SHA-256

ingresar

Salida (256 bits)

binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Tenga en cuenta que un pequeño cambio en el uso de mayúsculas en la primera letra producirá un valor hash completamente diferente. Independientemente de la longitud del valor de entrada, la salida que utiliza SHA-256 tiene siempre una longitud fija de 256 bits (o 64 caracteres). Además, no importa cuántas veces el algoritmo ejecute estas dos palabras, el resultado de ambas sigue siendo el mismo.

Por el contrario, si ejecuta la misma entrada a través del algoritmo hash SHA-1, obtendrá los siguientes resultados:

SHA-1

ingresar

Salida (160 bits)

binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Tenga en cuenta que "SHA" es el acrónimo de Secure Hash Algorithms. El algoritmo se refiere a un conjunto de funciones hash criptográficas, que incluye los algoritmos SHA-0 y SHA-1, así como los conjuntos SHA-2 y SHA-3. SHA-256, junto con SHA-512 y otras variantes, forman parte del grupo SHA-2. Actualmente sólo los grupos SHA-2 y SHA-3 se consideran seguros.


¿Cuál es la importancia de las funciones hash?

Las funciones hash tradicionales tienen una variedad de casos de uso, incluidas búsquedas en bases de datos, análisis de archivos grandes y gestión de datos. 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. En el caso de Bitcoin, las funciones hash criptográficas son una parte integral del proceso de minería y afectan tanto a la nueva dirección como a la generación de claves.

Las operaciones hash son realmente poderosas cuando se procesan grandes cantidades de información. Por ejemplo, ejecute un archivo grande o un conjunto de datos a través de una función hash y luego use su salida para verificar rápidamente la precisión e integridad de los datos. Las funciones hash funcionan porque son deterministas: una entrada siempre produce una salida comprimida y simplificada (es decir, un valor hash). Esta tecnología elimina la necesidad de almacenar y "recordar" grandes cantidades de datos.

Las operaciones hash son particularmente útiles en el campo de la tecnología blockchain. La cadena de bloques de Bitcoin tiene muchas operaciones que involucran operaciones hash, la mayoría de las cuales son parte del proceso de minería. De hecho, casi todos los protocolos de criptomonedas se basan en hash para conectar grupos de transacciones y comprimirlas en bloques, mientras generan enlaces criptográficos entre bloques, creando efectivamente una cadena de bloques.


función hash criptográfica

Asimismo, las funciones hash que implementan técnicas criptográficas pueden definirse como funciones hash criptográficas. En términos generales, romper una función hash criptográfica requiere innumerables intentos de fuerza bruta. Para "restaurar" una función hash criptográfica, adivine la entrada mediante prueba y error hasta que se genere la salida correspondiente. Sin embargo, también es posible que diferentes insumos produzcan exactamente el mismo resultado, por lo que se produce un "conflicto".

Técnicamente hablando, una función hash criptográfica debe poseer tres propiedades para considerarse eficaz a la hora de garantizar la seguridad. Los tres atributos principales son anticolisión, anti-preimagen y anti-segundo preimagen.

Antes de analizar cada atributo individualmente, resumamos brevemente la lógica de cada atributo.

  • Resistencia a la colisión: es imposible que dos entradas diferentes generen la misma salida de valor hash.

  • Anti-imaginabilidad: es imposible "restaurar" una función hash (es decir, la entrada no se puede encontrar en una salida determinada).

  • Segunda resistencia a la preimagen: es imposible encontrar otra entrada que entre en conflicto con una entrada específica.


resistencia al conflicto

Como se mencionó anteriormente, las colisiones ocurren cuando diferentes entradas generan exactamente el mismo valor hash. Por lo tanto, una función hash se considera resistente a colisiones siempre que nadie detecte una colisión. Tenga en cuenta que, dado que las posibles entradas son infinitas y las posibles salidas finitas, siempre hay colisiones con las funciones hash.

Suponiendo que la probabilidad de encontrar una colisión es tan baja como millones de años, se puede decir que una función hash es resistente a las colisiones. Por lo tanto, si bien en realidad no existen funciones hash libres de colisiones, algunas de ellas (como SHA-256) se consideran resistentes a colisiones siempre que sean lo suficientemente fuertes.

Entre varios algoritmos SHA, los grupos SHA-0 y SHA-1 tienen conflictos, por lo que ya no son seguros. Actualmente los conjuntos SHA-2 y SHA-3 se consideran resistentes a colisiones.


Anti-imágenes

La propiedad antiicónica está relacionada con el concepto de funciones unidireccionales. Se dice que una función hash es anti-imágenes, suponiendo que la probabilidad de encontrar una entrada que produzca una salida específica es extremadamente baja.

Tenga en cuenta que un atacante mira una salida determinada para adivinar la entrada, por lo que esta propiedad es diferente de la resistencia a la colisión. Además, dos entradas diferentes que produzcan el mismo resultado entrarán en conflicto, pero en realidad no importa qué entrada se utilice.

Las propiedades anti-imaginabilidad son valiosas para proteger los datos porque un simple hash de un mensaje puede demostrar su autenticidad sin revelar la información. En la práctica, muchos proveedores de servicios y aplicaciones web almacenan y utilizan hashes generados a partir de contraseñas en lugar de la contraseña en texto sin cifrar.


Resistencia a la segunda preimagen

En resumen, la resistencia a segundas preimágenes se encuentra en algún punto entre las dos propiedades mencionadas anteriormente. Un segundo ataque de preimagen ocurre si alguien puede encontrar una entrada específica que produzca una salida que sea igual a otra entrada conocida.

En otras palabras, el segundo ataque de preimagen está relacionado con la búsqueda de conflictos, pero en lugar de buscar dos entradas aleatorias que generen el mismo valor hash, busca otra entrada que genere el mismo valor hash dada la entrada específica.

Un segundo ataque de preimagen suele significar que hay un conflicto. Por lo tanto, cualquier función hash resistente a colisiones también es resistente a segundos ataques de preimagen. Sin embargo, ser resistente a colisiones significa que se puede encontrar una única entrada desde una única salida, por lo que un atacante aún puede lanzar un ataque de preimagen contra una función resistente a colisiones.


Minería de criptomonedas

Las funciones hash se utilizan en varios pasos en la minería de Bitcoin, como verificar saldos, concatenar entradas y salidas de transacciones y hacer hash de transacciones dentro del mismo bloque para formar un árbol Merkle. Sin embargo, una de las principales razones por las que la cadena de bloques de Bitcoin es segura es que los mineros necesitan realizar innumerables operaciones de hash antes de poder encontrar finalmente una solución válida para el siguiente bloque.

Específicamente, los mineros deben probar varias entradas diferentes al crear hashes de bloques candidatos. Básicamente, los mineros solo pueden validar un bloque si el hash de salida generado comienza con una cierta cantidad de ceros. La cantidad de ceros determina la dificultad de la minería y cambia con la tasa de hash dedicada a la red.

En este caso, la tasa de hash representa la cantidad de potencia informática utilizada para extraer Bitcoin. Si la tasa de hash de la red aumenta, el protocolo Bitcoin ajustará automáticamente la dificultad de extracción para que el tiempo promedio necesario para generar un bloque se mantenga cercano a los 10 minutos. Por el contrario, si muchos mineros deciden dejar de minar, lo que hace que la tasa de hash caiga significativamente, la dificultad de minado se reducirá hasta que el tiempo promedio de bloque vuelva a 10 minutos.

Tenga en cuenta que los mineros pueden generar múltiples hashes como salida válida (comenzando con una cierta cantidad de ceros), por lo que no necesitan buscar colisiones. Hay múltiples soluciones posibles para un bloque, pero dependiendo del umbral de dificultad de minería, los mineros solo tienen que encontrar una de las soluciones.

La minería de Bitcoin es una tarea de alto costo y no es necesario que los mineros engañen al sistema, lo que causaría pérdidas financieras significativas. Cuantos más mineros se unan a la cadena de bloques, más grande y poderosa se volverá la cadena de bloques.


Resumir

No hay duda de que las funciones hash son una herramienta esencial en informática y su capacidad para procesar cantidades masivas de datos es particularmente sobresaliente. Combinados con la criptografía, los algoritmos hash se pueden utilizar de diversas formas para proporcionar seguridad y autenticación de diversas formas. Para casi todas las redes de criptomonedas, las funciones hash criptográficas son cruciales. Por lo tanto, si está interesado en la tecnología blockchain, será de gran beneficio comprender las propiedades y el mecanismo operativo de las funciones hash criptográficas.