• Aucun résultat trouvé

Optimalité de la preuve et attaques

Partie IV Construction de fonctions de hachage

7.5 Sécurité en préimage contre la construction généralisée

7.5.2 Optimalité de la preuve et attaques

Dans [RS08b], Rogaway et Steinberger présentent une attaque en préimage génerique en O(n2n/2) contre toute fonction de hachage basée sur 2 permutations. Cela signifie, comme on l’a déjà mentionné, que notre construction atteint le meilleur niveau de sécurité contre la préimage que l’on peut espérer, à savoir O(2n/2) requêtes. En ce sens la construction est optimale.

Par ailleurs, l’attaque de [RS08b] contre la fonction de hachage en entier nécessite O(n2n/2)

requêtes, mais la sécurité pratique exacte n’est pas établie en général. Cependant, dans notre cas, la sécurité pratique semble plus grande que 2n. Ceci nous amène à nous demander quelle

est l’attaque avec la plus petite complexité temporelle. Puisque trouver une préimage pour la fonction de compression nécessite O(n2n/2) en temps, l’attaque de Lai et Massey [LM92] peut

être utilisée. Cette attaque est une attaque par le milieu non équilibrée : on calcule 2n/4préimages

sur la fonction de compression, on hache 23n/4messages et le paradoxe des anniversaires nous dit

qu’avec forte probabilité il existe une préimage et un haché qui sont égaux, ce qui nous permet donc de trouver une préimage sur la fonction de hachage en entier. Calculer les préimages nécessite de faire 2n/4· 2n/2 = 23n/4 requêtes, demande O(23n/4) étapes de calcul et O(2n/4) en mémoire.

Le calcul des hachés nécessite 23n/4 requêtes, O(23n/4) étapes de calcul et O(23n/4) en mémoire.

Trouver une collision entre les deux listes nécessite O(n23n/4) en temps. Globalement, trouver

Chapitre 7. Fonctions de hachage construites à partir de permutations

complexité temporelle est supérieure à O(n2n/2) et trouver une attaque en préimage contre toute

la fonction de hachage de complexité temporelle moins que O(23n/4) est un problème ouvert.

7.6

Conclusion

Dans ce chapitre, nous avons présenté une attaque en collision contre SMASH avec une complexité temporelle en O(2n/3). Cette attaque s’applique non seulement à la version originelle

de SMASH, qui avait déjà été cassée, mais également aux versions améliorées de SMASH qui elles n’avaient pas encore été cassées. Pour éviter l’attaque, nous proposons de remplacer la multiplication par θ par un algorithme de chiffrement par bloc dont la clef est fixée.

Nous prouvons que cette construction est résistante en collision jusqu’à au moins Ω(2n/4)

requêtes. Sans le renforcement de Merkle-Damgård, la résistance aux collisions peut être cassée avec O(23n/8) requêtes, alors que la meilleure attaque connue contre ce schéma quand le renfor-

cement de Merkle-Damgård est utilisé est l’attaque par paradoxe des anniversaires qui nécessite O(2n/2) requêtes.

Enfin, nous prouvons que la résistance en préimage de ce schéma est en O(2n/2) requêtes,

ce qui est le meilleur niveau de sécurité que l’on peut espérer obtenir, comme cela est prouvé dans [RS08b]. En ce sens, notre construction est optimale et répond partiellement à un problème ouvert : trouver une construction basée sur 2 permutations qui atteint les niveaux de sécurité trouvés dans [RS08b].

Notre travail ouvre également de nouveaux problèmes. Tout d’abord, réduire l’intervalle entre la borne de sécurité établie dans la preuve, à savoir Ω(2n/4), et la meilleure attaque en collision

connue, à savoir O(23n/8) sans le renforcement de Merkle-Damgård et O(2n/2) avec ce dernier.

Le second problème ouvert consiste à trouver une fonction de compression basée sur 2 permuta- tions pour laquelle la résistance en collision de la fonction de hachage entière est prouvablement optimale.

8

Attaque en seconde preimage contre

des fonctions de hachage avec tramage

Sommaire

