Estoy creando un servicio web, que maneja varias solicitudes de clientes web. El cliente y el servidor comparten una gran clave secreta S, y cuando una parte desea enviar datos, calcula el token de la siguiente manera:
T = HMAC (cuerpo HTTP || Marca de tiempo de solicitud, S)
Entonces, cuando una parte recibe una solicitud http, vuelve a calcular T desde el cuerpo http y la marca de tiempo del campo de encabezado http Fecha, y la compara con el resumen HMAC que recibió. Si los resúmenes son iguales Y el desplazamiento de tiempo de la marca de tiempo y la hora en que se recibió la solicitud es inferior a un umbral especificado, conceda la solicitud. Si no lo niegas.
¿Esto es seguro? Suponiendo que el atacante no puede falsificar el encabezado de la fecha ya que está protegido de la HMAC, más el desplazamiento del límite de tiempo (para la protección de repetición), creo que está bien.
Suponiendo que el protocolo anterior no tiene fallas, ¿cuánto tiempo debo configurar, el umbral de compensación válido? Digamos, por ejemplo, 5 segundos, ¿está bien?