Funciones hash criptográficas explicadas

¿Qué son las funciones hash criptográficas?
Una función hash criptográfica (cryptographic hash function) es un tipo de fórmula matemática que transforma un fragmento de información (por ejemplo, un texto, archivo o contraseña) en una breve “huella digital” de longitud fija. A esta huella digital la llamamos valor hash.
Un valor hash suele parecer una larga secuencia de números y letras. Por ejemplo, si pasas la palabra "Hola" por la función hash SHA-256 (una función hash muy conocida utilizada por Bitcoin), obtendrás:
185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
No importa cuántas veces o en qué ordenador lo hagas: mientras la entrada sea “Hola”, el valor hash será siempre exactamente el mismo. El hash está vinculado a un fragmento específico de información. Esto lo convierte en un método fiable para comprobar si los datos han sido modificados.
Puntos clave
-
Las funciones hash crean una huella digital de los datos: la misma entrada siempre produce el mismo hash, pero pequeños cambios generan un resultado totalmente distinto.
-
Los hashes no son reversibles: a partir del hash no se pueden reconstruir los datos originales, lo que los hace adecuados para la seguridad y las blockchains.
-
Las aplicaciones son amplias: almacenamiento seguro de contraseñas, verificación de integridad, firmas digitales y transacciones en blockchain.
-
La seguridad varía según el algoritmo: MD5 y SHA-1 están rotos y son inseguros, mientras que SHA-2 y SHA-3 siguen considerándose seguros.
-
En las blockchains los hashes son cruciales: enlazan bloques entre sí, aseguran transacciones y hacen posible la minería de Proof of Work.
Aplicaciones de una función hash
Un valor hash se utiliza a menudo en la seguridad digital de datos, comunicaciones y sistemas. Puedes encontrarlos, entre otros, en:
- Almacenamiento de contraseñas: en lugar de guardar contraseñas en texto plano, un sistema almacena solo el valor hash.
- Verificación de integridad: en descargas o actualizaciones de software se proporciona un hash para que los usuarios puedan comprobar que el archivo no ha sido modificado.
- Firmas digitales y certificados: las funciones hash garantizan que un documento firmado no pueda modificarse sin ser detectado.
- Blockchains: cada transacción y cada bloque están asegurados mediante hashing, lo que garantiza que la cadena sea inmutable.
Propiedades de una función hash
Propiedades importantes de una función hash son:
-
Misma entrada, misma salida
Si introduces los mismos datos, siempre obtendrás exactamente el mismo hash. Ejemplo: una contraseña. El sistema guarda únicamente el hash de tu contraseña. Cuando intentas iniciar sesión más tarde, el sistema comprueba si el nuevo hash coincide con el almacenado. Solo así se obtiene acceso. -
No reversible
Un hash no puede invertirse para obtener la entrada original. Esto lo hace especialmente adecuado para una blockchain. Cada bloque de la blockchain contiene un hash único (y a veces varios hashes) con transacciones incluidas. Además, contiene el hash del bloque anterior. Si alguien intenta manipular una transacción, el hash cambia inmediatamente. Como este hash también está en el siguiente bloque, toda la cadena cambia. Esto es detectado de inmediato por los validadores o mineros. Un atacante tendría que recalcular todos los bloques posteriores, lo que es prácticamente imposible. Esto hace imposible la manipulación. -
Sensible a pequeños cambios
Si cambias una sola letra o incluso un solo bit, el hash resultante será completamente diferente. Ejemplo: "Mundo" tiene un hash totalmente distinto a "Mundp", aunque las palabras se parezcan mucho. -
Evitar colisiones
Una colisión significa que dos entradas diferentes producen el mismo hash. Esto es teóricamente posible, pero en la práctica con funciones hash seguras es prácticamente imposible. Ejemplo: con SHA-256 necesitarías miles de millones de años para generar suficientes hashes hasta encontrar dos iguales por casualidad. Las variantes más antiguas como MD5 y SHA-1 son vulnerables y por ello ya no se utilizan.
¿Cómo funcionan las funciones hash?
El proceso que realizan las funciones hash se llama hashing. Una función hash es el algoritmo que realiza el cálculo, mientras que hashing es el proceso de aplicar esa función a los datos.
Procesamiento de entrada
Los datos (texto, archivo, contraseña, etc.) se dividen en bloques de tamaño fijo.
Ejemplo: “Hola” se divide en bloques de, por ejemplo, 512 bits. Como es más corto, se añade un padding adicional.
Transformaciones matemáticas
Cada bloque pasa por operaciones como desplazamientos de bits, permutaciones y sumas modulares.
Ejemplo: “Hola” produce el siguiente resultado al aplicar SHA-256:
185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
Combinación (compresión o sponge)
Los resultados se combinan en un estado interno.
- En SHA-2 mediante una función de compresión
- En SHA-3 mediante una construcción sponge
Salida
Después del cálculo final, queda un valor hash.
Ejemplo:
“Hola” → 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
“Hola!” → 334d74c95ed3ceec833219cd94ef7a8320b9c9d98c14b622d0535fbe7bb3f3a4
¿Qué es el efecto Avalanche?
El efecto avalanche garantiza que sea imposible derivar hashes entre sí, ya que incluso pequeñas diferencias en la entrada generan un valor hash completamente distinto. Aunque las entradas parezcan muy similares, el resultado es una secuencia de números y letras completamente diferente. Esto hace imposible deducir a partir de los hashes cómo eran los datos originales o cuán similares son dos entradas.
¿Qué funciones hash existen?
A lo largo de los años se han desarrollado o mejorado varias funciones hash criptográficas. Algunas de las más conocidas son:
-
MD5
Desarrollada en los años 90 como sucesora de algoritmos MD anteriores. Este algoritmo produce un hash de 128 bits y se utilizó durante años para la verificación de archivos y certificados digitales. Hoy en día se considera inseguro, ya que desde 2004 se han registrado casos en los que dos entradas diferentes generaron el mismo valor hash. Esto se denomina colisión. Por ello, MD5 solo se utiliza actualmente en aplicaciones simples, pero ya no en seguridad. -
SHA-1
SHA-1 fue durante mucho tiempo el estándar para firmas digitales y certificados SSL. Es un algoritmo con un hash de 160 bits. En 2017, Google y CWI Ámsterdam demostraron una colisión: crearon dos archivos PDF diferentes con exactamente el mismo hash SHA-1. Esto demostró que en la práctica era posible falsificar un hash. Desde entonces, SHA-1 se considera criptográficamente roto e inseguro. Por ello, los principales navegadores y autoridades de certificación dejaron de soportarlo. -
SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
El sucesor de SHA-1 es SHA-2. Este algoritmo utiliza bloques de 512 o 1024 bits y produce salidas de 224, 256, 384 o 512 bits. Un sistema SHA-2 muy conocido es SHA-256, utilizado para asegurar la blockchain de Bitcoin. SHA-512 es más eficiente en sistemas de 64 bits. Hasta la fecha, no se conocen ataques exitosos contra SHA-2, por lo que sigue siendo una de las funciones hash criptográficas más utilizadas. -
SHA-3 (Keccak)
Desarrollado en 2007 por Guido Bertoni, Joan Daemen, Michaël Peeters y Gilles Van Assche, el algoritmo Keccak fue adoptado en 2015 por el NIST como nuevo estándar de hash bajo el nombre SHA-3. Fue introducido como alternativa junto a SHA-2, en caso de que se encontraran debilidades en este último en el futuro. Actualmente SHA-3 no se utiliza mucho en la práctica, ya que SHA-2 sigue siendo seguro, está ampliamente soportado en hardware y profundamente integrado en protocolos como TLS y certificados SSL.
Funciones hash en criptomonedas y blockchain
Las funciones hash desempeñan un papel crucial en las blockchains. El hashing se utiliza para asegurar transacciones, enlazar bloques y constituye el núcleo de las blockchains que validan transacciones mediante minería. Las blockchains que utilizan el mecanismo de consenso Proof of Work consensus emplean la potencia de cálculo de los ordenadores para resolver rompecabezas hash.
Algunos ejemplos de proyectos populares:
- Bitcoin → SHA-256 (para minería y hashing de bloques).
- Litecoin → scrypt (más rápido y menos sensible a ASIC que SHA-256).
- Zcash → Equihash (intensivo en memoria, diseñado para una minería más justa).
- Dogecoin → scrypt (el mismo algoritmo que Litecoin, con merge-mining).
- Ripple (XRP Ledger) → SHA-512/256 (una variante reducida de SHA-512).
- Algorand → SHA-512/256 (para generación de claves y firmas digitales).
Reflexión final
Las funciones hash criptográficas son un componente esencial en el mundo digital. Ofrecen una forma fiable de asegurar datos, garantizar la integridad y hacer posibles sistemas complejos como las blockchains. Aunque algoritmos más antiguos como MD5 y SHA-1 ya no son seguros debido a vulnerabilidades demostradas, las variantes modernas como SHA-2 y SHA-3 siguen siendo robustas y esenciales para las aplicaciones actuales.
La fuerza de las funciones hash reside en su simplicidad y eficacia: funciones unidireccionales que convierten pequeñas diferencias en la entrada en resultados completamente distintos, sin que los datos originales puedan recuperarse. Esto las hace cruciales no solo para la seguridad de contraseñas y firmas digitales, sino también para el funcionamiento de las criptomonedas y de internet en general.
Las funciones hash seguirán desempeñando un papel clave en el futuro, tanto en aplicaciones existentes como en nuevas innovaciones en el ámbito de blockchain, seguridad digital y criptografía.