Token HMAC - Verificar lógica

1

Tengo una situación en la que necesito un token que proporciona autenticación. El procedimiento HMAC común que encontré es:

  1. Obtenga alguna clave con las credenciales de inicio de sesión
  2. Crear mensaje, agregar clave y otros datos del mensaje (en el orden definido)
  3. Hash con una clave secreta
  4. Transmitir mensaje e incluir valores que están en el mensaje (no hash)

entonces

  1. Recibe el mensaje
  2. Use los valores sin borrar para reconstruir el mensaje
  3. Hash con clave secreta
  4. Si los hashes coinciden, entonces el mensaje es bueno.

Estoy implementando algo similar, pero no creo que deba realizar algunos de estos pasos. Quería saber: ¿Mi implementación tiene agujeros de seguridad en la lógica ?

Mi implementación:

  1. El cliente le pide al servidor que genere un token, esto requiere credenciales de inicio de sesión.
  2. El servidor crea un token pero no lo devuelve (se guarda en la base de datos): devuelve una marca de tiempo.
  3. El cliente genera un mensaje basado en la marca de tiempo, el usuario y otros datos.
  4. El token de hashes del cliente con una clave secreta, proporcionado fuera de este proceso.
  5. El cliente envía el token al servidor.

Entonces:

  1. Recibe el mensaje
  2. Si ese token está en la base de datos, es válido

Mi razonamiento detrás de la reconstrucción del mensaje es: eso sucedió cuando se generó el token y el cliente no pudo conocer el token en la base de datos a menos que supiera cómo generarlo, lo que significa que se autenticaron y tienen una clave secreta.

    
pregunta Alzoid 21.03.2016 - 12:38
fuente

0 respuestas

Lea otras preguntas en las etiquetas