

El hashing es el proceso de generar una salida de tamaño fijo a partir de una entrada de tamaño variable, utilizando fórmulas matemáticas denominadas funciones hash (implementadas como algoritmos de hashing).
Si bien no todas las funciones hash emplean criptografía, las funciones hash criptográficas son fundamentales en las criptomonedas. Gracias a ellas, las blockchains y otros sistemas distribuidos logran altos niveles de integridad y seguridad de los datos.
Las funciones hash convencionales y criptográficas son deterministas. Ser determinista implica que, mientras la entrada no cambie, el algoritmo de hashing generará siempre la misma salida (también llamada resumen o hash).
Los algoritmos de hashing empleados en criptomonedas suelen estar diseñados como funciones unidireccionales: no pueden revertirse fácilmente sin grandes recursos y tiempo computacional. Es fácil obtener la salida a partir de la entrada, pero sumamente complejo deducir la entrada solo a partir de la salida. En términos generales, cuanto más difícil resulta deducir la entrada, más seguro se considera el algoritmo de hashing.
Cada función hash produce salidas de tamaño constante, aunque el tamaño varía según el algoritmo. Por ejemplo, SHA-256 solo genera salidas de 256 bits, mientras que SHA-1 siempre produce resúmenes de 160 bits.
Por ejemplo, si procesamos las palabras "ExampleText" y "exampletext" con el algoritmo SHA-256 (el utilizado en Bitcoin), obtenemos:
| Entrada | Salida (256 bits) |
|---|---|
| ExampleText | f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191 |
| exampletext | 59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2 |
Un cambio mínimo (como la mayúscula inicial) genera un hash completamente distinto. Sin embargo, al usar SHA-256, las salidas tendrán siempre 256 bits (64 caracteres), sin importar el tamaño de la entrada. Además, repetir el proceso siempre arrojará los mismos resultados para las mismas entradas.
Si procesamos las mismas entradas con SHA-1, los resultados son:
| Entrada | Salida (160 bits) |
|---|---|
| ExampleText | 7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1 |
| exampletext | e58605c14a76ff98679322cca0eae7b3c4e08936 |
SHA es el acrónimo de Secure Hash Algorithms. Engloba un conjunto de funciones hash criptográficas, incluyendo SHA-0, SHA-1, y los grupos SHA-2 y SHA-3. SHA-256 pertenece al grupo SHA-2, junto con SHA-512 y otras variantes. Actualmente, solo los grupos SHA-2 y SHA-3 se consideran seguros.
Las funciones hash convencionales tienen múltiples aplicaciones, como búsquedas en bases de datos, análisis de archivos grandes y gestión de datos. Las funciones hash criptográficas se emplean ampliamente en seguridad informática: autenticación de mensajes y huellas digitales. En Bitcoin, las funciones hash criptográficas son esenciales para la minería y la generación de direcciones y claves.
El hashing resulta especialmente útil al manejar grandes volúmenes de información. Un archivo o conjunto de datos puede procesarse con una función hash y su salida permite verificar rápidamente la integridad de la información, gracias a la naturaleza determinista del hashing: cada entrada genera siempre una salida condensada y simplificada (hash). Así se evita almacenar grandes cantidades de datos.
En el ámbito blockchain, el hashing es fundamental. La blockchain de Bitcoin utiliza hashing en numerosas operaciones, principalmente en minería. Casi todos los protocolos de criptomonedas dependen del hashing para condensar y vincular grupos de transacciones en bloques y crear enlaces criptográficos entre ellos, dando forma a la cadena de bloques.
Una función hash que incorpora técnicas criptográficas se denomina función hash criptográfica. Romper una función hash criptográfica requiere intentos masivos por fuerza bruta. Para “revertir” una función hash criptográfica, habría que adivinar la entrada por ensayo y error hasta obtener la salida correspondiente. Sin embargo, pueden producirse “colisiones”, es decir, entradas diferentes que generan la misma salida.
Una función hash criptográfica debe cumplir tres propiedades para considerarse segura: resistencia a colisiones, resistencia a preimagen y resistencia a segunda preimagen.
Resumamos su lógica en tres frases:
Una colisión ocurre cuando entradas distintas generan el mismo hash. Una función hash es resistente a colisiones mientras no se haya encontrado ninguna. Las colisiones existen para todas las funciones hash, ya que las entradas posibles son infinitas y las salidas, finitas.
En la práctica, una función hash se considera resistente cuando la probabilidad de hallar una colisión es tan baja que requeriría millones de años de cálculo. No existen funciones completamente libres de colisiones, pero algunas, como SHA-256, son suficientemente robustas.
Entre los algoritmos SHA, los grupos SHA-0 y SHA-1 han dejado de ser seguros porque ya se han hallado colisiones. Actualmente, SHA-2 y SHA-3 se consideran resistentes a colisiones.
La resistencia a preimagen está vinculada al concepto de funciones unidireccionales. Una función hash es resistente a preimagen si resulta extremadamente improbable encontrar la entrada original a partir de una salida dada.
Esto la diferencia de la resistencia a colisiones: en la preimagen, el atacante trata de deducir la entrada a partir de una salida concreta; en la colisión, basta con encontrar dos entradas distintas que produzcan la misma salida, sin importar cuáles sean.
La resistencia a preimagen protege la información, ya que un hash puede demostrar la autenticidad de un mensaje sin revelar el contenido. En la práctica, muchos servicios y aplicaciones web almacenan hashes de contraseñas en lugar de las contraseñas originales.
La resistencia a segunda preimagen es una propiedad intermedia. Un ataque de segunda preimagen consiste en encontrar una entrada específica que produzca el mismo hash que otra entrada ya conocida.
En este caso, se busca una colisión, pero en vez de dos entradas aleatorias, se trata de encontrar una entrada que coincida con el hash generado por otra concreta.
Una función hash resistente a colisiones también lo es frente a ataques de segunda preimagen, ya que estos implican una colisión. Sin embargo, una función resistente a colisiones puede ser vulnerable a ataques de preimagen, ya que aquí basta con hallar una sola entrada a partir de una salida concreta.
En la minería de Bitcoin, las funciones hash intervienen en múltiples pasos: verificación de saldos, vinculación de entradas y salidas de transacciones y el hashing de transacciones en un bloque para formar un Árbol de Merkle. Uno de los motivos clave de la seguridad de la blockchain de Bitcoin es que los mineros deben realizar infinidad de operaciones de hashing para encontrar una solución válida para el siguiente bloque.
El minero prueba entradas distintas al generar el hash de su bloque candidato. Solo podrá validar el bloque si el hash generado comienza con un determinado número de ceros. La cantidad de ceros marca la dificultad de minado y cambia en función de la tasa de hash asignada a la red.
La tasa de hash mide la potencia informática destinada a la minería de Bitcoin. Si la tasa de hash de la red aumenta, el protocolo ajusta automáticamente la dificultad para que el tiempo medio de minado de un bloque siga cerca de los 10 minutos. Si muchos mineros abandonan y la tasa disminuye, la dificultad se ajusta para facilitar el minado hasta que el tiempo medio vuelva a 10 minutos.
Los mineros no necesitan buscar colisiones: hay múltiples hashes válidos (que comiencen con un cierto número de ceros). Para cada bloque existen varias soluciones posibles; basta con encontrar una, según el umbral fijado por la dificultad de minado.
Dado que la minería de Bitcoin implica altos costes, los mineros no tienen incentivos para hacer trampas, ya que supondría pérdidas económicas notables. Cuantos más mineros participan en una blockchain, más grande y resistente se vuelve.
Las funciones hash son herramientas imprescindibles en informática, sobre todo para tratar grandes volúmenes de datos. Combinados con criptografía, los algoritmos de hashing resultan versátiles, aportando seguridad y autenticación en distintos ámbitos. Por ello, las funciones hash criptográficas son esenciales para casi todas las redes de criptomonedas; comprender sus propiedades y funcionamiento es clave para cualquier persona interesada en la tecnología blockchain.
El hashing es una función que transforma datos de cualquier tamaño en una salida de tamaño fijo. Garantiza la integridad y la seguridad en blockchain generando identificadores únicos. Incluso un cambio mínimo en los datos produce hashes totalmente distintos, lo que lo hace ideal para verificación y protección criptográfica.
Las funciones hash procesan los datos de entrada y generan salidas de longitud fija mediante algoritmos matemáticos. La misma entrada siempre produce la misma salida porque las funciones hash son deterministas: siguen reglas computacionales constantes que garantizan reproducibilidad y fiabilidad en operaciones criptográficas.
El hashing se emplea en verificación de integridad de datos, firmas digitales, autenticación de contraseñas y seguridad blockchain. Permite comprobar que los datos no han sido alterados y facilita la verificación segura de identidad en sistemas criptográficos.
El hashing produce salidas de longitud fija y es irreversible, se usa para verificar integridad. El cifrado es reversible y protege la confidencialidad de los datos. El hashing no permite descifrar información, mientras que el cifrado sí lo permite con la clave adecuada.
Una buena función hash debe ser resistente a colisiones, capaz de generar salidas muy diferentes ante cambios mínimos (resistencia a manipulaciones) y ofrecer alta eficiencia en búsquedas para recuperar datos rápidamente.
Entre los algoritmos más usados están MD5, SHA-1 y SHA-256. MD5 genera hashes de 128 bits, pero tiene vulnerabilidades conocidas. SHA-256 produce hashes de 256 bits y es más seguro. SHA-1 está obsoleto. SHA-256 es el estándar preferido en blockchain por su solidez y resistencia a colisiones.











