Es suficiente agregar sal antes de la generación de hash

4

Tengo lo que creo que es un mecanismo de generación de sal / hash generado de forma segura para la autenticación HMAC basada en SHA256 en su lugar. Sin embargo, estoy usando la sal en, por lo que puedo ver, una forma bastante estándar de simplemente agregar al resto de la ficha antes de la generación de hash como tal;

// conceptual, not actual code...
var saltedToken = token + salt;
var hash = HashGenerator.Get(saltedToken);

Pero está agregando la sal lo suficiente para estar seguro o debería estar haciendo algo más con ella, por ejemplo. aplicando el salt como una operación XOR en el resto del token, etc. Esta respuesta implica que poner el salt en El inicio puede ser inseguro en algunos algoritmos de hash, pero no estoy seguro.

¿Es suficiente un enfoque directo de "añadir sal"? ¿O necesito mezclarlo más antes del hash?

    
pregunta DiskJunky 01.11.2017 - 11:56
fuente

1 respuesta

5

No es necesario que agregue sal en HMAC, por lo que tengo entendido. La aplicación de sal previene las tablas de arco iris de cosas con hash comunes: en el caso de las contraseñas, esto se debe a que hay muchas personas con la misma contraseña, con demasiada frecuencia. En un algoritmo HMAC, usted está procesando un hash de un mensaje y una clave secreta, concatenada de una manera específica. Esto no es algo para lo que habrá una mesa de arco iris, por lo que no es necesario salado. La respuesta que ve tiene que ver con el hash de contraseña, no HMAC.

enlace es probablemente la forma en que desea hacer esto, pero en realidad, implementar este tipo de cosas rara vez es lo que quiero hacer. Utilice bibliotecas para funciones criptográficas, seleccionando las que han sido estudiadas y revisadas por criptógrafos.

Las preguntas más detalladas probablemente se hagan mejor en crypto.stackexchange.com, en lugar de aquí

EDITAR para aclarar: tenga en cuenta que para un hash directo, tiene HASH (mensaje): el mensaje solo tiene una parte. Cuando se habla de anteponer una sal, entonces es HASH (CONCATENAR (hash, mensaje)). Cuando un HMAC RFC2104 está en su lugar, usted tiene HMAC (clave, mensaje). PBKDF2, definido en RFC2898 PKCS # 5 , usa HMAC con salt, mensaje, donde se aplican algunas matemáticas adicionales que la salida de cada iteración HMAC se alimenta a la siguiente ronda HMAC.

    
respondido por el crovers 01.11.2017 - 15:08
fuente

Lea otras preguntas en las etiquetas