Aller au contenu principal

B.1.1 HMAC-SHA-1

HMAC-SHA-1 est la fonction pseudoaléatoire correspondant au code d'authentification de message HMAC [RFC2104] basé sur la fonction de hachage SHA-1 [NIST180]. La fonction pseudoaléatoire est la même fonction par laquelle le code d'authentification de message est calculé, avec une sortie de longueur complète. (Le premier argument de la fonction pseudoaléatoire PRF sert de "clé" de HMAC, et le second sert de "texte" de HMAC. Dans le cas de PBKDF2, la "clé" est donc le mot de passe et le "texte" est le sel.) HMAC-SHA-1 a une longueur de clé variable et une valeur de sortie de 20 octets (160 bits).

Bien que la longueur de la clé pour HMAC-SHA-1 soit essentiellement illimitée, l'espace de recherche effectif pour les sorties de fonction pseudoaléatoire peut être limité par la structure de la fonction. En particulier, lorsque la clé fait plus de 512 bits, HMAC-SHA-1 la hachera d'abord à 160 bits. Ainsi, même si une longue clé dérivée consistant en plusieurs sorties de fonction pseudoaléatoire est produite à partir d'une clé, l'espace de recherche effectif pour la clé dérivée sera au plus de 160 bits. Bien que la limitation spécifique pour d'autres tailles de clé dépende des détails de la construction HMAC, on devrait supposer, par prudence, que l'espace de recherche effectif est limité à 160 bits pour d'autres tailles de clé également.

(La limitation de 160 bits ne devrait généralement pas poser de limitation pratique dans le cas de la cryptographie basée sur mot de passe, car l'espace de recherche pour un mot de passe est peu susceptible d'être supérieur à 160 bits.)

L'identificateur d'objet id-hmacWithSHA1 identifie la fonction pseudoaléatoire HMAC-SHA-1:

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

Le champ parameters associé à cet OID dans un AlgorithmIdentifier DOIT avoir le type NULL. Cet identificateur d'objet est employé dans l'ensemble d'objets PBKDF2-PRFs (Annexe A.2).

Note: Bien que HMAC-SHA-1 ait été conçu comme un code d'authentification de message, sa preuve de sécurité est facilement modifiée pour accommoder les exigences d'une fonction pseudoaléatoire, sous des hypothèses plus fortes. Une fonction de hachage peut également satisfaire les exigences d'une fonction pseudoaléatoire sous certaines hypothèses. Par exemple, l'application directe d'une fonction de hachage à la concaténation de la "clé" et du "texte" peut être appropriée, à condition que le "texte" ait une structure appropriée pour prévenir certaines attaques. HMAC-SHA-1 est préférable, cependant, car il traite "clé" et "texte" comme des arguments séparés et ne requiert pas que "texte" ait une structure quelconque.

Durant 2004 et 2005, il y a eu un certain nombre d'attaques sur SHA-1 qui ont réduit sa force effective perçue contre les attaques par collision à 62 bits au lieu des 80 bits attendus (par exemple, Wang et al. [WANG], confirmé par M. Cochran [COCHRAN]). Cependant, comme ces attaques se concentraient sur la recherche de collisions entre valeurs, elles ne sont pas une considération de sécurité directe ici car la propriété de résistance aux collisions n'est pas requise par le schéma d'authentification HMAC.