2010-12-04 9 views

Respuesta

14

Un salt es un valor que se agrega a una contraseña (u otro secreto) que desea hash de una manera. Esto significa que podría ser 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 proporcionada.

Lo que hace es mitigar los ataques de diccionario, básicamente diccionarios de contraseñas comunes prehechizadas sin sal, de ser usadas para "adivinar" una contraseña de una dirección, siempre y cuando el atacante no conozca el hash. Si cada contraseña tiene un hash diferente, hace que sea 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 necesitarían saber dónde se colocó el 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 adivinándolos a través de un mensaje de entrada.

En cuanto a MySQL, específicamente si proporciona una sal al hacer una contraseña, asegúrese de registrar qué sal estaba en alguna parte. Luego, cuando un usuario intenta la autenticación, combina ese valor de sal grabado con la contraseña (durante la llamada al 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 hashing de una contraseña; por lo tanto, de una manera.)

4

Se agrega una sal al texto sin formato (o viceversa) antes del hashing para hacer que las búsquedas en el diccionario sean más caras.

+0

¿Podría darme un ejemplo? –

+0

+1 - derecha. Por ejemplo, significa que un atacante que tiene acceso a un grupo de contraseñas hash no puede simplemente SHA1-hash un diccionario una vez y compararlo contra todas las contraseñas a granel; debido a la sal, el hashing debe volver a hacerse (con la sal correcta) para cada contraseña. –

9

sal es nada más que una cadena adjunta a la contraseña, ya sea como una constante o por medio de un algoritmo de

que hace más difícil para cualquier persona que violó su seguridad y acceder a su contraseña almacenada, lo que a marcas de retorno en casi imposible para él usar diccionarios arco iris para desbloquear lo que la contraseña real es, que en un punto de vista pirata informático puede ser muy útil ya que una gran cantidad de personas utilizan la misma contraseña en un montón de sitios de diffrent

$salt = "this is a salt"; 
$password = 'this is an password'; 
$hash = sha1($salt.$password); 

Así es como usted podría saltear una contraseña

+0

¿Qué tipo de cuerda? –

+0

Entonces, ¿cuál sería la sal para: sha1 $ 0e7eb $ f2353e34dd1811c3ce4af5c2b0f5cb43a04a16ce –

+1

@Noah: "0e7eb" –

Cuestiones relacionadas