8.1 Introduction . . . 125 8.2 Modèle de sécurité . . . 126 8.3 Attaque connue en seconde préimage contre le mode cascade . 127 8.3.1 Construction de message extensible . . . 127 8.3.2 Attaque de Kelsey et Schneier . . . 127 8.3.3 Preuve d’optimalité . . . 128 8.4 Mode cascade avec tramage . . . 129 8.4.1 Mots et suites . . . 129 8.4.2 Propositions de Rivest . . . 130 8.5 Attaque contre le mode cascade sans tramage . . . 131 8.5.1 La structure d’arbre de collision . . . 131 8.5.2 Attaque en seconde préimage sur le mode cascade . . . 132 8.5.3 Comparaison avec Kelsey et Schneier . . . 132 8.6 Attaque en seconde préimage contre le mode cascade avec tra-

mage . . . 133 8.6.1 Adaptation de l’attaque contre le mode cascade avec tramage . . . 133 8.6.2 Application aux fonctions proposées par Rivest . . . 134 8.7 Attaque contre une famille de fonctions de hachage universelle

à sens unique . . . 135 8.7.1 Description de la famille . . . 135 8.7.2 Adaptation de l’attaque . . . 136 8.7.3 Amélioration de l’attaque . . . 137 8.8 Contre-mesure . . . 138 8.8.1 Tramage à complexité exponentielle . . . 138 8.8.2 Sécurité d’Haifa . . . 139 8.9 Conclusion . . . 141

8.1

Introduction

Parallèlement aux récentes attaques en collision contre les fonctions de hachage les plus répandues, sont apparues des attaques contre le mode opératoire le plus célèbre pour construire

Chapitre 8. Attaque en seconde preimage contre des fonctions de hachage avec tramage

des fonctions de hachage : le mode cascade. Joux [Jou04] a ouvert la voie en 2004 en montrant que l’on pouvait construire des k-collisions avec le mode cascade en seulement O(k2n/2) requêtes à la

fonction de compression. Cette attaque a encouragé les études du mode opératoire à la recherche d’autres faiblesses particulières. Kelsey et Schneier [KS05] puis Kelsey et Kohno [KK06] se sont demandés ce que l’on pouvait faire contre le mode cascade, à partir du moment où l’on autorisait l’adversaire à faire plus de 2n/2 requêtes à la fonction de compression. Kelsey et Schneier [KS05]

ont montré que l’on pouvait trouver des secondes préimages, contre des messages longs, en nettement moins que O(2n) requêtes à la fonction de compression.

Afin d’éviter cette attaque, de nouvelles variantes du mode cascade [BD06, Riv05] ont alors été proposées. Certaines consistent à ajouter une troisième entrée, appelée tramage, à la fonction de compression, et ce afin d’empêcher la construction des messages extensibles qui sont à l’origine de l’attaque de Kelsey et Schneier. Le tramage est un procédé venant des techniques de traitement d’image, il consiste à ajouter une perturbation pour améliorer la qualité de l’image obtenue. Ici on l’ajoute dans l’espoir d’améliorer la résistance aux secondes préimages. Le mode Haifa de Biham et Dunkelman [BD06] inclut tout simplement le numéro du bloc de message. En d’autres termes, le tramage est un compteur, ce qui peut être encodé sur 64 bits. Rivest [Riv05] propose une solution qui utilise pour tramage une suite sans carré qui peut être codée sur seulement 2 ou 16 bits.

Notre objectif dans cette partie est d’étudier la sécurité en seconde préimage de ces deux modes opératoires. Pour cela, nous développons une nouvelle attaque en seconde préimage qui s’applique contre le mode cascade, mais aussi contre le nouveau mode proposé par Rivest. Cette attaque est même plus large, puisqu’on peut l’adapter pour attaquer une construction de famille de fonctions de hachage universelle à sens unique proposée par Shoup. Enfin, si on peut encore attaquer la construction de Rivest, il n’en est pas de même de Haifa. Au contraire, nous prouvons qu’il n’existe pas d’attaque générique contre le mode opératoire Haifa. Tous ces résultats ont donné lieu à une publication