Diccionario

Hash (función hash)

Un cálculo que convierte cualquier dato en una huella de longitud fija: si el dato cambia lo más mínimo, la huella cambia por completo.

Una función hash como SHA-256 genera siempre la misma huella para los mismos datos, y una muy distinta si cambia un solo bit. A partir de la huella no se puede reconstruir el original.

Se usa para comprobar que un archivo descargado no se ha alterado, para guardar contraseñas de forma segura (con funciones hash diseñadas para ello) y, dentro de los programas, para que los mapas encuentren las claves al instante.

Un ejemplo

La web de un programa publica el SHA-256 del instalador; si el hash de tu descarga coincide, el archivo es idéntico al original.

Por qué importa

Una función hash convierte unos datos de cualquier tamaño en un valor de tamaño fijo, de modo que los mismos datos dan siempre el mismo resultado y es prácticamente imposible volver atrás. Se usa para dos fines distintos. El primero es la eficiencia: las tablas hash, que están detrás de los mapas y conjuntos, usan el hash de la clave para saber en qué posición guardar y encontrar cada dato casi al instante.

El segundo es la seguridad e integridad: los hashes criptográficos como SHA-256 sirven para comprobar que un archivo descargado no se ha alterado (comparando su huella con la publicada) y para guardar contraseñas sin almacenarlas en claro. Si no distingues ambos usos, puedes cometer errores graves, como guardar contraseñas con un hash rápido y sin sal, o confiar en un algoritmo ya roto como MD5 para garantizar seguridad.

Confusiones frecuentes

El hash no es cifrado. Cifrar es reversible con la clave adecuada; un hash está pensado para no poder revertirse. Tampoco debe confundirse el hash de una tabla con el criptográfico: el primero busca rapidez y reparto uniforme, el segundo exige resistencia a ataques. Otro error típico es pensar que dos datos distintos nunca pueden tener el mismo hash: las colisiones existen, y las tablas hash tienen mecanismos para resolverlas. Para contraseñas, además, se recomiendan algoritmos lentos y específicos como bcrypt, scrypt o Argon2.

Preguntas frecuentes

¿Se puede descifrar un hash?

No en el sentido de revertirlo. Lo que hacen los atacantes es probar muchas entradas y comparar resultados. Por eso las contraseñas se protegen con sal y algoritmos lentos.

¿Por qué una web no puede enviarme mi contraseña si la olvido?

Porque, si está bien hecha, solo guarda el hash y no la contraseña original. Por eso ofrece restablecerla en lugar de recordártela.