Índice:
- ¿Qué es una sal de contraseña?
- ¿Cómo funciona el salting o salado de contraseñas?
- ¿Qué tipos de ataques se pueden mitigar mediante el salting?
- Cómo el salting protege tus contraseñas
- Prácticas recomendadas para el salting o el salado de contraseñas
- Errores comunes que hay que evitar al cifrar contraseñas
- Prácticas recomendadas para la seguridad de las contraseñas
- Preguntas frecuentes
Crear una contraseña segura es un buen comienzo, pero tu seguridad depende del método que utilice el servicio para almacenarla. En lugar de guardar tu contraseña como texto sin formato, la mayoría de los proveedores utilizan un proceso denominado «hash» para convertir tu contraseña en una cadena de caracteres conocida comúnmente como «hash de contraseña». El problema es que la misma contraseña siempre producirá exactamente el mismo hash. Esto facilita a los atacantes que trabajan con listas de contraseñas robadas descifrarlas de forma masiva.
Aquí es donde la sal entra en acción. Es una medida de seguridad que añade un valor único a cada contraseña antes de que se le aplique el hash, lo que garantiza que incluso las contraseñas idénticas tengan hashes completamente diferentes. Entonces, ¿cómo funciona realmente una sal de contraseña y cómo mejora tu seguridad? Averigüémoslo.
¿Qué es una sal de contraseña?
Una sal de contraseña es un dato aleatorio que se añade a la contraseña antes de que se procese a través del hashing de las contraseñas algoritmo. Es diferente para cada usuario, lo que hace que los hash asignados a cada contraseña también sean únicos. Por lo tanto, el objetivo principal del salting es garantizar que incluso contraseñas idénticas tengan valores hash completamente diferentes.
¿Cómo funciona el salting o salado de contraseñas?
Imaginemos que dos personas diferentes eligen una de las contraseñas más comunes, como «amarillo». Sin salting, el sistema generaría exactamente el mismo hash criptográfico (o valor hash) para ambas cuentas, lo que no es ideal para la seguridad.
El salting de contraseñas resuelve este problema añadiendo una cadena de caracteres aleatoria y única —la «sal»— a cada contraseña antes de que sea sometida a un proceso de hash. Así, la contraseña de un usuario se convierte en algo así como «amarillo#1Gn%», mientras que la del otro se convierte en «amarillo9j?L». El resultado es que, incluso para contraseñas idénticas, sus valores hash finales son completamente diferentes. A continuación, el sistema almacena tanto el hash como la sal única juntos en su base de datos, asociados a la cuenta del usuario.
Cuando el usuario intenta iniciar sesión, introduce su contraseña como de costumbre. El sistema recupera la sal correspondiente para ese usuario de la base de datos, la combina con la contraseña que acaba de escribir y comprueba si el valor hash resultante coincide con el que figura en el archivo. Este sencillo paso dificulta considerablemente que los atacantes puedan descifrar las contraseñas, incluso si logran acceder a la base de datos.
¿Qué tipos de ataques se pueden mitigar mediante el salting?
Descifrar una contraseña es, básicamente, un juego de adivinanzas a gran velocidad. Los atacantes utilizan potentes ordenadores y técnicas especializadas para averiguar la combinación correcta. Estas son las tres formas principales en que lo hacen:
Fuerza bruta
La fuerza bruta podría considerarse el método más sencillo para descifrar contraseñas cifradas con hash. Se trata de adivinar todas las combinaciones posibles de contraseñas y luego ejecutarlas a través de un programa informático que prueba sus combinaciones casi infinitas. Una vez que obtengas una coincidencia, sabrás la contraseña original. La fuerza bruta es una de las principales razones por las que tus contraseñas deben contener al menos 12 caracteres. Además, estos ataques suelen funcionar mejor con contraseñas más cortas. Cuanto más largas son las contraseñas, más potencia de cálculo se necesita para descifrarlas.
Ataques de diccionario
El ataque de diccionario es una versión más sofisticada de la fuerza bruta. En lugar de adivinar al azar, el ordenador prueba con las palabras y combinaciones de caracteres más comunes. Esta es la razón por la que los ataques de diccionario mejoran con cada filtración de datos: cada vez los delincuentes saben más sobre cómo creamos nuestras contraseñas.
Tablas arco iris
Un ataque de tabla arco iris es una variación de un ataque de fuerza bruta, en el que los hackers emplean tablas arco iris, bases de datos precalculadas de contraseñas hash descifradas, para descifrar los hashes de contraseñas de la base de datos. Los hackers buscan en sus tablas arco iris el hash que necesitan. Al igual que ocurre con los ataques de diccionario, las tablas arco iris tienen más éxito con cada filtración de datos.
Cómo el salting protege tus contraseñas
El salting de contraseñas contrarresta directamente los ataques mencionados anteriormente, especialmente el método de tablas arcoíris, que es muy eficaz. Sin embargo, no todos los tipos de salting son iguales:
Sal estática: Una defensa limitada
Con este enfoque, se añade una sal fija a cada contraseña del sistema. Aunque esto es mejor que prescindir por completo de la sal, crea un único punto de fallo. Si un atacante descubre la sal estática, puede crear una nueva tabla arcoíris específica para esa sal, lo que hace que toda la base de datos de contraseñas almacenadas sea vulnerable de nuevo.
Sal dinámica: El estándar de referencia
El salting dinámico, el método utilizado en los sistemas modernos y más seguros, genera una sal única y aleatoria para cada usuario. Esta sal se almacena junto con la contraseña hash del usuario.
Este enfoque hace que las tablas arcoíris sean inútiles, ya que cada usuario tiene una sal única; por lo tanto, dos personas con la misma contraseña tendrán valores hash completamente diferentes en la base de datos. Una tabla precomputerizada no tiene ningún valor cuando no hay dos hash que coincidan. Además, obliga a los atacantes a recurrir a métodos más lentos. Sin su hoja de referencia con la tabla arcoíris, deben intentar descifrar cada contraseña almacenada individualmente, lo cual es un proceso mucho más lento y difícil.
Prácticas recomendadas para el salting o el salado de contraseñas
Una sal de contraseña sólida es bastante similar a una contraseña fuerte: debe ser única, larga, compleja e imposible de predecir. Esto es lo que debes hacer para asegurarte de que la sal de tu contraseña es fiable:
Que sea aleatoria: nunca utilices las palabras del diccionario o los nombres de los usuarios como sal de contraseña.
Haz que sea complicada: combina mayúsculas y minúsculas, números y caracteres especiales como & @ #.
Que sea larga: idealmente, la longitud de una sal de contraseña debería ser igual a la salida del hash.
Evita las sales reutilizadas: una sal de contraseña segura solo se utiliza una vez. Se debe generar una nueva sal cada vez que un usuario cambie su contraseña o cree una nueva cuenta.
Mantén los hashes a salvo: almacena los hashes y sus correspondientes sales en un formato seguro y cifrado. Es crucial utilizar medidas de seguridad sólidas para proteger la base de datos donde se almacenan las sales y los hashes para evitar accesos no autorizados.
Errores comunes que hay que evitar al cifrar contraseñas
Una sal de contraseña puede ser una forma de mejorar enormemente la seguridad general. Sin embargo, es importante tener en cuenta que hay trampas comunes que pueden socavar la eficacia de esta estrategia. Comprender estos errores es fundamental si quieres aplicar una estrategia de salting que funcione. Estos son algunos de los errores más comunes que hay que evitar en el salting.
Hashes cortos y predecibles
Aunque el salting añade una capa adicional de seguridad, la fuerza del hash final sigue siendo bastante importante. Si el hash es demasiado corto o simple, debilita la seguridad general del almacenamiento de contraseñas. Piénsalo de esta manera: un hash corto limita el número de posibles valores hash, lo que a su vez facilita a los hackers el uso de métodos de fuerza bruta para descifrar contraseñas. La misma lógica se aplica a los hashes simples y predecibles. En el salting, asegúrate de que el algoritmo hash que elijas produzca una salida larga y compleja.
Hashes reutilizados
Uno de los principios fundamentales del uso eficaz de las sales de contraseña es la singularidad; cada contraseña debe tener su propia sal única. Reutilizar hashes en diferentes registros es básicamente lo mismo que utilizar la misma contraseña en varios sitios y servicios. La reutilización de hashes permite a los hackers utilizar técnicas como los ataques de tabla arco iris de una manera muy eficiente.
Base de datos de código abierto
Aunque confiar en una base de datos de código abierto para almacenar contraseñas puede tener sus ventajas, es fundamental darse cuenta de que, sin configuraciones de seguridad adicionales, dicha base de datos podría ser una mina de oro para los ciberdelincuentes. En la mayoría de los casos, los delincuentes están familiarizados con las configuraciones habituales de las bases de datos de código abierto y pueden explicar fácilmente las vulnerabilidades conocidas. Por tanto, si utilizas, o piensas utilizar, una base de datos de código abierto, asegúrate de aplicar medidas de seguridad estrictas, personalizar los ajustes para que no sean los predeterminados y, por último, mantén el software actualizado.
Prácticas recomendadas para la seguridad de las contraseñas
Crear contraseñas seguras y únicas
La base para una buena seguridad de las contraseñas comienza con la creación de contraseñas seguras para cada cuenta. Una contraseña segura debe tener al menos 12 caracteres e incluir una combinación de letras mayúsculas y minúsculas, números y símbolos. Las contraseñas únicas son importantes porque garantizan que, incluso si una contraseña se ve comprometida, las demás cuentas seguirán estando seguras.
Habilitar la autenticación multifactor en la seguridad de contraseñas
La autenticación multifactor (MFA) añade una capa adicional de seguridad al pedir a los usuarios que proporcionen dos o más factores de verificación para acceder a sus cuentas. En la mayoría de los casos, la AMF combina algo que sabes (tus contraseñas) y algo que tienes (tu smartphone, una tablet, etc.), y en algunos casos algo que eres (datos biométricos como la huella dactilar, la cara). La MFA reduce en gran medida el riesgo de acceso no autorizado, incluso si la contraseña se ve comprometida.
Educar a los usuarios sobre la higiene de las contraseñas
La gente debe ser consciente y entender claramente los riesgos asociados a las contraseñas débiles. También deberían darse cuenta de por qué las prácticas recomendadas de seguridad, como no reutilizar contraseñas en distintos sitios y disponer de un gestor de contraseñas para sus datos confidenciales, pueden quitarles un peso de encima en materia de seguridad. Las iniciativas educativas pueden ayudar a reforzar la importancia de una buena higiene de las contraseñas.
Integración del salting en las políticas de seguridad de las organizaciones
El salting debe formar parte de la estrategia de seguridad más amplia de tu empresa. Las organizaciones deben tomar medidas y aplicar políticas que exijan que las sales de las contraseñas sean únicas para cada usuario y garantizar que se almacenen de forma segura.
Utilizar un gestor de contraseñas fiable
Un gestor de contraseñas fiable como NordPass puede mejorar enormemente tu vida en Internet. Herramientas como NordPass proporcionan almacenamiento seguro para tus contraseñas así como para otros datos confidenciales, como información personal, tarjetas de crédito y archivos. Para las organizaciones, un gestor de contraseñas como NordPass Business puede mejorar en gran medida la postura general de seguridad, acercar a la organización al cumplimiento de la normativa y, en general, disminuir el riesgo de acceso no autorizado.
Preguntas frecuentes
El salting añade una cadena aleatoria, también denominada «sal», a una contraseña antes de que se aplique el hash. Por ejemplo, si tu contraseña es «sunshine», una sal podría ser «G7^Xth», haciendo que la contraseña hash sea «sunshineG7^Xth».
En teoría, con suficiente potencia de cálculo, es posible descifrar una contraseña que tenga sal. El salting, o salado de contraseñas, evita principalmente los ataques precalculados, como los que utilizan tablas arco iris.
Una sal debe ser al menos tan larga como la salida hash. Para muchos algoritmos hash, es común una longitud de sal de 16 caracteres.
El salting mejora la seguridad de las contraseñas débiles al hacerlas únicas; sin embargo, el salting no compensa la falta de complejidad. Tener contraseñas fuertes y complejas sigue siendo fundamental.
El hashing convierte una contraseña en una cadena irreversible de tamaño fijo. El salting añade un dato aleatorio a la contraseña antes del hash, lo que impide que contraseñas idénticas produzcan el mismo hash, lo que mejora la seguridad.