Aller au contenu principal

1. Introduction (Introduction)

Dans le monde de l'informatique et des communications ouvertes, il est essentiel de disposer d'un moyen de vérifier l'intégrité des informations transmises ou stockées sur un support peu fiable. Les mécanismes assurant un tel contrôle d'intégrité reposant sur une clé secrète sont généralement appelés « codes d'authentification de message » (MAC, pour message authentication codes). Typiquement, les codes d'authentification de message sont utilisés entre deux parties partageant une clé secrète afin de valider les informations transmises entre elles. Dans ce document, nous présentons un tel mécanisme MAC fondé sur des fonctions de hachage cryptographiques. Ce mécanisme, appelé HMAC, s'appuie sur les travaux des auteurs [BCK1] où la construction est présentée et analysée du point de vue cryptographique. Nous renvoyons à ces travaux pour les détails sur la justification et l'analyse de sécurité de HMAC, ainsi que pour sa comparaison avec d'autres méthodes de hachage à clé.

HMAC peut être utilisé en combinaison avec n'importe quelle fonction de hachage cryptographique itérative. MD5 et SHA-1 sont des exemples de telles fonctions de hachage. HMAC utilise également une clé secrète pour le calcul et la vérification des valeurs d'authentification de message. Les principaux objectifs de cette construction sont les suivants :

  • Utiliser, sans modification, les fonctions de hachage disponibles. En particulier, les fonctions de hachage qui offrent de bonnes performances en logiciel, et dont le code est librement et largement disponible.

  • Préserver les performances d'origine de la fonction de hachage sans dégradation significative.

  • Utiliser et gérer les clés de manière simple.

  • Disposer d'une analyse cryptographique bien comprise de la résistance du mécanisme d'authentification, reposant sur des hypothèses raisonnables concernant la fonction de hachage sous-jacente.

  • Permettre le remplacement facile de la fonction de hachage sous-jacente au cas où des fonctions de hachage plus rapides ou plus sûres seraient trouvées ou requises.

Ce document spécifie HMAC au moyen d'une fonction de hachage cryptographique générique (notée H). Les instanciations spécifiques de HMAC doivent définir une fonction de hachage particulière. Les candidats actuels pour de telles fonctions de hachage incluent SHA-1 [SHA], MD5 [MD5], RIPEMD-128/160 [RIPEMD]. Ces différentes réalisations de HMAC seront notées HMAC-SHA1, HMAC-MD5, HMAC-RIPEMD, etc.

Note : à la date de rédaction de ce document, MD5 et SHA-1 sont les fonctions de hachage cryptographiques les plus largement utilisées. MD5 a récemment été montré vulnérable aux attaques de recherche de collisions [Dobb]. Cette attaque et les autres faiblesses actuellement connues de MD5 ne compromettent pas l'utilisation de MD5 au sein de HMAC tel que spécifié dans ce document (voir [Dobb]) ; toutefois, SHA-1 apparaît comme une fonction cryptographiquement plus robuste. À ce jour, MD5 peut être envisagé pour une utilisation dans HMAC pour les applications où les performances supérieures de MD5 sont critiques. En tout état de cause, les implémenteurs et les utilisateurs doivent être conscients des éventuelles avancées cryptanalytiques concernant l'une quelconque de ces fonctions de hachage cryptographiques, et de la nécessité éventuelle de remplacer la fonction de hachage sous-jacente. (Voir la section 6 pour plus d'informations sur la sécurité de HMAC.)