Cómo se puede usar la técnica de criptografía SALT en Linux

Quien me sigue en Mastodon sabe que llevo unos días investigando sobre técnicas de criptografía, en concreto sobre la técnica SALT. La idea de esta entrada es tener unos apuntes al respecto, que siempre pueda tener a mano. Además, también explico como utilizar la técnica SALT con la herramienta mkpasswd en distribuciones GNU/Linux y *NIX

La técnica SALT dentro la criptografía

SALT es una técnica utilizada en la criptografía para hacer más seguras las contraseñas almacenadas. Se trata de una cadena de caracteres aleatorios que se añade a la contraseña del usuario antes de aplicarle una función de resumen, como una función hash.

La idea detrás del uso de SALT es que, si un atacante obtiene acceso a la base de datos donde se almacenan las contraseñas, no podrá utilizar técnicas de «diccionario» para descifrar las contraseñas de los usuarios, ya que el SALT se ha añadido a cada una de ellas de manera aleatoria. Esto hace que sea mucho más difícil para el atacante descifrar las contraseñas y acceder a la información protegida por ellas.

Es importante tener en cuenta que el SALT no es una solución infalible para proteger las contraseñas, y que siempre se debe utilizar una función de resumen segura y de alta calidad para asegurar la seguridad de las contraseñas almacenadas.

Un ejemplo de uso de SALT

Supongamos que tenemos un usuario llamado «Juan», que ha elegido la contraseña «contraseña123» para proteger su cuenta. Antes de almacenar esta contraseña en la base de datos, se le añade una cadena de caracteres aleatorios como SALT, por ejemplo «qZ8eT9XG». La contraseña final quedaría entonces como «qZ8eT9XGcontraseña123».

Luego, se aplica a esta nueva contraseña una función de resumen, como una función hash SHA-256. El resultado de esta función se almacena en la base de datos en lugar de la contraseña original.

Cuando Juan quiera acceder a su cuenta, deberá proporcionar su contraseña original, que se le añadirá el SALT correspondiente y se aplicará la función hash para comprobar si coincide con el valor almacenado en la base de datos. Si coinciden, se considerará que Juan ha proporcionado la contraseña correcta y se le permitirá acceder a su cuenta.

Utilizar la técnica SALT con mkpasswd

El comando mkpasswd es una herramienta de Unix que se utiliza para generar contraseñas cifradas. Se suele utilizar junto con el comando useradd para crear nuevos usuarios en el sistema y asignarles contraseñas cifradas.

La sintaxis del comando mkpasswd es la siguiente:

mkpasswd [opciones] contraseña

Donde «contraseña» es la contraseña que se desea cifrar. Algunas de las opciones más comunes que se pueden utilizar con mkpasswd son:

  • -m: Especifica el tipo de cifrado que se debe utilizar para la contraseña. Los tipos de cifrado disponibles son: des, md5, sha-256 y sha-512.
  • -S: Añade un SALT aleatorio a la contraseña antes de cifrarla.

Por ejemplo, para cifrar la contraseña «contraseña123» utilizando el cifrado sha-512 y añadiendo un SALT aleatorio, podríamos utilizar el siguiente comando:

mkpasswd -m sha-512  contraseña123

Al utilizar cada vez un SALT aleatorio, cada vez que usemos el comando con la misma cotraseña, nos dará un hash diferentes:

Hash generados con SALT aleatorios

También podemos añadir nosotros el SALT de forma manual, con el parámetro «-S«:

mkpasswd -m sha-512 -S charlyf contraseña123

Por lo que, con el mismo SALT, el hash resultante siempre será el mismo:

Hash generado con un SALT añadido de forma manual

El comando mkpasswd es una herramienta muy útil para crear contraseñas cifradas de manera segura y garantizar la protección de la información del sistema.

Nota

Parte de la información se ha obtenido de una fuente automatizada y no verificada por un experto humano.