Sto esplorando l'utilizzo dell'autenticazione con chiave segreta in stile HMAC con scadenza del timestamp, ma sto cercando di capire come convalidare la porzione di timestamp.
Sul lato client dovresti fare:
my_hmac = hmac(my_secret, my_values)
Dove avresti un campo timestamp
in my_values
.
Sul server (dove conosci anche my_secret
) proverai a ricostruire la stringa HMACd con i parametri di richiesta:
my_hmac_to_compare = hmac(my_secret, my_values_from_http_request)
È semplicemente un caso di incorporare il timestamp come parametro in modo che sia sottoposto a hashing nella stringa HMAC e quindi assicurarsi che il timestamp sia entro N minuti da quando elaboriamo la richiesta?
Ho strane visioni di dover iterare oltre 5 minuti di timestamp, ricostruendo la stringa HMAC sul server che tenta di trovare l'ago nel pagliaio che genererà la stringa HMAC corretta.
Domanda bonus: esiste un consenso su come si trasferirebbe inizialmente la chiave segreta a un client da un server? Ovviamente diventa "sporco" dopo che è passato sul filo, ma in un'applicazione utente rivolta verso l'utente non è possibile incollare qualcuno in una chiave segreta estesa, soprattutto se si tratta di un client mobile.