Les fonctions de hachage

Dans le document The DART-Europe E-theses Portal (Page 22-26)

une suite al´eatoire, aucune propri´et´e structurelle ne doit pouvoir ˆetre exploit´ee. Les syst`emes de chiffrement `a flot sont utilis´es dans les contextes o`u il est primordial de pouvoir chiffrer et d´echiffrer tr`es rapidement et o`u les ressources mat´erielles, comme par exemple la taille du circuit ou la capacit´e de stockage, sont tr`es restreintes. Ceci est la raison pour laquelle les chiffrements `a flot sont implant´es dans les t´el´ephones mobiles et dans d’autres dispositifs embarqu´es.

Les fonctions de hachage : Les fonctions de hachage servent `a calculer `a partir d’une donn´ee de taille arbitraire fournie en entr´ee une empreinte de taille fixe. Cette taille varie en g´en´eral entre 128 et 512 bits. Cette empreinte, appel´ee aussi condens´e ou simplement hach´e doit d´ependre de tous les bits du message et est utilis´ee pour repr´esenter le message de fa¸con compacte. Une fonction de hachage est un algorithme enti`erement public et aucune valeur secr`ete n’intervient `a aucun moment du calcul. N´eanmoins, les fonctions de hachage appartiennent `a la famille des algorithmes sym´etriques, car leur construction ressemble beau-coup `a la construction d’un chiffrement par bloc. Une fonction de hachage doit se comporter id´ealement comme une fonction al´eatoire. En parall`ele, de nombreux propri´et´es doivent ˆetre respect´ees. En particulier, il doit ˆetre difficile de trouver des collisions ou d’inverser la fonc-tion. Les standards actuels sont les fonctions SHA-1 et SHA-2, mais certaines faiblesses sont connues pour cette famille de fonctions. Pour cette raison, un concours public a ´et´e lanc´e en 2008 afin de d´eterminer un nouveau standard. La fonction Keccak a r´ecemment remport´e cette comp´etition et est ainsi devenue la nouvelle norme SHA-3.

Les codes d’authentification de message ou MAC : Ces m´ecanismes cryptographiques permettent `a la fois d’assurer l’int´egrit´e du message envoy´e et d’authentifier son exp´editeur.

Pour r´eussir cela, lors de l’envoi du message, le code d’authentification est ajout´e au message.

Un MAC peut ˆetre construit `a partir d’une fonction de hachage, comme par exemple la con-struction HMAC ou envelope MAC, `a partir d’une fonction de hachage universelle (UMAC) ou encore d’un chiffrement par bloc, comme dans OMAC ou CBC-MAC.

1.3 Les fonctions de hachage

Une fonction de hachage H est une fonction qui prend en entr´ee une donn´ee de taille al´eatoire m, et donne en sortie un condens´e de taille fixe, n.

H :{0,1} → {0,1}n m 7→ H(m)

L’empreinte d’une donn´ee, c’est-`a-dire son image par la fonction de hachage, sert `a la repr´esenter et permet facilement son identification.

Les fonctions de hachage sont des outils indispensables dans beaucoup de processus infor-matiques. Une de leurs premi`eres utilisations a ´et´e la construction de structures des donn´ees, appel´eestables de hachage. Une table de hachage est un tableau qui permet de stocker des donn´ees de natures diverses. Chaque donn´ee poss`ede un identifiant et l’acc`es `a un ´el´ement du tableau se passe par l’empreinte de cet identifiant, calcul´ee `a l’aide d’une fonction de hachage.

Ceci permet la recherche en temps constant d’un ´el´ement dans une grande base de donn´ees.

Pour cette utilisation, une fonction de hachage ne doit avoir aucune propri´et´e parti-culi`ere en dehors d’une distribution proche de la distribution uniforme et une fonction as-sez simple peut ˆetre utilis´ee. Au contraire, il existe des applications, o`u des propri´et´es de s´ecurit´e suppl´ementaires sont exig´ees. Pour cela, les fonctions de hachage cryptographiques sont utilis´ees.

1.3.1 Fonctions de hachage cryptographiques

Les fonctions de hachage sont utilis´ees pour diverses applications, comme nous pourrons le voir dans la section suivante. Pour la plupart de ces applications, les donn´ees sont ´echang´ees

`a travers un canal non-fiable comme cela peut ˆetre le cas pour une ligne t´el´ephonique ou une application web. Des personnes malveillantes sont alors susceptibles d’intercepter ou mˆeme de modifier cette communication. Pour cette raison, les fonctions de hachage utilis´ees doivent v´erifier des propri´et´es de s´ecurit´e suppl´ementaires.

