1. Introduzione (Introduction)
Fornire un mezzo per verificare l'integrità delle informazioni trasmesse o memorizzate su un mezzo inaffidabile è un requisito essenziale nel mondo del calcolo e delle comunicazioni aperti. I meccanismi che forniscono tale verifica di integrità basandosi su una chiave segreta sono comunemente indicati come "message authentication codes" (MAC, codici di autenticazione dei messaggi). Tipicamente, i message authentication code vengono utilizzati tra due parti che condividono una chiave segreta per convalidare le informazioni trasmesse tra di esse. In questo documento presentiamo un tale meccanismo MAC basato su funzioni di hash crittografiche. Tale meccanismo, denominato HMAC, si basa sui lavori degli autori [BCK1], in cui la costruzione viene presentata e analizzata dal punto di vista crittografico. Si rimanda a tali lavori per i dettagli sulla giustificazione e sull'analisi di sicurezza di HMAC, nonché per il confronto con altri schemi di hash con chiave.
HMAC può essere utilizzato in combinazione con una qualsiasi funzione di hash crittografica iterativa. MD5 e SHA-1 sono esempi di tali funzioni di hash. HMAC utilizza inoltre una chiave segreta per il calcolo e la verifica dei valori di autenticazione dei messaggi. Gli obiettivi principali alla base di questa costruzione sono i seguenti:
-
Utilizzare le funzioni di hash disponibili senza modificarle. In particolare, le funzioni di hash che offrono buone prestazioni in software e il cui codice è liberamente e ampiamente disponibile.
-
Conservare le prestazioni originarie della funzione di hash senza causarne un degrado significativo.
-
Utilizzare e gestire le chiavi in modo semplice.
-
Disporre di un'analisi crittografica ben compresa della robustezza del meccanismo di autenticazione, basata su ipotesi ragionevoli sulla funzione di hash sottostante.
-
Consentire la facile sostituzione della funzione di hash sottostante qualora ne vengano trovate o richieste di più rapide o più sicure.
Questo documento specifica HMAC mediante una funzione di hash crittografica generica (indicata con H). Le istanziazioni specifiche di HMAC devono definire una particolare funzione di hash. I candidati attuali per tali funzioni di hash includono SHA-1 [SHA], MD5 [MD5], RIPEMD-128/160 [RIPEMD]. Queste diverse realizzazioni di HMAC sono indicate come HMAC-SHA1, HMAC-MD5, HMAC-RIPEMD, ecc.
Nota: al momento della stesura di questo documento, MD5 e SHA-1 sono le funzioni di hash crittografiche più ampiamente utilizzate. Recentemente è stato dimostrato che MD5 è vulnerabile ad attacchi di ricerca delle collisioni [Dobb]. Tale attacco e le altre debolezze attualmente note di MD5 non compromettono l'uso di MD5 all'interno di HMAC così come specificato in questo documento (vedere [Dobb]); tuttavia, SHA-1 appare essere una funzione crittograficamente più robusta. Ad oggi, MD5 può essere preso in considerazione per l'uso in HMAC per le applicazioni in cui le prestazioni superiori di MD5 sono critiche. In ogni caso, gli implementatori e gli utenti devono essere consapevoli dei possibili progressi della crittoanalisi riguardo una qualsiasi di queste funzioni di hash crittografiche, nonché della necessità eventuale di sostituire la funzione di hash sottostante. (Si veda la sezione 6 per ulteriori informazioni sulla sicurezza di HMAC.)