Ho uno schema per un cookie con riservatezza di informazioni ad alto livello. Le informazioni da nascondere al client sono i tempi di scadenza del cookie. Mi chiedo quali insicurezze mi sto aprendo a questo schema.
Nota sotto che |
denota concatenazione e (text)k
è testo crittografato usando la chiave k.
cookie = creation_time | (expiration_time)k | HMAC(creation_time|expiration_time|server_key , k) where k = HMAC(creation_time, server_key)
I passaggi per la convalida della chiave sono:
- Assicurati che creation_time sia un timestamp valido
- crea k = HMAC (creation_time, server_key)
- decrittografare (expiration_time) k usando k.
- assicurati
(expiration_time - creation_time <= T)
& ¤t_time < expiration_time
doveT
è un server consentito TTL per un cookie. - calcola HMAC (creation_time | expiration_time | server_key, k) e confronta con il valore del cookie. se sono uguali, il cookie è valido.
L'intero punto di questo cookie è quello di consentire che un cookie venga ricevuto dall'utente in un punto e inviato di nuovo il comando ajax entro un tempo T
.