Imagina que pudieras tomar cualquier dato — una sola palabra, una novela, un vídeo de 4 GB — y reducirlo a una cadena corta de caracteres de longitud fija que lo identifica de forma única. Cambia una sola coma en el original y la cadena se vuelve completamente diferente. Y no hay forma de revertir el proceso para recuperar los datos originales.
Eso es exactamente lo que hace una función hash criptográfica. Es uno de los bloques de construcción más fundamentales de la seguridad moderna, y protege silenciosamente casi todo lo que haces en línea.
La metáfora de la huella digital
Un hash funciona como una huella digital. Tu huella dactilar te identifica de forma única, pero nadie puede reconstruir tu rostro a partir de ella. De manera similar, un hash criptográfico identifica de forma única un dato sin revelar cuál es ese dato.
Introduce cualquier entrada en una función hash y obtendrás un digest (también llamado valor hash o checksum) — una cadena de caracteres hexadecimales de longitud fija. SHA-256, uno de los algoritmos más comunes, siempre produce una salida de 64 caracteres independientemente del tamaño de la entrada.
| Entrada | Digest SHA-256 (primeros 16 caracteres) |
|---|---|
Hello |
185f8db32271fe25... |
hello |
2cf24dba5fb0a30e... |
| Volcado completo de Wikipedia | (sigue siendo 64 caracteres) |
Las cuatro propiedades esenciales
Una función se califica como hash criptográfico solo si satisface estas propiedades:
- Determinista. La misma entrada siempre produce la misma salida, en cualquier máquina, en cualquier momento.
- Unidireccional (resistencia a preimagen). Dado un hash, es computacionalmente inviable encontrar la entrada original. No se puede "deshacer" un hash.
- Resistente a colisiones. Es prácticamente imposible encontrar dos entradas diferentes que produzcan el mismo digest. Para SHA-256, las probabilidades de una colisión accidental son aproximadamente de 1 en 2^128 — un número mayor que los átomos en el universo observable.
- Efecto avalancha. Cambiar un solo bit en la entrada invierte aproximadamente la mitad de los bits en la salida. No hay un patrón detectable ni relación entre entradas similares.
Distinción clave: El hashing no es cifrado. El cifrado es reversible con una clave; el hashing es deliberadamente irreversible. Cifras datos para protegerlos durante la transmisión. Hasheas datos para verificar su integridad o almacenar una prueba sin conservar el original.
Algoritmos hash comunes
MD5 (1991)
- Salida: 128 bits (32 caracteres hexadecimales)
- Estado: Criptográficamente roto. Los investigadores pueden generar colisiones en segundos con un portátil.
- Todavía se ve en: Checksums no relacionados con seguridad para descargas de archivos y sistemas heredados.
SHA-1 (1995)
- Salida: 160 bits (40 caracteres hexadecimales)
- Estado: Obsoleto para seguridad. Google demostró una colisión práctica en 2017 (el ataque "SHAttered").
- Todavía se ve en: Repositorios Git antiguos, algunos certificados heredados.
SHA-256 (2001)
- Salida: 256 bits (64 caracteres hexadecimales)
- Estado: Estándar actual. Sin ataques prácticos conocidos.
- Usado en: Certificados TLS, Bitcoin, hashing de contraseñas, firmas digitales, verificación de integridad de archivos.
SHA-3 (2015)
- Salida: Variable (comúnmente 256 bits)
- Estado: Último estándar, basado en un diseño interno completamente diferente (construcción esponja Keccak) al de la familia SHA-2.
- Usado en: Sistemas orientados al futuro, Ethereum, situaciones que requieren diversidad de algoritmos.
| Algoritmo | Tamaño de salida | ¿Seguro? | Velocidad |
|---|---|---|---|
| MD5 | 128 bits | No | Muy rápido |
| SHA-1 | 160 bits | No | Rápido |
| SHA-256 | 256 bits | Sí | Moderado |
| SHA-3-256 | 256 bits | Sí | Moderado |
Dónde se usa el hashing criptográfico
Almacenamiento de contraseñas
Cuando creas una cuenta, un sistema bien diseñado nunca almacena tu contraseña en texto plano. Almacena el hash. Cuando inicias sesión, el sistema hashea lo que escribes y lo compara con el valor almacenado. Incluso si la base de datos es vulnerada, los atacantes obtienen hashes — no contraseñas.
Los sistemas modernos van más allá añadiendo un salt aleatorio (datos extra añadidos antes del hashing) y usando algoritmos intencionalmente lentos como bcrypt, scrypt o Argon2 para hacer que el descifrado por fuerza bruta sea impracticable.
Verificación de integridad de archivos
Los distribuidores de software publican checksums SHA-256 junto a sus descargas. Después de descargar, calculas el hash del archivo en tu máquina y lo comparas. Una coincidencia demuestra que el archivo no fue corrompido ni manipulado durante la transmisión.
Firmas digitales
Cuando firmas digitalmente un documento, el sistema hashea primero el documento, luego cifra el hash con tu clave privada. El destinatario lo descifra con tu clave pública y lo compara con su propio hash del documento. Esto es mucho más eficiente que cifrar todo el documento y prueba tanto la autoría como la integridad.
Blockchain
Cada bloque en una blockchain contiene el hash del bloque anterior, creando una cadena inmutable. Alterar cualquier transacción pasada cambia el hash de su bloque, lo que rompe la cadena desde ese punto en adelante, haciendo la manipulación inmediatamente visible.
Por qué MD5 y SHA-1 se consideran rotos
Un algoritmo hash está "roto" cuando alguien puede crear deliberadamente dos entradas diferentes que producen el mismo hash (una colisión). Esto socava todos los casos de uso que dependen de la unicidad.
- MD5: Las colisiones pueden generarse en segundos. Los investigadores han creado dos archivos PDF diferentes con hashes MD5 idénticos.
- SHA-1: El ataque SHAttered en 2017 produjo dos PDFs diferentes con el mismo hash SHA-1, requiriendo aproximadamente 6.500 años de cómputo en una sola CPU (factible con recursos en la nube).
Regla práctica: Nunca uses MD5 o SHA-1 para nada relacionado con seguridad — contraseñas, certificados, firmas digitales o verificaciones de integridad donde un adversario pueda estar involucrado. Usa SHA-256 o SHA-3 en su lugar.
Para saber más
El hashing es uno de esos conceptos que se vuelve intuitivo una vez que experimentas con él. Prueba a hashear una frase, luego cambia un carácter y observa el efecto avalancha de primera mano.
- Cómo generar y verificar hashes — tutorial paso a paso
- Hash Generator — calcula SHA-256, MD5, SHA-512 y más al instante en tu navegador
- Hash Identifier — pega un hash desconocido e identifica su algoritmo
