El procesamiento hash se refiere al proceso de generar una salida de tamaño fijo a partir de una entrada de diferente tamaño. Esto se hace mediante el uso de una fórmula matemática conocida como función hash (implementada como un algoritmo hash).
Si bien no todas las funciones hash están relacionadas con el uso de la criptografía, las conocidas como funciones hash criptográficas son el núcleo de las criptomonedas. Gracias a esto, blockchain y otros sistemas distribuidos pueden alcanzar niveles significativos de integridad y seguridad de los datos.
Las funciones hash convencionales y los hash criptográficos son iguales: deterministas. Ser determinista significa que mientras la entrada no cambie, el algoritmo hash siempre producirá la misma salida (también conocido como resumen o hash).
En particular, el algoritmo hash de las criptomonedas está diseñado como una función unidireccional, lo que significa que no se puede revertir fácilmente sin un enorme tiempo de cálculo y recursos. En otras palabras, es muy fácil producir resultados a partir de insumos, pero relativamente difícil hacer lo contrario (generar insumos sólo a partir de resultados). En general, cuanto más difícil sea encontrar la entrada, más seguro será el algoritmo hash.
¿Cómo funciona la función hash?
Diferentes funciones hash producirán resultados de diferentes tamaños, pero el tamaño de salida posible de cada algoritmo hash es siempre constante. Por ejemplo, el algoritmo SHA-256 solo producirá una salida de 256 bits, mientras que SHA-1 siempre producirá un resumen de 160 bits.
Para ilustrar esto, ejecutemos las palabras "Binance" y "binance" a través del algoritmo hash SHA-256 (el que se usa en Bitcoin).
Tenga en cuenta que los pequeños cambios (tamaño de la primera letra) dan como resultado valores hash muy diferentes. Pero como utilizamos SHA-256, la salida siempre tendrá un tamaño fijo de 256 bits (o 64 caracteres), independientemente del tamaño de entrada. Además, no importa cuántas veces ejecutemos estas dos palabras en el algoritmo, ambas salidas siempre serán constantes.
Por otro lado, si ejecutamos las entradas a través del algoritmo hash SHA-1, tendremos los siguientes resultados:
En concreto, las siglas SHA significan Secure Hash Algorithms. Se refiere a un conjunto de funciones hash criptográficas que incluye los algoritmos SHA-0 y SHA-1 junto con los grupos SHA-2 y SHA-3. SHA-256 forma parte del grupo SHA-2, junto con SHA-512 y otras variantes. Actualmente, sólo los grupos SHA-2 y SHA-3 se consideran seguros.
¿Porque es esto importante?
Las funciones hash convencionales tienen una amplia variedad de casos de uso, incluida la búsqueda en bases de datos, el análisis de grandes datos y la 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 importante del proceso de minería y contribuyen a la generación de nuevas direcciones y claves.
El verdadero poder de hash se ve cuando se trata de grandes cantidades de información. Por ejemplo, se puede ejecutar un archivo grande o un conjunto de datos a través de una función hash y luego usar la salida 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 produce una salida simple y concisa (hash). Técnicas como esta eliminan la necesidad de almacenar y "recordar" grandes cantidades de datos.
En particular, el hashing es muy útil en la tecnología blockchain. La cadena de bloques de Bitcoin tiene varios procesos que involucran hash, la mayoría de los cuales están en el proceso de minería. De hecho, casi todos los protocolos de criptomonedas se basan en hash para conectar grupos compactos de transacciones en bloques y también para generar enlaces criptográficos entre bloques individuales, creando efectivamente una cadena de bloques.
Funciones hash criptográficas
Nuevamente, una función hash que implementa técnicas criptográficas se puede definir como una función hash criptográfica. En general, romper una función hash criptográfica requiere un gran esfuerzo de fuerza bruta. Si alguien quiere "revertir" una función hash criptográfica, entonces debe adivinar cuál es la entrada mediante prueba y error hasta que se produzca la salida adecuada. Sin embargo, también es posible que diferentes entradas produzcan exactamente la misma salida, por lo que en este caso se produce una “colisión”.
Técnicamente, una función hash criptográfica debe cumplir tres propiedades para ser considerada segura y eficaz. Podemos describirlos como resistencia a la colisión, resistencia a la preimagen y resistencia a la preimagen secundaria.
Antes de analizar cada rasgo, resumamos esta lógica en tres frases cortas.
Resistencia a colisiones: no es fácil encontrar dos entradas diferentes que produzcan el mismo hash como salida.
Resistencia previa a la imagen: no es fácil "invertir" una función hash (buscar la entrada a partir de la salida disponible).
Segunda resistencia de preimagen: no es fácil encontrar una segunda entrada que entre en conflicto con la entrada especificada.
Resistencia a la colisión
Como se mencionó, se produce una colisión cuando diferentes entradas producen el mismo hash. Por lo tanto, la función hash se considera resistente a colisiones hasta el momento en que se produce una colisión. Tenga en cuenta que estas colisiones siempre existirán para cualquier función hash porque las posibles entradas son infinitas, mientras que las posibles salidas son limitadas.
En otras palabras, se dice que una función hash es a prueba de colisiones cuando la probabilidad de encontrar una colisión es muy pequeña, porque requiere millones de años de cálculo. Entonces, a pesar de que no existen funciones hash libres de colisiones, algunas de ellas son muy potentes y pueden considerarse robustas (ejemplo: SHA-256).
Entre los distintos algoritmos SHA, los grupos SHA-0 y SHA-1 ya no son seguros, ya que se han descubierto colisiones. Actualmente, los grupos SHA-2 y SHA-3 se consideran resistentes a impactos.
Resistencia previa a la imagen
La propiedad de la resistencia a la preimagen está relacionada con el concepto de funciones unidireccionales. Una función hash se considera resistente a la preimagen cuando la probabilidad de que alguien encuentre una entrada que resulte de una salida particular es muy pequeña.
Tenga en cuenta que esta propiedad es diferente de la anterior porque el atacante intentará adivinar cuál es la entrada mirando la salida disponible. Una colisión, por otro lado, ocurre cuando alguien encuentra dos entradas diferentes que producen la misma salida, pero no importa cuál se use.
La propiedad de resistencia a la preimagen es muy útil para proteger datos porque un simple hash de un mensaje puede demostrar la autenticidad, sin tener que revelar la información. En la práctica, muchos proveedores de servicios y aplicaciones web almacenan y utilizan los hashes de contraseñas resultantes en lugar de contraseñas en texto plano.
Vista previa de la segunda resistencia
En pocas palabras, podemos decir que esta segunda resistencia de Preimagen se encuentra entre las dos propiedades comentadas anteriormente. El segundo ataque de preimagen ocurre cuando alguien es capaz de encontrar una entrada particular que produce la misma salida que otra salida de una entrada diferente que ya se conoce.
En otras palabras, el segundo ataque de preimagen es encontrar colisiones, pero en lugar de buscar dos entradas aleatorias que produzcan el mismo hash, buscan entradas que produzcan el mismo hash producido por otra entrada específica.
Por lo tanto, cualquier función hash resistente a colisiones también es resistente a ataques de segunda preimagen. Sin embargo, todavía se puede realizar un ataque de preimagen a una función resistente a colisiones porque esto también significa encontrar una única entrada a partir de una única salida.
Minería
Hay muchos pasos en la minería de bitcoins que involucran funciones hash, como verificar saldos, vincular transacciones de entrada y salida y transacciones hash dentro de 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 el hecho de que los mineros tienen que realizar una gran cantidad de operaciones de hash para, en última instancia, encontrar la solución correcta para el siguiente bloque.
Específicamente, un minero debe probar varias entradas diferentes al generar valores hash para sus bloques candidatos. En esencia, solo puede validar su bloque si produce un hash de salida que comience con una cierta cantidad de ceros. La cantidad de ceros determina la dificultad de la minería, y esto varía según la tasa de hash específica de la red.
En este caso, la tasa de hash representa cuánta energía informática se utiliza para la minería de Bitcoin. Si la tasa de hash de la red aumenta, el protocolo Bitcoin ajustará la dificultad de extracción automáticamente, de modo que el tiempo promedio necesario para extraer un bloque restante se acerque a los 10 minutos. Por el contrario, si algunos mineros deciden dejar de minar, esto hace que la tasa de hash disminuya drásticamente, la dificultad de minado se ajustará, haciéndola más fácil (hasta que el tiempo promedio de bloqueo vuelva a 10 minutos).
Por favor, comprenda que los mineros no tienen que encontrar colisiones porque hay muchos hashes que pueden producir como salida válida (comenzando con una cierta cantidad de ceros). Por lo tanto, hay varias soluciones posibles para un bloque en particular, y los mineros solo necesitan encontrar una solución dependiendo del umbral determinado por el nivel de dificultad de la minería.
Dado que la minería de Bitcoin es una tarea costosa, los mineros no tienen motivos para engañar al sistema, lo que provocaría pérdidas financieras importantes. Cuantos más mineros se unan a la cadena de bloques, más grande y más fuerte se volverá.
idea final
No hay duda de que las funciones hash son una herramienta muy importante en informática, especialmente cuando se trata de grandes cantidades de datos. Cuando se combinan con la criptografía, los algoritmos hash pueden ser versátiles y ofrecer seguridad y autenticidad de diversas formas. Por lo tanto, las funciones hash criptográficas son esenciales para casi todas las redes de criptomonedas, por lo que comprender sus propiedades y cómo funcionan es algo muy útil para cualquier persona interesada en la tecnología blockchain.

