Tengo un esquema para una cookie con alto nivel de confidencialidad de la información. La información que se debe ocultar al cliente es el tiempo de caducidad de la cookie. Me pregunto a qué inseguridades me estoy abriendo con este esquema.
Note a continuación que |
denota concatenación y (text)k
es texto cifrado usando la clave k.
cookie = creation_time | (expiration_time)k | HMAC(creation_time|expiration_time|server_key , k) where k = HMAC(creation_time, server_key)
Los pasos para la validación de claves son:
- Asegúrate de que creation_time sea una marca de tiempo válida
- crear k = HMAC (creation_time, server_key)
- descifrar (expiration_time) k usando k.
- asegurar
(expiration_time - creation_time <= T)
& ¤t_time < expiration_time
dondeT
es un servidor permitido TTL para una cookie. - calcular HMAC (creation_time | expiration_time | server_key, k) y comparar con el valor de la cookie. Si son iguales la cookie es válida.
El punto central de esta cookie es permitirme garantizar que el usuario reciba una cookie en un punto y haga ping a través de ajax en un tiempo T
.