Passa al contenuto principale

B.1.1 HMAC-SHA-1

B.1.1 HMAC-SHA-1

HMAC-SHA-1 è la funzione pseudocasuale corrispondente al codice di autenticazione del messaggio HMAC [RFC2104] basato sulla funzione hash SHA-1 [NIST180]. La funzione pseudocasuale è la stessa funzione mediante la quale viene calcolato il codice di autenticazione del messaggio, con un output di lunghezza completa. (Il primo argomento della funzione pseudocasuale PRF serve come "chiave" di HMAC, e il secondo serve come "testo" di HMAC. Nel caso di PBKDF2, la "chiave" è quindi la password e il "testo" è il salt.) HMAC-SHA-1 ha una lunghezza della chiave variabile e un valore di output di 20 ottetti (160 bit).

Sebbene la lunghezza della chiave per HMAC-SHA-1 sia essenzialmente illimitata, lo spazio di ricerca effettivo per gli output della funzione pseudocasuale può essere limitato dalla struttura della funzione. In particolare, quando la chiave è più lunga di 512 bit, HMAC-SHA-1 prima la trasformerà in hash a 160 bit. Pertanto, anche se viene prodotta una chiave derivata lunga costituita da diversi output di funzioni pseudocasuali da una chiave, lo spazio di ricerca effettivo per la chiave derivata sarà al massimo di 160 bit. Sebbene la limitazione specifica per altre dimensioni di chiave dipenda dai dettagli della costruzione HMAC, si dovrebbe assumere, per essere conservativi, che lo spazio di ricerca effettivo sia limitato a 160 bit anche per altre dimensioni di chiave.

(La limitazione di 160 bit non dovrebbe generalmente porre una limitazione pratica nel caso della crittografia basata su password, poiché lo spazio di ricerca per una password è improbabile che sia maggiore di 160 bit.)

L'identificatore di oggetto id-hmacWithSHA1 identifica la funzione pseudocasuale HMAC-SHA-1:

id-hmacWithSHA1 OBJECT IDENTIFIER ::= {digestAlgorithm 7}

Il campo parameters associato a questo OID in un AlgorithmIdentifier deve avere tipo NULL. Questo identificatore di oggetto è impiegato nell'insieme di oggetti PBKDF2-PRFs (Appendice A.2).

Nota: Sebbene HMAC-SHA-1 sia stato progettato come codice di autenticazione del messaggio, la sua dimostrazione di sicurezza è facilmente modificata per accogliere i requisiti per una funzione pseudocasuale, sotto assunzioni più forti. Una funzione hash può anche soddisfare i requisiti di una funzione pseudocasuale sotto certe assunzioni. Ad esempio, l'applicazione diretta di una funzione hash alla concatenazione della "chiave" e del "testo" può essere appropriata, a condizione che il "testo" abbia una struttura appropriata per prevenire certi attacchi. HMAC-SHA-1 è preferibile, tuttavia, perché tratta "chiave" e "testo" come argomenti separati e non richiede che il "testo" abbia alcuna struttura.

Durante il 2004 e il 2005, ci sono stati numerosi attacchi a SHA-1 che hanno ridotto la sua forza effettiva percepita contro gli attacchi di collisione a 62 bit invece degli 80 bit previsti (ad esempio, Wang et al. [WANG], confermato da M. Cochran [COCHRAN]). Tuttavia, poiché questi attacchi si sono concentrati sulla ricerca di collisioni tra valori, non sono una considerazione di sicurezza diretta qui perché la proprietà resistente alle collisioni non è richiesta dallo schema di autenticazione HMAC.