• Aucun résultat trouvé

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.