Usar la contraseña con hash como clave secreta para hmac para evitar el intercambio de secretos entre el servidor y el cliente

0

Actualmente estoy intentando mejorar nuestra API para que sea más tranquila, por lo tanto, evito cualquier estado en el servidor. Quiero lograr esto con un token hmac, que se adjunta en cada solicitud. El hmac se realizará con la siguiente parte de datos: host, método de solicitud, uri de solicitud, marca de tiempo (para evitar repeticiones) y en el caso de POST / PUT también el cuerpo de la solicitud. ¿Alguna objeción contra esto?

Enviaré el hmac junto con el nombre de usuario o tal vez una representación hash (clave pública) del usuario para poder tener diferentes claves secretas para cada usuario en el servidor.

Ahora estoy planeando el intercambio de clave secreta entre el cliente (JavaScript) y el servidor (PHP) y tengo la idea de simplemente usar algo que el servidor y el cliente ya saben sin intercambiarlo y aún debería ser diferente para cada usuario.

Entonces, ¿por qué no usar la contraseña hash del usuario como clave secreta? El servidor tiene el hash de la contraseña guardada en la base de datos junto al usuario en la tabla de usuario de cualquier manera y el cliente puede calcular el hash basándose en la entrada del usuario y almacenarlo en una sesión del cliente para su uso posterior.

¿Cuáles son las preocupaciones sobre el uso de la contraseña de usuario con hash como clave secreta?

    
pregunta Preexo 24.06.2014 - 15:56
fuente

1 respuesta

2

No es realmente posible usar la contraseña del usuario, ya que no puede almacenar las contraseñas de manera segura de tal manera que el cliente pueda obtener la misma clave de forma independiente. La razón es que debe ingresar una contraseña mientras la almacena.

Los algoritmos de hashing de contraseña actualmente aceptados son:

  • bcrypt
  • scrypt
  • PBKDF2
respondido por el Lucas Kauffman 24.06.2014 - 16:29
fuente

Lea otras preguntas en las etiquetas