¿Qué es el hashing de contraseñas?

Lukas Grigas
Redactor de contenidos sobre ciberseguridad
cover password hashing

Los últimos años no han sido demasiado buenos para la seguridad de la información. Las filtraciones de datos ocupan los titulares un día sí y otro también. Así que, no es de extrañar que aparezcan informes sobre graves debilidades de seguridad en algunas de las mayores empresas tecnológicas cada pocas semanas.

En 2019, dos gigantes de la tecnología admitieron graves defectos de seguridad en sus sistemas. Facebook admitió que almacenó millones de contraseñas de usuarios de Instagram en texto plano. Unos meses más tarde, Google reveló lo mismo sobre sus usuarios G Suite. Pero, ¿por qué tiene tanta repercusión lo de mantener las contraseñas en texto plano? ¿Y cómo se deben almacenar?

Si las contraseñas se guardan en formato de texto plano, cualquiera con acceso interno puede verlas. Sin mencionar que, si se filtra la base de datos, los hackers también verían las credenciales sin problemas. Por eso, cualquier empresa que siga, al menos, las prácticas de seguridad más básicas, nunca guardaría las contraseñas en texto plano.

Por el contrario, las contraseñas se convierten en una complicada cadena de caracteres mediante algoritmos de hashing de contraseñas. Luego, cuando inicias sesión en tu cuenta, la contraseña con hash se compara con otros códigos de la base de datos de la empresa. Si el hash de la contraseña coincide, se te otorga acceso a tu cuenta.

Pero ¿cómo funciona exactamente el hashing? El hashing es una función unidireccional para codificar datos: toma un texto legible y lo transforma en una cadena de caracteres completamente distinta con una longitud determinada.

Sin embargo, al contrario que otros algoritmos de encriptación que transforman los datos, el hashing es casi imposible de revertir. Si los hackers se hacen con una base de datos de contraseñas con hash, la decodificación es inútil. Sin embargo, existen otros métodos a disposición de los ciberdelincuentes para descubrir la contraseña original.

inner asset password hashing

Cómo descifrar el hash

El mayor problema del hash de contraseñas es que si pasas una palabra específica como «verde» por un algoritmo de hash, el resultado hash de esa palabra será siempre el mismo. O sea, digamos que los ciberdelincuentes consiguen hacerse con una base de datos de contraseñas con hash. Nadie puede impedirle que adivine millones de contraseñas y ejecute el mismo algoritmo hasta dar con la palabra hash específica.

En la actualidad, los hackers ya no confiarán en los ataques por fuerza bruta poco sofisticados. Ahora han aumentado el nivel de sofisticación en su enfoque y emplean una estrategia más sigilosa y taimada, conocida como «ataque de diccionario». En lugar de intentar adivinar la contraseña de forma aleatoria, utilizan combinaciones predecibles y palabras de uso frecuente, como «contraseña123» para decodificar las contraseñas.

Algunos hackers han subido el nivel y utilizan una técnica llamada «tablas arcoíris». Básicamente, estas son tablas precalculadas de valores hash para las contraseñas y combinaciones más utilizadas, con lo que les es más fácil descifrar rápidamente hasta los códigos hashes de contraseñas más complejos. Es como si tuviesen una llave secreta y no les costase utilizarla.

Hash fuerte vs. hash débil

Por esta razón hay varios tipos de hashing. Por ejemplo, los algoritmos de hashing como SHA-1 y MD5 se consideran, en general, anticuados y sencillos de descifrar. Los algoritmos más modernos, como bcrypt y SHA2 son más seguros, pero siguen siendo vulnerables a ciertos tipos de ataques. Actualmente, el algoritmo recomendado para el hashing de contraseñas es Argon2id, que se ha diseñado para que consuma mucha memoria y sea costoso desde el punto de vista computacional, lo que lo hace muy resistente a los tipos habituales de ataques de fuerza bruta. Argoin2id puede codificar la contraseña con hash unas cuantas veces. Sin embargo, debido a la complejidad de sus operaciones, Argoin2id se considera más seguro que el algoritmo PBKDF2, que ejecuta miles o incluso millones de iteraciones de hashing sencillas. Por eso NordPass utiliza Argoin2id para codificar las credenciales con hash cuando se inicia sesión, porque es uno de los algoritmos de codificación más seguros que hay.

Para que el proceso de hashing sea aún más seguro, existe un condimento, o más exactamente la «sal» y la «pimienta». La «sal» es una cadena de caracteres aleatorios que se generan y se añaden a la contraseña antes de aplicar el hash. El objetivo de la sal es complicar aún más el proceso de hashing, lo que, por extensión, hace que sea aún más difícil para los atacantes utilizar las «tablas arcoíris» o bases de datos de códigos precalculadas para descifrar contraseñas. En la mayoría de los casos, la «sal» se almacena en una base de datos junto a la contraseña con hash.

De una forma similar, la «pimienta» es un valor secreto que se añade a la contraseña antes del proceso de hashing. Sin embargo, a diferencia de la «sal», la «pimienta» suele estar codificada directamente en el sistema que realiza el hashing de la contraseña, lo que dificulta aún más a los posibles atacantes la tarea de descifrarla.

Limitaciones de las funciones hash

Existen unas pocas limitaciones a las funciones hash, como las colisiones hash. Ocurre cuando dos entradas diferentes tienen la misma salida hash. Sin embargo, la probabilidad de que se produzca una colisión en la mayoría de los algoritmos hash es extremadamente baja, especialmente en las funciones modernas, así que no debería ser un gran problema.

En resumen

En conclusión, no siempre es posible saber cómo de fuerte es la función que utiliza tu proveedor de servicios, así que asegúrate siempre de utilizar contraseñas fuertes. Puedes generar una contraseña segura con el generador de contraseñas NordPass. Sin embargo, como demuestran los casos de Google y Facebook, a veces tus credenciales están a la vista en texto plano, así que asegúrate también de no utilizar contraseñas duplicadas. Entendemos que recordar todas esas contraseñas es casi imposible, así que siempre puedes utilizar la función el gestor de contraseñas NordPass.

Suscríbete a las noticias de NordPass

Recibe las últimas noticias y consejos de NordPass directamente en tu bandeja de entrada.