Une des utilisations principales des fonctions de hachage est la protection des mots de passe. Pour cette application il est crucial d’utiliser une fonction de hachage pour laquelle un adversaire ne soit pas capable de trouver un ant´ec´edent ayant une empreinte donn´ee. Pour d’autres utilisations, comme par exemple dans le cas des signatures num´eriques, un utilisateur ne doit pas ˆetre capable de produire `a partir d’un messagemun deuxi`eme messagem ayant le mˆeme hach´e que m, ou de produire deux messages avec le mˆeme hach´e. Nous pourrons alors constater que le niveau de s´ecurit´e exig´e pour une fonction de hachage d´epend de son utilisation. N´eanmoins, pour ne pas construire une fonction de hachage diff´erente pour chaque application, il est courant de construire des fonctions de hachage qui soient sˆures dans toutes les situations possibles.

De fa¸con g´en´erale, l’empreinte d’un message produit avec une fonction de hachage cryp-tographique doit d´ependre de tous les bits de message. En parall`ele, une fonction de hachage cryptographique doit ˆetre un proc´ed´e assez complexe de fa¸con que si un bit du message est modifi´e, le hach´e ne doit plus avoir aucune liaison avec le hach´e du message pr´ec´edent.

Mis `a part ces propri´et´es de conception g´en´eriques, une fonction de hachage est dite avoir des bonnes propri´et´es cryptographiques si elle est r´esistante aux pr´eimages, aux secondes-pr´eimages et aux collisions. Les trois probl`emes suivants doivent donc ˆetre difficiles.

– pr´eimage :´etant donn´e un hach´ehchoisi al´eatoirement, trouver un message mtel que H(m) =h.

– seconde pr´eimage :´etant donn´e un messagemchoisi al´eatoirement, trouver un message m tel queH(m) =H(m).

– collision : trouver deux messagesm,m, tels que m6=m etH(m) =H(m).

Selon sa d´efinition, une fonction de hachage est une fonction dont l’ensemble de d´epart est plus grand que l’ensemble d’arriv´ee. Th´eoriquement, l’ensemble de d´epart peut ˆetre infini, en pratique, l’ensemble de d´epart comprend g´en´eralement tous les messages d’une taille inf´erieure

`

a un certain seuil. Par exemple, la fonction de hachage SHA-1 est capable de traiter des messages de taille inf´erieure `a 264−1 bits.

L’existence de collisions est alors in´evitable pour une fonction de hachage, H, donnant des empreintes de taille n; si on choisit 2n+ 1 messages distincts, il existe forcement une paire de messages aboutissant au mˆeme hach´e. De la mˆeme mani`ere, si on restreint H `a un domaine de taille 2tet on consid`ere que les sorties deH sont uniform´ement distribu´ees, alors un condens´e al´eatoireh poss`ede environ 2tn pr´eimages.

On d´efinit alors la r´esistance d’une fonction aux collisions, aux pr´eimages et aux deuxi`emes

1.3. LES FONCTIONS DE HACHAGE 7 pr´eimages par rapport `a la difficult´e de r´esoudre ces probl`emes en pratique. Cette difficult´e est ´evalu´ee par rapport au nombre d’op´erations n´ecessaires pour que la meilleure attaque g´en´erique contre une fonction de hachage id´eale r´eussisse.

Ainsi, un attaquant ne doit pas ˆetre en mesure de trouver une pr´eimage en moins deO(2n) op´erations, puisque la meilleure attaque g´en´erique consiste `a essayer 2n messages distincts pour avoir une bonne probabilit´e de r´eussite. En suivant le mˆeme raisonnement, il ne doit pas ˆetre possible de trouver une deuxi`eme pr´eimage en moins deO(2n) op´erations.

Pour la recherche de collisions, la probabilit´e de r´eussite de la meilleure attaque g´en´erique repose sur le paradoxe des anniversaires.

Paradoxe des anniversaires :

Ce paradoxe d´esigne un ph´enom`ene contre-intuitif : dans un ensemble de 23 personnes choisies al´eatoirement, la probabilit´e que deux personnes fˆetent leur anniversaire le mˆeme jour de l’ann´ee est sup´erieure `a 1/2. Ce comportement inattendu peut n´eanmoins ˆetre expliqu´e en suivant le raisonnement suivant.

Soit k ´el´ements x1, x2, . . . , xk tir´es uniform´ement et ind´ependamment dans un ensemble E de taille n. La probabilit´e que tous lesxi soient distincts est

Par cons´equent, la probabilit´e qu’au moins deux ´el´ements soient identiques est

p= 1− n!

(n−k)! · 1

nk ≈1−ek(k−1)2n .

De ce fait, pour le cas des anniversaires, on peut constater que pour n= 365 et k= 23, cette probabilit´e devient proche de 1/2.

