Une fonction de hachage est un système faisant correspondre à un message de taille arbitraire, un message haché, ou empreinte digitale, de taille bits, nettement inférieure à la taille du message. En pratique, est typiquement 128, 256, 512 et 1024 bits [RFC 1321, 1992], [NIST FIPS 180‐3, 2008].
Les fonctions de hachage cryptographiques sont à sens unique, et elles possèdent des nombreux domaines d’utilisation. Nous donnons ci‐dessous une liste non exhaustive de ces domaines.
3.1.8 Intégrité des données.
Un des services de la sécurité est lʹintégrité dʹun message. On veut pouvoir détecter toute modification, accidentelle ou intentionnelle, des données sauvegardées ou transmises. La réponse à cette question est la fonction de hachage sans clé [Knuth, 1998]. Il s’agit de la fonctionnalité principale demandée à une fonction de hachage cryptographique. Le moindre changement dans les données transmises doit aboutir, avec une très grande probabilité, a l’obtention d’empreintes différentes.3.1.9 Authentification des messages.
La propriété d’intégrité ne permet pas de se prémunir contre un adversaire actif qui essaierait d’altérer malicieusement les données. Un moyen de palier ce problème, consiste à utiliser une fonction de hachage avec clé, permettant ainsi l’authentification de la source des données (codes d’authentification de messages (MAC : Authentication Codes)), et l’intégrité des données. Une des techniques d’authentification la plus répandue est le HMAC [Bellare et al, 1196], mais on peut aussi utiliser un algorithme de chiffrement en bloc en mode CBC, noté CMAC, tel que le dernier bloc chiffré est l’empreinte digitale. Cependant, le CMAC [Dworkin, 2005 ] est nettement plus lent que le HMAC.Un HMAC, est un code dʹauthentification de message avec clé. Il utilise une fonction de hachage cryptographique en combinaison avec une clé secrète. Nʹimporte quelle fonction itérative de hachage standard, comme le SHA‐256,‐512, ou chaotique comme celle que nous proposons au chapitre 4, peut être utilisée dans le calcul dʹun HMAC. La qualité cryptographique du HMAC dépend de la qualité cryptographique de la fonction de hachage, de la taille et la qualité de la clé.
L’équation du HMAC est donné par:
, 1.1 avec :
: une fonction de hachage itérative, standard ou chaotique
: la clé secrète de taille identique à la taille du bloc de la fonction , (si la taille de est inférieure à la taille du bloc, alors on complète par des zéros)
: le message à authentifier,
ʺ||ʺ désigne une concaténation et ʺ ʺ un ou exclusif,
et , sont des constantes, chacune de taille identique à celle dʹun bloc. Elles sont définies par : 0x363636...3636 et = 0x5c5c5c...5c5c. Cela veut dire que, si la taille du bloc de la fonction de hachage est 1024 bits, alors et sont constitués de 128 répétitions des octets, respectivement, 0 36 et 0 5 . Pour plus de clarté, nous donnons ci‐dessous, le schéma de réalisation du HMAC Fig. 1. 5 : Génération de l’empreinte digitale par HMAC
3.1.10 Signature électronique
Un schéma de signature est une application importante des fonctions de hachage. Il permet à un utilisateur de signer un message à l’aide de sa clé privée. Une signature électronique est un équivalent électronique d’une signature écrite [NIST FIPS 186‐3, 2009]. Chacun peut vérifier la validité de cette signature grâce à la clé publique correspondante. Elle permet de plus, de détecter si l’information signée a été altérée après sa signature. Les opérations internes de ces primitives cryptographiques sont en général très coûteuses, car elles appartiennent à la cryptographie asymétrique. Ainsi, leur application à un très long message demande un temps de calcul trop grand dans certains cas pratiques. Les fonctions de hachage sont donc utilisées pour raccourcir le message à signer et améliorer les performances. On signe le haché du message plutôt que le message. Dans cette situation, on souhaite qu’un attaquant susceptible d’obtenir les signatures de certains messages choisis soit incapable de créer une nouvelle signature valide sans connaître la clé privée de l’utilisateur. Aussi, étant donnés plusieurs couples message/signature, il doit être|| ||
extrêmement difficile pour lui de deviner la moindre information sur la clé privée. Il est donc important que les fonctions de hachage soient résistantes à la recherche de collisions [ Rivest et al, 1978] .
3.1.11 Protection de mots de passe
Une autre application des fonctions de hachage cryptographiques est la protection de mots de passe. Un mot de passe est une chaine de caractères utilisée pour authentifier l’identité d’un utilisateur ou autoriser l’accès aux ressources d’un système informatique. Il est nécessaire de protéger les mots de passe afin de les stocker. Une solution courante consiste à ne stocker que leur empreinte calculée en appliquant une fonction de hachage sur les mots de passe.
Par exemple, dans un serveur, au lieu de stocker tous les mots de passe d’utilisateurs, il est préférable de stocker les hachés de ces derniers. L’authentification peut toujours avoir lieu, mais, si le serveur est compromis, l’attaquant n’a accès qu’aux hachés des mots de passe. Il ne peut donc théoriquement pas retrouver les mots de passe originaux à cause de la propriété de résistance à la recherche de préimages.
3.1.12 Dérivation de clé
Dans le cadre de la cryptographie symétrique, les parties partagent une clé sécrète commune. Il est alors fréquent que différentes clés supplémentaires soient nécessaires pour différentes applications. La dérivation de clés (ou diversification de clés) consiste à générer une ou plusieurs clés à partir d’une même valeur secrète. Cette utilisation des fonctions de hachage a pour bût d’empêcher un adversaire ayant obtenu une clé dérivée d’obtenir des informations sur la valeur secrète ou les autres clés dérivées.
3.1.13 Génération de nombres pseudo‐aléatoires
Une classe de générateurs pseudo‐aléatoires est basée sur une fonction de hachage cryptographique utilisant essentiellement deux modes opératoires. Le premier mode consiste à calculer de façon chaînée à partir d’une condition initiale (graine), les différentes empreintes constituant la séquence pseudo‐aléatoire du générateur. Le second mode consiste à calculer les empreintes à partir de la graine et d’un compteur (mode compteur), nettement plus rapide que le premier mode.