Hash no es cifrado: por qué una contraseña no se "desencripta"

Es la confusión más común en seguridad. Cifrar es de ida y vuelta; hashear es de un solo sentido. Por eso una contraseña bien guardada no se recupera —solo se restablece—.

"Si el sistema guarda mi contraseña cifrada, alguien con la llave la puede leer." La frase suena razonable, pero parte de un error de base: en un servicio bien hecho, tu contraseña no está cifrada, está hasheada. Y esa diferencia —una palabra que casi nadie distingue— cambia por completo lo que se puede y no se puede hacer con ella. Empecemos por lo primero.

Qué es un hash

Un hash es el resultado de pasar datos por una función hash: una operación matemática que resume cualquier entrada en una cadena corta y de longitud constante. No importa si le das una letra o un libro entero; la salida siempre mide lo mismo.

Concepto clave

Una función hash toma una entrada de cualquier tamaño y devuelve una cadena de tamaño fijo —el hash o digest—. Con SHA-256, por ejemplo, la salida siempre son 256 bits, escribas lo que escribas.

Tres propiedades la definen: es determinista (la misma entrada da siempre el mismo hash), es unidireccional (del hash no se puede volver a la entrada) y un cambio mínimo en la entrada cambia el hash por completo (una coma de más y el resultado es irreconocible).

Esa última propiedad es la que hace útil al hash: como un solo carácter distinto produce un hash totalmente diferente, comparar dos hashes es una forma barata y fiable de saber si dos entradas son idénticas —sin tener que compararlas byte a byte—.

Hash vs cifrado: la diferencia clave

Aquí está el corazón del malentendido. Cifrar y hashear se parecen porque ambos transforman datos en algo ilegible, pero sirven para cosas opuestas.

Cifrar es reversible. Su propósito es proteger algo que después necesitas leer: guardas un archivo cifrado y, con la llave correcta, recuperas el original exacto. Sin ese "de vuelta", el cifrado no serviría de nada.

Un hash es irreversible por diseño. No hay ninguna "llave" que lo revierta, porque durante el proceso se pierde información de forma deliberada. Su propósito no es ocultar para luego recuperar, sino producir una huella que puedas volver a calcular y comparar. Un hash no se "desencripta" porque nunca se cifró.

Hash frente a cifrado
Característica Hash Cifrado
¿Reversible? No Sí, con la llave
¿Usa llave? No
Tamaño de salida Fijo Depende de la entrada
Para qué sirve Huella, verificación Confidencialidad

Por qué las contraseñas se guardan hasheadas

Con eso claro, la práctica correcta se explica sola. Un servicio serio nunca guarda tu contraseña tal cual —ni siquiera cifrada—: guarda su hash.

Cuando inicias sesión, el sistema toma lo que escribiste, lo hashea con la misma función y compara ese hash con el que tenía guardado. Si coinciden, escribiste la contraseña correcta; nunca hizo falta conocer la original. Así, aunque un atacante robe la base de datos completa, no obtiene las contraseñas: solo un montón de huellas irreversibles.

De ahí una consecuencia que mucha gente lee al revés: cuando un sitio te dice que "no puede recuperar tu contraseña, solo restablecerla", no es una limitación molesta —es buena señal—. Significa que no la tiene, solo su hash.

Salt: por qué dos contraseñas iguales no se ven iguales

Hashear la contraseña resuelve mucho, pero deja un flanco. Como el hash es determinista, dos usuarios que eligieron la misma contraseña tendrían exactamente el mismo hash en la base de datos. Y como las contraseñas comunes se repiten muchísimo, existen tablas precalculadas —las rainbow tables— que ya guardan el hash de millones de contraseñas típicas listas para revertir de un vistazo.

Concepto clave

El salt es un valor aleatorio y único por usuario que se añade a la contraseña antes de hashear. Como cada usuario tiene un salt distinto, dos contraseñas iguales producen hashes distintos, y las tablas precalculadas dejan de servir: habría que rehacerlas para cada salt posible.

El salt no es secreto —se guarda junto al hash—; su valor está en ser único. Convierte un ataque masivo y barato en uno que hay que repetir usuario por usuario, que es justo lo que se busca.

Errores comunes

Error común

"Olvidé mi contraseña, mándenmela por correo." Si un sitio puede enviarte tu contraseña original, es que la guarda de forma recuperable —cifrada o en texto plano—, y eso es una mala señal. Un sitio correcto solo puede dejarte restablecerla, porque de su hash no hay vuelta atrás.

Más allá de ese clásico, estos son los tropiezos que se repiten:

El otro uso: verificar integridad

Las contraseñas son solo la mitad de la historia. El hash tiene un segundo uso igual de importante: comprobar que un archivo no cambió.

Si calculas el hash de un archivo antes de enviarlo y quien lo recibe calcula el hash de lo que le llegó, basta comparar: si los dos hashes coinciden, el contenido es idéntico; si cambió un solo byte —una descarga corrupta, una manipulación—, el hash no coincide y se nota al instante. Eso es exactamente lo que hacen los checksums y la verificación de integridad en la transferencia de archivos.

El ángulo banca

En banca los dos usos del hash se cruzan a diario, en dos frentes distintos:

Cifrar y hashear no son intercambiables. Uno protege para poder leer después; el otro produce una huella que nunca se revierte. Usar uno donde toca el otro —cifrar una contraseña que debería hashearse, o "esperar recuperar" un hash— es de los errores de seguridad más caros y frecuentes que existen. Y casi siempre empieza por creer que son la misma cosa.

Jorel del Portal

Jorel del Portal

Ingeniero de sistemas especializado en arquitectura de software empresarial y plataformas de alta disponibilidad en banca y finanzas.