sql >> Base de Datos >  >> RDS >> Mysql

¿Qué es la sal cuando se relaciona con MYSQL sha1?

Un salt es un valor que se agrega a una contraseña (u otro secreto) que desea codificar de una manera. Esto significa que podría estar antes, después o en algún lugar dentro de la contraseña, siempre que su posición y valor sean consistentes para una contraseña dada.

Lo que esto hace es mitigar los ataques de diccionario, básicamente diccionarios de contraseñas comunes previamente codificadas sin sal, para que no se usen para "adivinar" una contraseña unidireccional siempre que el atacante no conozca el hash. Si cada contraseña tiene un hash diferente, es muy difícil para un atacante crear un diccionario optimizado para descifrar sus contraseñas (necesitarían un diccionario para cada sal por separado y también tendrían que saber dónde se colocó la sal en cada contraseña). ).

Por supuesto, para que todo esto sea aplicable, un atacante debe tener los hash de sus contraseñas en primer lugar. Esto no tiene nada que ver con atacar contraseñas al adivinarlas a través de algún mensaje de entrada.

Con respecto a MySQL específicamente, si proporciona una sal al codificar una contraseña, asegúrese de registrar qué sal era en alguna parte. Luego, cuando un usuario intenta la autenticación, combina ese valor salt registrado con la contraseña (durante la llamada a crypt por ejemplo) y si el hash resultante coincide, entonces han ingresado la contraseña correcta. (Tenga en cuenta que en ningún momento se invierte el hash de una contraseña; por lo tanto, de una manera).