Come faccio a creare un meccanismo di firma sicuro su HMAC

4

Diciamo che abbiamo un sistema con chiavi condivise forti (non passphrase), e stiamo cercando di firmare i messaggi inviati dal server che saranno visibili a un utente malintenzionato. Per esempio. memorizzazione dello stato di sessione in un cookie firmato.

È sicuro utilizzare HMAC direttamente con la chiave condivisa? I.e. la funzione sarà determinante e l'attaccante può semplicemente creare una collezione di coppie [messaggio, MAC]; può compromettere la chiave condivisa?

In caso contrario, è sicuro usare hmac_key = HMAC (salt, shared key) , dove sale è nuovo per ogni richiesta e inviato insieme al MAC? O ho bisogno di più iterazioni di questo / PBKDF2?

Suppongo di voler sapere se usare una chiave salata per HMAC fornisce una protezione reale della chiave, non solo sembra più sicuro.

    
posta Steve Clay 03.04.2013 - 17:08
fonte

1 risposta

3

Tecnicamente, HMAC è un MAC , non un firma . Alcune persone sbagliano la terminologia (in particolare la documentazione di Microsoft) e chiamano HMAC una firma, ma le cose sono più chiare se si usano le parole giuste.

HMAC, se usato con una funzione di hash sicura (per esempio, SHA-256, ma anche SHA-1 va bene), è resistente ai falsi; cioè, l'attaccante non può riuscire a calcolare una coppia valida (m, h) dove h è il valore HMAC corretto per il messaggio m , anche se l'attaccante ha accesso a molte coppie (m ', h') (dove tutti m ' sono distinti da m ). In particolare, l'utente malintenzionato non può indovinare la chiave HMAC, perché ottenere la chiave HMAC gli consente di creare molti falsi.

Sali e PBKDF2 hanno senso solo se si immagina che la ricerca esauriente sulla chiave possa funzionare. Salatura e hashing lento (PBKDF2 fa entrambi) sono misure di mitigazione per rendere la vita più difficile per l'attaccante in quel caso. Nel tuo scenario, la chiave HMAC è "strong", cioè immune alla ricerca esauriente (ad esempio è una sequenza di 128 bit ottenuta da una sorgente casuale crittograficamente strong). Pertanto, sali, PBKDF2 o altri elementi rituali non renderanno più sicuro. HMAC sta già bene così com'è.

Si noti che nel caso dei cookie, diversi utenti potrebbero colludere e scambiare i loro valori di cookie HMACed. Un utente può anche registrare un valore del cookie e rispedirlo a te in seguito, anche se il server gli ha inviato un valore del cookie più recente . A seconda del contesto di utilizzo, questo potrebbe o meno essere un problema.

    
risposta data 03.04.2013 - 17:24
fonte

Leggi altre domande sui tag