En appliquant ce principe dans le cas des fonctions de hachage, pour trouver une collision dans un ensemble de taille 2n, il faudra essayer 2n/2 valeurs distinctes pour produire une collision avec une probabilit´e sup´erieure `a 1/2. Cette attaque g´en´erique qui est due `a G. Yu-val [Yuv97] n´ecessite 2n/2calculs dans le pire cas, mais aussi une m´emoire de 2n/2, ce qui peut ˆetre assez contraignant pour certaines applications. Pour contourner ce probl`eme, l’algorithme ρde Pollard [Pol75] peut ˆetre utilis´e pour rechercher des collisions. Des versions parall´elisables existent ´egalement dans la litt´erature [QD90,vOW99]. Enfin, une g´en´eralisation du probl`eme

`

ak >2 ´el´ements a ´et´e publi´ee par David Wagner [Wag02].

Les complexit´es des attaques g´en´eriques pour le cas des collisions, des pr´eimages et des deuxi`emes pr´eimages sont rassembl´ees `a la table 1.1

Attaque g´en´erique Complexit´e

Recherche de pr´eimages 2n

Recherche de deuxi`emes pr´eimages 2n

Recherche de collisions 2n2

Table 1.1 – Complexit´e des meilleures attaques g´en´eriques.

La taille des empreintes construites par une fonction de hachage est choisie de fa¸con que le nombre d’op´erations n´ecessaire pour une attaque g´en´erique r´eussie soit inatteignable avec la

puissance calculatoire actuellement accessible. Aujourd’hui, on peut consid´erer qu’un nombre d’op´erations sup´erieur ou ´egal `a 280 est trop grand pour ˆetre r´ealis´e en pratique. De cette fa¸con, une fonction de hachage donnant en sortie des hach´es de taille 160 bits est aujourd’hui consid´er´ee comme sˆure contre toutes les attaques g´en´eriques. N´eanmoins, pour garantir une certaine marge de s´ecurit´e, il est demand´e que la taille de sortie des fonctions de hachage modernes varie entre 256 et 512 bits.

Une fonction de hachage est consid´er´ee commecass´eesi une attaque plus rapide que la meilleure attaque g´en´erique existe pour cette fonction, mˆeme si sa complexit´e ne lui permet pas d’ˆetre r´ealis´ee en pratique. En effet, cela signifie que la fonction a des faiblesses, qui n’´etaient pas pr´evues par le concepteur.

Relation entre les diff´erentes notions de s´ecurit´e

Des relations entre les diff´erentes propri´et´es existent. Si une fonction de hachage est r´esistante aux collisions, alors elle est aussi r´esistante aux deuxi`emes pr´eimages. Ceci s’ex-plique par le fait que si on connaˆıt une m´ethode pour construire des deuxi`emes pr´eimages pour une fonction on peut l’utiliser aussi pour construire des collisions. Cependant, si on connaˆıt une attaque en deuxi`eme pr´eimage, celle-ci s’appliquera aussi aux collisions seulement dans le cas o`u sa complexit´e est inf´erieure `a 2n2, `a cause de la diff´erence dans les complexit´es des attaques correspondant.

De la mˆeme fa¸con, si une fonction est r´esistante aux pr´eimages, alors elle l’est aussi pour les secondes pr´eimages, car on peut toujours utiliser une attaque en secondes pr´eimages pour construire une pr´eimage en ignorant simplement le premier message. La r´eciproque n’est pas vraie et des contre-exemples existent [MvOV97].

Une d´efinition formelle de ces notions de s´ecurit´e et leurs relations sont donn´ees dans [RS04].

1.3.2 Utilisations

Les fonctions de hachage cryptographiques sont utilis´ees pour assurer des besoins informa-tiques divers. Cette primitive, qui poss`ede beaucoup de fonctionnalit´es, est consid´er´ee comme le couteau suissede la cryptographie.

Int´egrit´e des donn´ees

La v´erification de l’int´egrit´e d’une donn´ee est parmi les principales utilisations d’une fonction de hachage. Un utilisateur doit ˆetre capable de v´erifier si une donn´ee n’a pas ´et´e modifi´ee depuis sa cr´eation ou pendant sa transmission `a travers un canal de communication.

Beaucoup de sites de t´el´echargement de logiciels affichent sur leur page principale les empreintes des fichiers propos´es au t´el´echargement, calcul´ees au moyen d’une fonction de hachage. Il suffit pour l’utilisateur de t´el´echarger un fichier, calculer son hach´e et comparer la valeur calcul´ee `a celle affich´ee sur le site. Si la fonction de hachage utilis´ee est connue pour ˆetre r´esistante aux deuxi`emes pr´eimages, alors l’utilisateur peut ˆetre sˆur avec une grande probabilit´e qu’il d´etient le bon fichier.

Protection de mots de passe

Dans beaucoup de syst`emes informatiques, l’authentification d’un utilisateur se fait `a partir d’un mot de passe. Les mots de passe de tous les utilisateurs doivent ˆetre stock´es

1.3. LES FONCTIONS DE HACHAGE 9

Dans le document The DART-Europe E-theses Portal (Page 22-26)