Sunteți pe pagina 1din 204

Universit e de Versailles Saint-Quentin-en-Yvelines UFR Sciences Laboratoire PRISM

Analyse de fonctions de hachage cryptographiques


` THESE
pr esent ee et soutenue publiquement le 3 novembre 2008, ` a lEcole normale sup erieure, Paris pour lobtention du

Doctorat de lUniversit e de Versailles Saint-Quentin-en-Yvelines


(Sp ecialit e informatique) par

Thomas Peyrin

Composition du jury: Rapporteurs : Directeur : Examinateurs : Prof. Lars Knudsen Prof. Bart Preneel Dr. Marc Girault Prof. Jean-S ebastien Coron Prof. Pierre-Alain Fouque Dr. Henri Gilbert Prof. Antoine Joux Dr. Guillaume Poupard Prof. Adi Shamir (Technical University of Denmark, Danemark) (Katholieke Universiteit Leuven, Belgique) (France T el ecom R&D) (University of Luxembourg, Luxembourg) (Ecole Normale Sup erieure) (France T el ecom R&D) (Univ. de Versailles Saint-Quentin-en-Yvelines) (Minist` ere de la D efense) (Weizmann Institute of Science, Isra el)

Th` ese eectu ee au sein du laboratoire NSS, France T el ecom R&D, Issy-les-Moulineaux

Remerciements
Je souhaite adresser mes premiers remerciements Henri Gilbert, qui a accept de mencadrer tout au long de mon travail de recherche. Son amabilit, sa patience et sa grande disponibilit ont largement contribu rendre ces trois annes de recherche plaisantes et amliorer ma conance envers mes capacits, conance combien ncessaire pour mener bien des tudes si spcialises. En plus de laspect humain, sa parfaite matrise de nombreux domaines de la cryptologie et ses explications claires et rigoureuses mont permis de mieux orienter mes approches de recherche, mais aussi de me rendre compte du long chemin quil me reste maintenant parcourir. Jespre un jour tre capable dcrire une page de contenu technique sans quil ny trouve mot redire. Paralllement, je remercie Marc Girault, qui a accept dtre mon directeur de thse et avec qui jai eu la chance davoir des discussions trs enrichissantes malgr lloignement gographique. Je tiens ensuite remercier Lars Knudsen et Bart Preneel davoir accept la lourde tche de rapporteur, et ce, malgr les contraintes dans leur emploi du temps que ce travail implique. Je remercie galement Jean-Sbastien Coron, Pierre-Alain Fouque, Antoine Joux, Guillaume Poupard et Adi Shamir de me faire lhonneur de participer au jury de cette thse. Mes efforts seuls nauraient pas suf pour accomplir tout le chemin jusqu la n de cette thse. Jai t grandement aid durant mon cursus par plusieurs personnes et je saisis naturellement cette occasion pour les remercier encore une fois. Merci donc tout dabord Gildas Avoine, Jean Monnerat et Serge Vaudenay et toute lquipe du laboratoire de scurit de lEPFL, qui ont bien voulu faire conance un tudiant en Chimie-lectronique pour un projet de diplme en cryptographie. Merci aussi Frdric Muller et Guillaume Poupard, ainsi qu tout le laboratoire de cryptographie de la DCSSI, pour ces six mois de stage de Master trs riches, aussi bien humainement que scientiquement. Merci pour tout. Ma reconnaissance va galement au laboratoire de scurit de lAIST Tokyo, et notamment au professeur Imai qui a accept ma visite au Japon durant six mois de ma thse. Par ailleurs, les laboratoires de scurit informatique de France Tlcom R&D constituent un cadre idal pour un jeune thsard : une excellente ambiance de travail et des chercheurs reconnus mondialement pour leurs avances scientiques. Merci donc toutes les personnes que jai eu la chance de ctoyer dans ces locaux, et particulirement aux membres du laboratoire de cryptographie dIssy-les-Moulineaux : Matt Robshaw pour nos discussions sur les fonctions de hachage et pour ses talents de footballeur inpuisable, Olivier Billet pour ses blagues au degr non mesurable et pour son aide inestimable en tant quoracle humain de la cryptographie et de linformatique, Cme Berbain pour sa culture sans faille de la scurit informatique en gnral et pour ses biscuits faussement cachs dans son deuxime tiroir gauche, Yannick Seurin pour tre un excellent compagnon de voyage et sans qui la moiti de cette thse prsenterait des rsultats errons, Jonathan Etrog qui je souhaite bonne chance pour la thse venir, Gilles Macario-Rat pour ses nigmes scientiques en tout genre et Ryad Benadjila pour sa virtuosit la Wii. Je remercie aussi Fabien Allard, Julien Bournelle, Jean-Michel Combes, Daniel Migault, Morgan Barbier, Jrome Cherel, Al Mahdi Chakri, Xavier Misseri, Jean-Franois Biasse et Tony Cheneau pour les conseils aviss et les (trs) bons moments changs. Merci galement aux i

managers, Sbastien Nguyen Ngoc et Thierry Baritaud, trs comprhensifs en ce qui concerne les besoins si spciques des chercheurs. Ma route a crois dautres chercheurs et je remercie donc mes coauteurs pour ces changes si fructueux, ainsi que tous les membres du projet SAPHIR (spcialement Benot ChevallierMames pour sa relecture assidue de cette thse). Jai aussi une pense pour toute lquipe de chercheurs en cryptographie de lUniversit de Versailles St-Quentin-en-Yvelines, des professeurs aux thsards. Enn, merci Ccile davoir support mes longues nuits de cryptanalyse, ainsi qu toute ma famille. Je remercie mes parents qui mont toujours pouss et encourag tout au long de mes tudes. Je me rends compte quel point cela fut important. Jespre navoir oubli personne et je mexcuse par avance si cela est le cas.

ii

Table des matires


Liste des tableaux Table des gures ix xi

Partie I.

Introduction gnrale

Chapitre 1. Les fonctions de hachage cryptographiques 1.1 1.2 1.3 Les fonctions de hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Proprits des fonctions de hachage . . . . . . . . . . . . . . . . . . . . . . . . Utilisations pratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6 9

Chapitre 2. Lextension de domaine 2.1 2.2 2.3 Lalgorithme de Merkle-Damgrd . . . . . . . . . . . . . . . . . . . . . . . . . Les vulnrabilits de lalgorithme de Merkle-Damgrd . . . . . . . . . . . . . Les nouveaux algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 13 14

Chapitre 3. Fonctions de compression 3.1 3.2 3.3 Fonctions de compression ad hoc . . . . . . . . . . . . . . . . . . . . . . . . . 17

Fonctions de compression fondes sur un algorithme de chiffrement par blocs 18 Fonctions de compression fondes sur une structure algbrique . . . . . . . . 22

Partie II.

Cryptanalyse de la famille SHA


iii

Table des matires Chapitre 4. Prsentation des fonctions de la famille MD-SHA 4.1 MD4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 4.1.2 4.2 4.2.1 4.2.2 4.3 4.3.1 4.3.2 4.4 4.4.1 4.4.2 4.5 4.5.1 4.5.2 4.6 4.6.1 4.6.2 4.7 4.7.1 4.7.2 4.8 4.8.1 4.8.2 4.9 4.9.1 4.9.2 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scurit actuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scurit actuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scurit actuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scurit actuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scurit actuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scurit actuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scurit actuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scurit actuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scurit actuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 31 32 32 33 34 34 34 35 35 36 36 36 37 38 38 39 40 40 40 42 42 42 42 42 44 44 44 46

MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

HAVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

RIPEMD-0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

RIPEMD-128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

RIPEMD-160 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

SHA-0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

SHA-256 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.10 SHA-512 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10.2 Scurit actuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA 5.1 iv Structure gnrale de la cryptanalyse dune fonction de hachage . . . . . . .

47

5.2

Premires attaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 Les collisions locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conditions sur le masque de perturbation . . . . . . . . . . . . . . . . Attaque de la vraie fonction de compression de la famille SHA . . . . Rechercher une paire de messages valide . . . . . . . . . . . . . . . . . Les bits neutres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lattaque multiblocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La modication de message . . . . . . . . . . . . . . . . . . . . . . . . La partie non linaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . La recherche de vecteurs de perturbation pour SHA-1 . . . . . . . . . Une analyse plus ne des conditions . . . . . . . . . . . . . . . . . . .

52 52 54 55 58 60 62 64 65 67 69 76

5.3

Attaques de Wang et al. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 5.3.2 5.3.3 5.3.4

Chapitre 6. Amlioration des mthodes de cryptanalyse 6.1 6.2 Un problme plusieurs dimensions . . . . . . . . . . . . . . . . . . . . . . . Recherche de chemin : le vecteur de perturbation . . . . . . . . . . . . . . . . 6.2.1 6.2.2 6.3 6.3.1 6.3.2 6.3.3 6.4 6.4.1 6.4.2 6.4.3 6.4.4 Chapitre 7. Application la cryptanalyse de la famille SHA 7.1 7.2 Cas de SHA-0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Cas de SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 La technique de Wang et al. . . . . . . . . . . . . . . . . . . . . . . . . . Les techniques avances . . . . . . . . . . . . . . . . . . . . . . . . . . Calcul efcace de probabilit pour un chemin diffrentiel . . . . . . . Calcul efcace de rafnage de conditions . . . . . . . . . . . . . . . . . Structure de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . Lattaque boomerang pour les algorithmes de chiffrement par blocs . Adapter lattaque boomerang aux fonctions de hachage itres . . . . Les diffrentes approches possibles . . . . . . . . . . . . . . . . . . . . 79 82 82 83 84 85 87 89 94 94 95 98

Recherche de chemin : la partie non linaire . . . . . . . . . . . . . . . . . . .

Recherche de candidats valides : les attaques boomerang . . . . . . . . . . . .

Application la famille SHA . . . . . . . . . . . . . . . . . . . . . . . . 101

Partie III.

Cryptanalyses de nouvelles fonctions de hachage


v

Table des matires Chapitre 8. Cryptanalyse de G RINDAHL 8.1 8.2 Description de G RINDAHL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Analyse gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.3 8.3.1 8.3.2 8.3.3 8.4 Les diffrences tronques . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Analyse de la fonction MixColumns . . . . . . . . . . . . . . . . . . . 121 Existence des octets de contrle . . . . . . . . . . . . . . . . . . . . . . 123 Stratgie gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Trouver un chemin diffrentiel tronqu . . . . . . . . . . . . . . . . . . 124 Le chemin diffrentiel tronqu . . . . . . . . . . . . . . . . . . . . . . . 125 Lattaque par collision . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Discussion de lattaque . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

Trouver une collision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

Amliorations et autres attaques . . . . . . . . . . . . . . . . . . . . . . . . . . 130

Chapitre 9. Cryptanalyse de FORK-256 9.1 9.2 9.3 9.4 Description de FORK-256 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Observations prliminaires sur FORK-256 . . . . . . . . . . . . . . . . . . . . 136 Les microcollisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Une premire tentative de recherche dun chemin diffrentiel . . . . . . . . . 140 9.4.1 9.4.2 9.4.3 9.5 9.5.1 9.5.2 9.6 9.6.1 9.6.2 Bibliographie Bibliographie personelle Annexes vi Une pseudo-presque collision au septime tour . . . . . . . . . . . . . 141 Choisir la diffrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Pseudo-presque collisions pour la fonction de compression . . . . . . 143 Principe gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Gnralisation de la recherche . . . . . . . . . . . . . . . . . . . . . . . 146 Trouver des collisions avec peu de mmoire . . . . . . . . . . . . . . . 147 Amlioration de lattaque laide de tables prcalcules . . . . . . . . 150 153 167

Trouver des chemins diffrentiels pour FORK-256 . . . . . . . . . . . . . . . 144

Collisions pour la fonction de compression de FORK-256 . . . . . . . . . . . 146

Annexe A. Spcication des fonctions de compression de la famille MD-SHA A.1 MD4 [RFCmd4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 A.2 MD5 [RFCmd5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 A.3 RIPEMD-0 [RIPE95] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 A.4 RIPEMD-128 [DBP96] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 A.5 RIPEMD-160 [DBP96] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 A.6 SHA-0 [N-sha0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 A.7 SHA-1 [N-sha1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 A.8 SHA-256 [N-sha2, N-sha2b] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 A.9 SHA-512 [N-sha2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Annexe B. Conditions totales concernant les collisions locales pour SHA

vii

Table des matires

viii

Liste des tableaux


3.1 4.1 5.1 5.2 6.1 6.2 6.3 6.4 8.1 8.2 8.3 8.4 9.1 9.2 9.3 9.4 9.5 9.6 9.7 Meilleures attaques par collision contre les membres de la famille MD-SHA . . . Paramtres des fonctions de compression des membres de la famille MD-SHA . Notations utilises pour reprsenter un chemin diffrentiel . . . . . . . . . . . . . Conditions vrier pour une collision locale pour SHA-0 . . . . . . . . . . . . . Nombre de conditions suivant ltape de dbut de comptage pour SHA-0 . . . Nombre de conditions suivant ltape de dbut de comptage pour SHA-1 . . . Les diffrentes variantes de lattaque boomerang pour les fonctions de hachage Variantes possibles dune collision locale avec comportement non linaire . . . Bote de substitution utilise dans Rijndael et Grindahl . . . . . . . . . . . . . Probabilit de transitions diffrentielles durant lapplication de MixColumns Inuences sur ltat interne dune modication dun octet du message . . . . Dpendances des blocs de message utiliss comme octets de contrle . . . . . . . . . 26 29 49 58

. 83 . 84 . 100 . 102 . . . . . . . . . . . 119 122 123 128 136 136 136 138 142 147 150

Constantes utilises pour FORK-256 . . . . . . . . . . . . . . . . . . . . . . . . . Permutations et constantes utilises dans chaque branche de FORK-256 . . . . Un chemin diffrentiel sur 4 tapes aboutissant une collision . . . . . . . . . . Un chemin diffrentiel sur 7 tapes aboutissant une pseudo-presque collision Relations entre les quadruplets xer et les mots dentre . . . . . . . . . . . . Nombre minimal de structures Q actives selon diffrents scnarios . . . . . . . Meilleures diffrences additives trouves par exprimentation . . . . . . . . . .

B.1 Conditions vrier pour une collision locale pour SHA-0 ou SHA-1 (1) . . . . . 186 B.2 Conditions vrier pour une collision locale pour SHA-0 ou SHA-1 (2) . . . . . 187

ix

Liste des tableaux

Table des gures


2.1 2.2 3.1 3.2 3.3 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18 6.1 6.2 Lalgorithme de Merkle-Damgrd . . . . . . . . . . . . . . . . . . . . . . . . . . . . Attaque par multicollisions sur lalgorithme de Merkle-Damgrd . . . . . . . . . Fonctions de compression fondes sur un algorithme de chiffrement par blocs . . La fonction de compression de MDC-2 . . . . . . . . . . . . . . . . . . . . . . . . Deux nouvelles propositions de fonction de compression . . . . . . . . . . . . . . Structure gnrique des fonctions de compression pour la famille MD-SHA Une tape de la fonction de compression de MD4 . . . . . . . . . . . . . . . Une tape de la fonction de compression de MD5 . . . . . . . . . . . . . . . Une tape pour une branche de la fonction de compression de RIPEMD-0 . Une tape pour une branche de la fonction de compression de RIPEMD-128 Une tape pour une branche de la fonction de compression de RIPEMD-160 Une tape de la fonction de compression de SHA-0 ou SHA-1 . . . . . . . . Une tape de la fonction de compression de SHA-256 . . . . . . . . . . . . . Une tape de la fonction de compression de SHA-512 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 14 19 20 21 30 32 33 36 38 39 41 44 46 51 51 53 59 60 61 63 65 67 68 69 70 71 72 73 74 75 77 81 85

Un premier chemin diffrentiel peu labor pour SHA-0 . . . . . . . . . . . . . . Un chemin diffrentiel plus labor pour SHA-0 . . . . . . . . . . . . . . . . . . . Une collision locale pour SHA-0 ou SHA-1 . . . . . . . . . . . . . . . . . . . . . . Une collision locale signe pour SHA-0 ou SHA-1 . . . . . . . . . . . . . . . . . . Vecteur de perturbation utilis pour lattaque en collision contre SHA-0 [CJ98] . . Chemin diffrentiel utilis pour lattaque en collision contre SHA-0 [CJ98] . . . . Principe de lattaque multiblocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vecteurs de perturbation pour lattaque multiblocs sur SHA-0 [BCJ05] . . . . . . Attaque multiblocs avec partie non linaire pour les premires tapes . . . . . . . Attaque en un bloc de diffrence avec partie non linaire pour SHA-0 [WYY05d] Vecteur de perturbation utilis pour lattaque en un bloc sur SHA-0 [WYY05d] . Chemin diffrentiel utilis pour lattaque en un bloc sur SHA-0 [WYY05d] . . . . Vecteur de perturbation pour lattaque multiblocs sur SHA-1 [WYY05b] . . . . . Vecteur de perturbation pour lattaque multiblocs sur SHA-1 [WYY05a] . . . . . Chemin diffrentiel pour lattaque multiblocs sur SHA-1 [WYY05b] . . . . . . . . Chemin diffrentiel pour lattaque multiblocs sur SHA-1 [WYY05a] . . . . . . . . Une instance signe du chemin diffrentiel de la gure 5.16 . . . . . . . . . . . . . La compression de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La cryptanalyse de SHA, un problme plusieurs dimensions . . . . . . . . . . . Un exemple de calcul de la probabilit incontrle . . . . . . . . . . . . . . . . . . xi

Table des gures 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 7.1 7.2 7.3 7.4 7.5 7.6 8.1 8.2 9.1 9.2 9.3 9.4 Un exemple de rafnage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La technique de rafnage . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un exemple de squelette de dpart . . . . . . . . . . . . . . . . . . . . . . . Un exemple de sortie de lalgorithme de recherche de parties non linaires Algorithme de recherche de parties non linaires . . . . . . . . . . . . . . . Lattaque boomerang contre les algorithmes de chiffrement par blocs . . . Lattaque boomerang contre les fonctions de hachage . . . . . . . . . . . . Division dun chemin diffrentiel en trois sous-parties . . . . . . . . . . . . Chemin diffrentiel auxiliaire AP1 . . . . . . . . . . . . . . . . . . . . . . . Chemin diffrentiel auxiliaire AP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 . 89 . 90 . 91 . 92 . 95 . 96 . 97 . 103 . 104 108 109 110 111 112 113

Une paire de messages aboutissant une collision pour SHA-0 . . . . . . . . . . . Une paire de messages aboutissant une collision pour SHA-1 rduit 70 tours . Premier chemin diffrentiel pour lattaque sur SHA-0 [MP08] . . . . . . . . . . . Second chemin diffrentiel pour lattaque sur SHA-0 [MP08] . . . . . . . . . . . . Premier chemin diffrentiel pour lattaque sur SHA-1 rduit 70 tours [JP07c] . . Second chemin diffrentiel pour lattaque sur SHA-1 rduit 70 tours [JP07c] . .

Vue schmatique de la fonction de hachage Grindahl . . . . . . . . . . . . . . . . 120 Chemin diffrentiel tronqu commenant par une paire dtats partout diffrents 126 Squelette de la fonction de compression de FORK-256 . . . . . . . . . . . Transformations utilises pour FORK-256 . . . . . . . . . . . . . . . . . . Une pseudo-presque collision avec 22 bits de diffrence pour FORK-256 Chemin diffrentiel utilis pour calculer des collisions pour FORK-256 . . . . . . . . . . . . . . . . . . . . . 134 135 145 148

xii

P REMIRE PARTIE

Introduction gnrale

La cryptologie, tymologiquement la science du secret, ne peut tre vraiment considre comme une science que depuis peu de temps. Mme si lon retrouve des utilisations de cet art jusqu lAntiquit, ce nest que rcemment quelle est devenue un sujet de recherche acadmique, et quelle a trouv sa motivation hors des seules applications militaires. Cette discipline se situe prsent la frontire des mathmatiques, de linformatique et de llectronique et lon peut la diviser en deux sous-parties : la cryptographie, qui dnit les mcanismes mis en oeuvre pour garantir des proprits de scurit, et la cryptanalyse qui analyse et tente de mettre en dfaut ces proprits. Le but principal de la cryptographie est de limiter laccs certaines informations ou certaines ressources aux seules personnes dsires. Les premires solutions apportes taient physiques et protgeaient le support plutt que linformation transporte (par exemple un coffre-fort ou une porte ferme cl). Cependant, en pratique, il est difcile de garantir la scurit dun support. Ainsi, dans le cas dune transmission dinformations, le besoin de protger linformation elle-mme apparut rapidement. Lhistoire de la cryptologie peut schmatiquement tre subdivise en trois phases. De lAntiquit aux grandes guerres, les mthodes utilises taient peu labores et reposaient rarement sur une thorie pralablement tablie. Durant la Seconde Guerre mondiale, le milieu militaire et diplomatique se rendit compte de limportance de la cryptologie. Lattention qui y fut porte fut grandement accrue, en particulier en ce qui concerne la cryptanalyse. De lamlioration des techniques danalyse dcoula immdiatement une nette amlioration de la qualit des nouveaux systmes de chiffrement. Enn, depuis lapparition des ordinateurs et le dveloppement de linformatique, la cryptologie sinsre au coeur du quotidien. Aujourdhui, des primitives cryptographiques sont prsentes dans les tlphones portables, les ordinateurs, les cartes puce, etc., pour des domaines dapplication varis tels que les tlcommunications, la protection des transactions bancaires, la tlvision page, les transmissions militaires et diplomatiques, etc. Cette varit a fortement contribu lessor de cette science, mais en a aussi diversi les enjeux. Au problme de condentialit sont venus sajouter lauthentication, lintgrit des donnes, la signature numrique, etc. Aujourdhui, les concepteurs tentent de rpondre des problmes aussi complexes que le vote lectronique. Historiquement, les systmes cryptographiques ont dabord t cl secrte (et relevaient donc exclusivement de la cryptographie symtrique) : deux utilisateurs souhaitant changer des informations condentielles doivent au pralable possder une cl connue deux seuls. Cette unique cl sera leur secret partag et servira pour toute utilisation cryptographique, chiffrement ou authentication. la n des annes 1970 apparut la cryptographie cl publique (ou cryptographie asymtrique), qui utilise deux cls relies entre elles pour chaque utilisateur : une cl publique (connue de tous) et une cl prive (connue seulement de lutilisateur). Le chiffrement dune information seffectue avec la cl publique et le dchiffrement seffectue avec la cl prive. Ainsi, tout un chacun peut chiffrer un message pour lutilisateur, mais lui seul peut dchiffrer un message qui lui est destin. Inversement, la signature dun message se ralise avec la cl secrte et lon vrie cette signature laide de la cl publique. Seul lutilisateur peut calculer sa signature dun message, mais tout un chacun peut vrier la validit de cette signature. Dans un article fondateur, Ron Rivest, Adi Shamir, et Leonard Adleman proposrent le systme de chiffrement cl publique RSA, qui est de loin le cryptosystme asymtrique le plus utilis aujourdhui. Les performances de la cryptographie symtrique sont trs bonnes, les algorithmes cl secrte faisant partie des primitives les plus rapides. Au contraire, la cryptographie cl publique, effectuant en gnral des oprations trs coteuses, nest pas adapte de longs messages. De ce fait, en pratique, on ralise souvent un compromis entre ces deux familles de 3

technique : le problme dchange de secret (ltablissement dune cl symtrique) est rsolu par lutilisation dun cryptosystme cl publique, tandis que le message sera chiffr avec un algorithme cl secrte. Dans ce mmoire, nous nous intressons aux fonctions de hachage cryptographiques, et plus particulirement leur cryptanalyse. Les fonctions de hachage cryptographiques font simplement correspondre un message de taille arbitraire, une sortie de taille xe, appele hach. Informellement, lide sous-jacente est que toute modication, mme inme, du message dentre, doit induire des modications importantes et imprvisibles du hach en sortie. Par exemple, lune des proprits recherches est quil doit tre trs difcile pour un attaquant de trouver une collision, cest--dire deux messages distincts ayant un hach identique. Pour des raisons historiques et bien quelles soient largement utilises en dehors de ce seul domaine, ces fonctions sont considres comme faisant partie de la cryptographie symtrique. De par leur proprit assez unique en cryptographie de ne dpendre daucun secret, elles diffrent signicativement des autres primitives symtriques telles que les algorithmes de chiffrement par blocs ou les algorithmes de chiffrement ot. Grce entre autres leur rapidit, leur utilit est nanmoins trs tendue en scurit informatique en gnral : de la signature numrique lintgrit des donnes en passant par le stockage de mots de passe. Les fonctions de hachage sont lun des sujets les plus tudis actuellement en cryptographie, et le National Institute of Standards and Technology (NIST) vient de lancer un appel soumissions dans le but de trouver le prochain algorithme qui sera standardis. Dans cette premire partie, nous introduisons les notations et dnitions relatives aux fonctions de hachage ainsi que les principales techniques de conception de telles fonctions. Ensuite, dans la deuxime partie, nous tudions la cryptanalyse des fonctions de hachage de la famille MD-SHA, les plus utilises en pratique. Nous rappelons en dtail les prcdentes avances et nous expliquons comment nos travaux permettent damliorer ces attaques existantes. Enn, dans la troisime et dernire partie, nous dcrivons des attaques contre deux fonctions de hachage assez rcentes, G RINDAHL et FORK-256. Durant les trois annes de recherche pour cette thse en cryptographie, nous avons publi plusieurs articles ayant trait aux fonctions de hachage, aussi bien en ce qui concerne la partie conception [PGM06, SP07, BPR07, BCC07] que la partie cryptanalyse [MP06, MPB07, JP07a, JP07b, Pey07, MP08, GLP08, YIN08b]. Auparavant, nous nous sommes intresss des sujets tels que la reprsentation dentiers pour des oprations algbriques sur des courbes elliptiques [AMP04], lchange authenti de cls pour des applications telles que le Bluetooth [PV05], ou encore la cryptanalyse dalgorithme de chiffrement ot [MP05].

C HAPITRE 1

Les fonctions de hachage cryptographiques


Sommaire
1.1 1.2 1.3 Les fonctions de hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Proprits des fonctions de hachage . . . . . . . . . . . . . . . . . . . . . . Utilisations pratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6 9

Une fonction de hachage est une fonction prenant en entre un lment de taille variable et renvoyant en sortie un lment de taille xe et prdtermine. Ces fonctions sont trs utiles notamment dans le domaine des bases de donnes. Elles permettent de manipuler de trs grandes structures tout en gardant une vitesse acceptable en ce qui concerne la recherche dlments. Cependant, dans ce mmoire, nous considrons uniquement une sous-classe des fonctions de hachage : les fonctions de hachage cryptographiques. Ces dernires ont la particularit de vrier certaines proprits qui rendent leur utilisation trs pratique dans le domaine de la scurit de linformation. En gnral, on souhaite viter le plus possible la situation o deux entres distinctes sont envoyes sur la mme valeur de sortie par la fonction de hachage (situation appele collision). La principale diffrence entre les fonctions de hachage classiques et les fonctions de hachage cryptographiques est que ces dernires ne doivent pas pouvoir tre inverses facilement. Une fonction de hachage classique a trs peu de chances de vrier cette proprit de scurit. Il en est de mme en ce qui concerne les collisions : pour une fonction de hachage classique, on souhaite uniquement que des messages choisis au hasard naboutissent une collision quavec une probabilit relativement faible en moyenne. Pour une fonction de hachage cryptographique, on souhaite quil soit difcile pour un adversaire de trouver une collision, cet adversaire pouvant choisir loisir les messages et donc essayer de se placer dans un cas qui lui est favorable. Nous introduisons dans ce chapitre diverses dnitions et notations relatives ces fonctions, les critres de scurit auxquels elles doivent satisfaire, ainsi que leurs principales utilisations en pratique. Dans la suite de ce mmoire, nous utiliserons le terme fonctions de hachage pour dsigner les fonctions de hachage cryptographiques.

1.1

Les fonctions de hachage

Une fonction de hachage H de taille de sortie n est un algorithme faisant correspondre un message M de taille arbitraire un lment H(M ) de taille n bits appel hach. En pratique, n est 5

Chapitre 1. Les fonctions de hachage cryptographiques de lordre de plusieurs centaines de bits, typiquement 128, 160, 256 ou 512 bits. Mme si le paralllisme est en gnral une bonne proprit pour une primitive que lon souhaite rapide, on ne peut pas construire une fonction de hachage de manire totalement parallle (en traitant simultanment tous les morceaux de message). En effet, dans ce cas, la quantit de mmoire requise par ltat interne de la fonction pour le calcul du hach serait dpendante de la taille du message hacher. Si le message est trs long, une utilisation dans des environnements contraints en mmoire sera impossible. La premire grande avance dans le domaine des fonctions de hachage fut lalgorithme de Merkle-Damgrd [Mer89, Dam89], qui permet de construire des fonctions de manire itre en traitant les morceaux de message squentiellement. Ce procd, que nous dcrivons plus en dtail dans le prochain chapitre, inuena considrablement la recherche dans ce domaine, si bien quaujourdhui presque toutes les fonctions de hachage reposent sur une construction en srie (suivant un processus itratif). Dans la construction de Merkle-Damgrd, la fonction de hachage possde un tat interne de N bits, initialis une certaine valeur prdtermine (appele IV). Nous dnissons une fonction de hachage itre comme tant compose de deux transformations : la compression et la fonction dextension de domaine. Durant litration i, une fonction de compression, note h, prend en entre ltat interne actuel Hi1 de la fonction de hachage (que nous appelons variable de chanage) et un nouveau bloc de message hacher de m bits not Mi . Cette fonction permet ainsi de hacher des messages de taille xe et renvoie une nouvelle variable de chanage Hi , qui reprsente le nouvel tat interne de la fonction de hachage : Hi = h(Hi1 , Mi ). La fonction h est appele fonction de compression parce quelle fait correspondre N bits N + m bits. La fonction dextension de domaine permet de traiter des messages de taille arbitraire, et non plus xs m bits. Pour cela, on dnit la prparation initiale du message hacher (le rembourrage) et la mthode dutilisation de la fonction de compression pour nalement traiter lintgralit du message.

1.2

Proprits des fonctions de hachage

Les fonctions de hachage doivent possder plusieurs proprits utiles en cryptographie. Les principales sont la rsistance aux attaques recherchant des collisions, des primages ou des secondes primages. collision : trouver deux messages distincts M 1 et M 2 , tels que H(M 1 ) = H(M 2 ). seconde primage : tant donn un message M 1 choisi alatoirement, trouver un message distinct M 2 tel que H(M 1 ) = H(M 2 ). primage : tant donn un hach H 1 choisi alatoirement, trouver un message M 1 tel que H(M 1 ) = H 1 . Il doit tre impossible pour un attaquant de trouver une collision, une primage ou une seconde primage. On remarque que puisque la taille dentre de la fonction de hachage est arbitrairement grande, des collisions existent ncessairement (si lon choisit 2n + 1 messages
une autre dnition possible de primage existe : on tire alatoirement un message et lon donne uniquement le hach de ce message comme d lattaquant. Cela vite de proposer un d potentiellement irralisable.

1.2. Proprits des fonctions de hachage distincts, il existera obligatoirement une paire de messages aboutissant au mme hach). On dnit donc limpossibilit dun attaquant relativement une certaine quantit doprations, dtermine par la meilleure attaque gnrique contre une fonction de hachage idale. Ainsi, un attaquant ne doit pas tre en mesure de trouver une primage en moins de O(2n ) oprations, puisque la meilleure attaque gnrique consiste essayer O(2n ) messages distincts pour avoir une bonne probabilit de succs dobtenir une solution. Le raisonnement est identique pour la seconde primage, O(2n ) oprations sont ncessaires dans le cas dune fonction de hachage idale. En ce qui concerne la collision, lattaque gnrique est moins triviale. Elle utilise le paradoxe des anniversaires : pour trouver deux valeurs identiques parmi a valeurs possibles, il suft den tirer alatoirement a pour avoir une bonne probabilit de succs. Cela sexplique par lobservation quen tirant a lments, on forme approximativement ( a)2 /2 = a/2 paires possibles, ce qui est sufsant pour obtenir une bonne probabilit de succs tant donn la taille de lensemble de tirage. Ainsi, nous devons utiliser 2n/2 messages pour trouver une collision pour une fonction de hachage idale. Lattaque originale [Yuv79] requiert beaucoup de mmoire, mais des versions sans mmoire ou parallles furent ensuite publies [QD89, VW99], et Wagner [Wag02] gnralisa le problme plus de deux lments. On se rend compte facilement que la rsistance aux attaques trouvant des collisions implique labsence dattaque de complexit strictement infrieure 2n/2 oprations trouvant des secondes primages (linverse tant faux). On ne peut nanmoins rien dire en ce qui concerne le lien entre les primages et les collisions (des contre-exemples sont dcrits dans [Handbook]). Ces notions de scurit peuvent aussi tre appliques aux fonctions de compression, la seule diffrence tant la taille xe des messages et la possibilit pour lattaquant de choisir ou non la variable de chanage dentre. Le nombre doprations pour une attaque gnrique reste identique aux cas respectifs des fonctions de hachage. collision : tant donn un tat interne Hi1 choisi alatoirement, trouver deux blocs de message distincts Mi1 et Mi2 tels que h(Hi1 , Mi1 ) = h(Hi1 , Mi2 ). collision libre : trouver deux blocs de message distincts Mi1 et Mi2 et un tat interne Hi1 tels que h(Hi1 , Mi1 ) = h(Hi1 , Mi2 ). seconde primage : tant donn un tat interne Hi1 et un bloc de message Mi1 choisis alatoirement, trouver un bloc de message distinct Mi2 tel que h(Hi1 , Mi1 ) = h(Hi1 , Mi2 ). seconde primage libre : tant donn un bloc de message Mi1 choisi alatoirement, trouver un bloc de message distinct Mi2 et un tat interne Hi1 tels que h(Hi1 , Mi1 ) = h(Hi1 , Mi2 ). primage : tant donn deux tats internes Hi1 et Hi choisis alatoirement, trouver un bloc de message Mi1 tel que Hi = h(Hi1 , Mi1 ). primage libre : tant donn un tat interne Hi choisi alatoirement, trouver un tat interne Hi1 et un bloc de message Mi1 tels que Hi = h(Hi1 , Mi1 ). La rsistance aux recherches de collisions est une notion assez difcile formaliser puisquen cryptographie on considre le meilleur des attaquants possibles. En effet, il existe toujours un attaquant possdant une collision pour la fonction de hachage, et renvoyant cette paire de messages. Rcemment, Rogaway [Rog06] a introduit le concept de lignorance humaine, pour formaliser le fait quil existe effectivement toujours un tel attaquant, la difcult tant de le trouver. Tout le problme vient du fait que, contrairement au cas de la primage ou celui de la seconde primage, aucun d nest soumis lattaquant. Il doit calculer une collision 7

Chapitre 1. Les fonctions de hachage cryptographiques sans aucune contrainte impose par le joueur adverse. Un contournement de ce problme fut lintroduction du concept de famille de fonctions de hachage : toute fonction de hachage H est paramtre par une nouvelle entre (par exemple lIV) pour former une famille de fonctions. On pourra prsent der lattaquant en lui demandant de trouver une collision pour un membre de la famille choisi alatoirement. Ainsi, comme pour les fonctions de compression, on peut distinguer les cas de collision et de collision libre (ou primage et primage libre) pour les familles de fonctions de hachage, suivant que ladversaire peut choisir lIV ou que celui-ci lui est impos. Ce modle, utile pour les preuves de scurit, sloigne du cas rel puisquen pratique ce paramtre nexiste pas et que lIV est xe. La notion de famille de fonctions de hachage apporta de nouvelles proprits de scurit, plus sophistiques, mais utiles pour analyser nement un candidat. Par exemple, on peut imaginer que lattaquant choisit des IV potentiellement diffrents, aussi bien pour les collisions que pour les secondes primages. On parlera dans le premier cas de pseudo-collision et nous proposons, pour distinguer le second cas, lappellation de pseudo-seconde primage. Pour ces deux notions de scurit, dont une dnition est donne ci-dessous, le nombre doprations requis pour une attaque gnrique est gal O(2n/2 ) (trouver une pseudo-seconde primage est donc beaucoup plus facile quune seconde primage). De mme, les pseudo-collisions ou pseudo-secondes primages existent aussi pour les fonctions de compression en utilisant des tats internes initiaux et potentiellement diffrents pour chaque message. On remarque que ces notions de scurit sont les plus fortes et les plus gnriques prsentes ici pour une fonction de compression, et traitent les messages et la variable de chanage de manire identique. Ceci tend montrer que si lon souhaite construire une fonction de compression idale, le message et la variable de chanage doivent y jouer un rle identique. Nous verrons que cela nest que trs rarement le cas en pratique. pseudo-collision : trouver deux couples distincts bloc de message/tat interne (Mi1 ,Hi1 1 ) 1 , M 1 ) = h(H 2 , M 2 ). et (Mi2 ,Hi2 ) tels que h ( H 1 i1 i i1 i pseudo-seconde primage : tant donn un bloc de message Mi1 choisi alatoirement, 2 2 trouver un tat interne Hi1 1 et un couple bloc de message/tat interne (Mi ,Hi1 ) = 1 1 1 1 2 2 (Mi ,Hi1 ) tels que h(Hi1 , Mi ) = h(Hi1 , Mi ). Par ailleurs, on peut gnraliser le principe de collision en stipulant que lattaquant ne doit pas tre capable dobtenir une certaine diffrence entre deux hachs, quelle que soit cette diffrence. La collision devient alors un cas particulier o la diffrence est nulle. Nous appelons ce type dattaque une presque collision et lon note h(Hi1 , Mi1 ) h(Hi1 , Mi2 ) lorsque les deux valeurs de hach sont trs similaires. On applique identiquement ce principe aux primages et secondes primages et le nombre doprations pour une attaque gnrique ne change pas (sauf par exemple dans le cas o la diffrence en sortie ne serait pas impose sur tous les bits). De mme, on peut parler de presque collisions ou de presque primages pour les fonctions de compression si lon prvoit une certaine diffrence sur les tats internes de sortie. Rogaway et Shrimpton [RS04] ont continu dlargir le panel de proprits de scurit en tudiant des scnarios o lattaquant possde le contrle sur le paramtre dentre, mais pas sur le d (a-primage et a-seconde primage) ; ou sur le d, mais pas sur le paramtre dentre (e-primage et e-seconde primage). Ils ont de plus tudi les liens entre ces diffrentes notions. On pourrait continuer dtendre ces notions, par exemple, en distinguant suivant lordonnancement du processus de d : dans le cas de la-primage, la situation o lattaquant choisit le paramtre dentre avant de recevoir le d est diffrente de celle o il choisit le paramtre dentre aprs avoir reu le d (ce qui correspond une primage libre). Enn, le mlange des 8

1.3. Utilisations pratiques diffrentes notions entre elles nous en fournit encore de nouvelles. Plus la quantit de proprits vries est leve et plus lon se rapproche dune primitive idale. Les opinions sont partages parmi les cryptologues en ce qui concerne la simulation dun oracle alatoire [BR93] par une fonction de hachage. Un oracle alatoire est une primitive idale, prenant en entre une valeur de taille arbitraire et renvoyant une valeur de taille xe en sortie. Ce modle, trs utilis pour les preuves de scurit en cryptographie, suppose que lon dispose dune fonction simulant cet oracle et ne pouvant pas tre distingue de ce composant idal. Certains chercheurs avancent que puisquen pratique les oracles alatoires (indispensables pour lobtention de preuves de scurit) sont remplacs par des fonctions de hachage, ces dernires ne doivent comporter aucune proprit spciale qui pourrait les en distinguer. Rcemment, cette notion fut prcise en considrant lindiffrentiabilit dune fonction de hachage dun oracle alatoire [MRH04]. Dautres chercheurs prconisent de se concentrer uniquement sur les proprits fondamentales des fonctions de hachage, dj complexes assurer, plutt que dessayer de concevoir une fonction idale tous points de vue.

1.3

Utilisations pratiques

Les schmas de signature sont sans doute lapplication la plus importante des fonctions de hachage. Ils permettent un utilisateur de signer un message laide de sa cl prive. Chacun peut vrier la validit de cette signature grce la cl publique correspondante. Les oprations internes de ces primitives cryptographiques sont en gnral trs coteuses, car elles appartiennent la cryptographie asymtrique. Ainsi, leur application un trs long message demande un temps de calcul trop grand dans certains cas pratiques. Les fonctions de hachage sont donc utilises pour raccourcir le message signer et amliorer les performances : on signe le hach du message plutt que lintgralit du message. Dans cette situation, on souhaite quun attaquant susceptible dobtenir les signatures de certains messages choisis soit incapable de crer une nouvelle signature valide sans connatre la cl prive de lutilisateur. Aussi, tant donns plusieurs couples message/signature, il doit tre impossible pour lui de deviner la moindre information sur la cl prive. Par impossible , nous entendons que le meilleur moyen possible pour un attaquant est dutiliser une attaque gnrique, cest--dire indpendante du fonctionnement interne de la primitive. Il est donc important que les fonctions de hachage soient rsistantes la recherche de collisions ou de primages. Par exemple, la connaissance dune collision pour la fonction de hachage permettrait de calculer deux messages distincts aboutissant la mme signature : en demandant la signature du premier message, on pourrait en dduire celle du deuxime message. Une autre application importante des fonctions de hachage concerne les codes dauthentication de message (ou MAC), qui appartiennent la cryptographie symtrique et manipulent donc une cl secrte. Ces primitives servent vrier lintgrit dun message et authentier son expditeur. Tout comme pour les signatures, il doit tre impossible pour lattaquant de retrouver la moindre information sur la cl secrte. Aussi, un attaquant doit tre incapable de crer un MAC valide pour un nouveau message. Plusieurs techniques de construction existent, mais lune des plus connues, HMAC, est fonde sur une fonction de hachage. Dans leur article original, Bellare et al. [BCK96] dmontrrent la scurit dun tel schma sous certaines conditions concernant la fonction de hachage interne. Cette preuve fut amliore quelques annes plus
ladversaire considr ici est le plus fort, mais lon peut aussi admettre quil ne puisse pas choisir les messages de manire adaptative, ou mme quil ne puisse pas les choisir du tout.

Chapitre 1. Les fonctions de hachage cryptographiques tard [Bel06] en saffranchissant de lune des conditions, qui tait peu intuitive. Actuellement, de nombreux travaux [CY06, FLN07, KBP06, WOK08] tentent de transformer les vulnrabilits de certaines fonctions de hachage en attaques retrouvant la cl secrte ou calculant des signatures valides pour lalgorithme HMAC. Les fonctions de hachage sont utiles pour de nombreuses autres applications, telles que la protection de mots de passe : dans un serveur, au lieu de stocker tous les mots de passe dutilisateurs, il est prfrable de stocker les hachs de ces derniers. Lauthentication peut toujours avoir lieu, mais, si le serveur est compromis, lattaquant na accs quaux hachs des mots de passe. Il ne peut donc thoriquement pas retrouver les mots de passe originaux cause de la proprit de rsistance la recherche de primages. Les fonctions de hachage sont aussi utilises dans certains protocoles pour sengager lavance sur le choix dune certaine valeur ou mme pour conrmer la connaissance dun certain secret, sans le rvler. Par exemple, le calcul de secret partag entre deux entits utilise souvent ce genre de techniques. Un autre exemple dapplication pratique est la drivation de cls cryptographiques ou encore la vrication dintgrit de chiers publics. Les fonctions de hachage ont donc plusieurs rles en cryptographie et servent souvent de couteau suisse grce aux nombreuses proprits quelles vrient. Chaque utilisation ne ncessite quun sous-ensemble de ces proprits, ce qui signie quen gnral la fonction de hachage satisfait plus de proprits de scurit que ne lexige son rle rel. Nanmoins, il est plus facile pour les chercheurs de se focaliser sur un seul candidat analyser plutt que de crer une fonction spcique pour chaque type dutilisation. Cela simplie fortement le processus de standardisation et, de plus, ltat actuel des connaissances ne permet pas de rellement saisir toutes les imbrications entre les diffrentes notions de scurit dune fonction de hachage et celles des constructions les utilisant. Par exemple, nous ne connaissons pas aujourdhui parfaitement le danger rel pour toutes les applications connues de lapparition dune attaque trouvant des collisions contre la fonction de hachage. En coopration avec plusieurs membres du projet RNRT SAPHIR [Saphir], nous avons combl en partie ce manque en analysant les implications entre certaines notions de scurit des fonctions de hachage et celles de schmas de signature [BCC07].

10

C HAPITRE 2

Lextension de domaine
Sommaire
2.1 2.2 2.3 Lalgorithme de Merkle-Damgrd . . . . . . . . . . . . . . . . . . . . . . . 11 Les vulnrabilits de lalgorithme de Merkle-Damgrd . . . . . . . . . . 13 Les nouveaux algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Lextension de domaine est lune des deux composantes dune fonction de hachage itre. En raison de sa simplicit, lalgorithme de Merkle-Damgrd est demeur longtemps seul et incontest, mais rcemment, des recherches ont montr les limites de cette technique. prsent, de nombreux chercheurs tentent de proposer une nouvelle mthode, la fois simple et sre, qui pourrait simposer comme nouveau standard.

2.1

Lalgorithme de Merkle-Damgrd

En 1989, Ralph Merkle [Mer89] et Ivan Damgrd [Dam89] proposrent indpendamment un algorithme dextension de domaine trs simple, dont certaines proprits de scurit peuvent tre dmontres en supposant certaines proprits de la fonction de compression interne. On prpare tout dabord le message hacher M en y ajoutant un rembourrage. La fonction de compression prenant en entre des blocs de message de taille xe m, le rembourrage permet de ramener la taille du message hacher un multiple de m. Pour cela, on rajoute tout dabord M un bit 1 puis u bits 0, o u est le plus petit nombre positif ou nul tel que la longueur nale du message soit gale m v (mod m) (typiquement, v = 64 bits). Ensuite, un deuxime rembourrage intervient : on ajoute un bloc de v bits contenant la reprsentation en base binaire de la taille de M . La taille nale du message rembourr sera bien un multiple de m. On remarque que la taille maximale de message pouvant tre hache est limite 2v bits, mais en pratique ce nombre est assez grand pour ne jamais tre atteint. Le message rembourr est ensuite divis en k blocs de message Mi de m bits chacun, qui serviront mettre jour la variable de chanage Hi1 pour donner Hi laide de la fonction de compression h : Hi = h(Hi1 , Mi ). La variable de chanage initiale H0 est x la valeur dIV et la dernire variable de chanage Hk permet de dduire le hach nal. En gnral, ltat interne de la fonction de hachage est de mme taille n que le hach nal. Dans ce cas, le hach est directement gal Hk . Si ltat interne est plus grand que la taille de hach, on doit effectuer une certaine troncature pour obtenir la bonne taille de sortie. Il est aussi possible dappliquer une fonction de sortie sur Hk 11

Chapitre 2. Lextension de domaine avant dobtenir le hach, mais cette tape est souvent omise en pratique. Le processus entier est dcrit en gure 2.1. Dans la suite, sauf mention contraire, nous considrons que la taille de ltat interne de la fonction de hachage est gale celle du hach : n = N .

MESSAGE

rembourrage

M1
IV
n bits m bits

M2

Mk1

Mk
n bits

h
H0 H1

h
H2 Hk 2

h
Hk 1

h
Hk

hach
F IG . 2.1 Lalgorithme de Merkle-Damgrd [Mer89, Dam89]. Aprs rembourrage, le message est divis en blocs de m bits. Chacun de ces blocs Mi opre la mise jour par la fonction de compression h de la variable de chanage Hi1 pour donner Hi . Le succs de cet algorithme dextension de domaine vient de sa preuve de scurit trs simple et trs utile. Plus prcisment, on peut prouver que toute fonction de compression rsistante aux attaques trouvant des pseudo-collisions fournit par cette mthode une fonction de hachage rsistante aux attaques trouvant des collisions. On sen convainc facilement en remarquant quune collision sur la fonction de hachage entrane lexistence dune pseudocollision sur la fonction de compression une certaine itration. Le cas o lattaquant trouve un message M tel que h(IV, M ) = IV est pris en compte par le deuxime rembourrage, qui empche quun message rembourr soit le sufxe dun autre message rembourr. Il vite aussi certaines attaques triviales, notamment en ce qui concerne les pseudo-collisions : en choisissant IV = h(IV, M 1 ), si lon omet le deuxime rembourrage, nous calculons immdiatement la pseudo-collision h(IV, M 1 ||M 2 ) = h(IV , M 2 ). Cette preuve est quelquefois mal interprte parmi les chercheurs : il est admis par certains auteurs quune attaque contre la fonction de compression permettant de trouver des pseudocollisions rend vulnrable la fonction de hachage totale. Ceci est a priori faux puisquaucun algorithme gnrique ne permet de trouver une collision pour la fonction de hachage partir de pseudo-collisions pour la fonction de compression interne. Il est nanmoins vrai que la preuve de scurit nest plus valide dans ce cas. Il serait dailleurs intressant de trouver une hypothse ncessaire et sufsante pour cette preuve : il semble trop fort dempcher lattaquant de trouver des pseudo-collisions sur la fonction de compression (sauf prouver le contraire en tablissant une attaque gnrique), mais, dautre part, ne considrer que la rsistance la recherche de collisions est trop faible. 12

2.2. Les vulnrabilits de lalgorithme de Merkle-Damgrd Le cas de la primage est plus simple. La preuve de Merkle-Damgrd sapplique de la mme manire : une fonction de compression rsistante la recherche de primages libres aboutira une fonction de hachage rsistante la recherche de primages. Cependant, lhypothse est ici ncessaire puisquun algorithme gnrique [Pre93] permet de transformer des primages libres pour la fonction de compression en primages pour la fonction de hachage. De manire simplie, on choisit 2(n+s)/2 blocs de message qui nous fournissent 2(n+s)/2 variables de chanage partir de lIV que lon stocke dans une premire liste. On inverse ensuite 2(ns)/2 fois la fonction de compression partir de la valeur de hach du d (calcul de primages libres) pour obtenir encore 2(ns)/2 variables de chanage que lon stocke dans une deuxime liste. On applique enn une technique de rencontre au milieu : on trouve une valeur de variable de chanage prsente dans les deux listes (en les triant par exemple), ce qui nous donne une primage. Nous avons une bonne probabilit de succs puisque le paradoxe des anniversaires sapplique dans notre cas : nous avons bien 2(ns)/2 2(n+s)/2 = 2n couples possibles. Enn, la complexit nale est de O(2(n+s)/2 ) oprations si lon est en mesure de calculer des primages libres en O(2s ) oprations. On remarque que si s < n (la fonction de compression nest pas rsistante la recherche de primages libres), alors 2(n+s)/2 < 2n et nous avons bien une meilleure attaque que celle gnrique pour la recherche de primages pour la fonction de hachage.

2.2

Les vulnrabilits de lalgorithme de Merkle-Damgrd

Lun des premiers problmes concernant la scurit de lalgorithme de Merkle-Damgrd fut dcouvert rapidement. Une fonction de hachage H simulant un oracle alatoire doit fournir des constructions de MAC sres en utilisant par exemple MACK (M ) = H(K ||M ), o K reprsente la cl secrte et M le message. Or, cette construction prsente des vulnrabilits si lon utilise une fonction de hachage fonde sur le principe de Merkle-Damgrd. En effet, supposons que lon demande le MAC pour la cl secrte K du message M1 . On obtient MACK (M1 ) = H(K ||M1 ). Puisque lon connat ltat interne de la fonction de hachage la dernire itration (cest le hach), on peut parfaitement calculer H(K ||M1 ||M2 ), ce qui est gal MACK (M1 ||M2 ). Nous avons ainsi engendr un nouveau MAC valide, sans pour autant connatre la cl secrte. Cette vulnrabilit sur lalgorithme dextension de domaine, appele attaque par extension de longueur, fut corrige bien plus tard par Coron et al. [CDM05]. De nouveaux types dattaques ont galement t mis en vidence. Tout dabord, Joux introduisit le concept de multicollisions [Jou04] : une k-multicollision est un ensemble de k messages aboutissant tous la mme valeur de sortie (une collision est donc une 2-multicollision). Pour une fonction de hachage simulant un oracle alatoire, on devrait excuter O(2n(k1)/k ) oprations pour avoir une bonne probabilit dobtenir une k -multicollision. Dans le cas dune fonction de hachage fonde sur le principe de Merkle-Damgrd, cela est beaucoup plus simple : on trouve tout dabord une collision sur la fonction de compression partir de lIV (avec O(2n/2 ) oprations). Ensuite, partir de la nouvelle variable de chanage, on trouve une nouvelle collision interne (encore avec O(2n/2 ) oprations). On continue, de la mme manire, jusqu forcer k collisions internes. Ces k collisions vont nalement nous donner 2k chemins diffrents pour aboutir la variable de chanage nale et nous obtenons donc une 2k -multicollision en excutant seulement O(k 2n/2 ) oprations. Cette technique est dcrite en gure 2.2. Si la taille de ltat interne est gale celle du hach, aucun algorithme dextension de domaine ne corrige cette vulnrabilit ce jour except le schma de Maurer et al. [MT07]. Ces travaux de Joux ont aussi montr que la concatnation des hachs de deux fonctions 13

Chapitre 2. Lextension de domaine de hachage indpendantes namliore pas la rsistance en collision autant que lexigerait laugmentation de la taille du hach nal : en engendrant une 2n/2 -multicollision sur lun des hachs, on obtient une bonne probabilit de trouver une collision pour le deuxime hach parmi ces candidats. Pour une taille de hach nal de 2n, nous trouvons donc des collisions laide de seulement n/2 2n/2 oprations approximativement.

M1
H0 H1

M3 M2
H2 H3

M4
H4

M5

H5

M1

M3

M4

F IG . 2.2 Exemple de lattaque par multicollisions de Joux [Jou04] pour lalgorithme dextension de domaine de Merkle-Damgrd. Chaque che reprsente une transition dune variable de chanage Hi une variable de chanage Hi+1 par lapplication de la fonction de compression h avec le bloc de message Mi . Dans le cas o lon ralise une collision sur h, on note Mi le second bloc de message. Dans cet exemple, nous avons 3 collisions internes, ce qui nous fournit une 8-multicollision pour le hach nal en seulement 3 2n/2 oprations approximativement (au lieu de 27n/8 oprations dans le cas idal). De nouvelles vulnrabilits furent ensuite publies. Par exemple, Dean [Dea99] puis Kelsey et Schneier [KS05] montrrent que lon peut trouver une seconde primage pour une fonction de hachage fonde sur le principe de Merkle-Damgrd en moins de 2n oprations. Cette attaque, qui peut tre vue comme une gnralisation du travail prcdent de Joux, utilise nanmoins de trs longs messages. Plus le message du d est long, meilleure sera la complexit nale de lattaque. On peut enn noter le travail de Kelsey et al. [KK06], qui dcrit lattaque par rassemblement, permettant de sengager lavance et de manire frauduleuse sur une valeur de hach. Ces travaux furent tendus plus tard par Dunkelman et al. [DP07].

2.3

Les nouveaux algorithmes

Beaucoup de nouveaux candidats apparaissent pour tenter de remplacer lalgorithme dextension de domaine de Merkle-Damgrd. On peut citer par exemple les rcentes propositions HAIFA [BD06], EMD [BR06], ROX [ANP07], etc. Nanmoins, mme si chacune de ces propositions possde certaines qualits, aucune dentre elles ne corrige les problmes de multicollisions ; hormis celle de Maurer et al. [MT07] qui permet de concevoir un oracle alatoire de taille dentre variable partir dun oracle alatoire de taille dentre xe au prix dune construction peu pratique. Lune des solutions possibles ce problme serait daugmenter la taille de ltat interne de la fonction de hachage ( taille de hach constante), pour rendre trop coteuse la recherche de collisions internes. Pour tenter dobtenir une fonction de hachage idale, nous devrons mme satisfaire N 2n. Cette possibilit, dj pressentie par Joux [Jou04] puis formalise par Lucks [Luc05], attire de plus en plus les concepteurs de nouveaux schmas, comme en tmoignent les dernires fonctions de hachage publies. 14

2.3. Les nouveaux algorithmes Enn, les fonctions ponges [BDP06, BDP08] semblent assez prometteuses pour construire des fonctions de hachage. Lide est dutiliser un tat interne trs grand pour viter toute possibilit de trouver une collision, tout en rendant trs lgre la fonction de compression. La rsistance la recherche de primages est renforce par une fonction de sortie trs robuste. Cependant, nous avons montr dans [Pey07] et nous expliquons dans la dernire partie de ce mmoire que pour la fonction de hachage G RINDAHL, trs proche des fonctions ponges, la rsistance la recherche de collisions nest pas satisfaite. Nous avons aussi publi dautres vulnrabilits des fonctions ponges quant la construction de MAC [GLP08, Pey08].

15

Chapitre 2. Lextension de domaine

16

C HAPITRE 3

Fonctions de compression
Sommaire
3.1 3.2 3.3 Fonctions de compression ad hoc . . . . . . . . . . . . . . . . . . . . . . . . 17 Fonctions de compression fondes sur un algorithme de chiffrement par blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Fonctions de compression fondes sur une structure algbrique . . . . . 22

La fonction de compression est la principale composante dune fonction de hachage itre. En pratique, cest aussi souvent la partie la plus vulnrable et donc la plus difcile construire. Historiquement, on peut distinguer trois manires de procder pour crer une telle primitive : partir de rien, en utilisant un algorithme de chiffrement par blocs, ou en se fondant sur un problme difcile.

3.1

Fonctions de compression ad hoc

Les fonctions de compression ad hoc sont en pratique les plus rapides puisquelles utilisent des oprations trs peu coteuses. Le dsavantage est que la scurit de ces fonctions est en gnral conjecture et nest pas fonde sur des preuves rductionnistes, car le principe de construction vise avant tout la performance. Les plus connues font partie de la famille MDSHA [RFCmd4, RFCmd5, RIPE95, DBP96, ZPS92, N-sha0, N-sha1, N-sha2, N-sha2b], initie par Ron Rivest en 1990. Nous ne dcrivons pas en dtail ces fonctions, car elles le seront dans la deuxime partie de ce mmoire. On peut tout de mme remarquer que mme si le fonctionnement interne de ces fonctions ne repose sur aucune primitive cryptographique dj connue, elles dnissent en fait le plus souvent un algorithme de chiffrement par blocs ad hoc E qui est imbriqu dans un schma de type Davies-Meyer (ce schma sera dcrit dans la prochaine section) : Hi = h(Hi1 , Mi ) = EMi (Hi1 ) Hi1 . o Ex (y ) reprsente le chiffrement du message y par la cl x. Dailleurs, des algorithmes de chiffrement par blocs dduits dune fonction de compression ad hoc ont parfois t proposs. Par exemple, SHACAL [HN00, HN02] est extrait de la fonction de compression de SHA1 [N-sha1]. De nombreuses fonctions de compression ne font pas partie de la famille MD-SHA. On peut citer par exemple TIGER [AB96], W HIRLPOOL [BR00], SMASH [Knu05], FORK-256 [HCS05, 17

Chapitre 3. Fonctions de compression HCS06, HCS07], LAKE [AMP08], MAME [YW007], etc. Cependant, beaucoup de ces fonctions prsentent des vulnrabilits [MR07, PRR05, MLP07, MPB07, Saa07a]. Les fonctions ponges [BDP08], comme R ADIO G ATN [BDP06] ou G RINDAHL [KRT07], utilisent elles aussi des fonctions de compression ad hoc spcialement adaptes la trs grande taille de leur tat interne. Les rsultats prsents dans ce mmoire concernent la cryptanalyse de ces fonctions de compression ad hoc. Nous dcrivons certaines vulnrabilits pour les fonctions de hachage FORK-256 [MPB07] et G RINDAHL [Pey07] (et plus gnralement les fonctions ponges [GLP08, Pey08]). Nous amliorons ensuite les attaques connues en ce qui concerne la recherche de collisions pour SHA-0 [MP08] et SHA-1 [JP07a, JP07b, JP07c, YIN08b]. Enn, nous avons montr avec Frdric Muller [MP06] que de nombreux schmas fonds sur des T-fonctions [KS02, KS04] ne peuvent pas tre considrs comme srs. Cependant, ces derniers travaux ne seront pas dcrit en dtail dans cette thse.

3.2

Fonctions de compression fondes sur un algorithme de chiffrement par blocs

Les fonctions de compression fondes sur un algorithme de chiffrement par blocs paraissent intressantes pour les concepteurs. En effet, nous connaissons de nombreux candidats efcaces et srs, tels que lAES, et cette approche dbouche parfois sur des preuves de scurit. Plus prcisment, certaines proprits de la fonction de hachage (rsistance la recherche de collisions, de primages ou de secondes primages) peuvent tre dmontres en supposant la primitive interne idale. Cela fut le cas pour certains des premiers schmas considrs par Preneel et al. [PGV93]. Ils tudirent tous les candidats simples pour construire une fonction de compression partir dun algorithme de chiffrement par blocs. Plus prcisment, ils analysrent toutes les constructions de la forme : Hi = h(Hi1 , Mi ) = EV1 (V2 ) V3 o V1 , V2 et V3 sont des combinaisons linaires des deux entres Hi1 , Mi . Il y a donc (22 )3 = 64 candidats au total, dont seulement 12 furent conjecturs srs (une vulnrabilit fut dcrite pour chacun des autres candidats). Ce nest que plusieurs annes plus tard que Black et al. [BRS02] dmontrrent la validit de cette conjecture, dans le modle du chiffrement idal ou modle de la bote noire o lon considre la primitive interne comme une permutation parfaitement alatoire, voir [Sha49, Win84]. Les plus connus de ces schmas sont ceux de Matyas-MeyerOseas, de Davies-Meyer, et de Miyaguchi-Preneel. Ils sont explicits dans la gure 3.1. Chacun deux possde un taux defcacit gal 1, dni par le rapport entre le nombre de blocs de message traits et le nombre dappels un algorithme de chiffrement par blocs. Nanmoins, il faut noter que pour le schma de Davies-Meyer il est facile de trouver des points xes, i.e. des valeurs de la variable de chanage interne restant identiques aprs application de la fonction de compression : h(Hi1 , Mi ) = Hi1 . Il suft de dchiffrer le chiffr nul pour E avec une cl gale un message Mi tir alatoirement. Cela fournit une variable de chanage dentre vriant Hi = EMi (Hi1 ) Hi1 = Hi1 . 18

3.2. Fonctions de compression fondes sur un algorithme de chiffrement par blocs Cette vulnrabilit nest pas trs pnalisante puisque la fonction de compression est en principe rsistante la recherche de primages. Ainsi, il sera trs difcile en pratique pour un attaquant datteindre un tel point xe durant lexcution.

M Hi M

Hi Hi

Hi+1
MatyasMeyerOseas

Hi+1
DaviesMeyer

Hi+1
MiyaguchiPreneel

F IG . 3.1 Les trois schmas les plus connus de fonctions de compression de taille simple fondes sur des algorithmes de chiffrement par blocs. M reprsente le bloc de message hacher, Hi et Hi+1 reprsentent respectivement lancienne et la nouvelle variable de chanage. Enn, E est un algorithme de chiffrement par blocs dont lentre relative la cl est marque par une encoche. Dans le cas o la taille de bloc de lalgorithme de chiffrement par blocs est gale celle de la variable de chanage de la fonction de compression, toutes ces tudes semblent clore le sujet. Cependant, dun point de vue pratique, cette conguration nest pas trs utile. En effet, nous disposons actuellement dalgorithmes dont la taille de bloc est infrieure ou gale 128 bits (dans le cas de lAES, nous avons 128 bits par bloc). Or, si le hach de la fonction de hachage nale est aussi dune taille de 128 bits, la recherche gnrique de collisions ne ncessitera que O(264 ) oprations. Cette quantit de calculs est actuellement porte dune grappe dordinateurs puissants. Ainsi, un problme plus complexe doit tre tudi : comment produire des hachs de taille 2n (ou plus) lorsque lon dispose dun algorithme de chiffrement par blocs oprant sur des blocs de n bits. Les fonctions les plus connues tentant de rpondre ce problme sont MDC-2 (explicit en gure 3.2) et MDC-4 [CPM90]. Elles sont cependant trs loin doffrir une scurit parfaite proportionne leur taille de sortie [Pre93]. De nombreuses propositions de nouveaux schmas furent publies [PBG89, QG89, BPS90, LM92, LWH93, NLS05], mais peu de ces candidats restrent indemnes de toute attaque [LM92, KL94, KM05]. Aussi, Bart Preneel et Lars Knudsen [KP96, KP97, KP02] proposrent des constructions tayes par des arguments de scurit forts et utilisant la thorie des codes pour dnir les combinaisons linaires dentre et de sortie pour lalgorithme de chiffrement par blocs. Cependant, en plus de quelques lgres vulnrabilits pour certaines instances [Wat08], ces schmas prsentent le dsavantage de ne pas offrir une scurit idale relativement la taille de sortie du hach : un hach de taille beaucoup plus grande que 2n bits est ncessaire pour prtendre une scurit quivalente celle dune fonction de hachage idale dont le hach mesure 2n bits. Plus rcemment, Hi19

Chapitre 3. Fonctions de compression rose [Hir04, Hir06] eut lide dutiliser des algorithmes de chiffrement par blocs dont la taille de cl est double (comme cela est le cas pour AES-256). Cette proposition est accompagne dune preuve de scurit relative la rsistance la recherche de collisions et de (secondes) primages dans le modle du chiffrement idal.

Gi

Hi

A B

C D

A D

C B

Gi+1

Hi+1

F IG . 3.2 La fonction de compression de MDC-2 [CPM90]. M reprsente le bloc de message hacher, Gi et Hi sont les deux blocs de variable de chanage dentre, Gi+1 et Hi+1 dnotent les deux blocs de variable de chanage de sortie. E est un algorithme de chiffrement par blocs dont lentre relative la cl est marque par une encoche. Enn, les notations A, B , C et D dsignent des demi-blocs et servent dcrire le mlange ralis entre la branche de droite et celle de gauche. En collaboration avec Henri Gilbert, Frdric Muller et Matt Robshaw, nous avons tudi ce problme dans un article publi la confrence ASIACRYPT 2006 [PGM06], en essayant de dnir un cadre de travail regroupant toutes les attaques connues. Nous avons aussi tent de gnraliser lanalyse en tudiant comment construire une fonction de compression idale en utilisant un certain nombre de fonctions de compression elles-mmes idales mais plus petites. Nous sommes arrivs la conclusion quelque peu contre-intuitive que dans le cas dune construction parallle simple et pour une taille de hach nal de 256 bits, il faut utiliser au moins cinq appels AES pour hacher un bloc de message de 128 bits. Cette borne infrieure montre que les tentatives antrieures des chercheurs de rsoudre ce problme en utilisant seulement un ou deux appels la primitive interne (pour obtenir un bon taux defcacit) taient condamnes lchec. Nous avons par ailleurs propos dans [PGM06] des candidats potentiels, explicits dans la gure 3.3. Aucune vulnrabilit na pour linstant t trouve pour ces schmas, pour lesquels nous avons apport de nouveaux arguments de scurit dans un article publi avec Yannick Seurin la confrence FSE 2007 [SP07]. Nous conjecturons quil existe pour ce problme un compromis entre la taille de description 20

3.2. Fonctions de compression fondes sur un algorithme de chiffrement par blocs

Gi

Hi

Hi

G i Hi

Gi

Gi

Hi

f (1)

f (2)

f (3)

f (4)

f (5)

Gi+1

Hi+1

Gi

Hi

M 1 Gi

Hi

M 2 Gi

M 1 M 2 Gi

Hi

M 1 Hi

M1 M2

f (1)

f (2)

f (3)

f (4)

f (5)

Gi+1

Hi+1

F IG . 3.3 Deux nouvelles propositions de fonction de compression de taille double fonde sur un algorithme de chiffrement par blocs [PGM06]. M , ou M 1 et M 2 , reprsentent les blocs de message hacher, Gi et Hi sont les deux blocs de variable de chanage dentre, Gi+1 et Hi+1 dsignent les deux blocs de variable de chanage de sortie. Les fonctions f (i) reprsentent des fonctions de compression indpendantes de taille simple, pouvant par exemple tre instancies en pratique par des algorithmes de chiffrement par blocs indpendants en mode Davies-Meyer. Celles utilises pour le premier schma possdent deux entres de taille n tandis que celles utilises pour le deuxime ont trois entres de n bits (par exemple un algorithme de chiffrement par blocs taille de cl double en mode Davies-Meyer). Ces schmas ne prsentent aucune vulnrabilit connue et lon remarque que le deuxime schma possde un taux defcacit deux fois meilleur que le premier. de lalgorithme et son taux defcacit. Nos travaux tendent montrer que plus on sautorise un schma complexe (et donc, excutant de nombreux appels la primitive interne), plus on a de chances de trouver un candidat sr et prsentant un trs bon taux defcacit. Il existe une assez forte ressemblance entre les fonctions de hachage et les algorithmes de chiffrement par blocs actuels. Cette ressemblance est sans doute due au fait que la construction 21

Chapitre 3. Fonctions de compression de ces derniers est ce jour considre par la plupart des chercheurs comme mieux matrise, et que de ce fait les concepteurs de fonctions de hachage ont cherch sen loigner le moins possible. Cependant, la diffrence fondamentale est quil ny a aucun secret dans une fonction de hachage. Ainsi, lattaquant contrle entirement lexcution, contrairement au cas des algorithmes de chiffrements par blocs. Comme la rcemment remarqu Knudsen [Knu08], on serait donc tent de penser quune fonction de hachage ne devrait pas tre plus rapide quun algorithme de chiffrement par blocs. Cela nest pas le cas aujourdhui, SHA-1 tant beaucoup plus rapide que lAES. Cependant, il est encore trop tt pour pleinement mesurer la difcult de construire un schma rsistant la recherche de collisions, proprit gnralement non exige des algorithmes de chiffrement par blocs.

3.3

Fonctions de compression fondes sur une structure algbrique

Le dernier groupe de fonctions de compression, celles fondes sur une structure algbrique, est situ loppos de celui des fonctions ad hoc. En effet, certaines de ces constructions fournissent des preuves permettant de faire reposer leur scurit sur un problme suppos difcile, pour lune ou plusieurs des notions de scurit habituelles (rsistance la recherche de collisions, de primages, de secondes primages). Depuis les rcentes attaques dvastatrices contre les membres de la famille MD-SHA, ces fonctions ont connu un regain dintrt certain. Cependant, les principaux inconvnients de cette approche sont la ncessit de possder une trs grande quantit de mmoire ou encore une vitesse dexcution souvent lente cause doprations algbriques trs coteuses. De plus, ces fonctions possdent une forte structure algbrique et cela peut poser problme puisque les fonctions de hachage sont aussi utilises pour casser de telles structures dans certaines primitives cryptographiques. Aujourdhui, pour construire des fonctions de compression, on peut utiliser des problmes aussi varis que la factorisation [CLS06], le dcodage de syndrome [AFS05], ou la recherche du plus court vecteur dans un rseau [GGH96, BPS06]. En collaboration avec Olivier Billet et Matt Robshaw, nous avons propos une fonction de hachage fonde sur le problme de la rsolution de systmes dquations quadratiques multivaries dans un corps ni [BPR07], et fournissant une preuve de scurit en ce qui concerne la rsistance la recherche de primages et de secondes primages. Une analyse de scurit fut conduite plus tard par Aumasson et al. [AM07], sans pour autant aboutir une attaque contre le schma complet. Certains schmas de cette famille ne sont pas indemnes de toute vulnrabilit [Saa07b, CMP08, Saa06], mais cette approche semble de plus en plus intressante mesure que les vitesses dexcution des autres familles de schmas diminuent. Cependant, tant donn les performances actuelles, il semble peu probable quune telle fonction soit slectionne comme algorithme vainqueur de lappel soumissions du NIST. On peut enn noter la rcente proposition dAdi Shamir [Sha08] pour construire un MAC, prsentant lavantage de ne demander quune quantit de mmoire trs faible et rendant le schma attractif pour des environnements trs contraints.

22

D EUXIME PARTIE

Cryptanalyse de la famille SHA

23

Nous prsentons dans cette section les fonctions de hachage de la famille Message-Digest (MD) ou Secure Hash Algorithm (SHA), de loin les plus implantes en pratique et les plus tudies. Ces primitives, trs rapides, dnissent en fait une fonction de compression qui sera utilise avec lalgorithme dextension de domaine de Merkle-Damgrd. Elles ont toutes pour caractristique commune dutiliser un algorithme de chiffrement par blocs ddi E , lintrieur dune construction de type Davies-Meyer : Hi = EMi (Hi1 ) Hi1 o Hi1 reprsente la variable de chanage dentre, Hi celle de sortie et E est fond sur un schma de Feistel asymtrique gnralis. Le premier reprsentant de cette ligne, MD4 [RFCmd4] , a t conu en 1990 par Rivest pour les laboratoires RSA. Cette fonction produit des hachs de 128 bits et est spcialement optimise pour les architectures 32 bits. la suite de la dcouverte de vulnrabilits potentielles de MD4, une version amliore, MD5 [RFCmd5], fut propose lanne suivante. En 1992, Zheng et al. publirent lalgorithme HAVAL [ZPS92], trs proche de la famille MD, mais ayant lavantage de possder un paramtre de scurit et une longueur de sortie paramtrable. Paralllement, le projet europen RACE Integrity Primitives Evaluation (RIPE) recommanda la fonction de hachage RIPEMD-0 [RIPE95] , constitue quasiment de deux MD4 mis en parallle, puis renforce en 1996 pour donner RIPEMD-128 et RIPEMD-160 [DBP96]. Le NIST ne tarda pas ragir en standardisant en 1993 SHA-0 [N-sha0], fruit du travail de la National Security Agency (NSA). SHA-0, dont la conception est galement fortement inspire par celle des fonctions de la famille MD, est une fonction de hachage produisant des hachs de 160 bits. Cette version fut trs lgrement corrige en 1995, pour des raisons restes condentielles, et a donn naissance SHA-1 [N-sha1] . Dans un souci danticipation des futures cryptanalyses et de laugmentation suppose des capacits de calcul, le NIST a publi rcemment les fonctions SHA-256 et SHA-512 [N-sha2], des versions amliores des anciens membres de la famille SHA produisant des hachs de taille 256, 384 ou 512 bits (puis 224 bits [N-sha2b]). Aprs plusieurs avances sur des versions rduites de MD4 [BB91], de MD5 [BB93] ou encore de RIPEMD-0 [Dob97], une premire cryptanalyse complte dun membre de cette ligne permettant de produire des collisions pour MD4 fut publie par Dobbertin [Dob96a] en 1996. En 1998, Chabaud et Joux [CJ98] tablirent la premire attaque thorique fournissant une collision pour SHA-0 en moins de 280 oprations (pour 160 bits de sortie). En 2004, Biham et Chen [BC04] introduisirent lide de bits neutres, qui mena plus tard au calcul de la premire collision sur SHA-0 [BCJ05] avec 4 blocs de message. Durant lt 2004 [WFL04], la communaut acadmique dcouvrit lexistence dun travail indpendant dune quipe de chercheurs chinois tudiant la rsistance la recherche de collisions de nombreuses fonctions de la famille MD ou SHA : les premires attaques produisant une collision pour MD5 [WY05], SHA1 [WYY05b], RIPEMD-0 [WLF05] et certaines versions dHAVAL [YWY06] ; en plus dune amlioration signicative des attaques existantes pour MD4 [WLF05] et SHA-0 [WYY05d]. Depuis ces importantes avances, une grande quantit darticles a permis de mieux comprendre
MD2, conu pour les processeurs 8 bits, date de 1989, mais ne repose pas sur les mmes principes de construction que les autres membres de la famille MD. Les notations RIPEMD-0, RIPEMD-128 et RIPEMD-160 furent introduites aprs la cration des versions renforces de RIPEMD. De manire similaire RIPEMD, les notations SHA-0 et SHA-1 furent introduites aprs la cration de SHA-1 pour distinguer la version originale de la version corrige de SHA.

25

Algorithme MD4 MD5 HAVAL 3 tours HAVAL 3 tours HAVAL 4 tours HAVAL 5 tours RIPEMD-0 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 SHA-256 SHA-512

Taille de sortie 128 128 128 160 256 128 256 128 256 128 128 ou 256 160 ou 320 160 160 256 ou 224 512 ou 384

Complexit 2 223 26 229 236 2123 216

Rfrence [SWO07] [Kli06] [YWY06] [VBP03] [YWY06] [YWY06] [WLF05]

233 261

[MP08] [MRR07]

TAB . 3.1 Meilleures attaques par collision contre les membres de la famille MD-SHA, avec les tailles de sortie (en bits), les complexits des attaques en nombre dappels la fonction de compression et les rfrences respectives. ou damliorer encore ces attaques. Le tableau 3.1 donne les attaques produisant des collisions de meilleure complexit actuellement connues et les rfrences correspondantes. Actuellement, un des axes majeurs de recherche concerne linvestigation des implications relles de ces attaques pour la scurit des applications cryptographiques pratiques [LW05, CY06, KBP06, Leu07, SYA07, SLW07a, FLN07, WOK08]. Les fonctions de la famille MD-SHA encore considres comme sres sont en nombre limit : seules RIPEMD-128, RIPEMD-160, SHA-256 et SHA-512 ont rsist pour linstant lpreuve du temps. Nanmoins, ces avances inattendues en cryptanalyse ont jet un doute sur la scurit de ce type de construction et ceci explique en grande partie la dcision du NIST dorganiser un appel soumissions pour de nouvelles fonctions de hachage, dans le but de standardiser le futur SHA-3 [N-sha3], comme cela fut le cas de lAdvanced Encryption Standard (AES) [N-aes] pour les algorithmes de chiffrement par blocs. La date nale de dcision du candidat vainqueur est prvue pour le milieu de lanne 2012. Le travail de cryptanalyse nest cependant toujours pas termin puisque lamlioration des attaques connues permet dvaluer prcisment les limites de ce type de mthodes pour chaque schma. De plus, mme si la fonction SHA-1 est thoriquement casse, le temps pour calculer une collision est pour linstant hors de porte des ordinateurs actuels et de nombreuses quipes de recherche tentent de trouver un moyen pour calculer la premire collision pour SHA-1, la fonction de hachage actuellement la plus utilise en pratique.

26

C HAPITRE 4

Prsentation des fonctions de la famille MD-SHA


Sommaire
MD4 . . . . . . . . . . . 4.1.1 Description . . . 4.1.2 Scurit actuelle 4.2 MD5 . . . . . . . . . . . 4.2.1 Description . . . 4.2.2 Scurit actuelle 4.3 HAVAL . . . . . . . . . 4.3.1 Description . . . 4.3.2 Scurit actuelle 4.4 RIPEMD-0 . . . . . . . 4.4.1 Description . . . 4.4.2 Scurit actuelle 4.5 RIPEMD-128 . . . . . 4.5.1 Description . . . 4.5.2 Scurit actuelle 4.6 RIPEMD-160 . . . . . 4.6.1 Description . . . 4.6.2 Scurit actuelle 4.7 SHA-0 . . . . . . . . . 4.7.1 Description . . . 4.7.2 Scurit actuelle 4.8 SHA-1 . . . . . . . . . 4.8.1 Description . . . 4.8.2 Scurit actuelle 4.9 SHA-256 . . . . . . . . 4.9.1 Description . . . 4.9.2 Scurit actuelle 4.10 SHA-512 . . . . . . . . 4.10.1 Description . . . 4.10.2 Scurit actuelle 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 31 32 32 33 34 34 34 35 35 36 36 36 37 38 38 39 40 40 40 42 42 42 42 42 44 44 44 46

27

Chapitre 4. Prsentation des fonctions de la famille MD-SHA

Toutes les fonctions de hachage dcrites dans cette premire partie utilisent le procd de Merkle-Damgrd comme algorithme dextension de domaine, avec pralablement un rembourrage appropri. Nous ne dcrirons donc ici que les fonctions de compression, faisant correspondre pour le mot de message M la variable de chanage de sortie H celle dentre H . Sauf indication contraire, tous les mots considrs seront des mots de w = 32 bits chacun, ce qui explique la rapidit de ces fonctions pour les applications logicielles puisque toutes les oprations utilises sont disponibles sur les microprocesseurs actuels. Nous notons n le nombre de bits de sortie de la fonction h, m le nombre de mots de message traits chaque itration de la fonction h, et r le nombre de mots de ltat interne, que lon appelle registres. Sauf dans le cas de RIPEMD o deux branches parallles sont utilises (o r reprsente alors le nombre de registres dans chaque branche), nous aurons r 32 = n ce qui signie que la taille de ltat interne est gale celle de la variable de chanage. La variable de chanage H (respectivement H ) peut alors naturellement tre divise en r mots de 32 bits h0 , . . . , hr1 (respectivement h0 , . . . , hr1 ). Les r registres internes sont mis jour par un schma de Feistel asymtrique gnralis, chaque registre correspondant un brin. chaque tape i, un registre est mis jour laide dune fonction fi dpendante de i, avant le dcalage des registres propre au schma de Feistel. Aussi, certains registres pourront potentiellement subir une rotation avant le dcalage. Il nexiste en fait que t fonctions fi diffrentes, ce qui dnit la notion de tour : pour toutes les tapes du tour j , la mme fonction fj sera utilise. Soit t le nombre de tours et u le nombre dtapes par tour. Le nombre total dtapes de la fonction de compression est gal s = t u. Un mot dpendant du message est requis lentre de chaque tape i, ce qui nous oblige dnir lexpansion de message : partir du message M constitu de m mots, nous construisons le message tendu W comportant s mots. Il existe deux types dexpansion. Celle de la famille MD ou RIPEMD utilise des permutations des mots de M pour chaque tour. Ainsi, chaque mot de message sera utilis une et une seule fois par tour. Dans le cas de la famille SHA, une formule de rcurrence est dnie pour calculer les mots de W , linitialisation tant fournie par les mots de M . chaque tape, seulement un registre sera mis jour et nous lappelons registre cible (sauf dans le cas de SHA-256 et SHA-512 o nous avons deux registres cibles par tape). Nous pouvons ne considrer que les registres de ltat initial et les registres cibles pour la description de la fonction puisque ltat interne chaque tape peut tre intgralement reconstruit grce la seule connaissance de ces valeurs. Ainsi, ltat interne durant lexcution peut tre vu comme un vecteur de s + r mots de 32 bits Ar+1 , . . . , As reprsentant les registres cibles et ltat initial : Ai+1 correspondant la valeur du registre cible mis jour durant ltape i pour 0 i < s (dans le cas de SHA-256 ou de SHA-512 nous aurons deux vecteurs de registres cibles, et il en est de mme pour RIPEMD puisque nous devrons maintenir un vecteur de registres cibles pour chaque branche). Linitialisation insrera les registres de la variable de chanage dentre dans les r premiers registres de ltat interne. Cette description simplie des algorithmes est utile la fois pour une meilleure comprhension des schmas et une meilleure vision des vnements dans les registres pour le cryptanalyste [Dau05]. Toutes les fonctions de la famille MD-SHA utilisent la construction de Davies-Meyer, o la variable de chanage dentre est reboucle sur les registres internes naux pour donner la variable de chanage de sortie, et ce, pour viter toute possibilit dinversion de la fonction de compression (ce qui aboutirait directement une attaque par primage sur la fonction de 28

hachage complte). Cette technique de rebouclage est connue en anglais sous le nom de feedforward. On peut donc voir la fonction de compression comme un algorithme de chiffrement par blocs E (possdant une structure de schma de Feistel asymtrique gnralis) plac dans une construction de Davies-Meyer. Cet algorithme chiffre la variable de chanage h avec comme cl le message M , la phase de prparation des cls de E tant la fonction dexpansion de message de la fonction de hachage. Ce formalisme donna mme naissance au chiffrement par blocs SHACAL [HN00, HN02], utilisant lalgorithme interne de la fonction de compression de SHA1. Le schma de Davies-Meyer a t tudi par Preneel et al. [PGV93] parmi dautres schmas, puis prouv sr par Black et al. [BRS02] dans le modle de la bote noire o le chiffrement par blocs interne E est cens tre une primitive parfaite. Le principal avantage des fonctions de hachage ddies est leur rapidit dans un environnement logiciel. En effet, seules des oprations trs simples et trs bien supportes par les microprocesseurs actuels sont utilises pour la diffusion (additions modulaires, fonctions boolennes bit bit, rotations et dcalages). En ce qui concerne la confusion, lutilisation de fonctions boolennes et dadditions modulaires semble cryptographiquement robuste. Enn, seuls quelques registres sont modis chaque tape, il aurait pu en tre autrement si les fonctions de la famille MD-SHA navaient pas t destines des applications logicielles. Une fois les notations ci-dessus introduites, explicites dans la gure 4.1 et rsumes dans le tableau 4.1, il est trs facile de dcrire les diffrents membres de la famille MD-SHA. En fait, il ne reste plus qu dnir pour chaque cas la mthode dexpansion de message et prciser par quelle fonction le registre Ai+1 est mis jour chaque tape i. Dans la suite, nous noterons < <x > >x A< (respectivement A> ) la rotation de x positions vers la gauche (respectivement vers la droite) des bits du mot A.
Algorithme MD4 MD5 RIPEMD-0 RIPEMD-128 RIPEMD-128 v. 256 bits RIPEMD-160 RIPEMD-160 v. 320 bits SHA-0 SHA-1 SHA-256 SHA-256 v. 224 bits SHA-512 SHA-512 v. 384 bits n 128 128 128 128 256 160 320 160 160 256 224 512 384 Scurit 128 128 128 128 128 160 160 160 160 256 224 512 384 w 32 32 32 32 32 32 32 32 32 32 32 64 64 r 4 4 4 4 4 5 5 5 5 8 8 8 8 m 16 16 16 16 16 16 16 16 16 16 16 16 16 t 3 4 3 4 4 5 5 4 4 1 1 1 1 s 48 64 48 64 64 80 80 80 80 64 64 64 64 Rfrence [RFCmd4] [RFCmd5] [RIPE95] [DBP96] [DBP96] [DBP96] [DBP96] [N-sha0] [N-sha1] [N-sha2] [N-sha2b] [N-sha2] [N-sha2]

TAB . 4.1 Paramtres des fonctions de compression des membres de la famille MD-SHA, avec les tailles de sortie n (en bits), le nombre de bits de scurit espers, la taille w (en bits) des mots utiliss, le nombre r de registres internes (par branche dans le cas des fonctions de la famille RIPEMD), le nombre m de mots de message traits par appel la fonction de compression, le nombre t de tours et le nombre total s dtapes. Nous indiquons aussi les rfrences des caractristiques compltes de ces algorithmes.

29

Chapitre 4. Prsentation des fonctions de la famille MD-SHA

r registres de w bits A1r W0 W1 A2r tape 0 tape 1 tour 0 Wu2 Wu1


Expansion de message

A1

A0

tape u 2 tape u 1 tape u tape u + 1 tour 1

Wu Wu+1

partir de M0 , . . . , Mm1

Ws3 Ws2 Ws1

tape s 3 tape s 2 tape s 1 Asr+1 Asr+2 As1 As

tour t 1

Feedforward

n bits h

F IG . 4.1 Structure gnrique des fonctions de compression pour la famille MD-SHA. Lors de ltape i, la valeur Ai+1 est produite.

30

4.1. MD4

4.1
4.1.1

MD4
Description

Invente par Rivest en 1990 pour les laboratoires RSA [RFCmd4], MD4 est la plus ancienne fonction de la famille MD-SHA, cest donc naturellement aussi la plus simple. La fonction de compression produit des hachs de n = 128 bits pour un tat interne de r = 4 registres de w = 32 bits chacun, initialis par la variable de chanage dentre : A 3 = h 0 A 2 = h 3 A 1 = h 2 A0 = h 1 .

chaque appel, m = 16 mots de message seront traits, avec t = 3 tours de u = 16 tapes chacun (cest dire s = 48 tapes en tout). Lexpansion de message est trs simple. Pour chaque tour j une permutation j de lordre des mots de message est dnie (0 tant lapplication identit). Ainsi, nous avons pour la k -ime tape du tour j , avec 0 j 2 et 0 k 15 : Wj 16+k = Mj (k) . Les permutations j sont dnies dans la section A.1 de lappendice. On peut observer que puisque lexpansion de message est une permutation par tour des mots du message dentre M , chaque mot de M sera utilis une fois pour chaque tour. Durant chaque tape i, le registre cible Ai+1 est mis jour par la fonction fj , dpendante du tour j auquel appartient i : Ai+1 = fj (Ai , Ai1 , Ai2 , Ai3 , Wi , si )
< <si , = (Ai3 + j (Ai , Ai1 , Ai2 ) + Wi + Kj )<

o les Kj sont des constantes prdnies pour chaque tour, les si sont des valeurs de rotation prdnies pour chaque tape, et les fonctions j sont des fonctions boolennes dnies pour chaque tour et prenant 3 mots de 32 bits en entre (voir section A.1 de lappendice). Du fait du rebouclage, la n des 48 tapes, les mots de la sortie de la fonction de compression sont calculs par : h0 = A45 + A3 h1 = A48 + A0 h2 = A47 + A1 h3 = A46 + A2 .

Une description visuelle dune tape est donne dans la gure 4.2 et les caractristiques compltes de la fonction peuvent tre trouves dans [RFCmd4].

4.1.2

Scurit actuelle

Des vulnrabilits pour la fonction de compression furent trs rapidement identies juste aprs la publication de MD4. En effet, ds 1991, Den Boer et Bosselaers [BB91] attaqurent une version rduite deux tours au lieu des trois tours que compte MD4 (cest lune des raisons de la conception de MD5, dont lune des diffrences majeures avec MD4 est quelle comporte 4 tours). Aprs plusieurs avances, Dobbertin [Dob96a] publia en 1996 la premire attaque permettant de trouver des collisions pour la fonction complte dont la complexit en temps est quivalente 220 appels la fonction de compression. Huit ans plus tard, en plus dun grand nombre dautres cryptanalyses de membres de la famille MD-SHA, Wang et al. [WFL04, WLF05] amliorrent lattaque pour obtenir une complexit de moins de 28 appels la fonction. 31

Chapitre 4. Prsentation des fonctions de la famille MD-SHA


Ai3 Ai2 j Wi Kj
< < < si

Ai1

Ai

n m w r t u s

128 16 32 4 3 16 48
Ai2 Ai1 Ai Ai+1

F IG . 4.2 Une tape de la fonction de compression de MD4. Les amliorations qui suivirent furent telles quaujourdhui la complexit pour trouver une collision pour MD4 est peu prs gale celle pour vrier cette collision [SWO07]. Nanmoins, cette fonction continue dtre tudie, reprsentant une bonne entre en matire dans la cryptanalyse des fonctions de hachage de la famille MD-SHA. De plus, de nouvelles voies de recherche consistent exploiter ces types dattaques pour mettre en dfaut la scurit de certains protocoles dans lesquels une fonction de hachage est utilise (tels que HMAC [FLN07, WOK08] ou APOP [Leu07]). Enn, cette fonction semble tre le point de dpart idal pour essayer dvaluer les fonctions de la famille MD-SHA quant leur rsistance en primage [Leu08] ou seconde primage [WLF05]. Il est aujourdhui vident que toute utilisation de MD4 comme primitive cryptographique est proscrire.

4.2
4.2.1

MD5
Description

En rponse aux attaques sur des versions rduites de MD4, une nouvelle version plus complexe fut cre. Compare celle de MD4, la fonction de compression de MD5 possde un tour de plus, de nouvelles fonctions boolennes, une diffusion accrue dans la fonction dtape, des constantes dnies pour chaque tape, etc. Les paramtres gnraux restent inchangs : des hachs de taille n = 128 bits pour un tat interne de r = 4 registres de w = 32 bits chacun, initialis avec la variable de chanage dentre : A 3 = h 0 A 2 = h 3 A 1 = h 2 A0 = h1 .

chaque appel, m = 16 mots de message seront traits, durant t = 4 tours de u = 16 tapes chacun (cest dire s = 64 tapes en tout). Lexpansion de message reste trs simple : pour chaque tour j , une permutation j de lordre des mots de message est dnie (0 tant lapplication identit). Ainsi, nous avons pour la k -ime tape du tour j , avec 0 j 3 et 0 k 15 : Wj 16+k = Mj (k) . Les permutations j sont dnies dans la section A.2 de lappendice. Comme pour MD4, on peut observer que puisque lexpansion de message est une permutation par tour des mots 32

4.2. MD5 du message dentre M , chaque mot de M sera utilis une fois pour chaque tour. Lexpansion de message de MD5 est donc identique celle de MD4 ceci prs que les permutations ont t lgrement modies. Durant chaque tape i le registre cible Ai+1 est mis jour par la fonction fj , qui dpend du tour j auquel i appartient : Ai+1 = fj (Ai , Ai1 , Ai2 , Ai3 , Wi , Ki , si )
< <si = Ai + (Ai3 + j (Ai , Ai1 , Ai2 ) + Wi + Ki )< ,

o les Ki sont des constantes prdnies pour chaque tape, les si sont des valeurs de rotation prdnies pour chaque tape, et les fonctions j sont des fonctions boolennes dnies pour chaque tour et prenant 3 mots de 32 bits en entre (voir section A.2 de lappendice). la n des 64 tapes, les mots de la sortie de la fonction de compression sont calculs par : h0 = A61 + A3 h1 = A64 + A0 h2 = A63 + A1 h3 = A62 + A2 .

Une description visuelle dune tape est donne dans la gure 4.3 et les caractristiques compltes de la fonction peuvent tre trouves dans [RFCmd5].
Ai3 Ai2 j Wi Ki
< < < si

Ai1

Ai

n m w r t u s

128 16 32 4 4 16 64
Ai2 Ai1 Ai Ai+1

F IG . 4.3 Une tape de la fonction de compression de MD5.

4.2.2

Scurit actuelle

La fonction de hachage MD5 rsista un peu plus longtemps que MD4 aux efforts des cryptanalystes et, pour cette raison, elle russit mieux pntrer le monde industriel et fut implante dans de trs nombreuses applications. Une pseudo-collision fut tout dabord dcouverte en 1993 [BB93] pour la fonction de compression de MD5, puis une attaque trouvant des collisions contre la fonction de hachage complte (mais avec une valeur dinitialisation diffrente de celle prdnie) fut prsente par Hans Dobbertin [Dob96b] en 1996. Cest grce au travail de Wang et al. [WFL04, WY05] en 2004 que put tre calcule la premire collision pour MD5, avec une complexit en temps quivalente 239 appels la fonction de compression. Beaucoup de progrs ont t faits depuis pour cryptanalyser cette fonction. Par exemple, la technique optimise de Klima [Kli06] permet de trouver des collisions pour MD5 en quelques secondes sur un ordinateur standard. 33

Chapitre 4. Prsentation des fonctions de la famille MD-SHA Comme pour MD4, beaucoup dquipes de recherche continuent danalyser MD5, et ce, pour plusieurs raisons. Tout dabord, une meilleure comprhension des fonctions de hachage de la famille MD-SHA est ncessaire. De plus, MD5 est encore utilise dans certaines implantations, ce qui pose la question des consquences de ces attaques. Par exemple, de nombreux travaux [Leu07, SYA07, FLN07, WOK08] analysent la possibilit de compromettre la scurit de HMAC ou dAPOP lorsque MD5 est utilis comme brique interne. De nouvelles vulnrabilits ont rcemment t identies concernant lutilisation de MD5 pour vrier lintgrit de programmes excutables [SLW07b] ou pour la signature de certicats X.509 [LW05, SLW07a]. Mme si la rsistance de la fonction de compression quant la recherche de primages nest pour linstant toujours pas mise en dfaut, MD5 ne doit plus tre implante dans des applications cryptographiques.

4.3
4.3.1

HAVAL
Description

La fonction de hachage HAVAL [ZPS92], trs inspire de MD4, a t invente par Zheng et al.. Lune des nouveauts est que le nombre de tours et la taille des hachs peuvent tre moduls, donnant ainsi naissance toute une srie de fonctions HAVAL permettant de couvrir un ventail de besoins le plus large possible. Cette particularit sera reprise par la suite pour les nouvelles fonctions de hachage conues. Par dfaut, les hachs sont de taille n = 256 (les tailles 128, 160, 192 et 224 bits en sortie sont aussi possibles grce une mthode relativement simple de troncature de la sortie originale de 256 bits, voir [ZPS92]) pour un tat interne de r = 8 registres de w = 32 bits chacun, initialis par la variable de chanage dentre. chaque appel, m = 32 mots de message seront traits, avec t tours de u = 32 tapes chacun (cest dire s = t 32 tapes en tout). Suivant la version utilise, le nombre de tours t peut tre gal 3, 4 ou 5. Cette deuxime possibilit de modularit semble tre un lment ncessaire pour les futures fonctions de hachage, un paramtre de scurit permettant facilement daugmenter la robustesse du schma (au dtriment de la rapidit) sans devoir le rimplanter compltement. Cela permet de mieux anticiper et grer les avances potentielles en cryptanalyse. Une telle fonctionnalit est requise pour tout candidat lappel soumissions du NIST. Les caractristiques compltes de la fonction HAVAL peuvent tre trouves dans [ZPS92].

4.3.2

Scurit actuelle

Comme pour MD4 ou MD5, les cryptologues analysrent tout dabord des versions rduites dHAVAL [KP00, PSC02, HSK03], ou tentrent de trouver des comportements non alatoires dans la fonction [YBC04]. La premire attaque contre une version complte dHAVAL (version 3 tours et nimporte quelle taille de sortie) est due Van Rompay et al [VBP03] et permet de trouver des collisions avec une complexit de 229 appels la fonction de compression. Un an plus tard, Wang et al [WFL04] rduisirent la complexit seulement 26 appels pour la version 3 tours avec 128 bits de sortie, puis les versions 4 et 5 tours succombrent en 2006 [YWY06] (236 et 2123 appels la fonction de compression respectivement). Pour ces raisons, HAVAL ne doit plus tre implante dans des applications cryptographiques. 34

4.4. RIPEMD-0

4.4
4.4.1

RIPEMD-0
Description

RIPEMD-0 est lune des primitives recommandes en 1992 lissue dune tude dun consortium dans le cadre du projet europen RACE Integrity Primitives Evaluation (RIPE) sur les primitives permettant de garantir lintgrit [RIPE95]. Originalement nomme RIPEMD, la fonction de compression se compose de deux branches parallles, chacune quasiment identique la fonction de compression de MD4. Les deux lignes parallles de calcul ne diffrent que par lemploi de constantes diffrentes. Les paramtres de chaque branche sont donc gaux ceux de MD4, mais lordre dintroduction des mots du bloc de message tendu et les longueurs de rotation lors des tapes sont diffrents de ceux de MD4. Les hachs sont de taille n = 128 bits pour un tat interne de r = 4 registres de w = 32 bits chacun pour chaque branche. On note R AL i les registres cibles de la branche de gauche et Ai ceux de la branche de droite. On initialise chaque branche par la variable de chanage dentre : AL 3 = h0 AR 3 = h0 AL 2 = h1 AR 2 = h1 AL 1 = h2 AR 1 = h2 AL 0 = h3 AR 0 = h3 .

chaque appel, m = 16 mots de message sont traits, durant t = 3 tours de u = 16 tapes chacun dans chaque branche (cest dire s = 48 tapes en tout). Lexpansion de message est lgrement modie : pour chaque tour j , une permutation j de lordre des mots de message est dnie (0 tant lapplication identit). Ainsi, nous avons pour la k -ime tape du tour j , avec 0 j 2 et 0 k 15 : Wj 16+k = Mj (k) . Les permutations j sont dnies dans la section A.3 de lappendice. Comme pour son prdcesseur MD4, on peut observer que puisque lexpansion de message est une permutation tour par tour des mots du message dentre M , chaque mot de M est utilis une fois pour chaque tour. Lexpansion de message de RIPEMD-0 est donc identique celle de MD4 ceci prs que les permutations ont t lgrement modies.
L fj R Durant chaque tape i, les registres cibles AL i+1 et Ai+1 sont mis jour laide des fonctions R et fj , dpendantes du tour j auquel appartient i : L L L L L AL i+1 = fj (Ai , Ai1 , Ai2 , Ai3 , Wi , si ) L L L L < < <si = (AL , i3 + j (Ai , Ai1 , Ai2 ) + Wi + Kj ) R R R R R AR i+1 = fj (Ai , Ai1 , Ai2 , Ai3 , Wi , si ) R R R R < < <si = (AR , i3 + j (Ai , Ai1 , Ai2 ) + Wi + Kj ) L et K R sont des constantes prdnies pour chaque tour et pour chaque branche, o les Kj j les si sont des valeurs de rotation prdnies pour chaque tape, et les fonctions j sont des fonctions boolennes dnies pour chaque tour et prenant 3 mots de 32 bits en entre (voir section A.3 de lappendice). On peut noter que les seules diffrences entre la fonction de mise L et jour de la branche de gauche et de celle de droite sont les diffrentes constantes utilises Kj R . la n des 48 tapes des deux branches, on applique le rebouclage pour calculer les mots Kj de la sortie de la fonction de compression :

35

Chapitre 4. Prsentation des fonctions de la famille MD-SHA


R h 0 = AL 47 + A48 + A2 R h 2 = AL 45 + A46 + A0 R h 1 = AL 48 + A45 + A1 R h 3 = AL 46 + A47 + A3 .

Une description visuelle dune tape est donne dans la gure 4.4 et les caractristiques compltes de la fonction peuvent tre trouves dans [RIPE95].
Ai3
L/R

Ai2 j

L/R

Ai1

L/R

Ai

L/R

n m w r t u s

128 16 32 4 3 16 48
Ai2
L/R

Wi Kj
L/R
< < < si

Ai1

L/R

Ai

L/R

Ai+1

L/R

F IG . 4.4 Une tape pour une branche de la fonction de compression de RIPEMD-0.

4.4.2

Scurit actuelle

Comme pour ses prdcesseurs, des versions rduites de RIPEMD-0 furent tout dabord analyses, soit en diminuant le nombre de tours [Dob97], soit en analysant une seule des branches la fois [DG01]. La premire cryptanalyse contre le schma complet fut publie en 2004 par Wang et al. [WFL04, WLF05], et prsente une complexit de 216 appels la fonction de compression. Comme pour MD4 ou MD5, lutilisation de RIPEMD-0 dans une application cryptographique est proscrire.

4.5
4.5.1

RIPEMD-128
Description

En 1996, Hans Dobbertin, Antoon Bosselaers et Bart Preneel [DBP96] proposrent une version renforce de RIPEMD-0 pour contrer les premires cryptanalyses de MD4 et de RIPEMD0 qui apparaissaient. De plus, une version 256 bits a aussi t dnie, mais pour une scurit quivalant une fonction de 128 bits. Cette nouvelle primitive comporte toujours 2 branches R de r = 4 registres de w = 32 bits. On note AL i les registres cibles de la branche de gauche et Ai ceux de la branche de droite. On initialise chaque branche par la variable de chanage dentre : AL 3 = h0 AR 3 = h0 AL 2 = h1 AR 2 = h1 AL 1 = h2 AR 1 = h2 AL 0 = h3 AR 0 = h3 .

chaque appel, m = 16 mots de message seront traits, avec maintenant t = 4 tours de u = 16 tapes chacun dans chaque branche (cest dire s = 64 tapes en tout). Lexpansion 36

4.5. RIPEMD-128 de message est modie par rapport RIPEMD-0 puisque pour chaque tour j et pour chaque R et L sont dnies. Ainsi, nous branche, des permutations de lordre des mots de message j j avons pour la k -ime tape du tour j , avec 0 j 3 et 0 k 15 : WjL 16+k = M L (k)
j

WjR 16+k

= M R (k ) .
j

L et R sont dnies dans la section A.4 de lappendice. Lexpansion Les permutations j j de message reposant toujours sur des permutations des mots de message pour chaque tour, chaque mot de M sera utilis une fois pour chaque tour dans chaque branche. Une des nouveauts par rapport RIPEMD-0 est donc que lordonnancement des mots de message est diffrent dans les deux branches. R L Durant chaque tape i, les registres cibles AL i+1 et Ai+1 sont mis jour par les fonctions fj R , dpendantes du tour j auquel appartient i : et fj L L L L L L L AL i+1 = fj (Ai , Ai1 , Ai2 , Ai3 , Wi , si ) L L L L L L < < <si = (AL , i3 + j (Ai , Ai1 , Ai2 ) + Wi + Kj ) R R R R R R R AR i+1 = fj (Ai , Ai1 , Ai2 , Ai3 , Wi , si ) R R R R R R < < <si , = (AR i3 + j (Ai , Ai1 , Ai2 ) + Wi + Kj ) L et K R sont des constantes prdnies pour chaque tour et pour chaque branche, les o les Kj j L R si et si sont des valeurs de rotation prdnies pour chaque tape et pour chaque branche, R et les fonctions L j et j sont des fonctions boolennes dnies pour chaque tour et pour chaque branche et prenant 3 mots de 32 bits en entre (voir section A.4 de lappendice). On R L R peut noter que les fonctions boolennes L j et j (et les constantes de rotation si et si ) utilises dans chaque branche sont diffrentes et ceci constitue la deuxime grande distinction entre RIPEMD-0 et RIPEMD-128. Du fait du rebouclage, la n des 64 tapes des deux branches, les mots de la sortie de la fonction de compression sont calculs par :
R L

R h 0 = AL 63 + A64 + A2 R h 2 = AL 61 + A62 + A0

R h 1 = AL 64 + A61 + A1 R h 3 = AL 62 + A63 + A3 .

En ce qui concerne la version 256 bits, les deux branches sont gardes spares durant le rebouclage pour obtenir la bonne taille de sortie, un mlange soprant en inversant certains registres la n de chaque tour. Une description visuelle dune tape est donne dans la gure 4.5 et les caractristiques compltes de la fonction RIPEMD-128 peuvent tre trouves dans [DBP96].

4.5.2

Scurit actuelle

Jusqu prsent, RIPEMD-128 et sa version 256 bits nont pas t attaques et peuvent donc tre considres comme sres. Les diffrences plus marques entre les deux branches semblent en effet grandement compliquer le travail du cryptanalyste. 37

Chapitre 4. Prsentation des fonctions de la famille MD-SHA


Ai3
L/R

Ai2 j
L/R

L/R

Ai1

L/R

Ai

L/R

n m w r t u s

128 16 32 4 4 16 64
Ai2
L/R L/R

Wi Kj

L/R
L/R < < < si

Ai1

L/R

Ai

L/R

Ai+1

L/R

F IG . 4.5 Une tape pour une branche de la fonction de compression de RIPEMD-128.

4.6
4.6.1

RIPEMD-160
Description

RIPEMD-160 [DBP96] est une fonction de hachage de 160 bits qui fut publie en mme temps que RIPEMD-128 et qui reprsente une version plus robuste en raison de sa taille de sortie plus grande, et aussi grce sa fonction de compression un peu plus complexe : un tour et un registre interne par branche sont rajouts. Comme pour RIPEMD-128, une version doublant la taille de sortie est dnie, permettant des hachs de 320 bits pour une scurit de 160 bits. Comme pour tous les membres de la famille RIPEMD, deux branches parallles sont utilises, mais chacune possdant cette fois r = 5 registres de w = 32 bits. On note AL i les registres cibles de la branche de gauche et AR ceux de la branche de droite. On initialise chaque i branche par la variable de chanage dentre :

> > >10 AL 4 = (h0 ) > > >10 AR 4 = (h0 )

> > >10 AL 3 = (h4 ) > > >10 AR 3 = (h4 )

> > >10 AL 2 = (h3 ) > > >10 AR 2 = (h3 )

AL 1 = h2 AR 1 = h2

AL 0 = h1 AR 0 = h1 .

chaque appel, m = 16 mots de message seront traits, avec t = 5 tours de u = 16 tapes chacun dans chaque branche (cest dire s = 80 tapes en tout). Comme pour RIPEMD-128, chaque tour j et pour chaque branche, des permutations de lordre des mots de message R et L sont dnies. Ainsi, nous avons pour la k -ime tape du tour j , avec 0 j j 4 et j 0 k 15 : WjL 16+k = M L (k)
j

WjR 16+k

= M R (k ) .
j

L et R sont dnies dans la section A.5 de lappendice. Comme dans Les permutations j j RIPEMD-128, chaque mot de M sera utilis une fois pour chaque tour dans chaque branche et lordonnancement des mots de message est diffrent dans les deux branches.

38

4.6. RIPEMD-160
R L Durant chaque tape i, les registres cibles AL i+1 et Ai+1 sont mis jour par les fonctions fj R , dpendantes du tour j auquel appartient i : et fj L L L L L L L L AL i+1 = fj (Ai , Ai1 , Ai2 , Ai3 , Ai4 , Wi , si )
< < <10 L L L < < <10 L < <si < < <10 = ((AL + L ) + WiL + Kj )< + (AL , i4 ) j (Ai , Ai1 , (Ai2 ) i3 ) L

R R R R R R R R AR i+1 = fj (Ai , Ai1 , Ai2 , Ai3 , Ai4 , Wi , si )


< < <10 R R R < < <10 R < <si < < <10 ) + WiR + Kj )< + (AR , = ((AR + R i4 ) j (Ai , Ai1 , (Ai2 ) i3 ) R

L et K R sont des constantes prdnies pour chaque tour et pour chaque branche, les o les Kj j L R si et si sont des valeurs de rotation prdnies pour chaque tape et pour chaque branche et R les fonctions L j et j sont des fonctions boolennes dnies pour chaque tour et pour chaque branche, et prenant 3 mots de 32 bits en entre (voir section A.5 de lappendice). En raison du rebouclage, la n des 80 tapes des deux branches, les mots de la sortie de la fonction de compression sont calculs par : R < < <10 h 0 = AL + A0 79 + (A78 )
< < <10 < < <10 < <10 h2 = (AL + (AR + (A2 )< 77 ) 76 ) < < <10 < < <10 h1 = (AL + (AR + A 1 78 ) 77 ) < < <10 < < <10 h3 = (AL + AR 76 ) 80 + (A3 )

R < < <10 h 4 = AL . 80 + A79 + (A4 )

Quant la version 320 bits, les deux branches sont gardes spares durant le rebouclage pour obtenir la bonne taille de sortie, un mlange soprant en inversant certains registres la n de chaque tour. Une description visuelle dune tape est donne dans la gure 4.6 et les caractristiques compltes de la fonction RIPEMD-160 peuvent tre trouves dans [DBP96].
Ai4
L/R

Ai3

L/R

Ai2
< < <10

L/R

Ai1

L/R

Ai

L/R

n m w r t u s

160 16 32 5 5 16 80
Wi Kj
L/R L/R

< < <10

L/R

L/R < < < si < < <10

Ai3

L/R

Ai2

L/R

Ai1

L/R

Ai

L/R

Ai+1

L/R

F IG . 4.6 Une tape pour une branche de la fonction de compression de RIPEMD-160.

4.6.2

Scurit actuelle

Avec son tat interne plus grand et un tour de plus, RIPEMD-160 semble un peu plus robuste que RIPEMD-128. Pour les mmes raisons que dans le cas de RIPEMD-128, aucune des versions de RIPEMD-160 na t attaque jusqu prsent. 39

Chapitre 4. Prsentation des fonctions de la famille MD-SHA

4.7
4.7.1

SHA-0
Description

Publi en 1993 [N-sha0], SHA-0 est le premier membre de la famille Secure Hash Standard, les fonctions de hachage standardises par le NIST. Trs inspire de celles de la famille MD, la fonction de compression de SHA-0 nen diffre quasiment que par lutilisation dune expansion de message novatrice : au lieu dutiliser des permutations des mots de message pour chaque tour, les mots de message tendu sont obtenus par un procd rcursif initialis par les mots du message dentre. Pour permettre une longvit sufsante de lalgorithme quant laugmentation de la puissance de calcul, SHA-0 produit des hachs de n = 160 bits pour un tat interne de r = 5 registres de w = 32 bits chacun, initialis par la variable de chanage dentre :
< <2 A4 = (h4 )< < <2 A3 = (h3 )< < <2 A2 = (h2 )<

A 1 = h 1

A0 = h 0 .

chaque appel, m = 16 mots de message seront traits, avec t = 4 tours de u = 20 tapes chacun (cest dire s = 80 tapes en tout). Lexpansion de message nutilise donc plus de permutation. Les 16 premiers mots du message tendu sont gaux aux 16 mots de message dentre de la fonction de compression. Le reste des Wi sont calculs par une formule de rcurrence : Mi , pour 0 i 15 Wi = Wi3 Wi8 Wi14 Wi16 , pour 16 i 79 Durant chaque tape i, la fonction fj , dpendante du tour j auquel i appartient, met jour le registre cible Ai+1 : Ai+1 = fj (Ai , Ai1 , Ai2 , Ai3 , Ai4 , Wi )
< <5 > >2 > >2 > >2 = (Ai )< + j (Ai1 , (Ai2 )> , (Ai3 )> ) + (Ai4 )> + W i + Kj ,

o les Kj sont des constantes prdnies pour chaque tour et les fonctions j sont des fonctions boolennes dnies pour chaque tour et prenant 3 mots de 32 bits en entre (voir section A.6 de lappendice). la n des 80 tapes, les mots de la sortie de la fonction de compression sont calculs par :

h0 = A80 + A0
> >2 > >2 h3 = (A77 )> + (A3 )>

h1 = A79 + A1
> >2 > >2 h4 = (A76 )> + (A4 )> .

> >2 > >2 h2 = (A78 )> + (A2 )>

Une description visuelle dune tape est donne dans la gure 4.7 et les caractristiques compltes de la fonction peuvent tre trouves dans [N-sha0].

4.7.2

Scurit actuelle

La fonction de hachage SHA-0 fut rapidement mise jour en 1995 pour donner naissance SHA-1 [N-sha1], sans quaucun dtail soit donn par la NSA quant aux vulnrabilits ventuelles. Un premier lment de rponse fut apport par Chabaud et Joux en 1998 [CJ98]. En effet, cette premire attaque thorique calculant des collisions pour SHA-0, dune complexit de 261 appels la fonction de compression, ne sapplique pas la version amliore SHA-1. On 40

4.7. SHA-0
Ai4 Ai3 Ai2 Ai1 Ai

n m w r t u s

160 16 32 5 4 20 80
Wi Kj

< < <30

< < <2 < < <2

< < <2

Ai3

Ai2

Ai1

Ai

Ai+1

F IG . 4.7 Une tape de la fonction de compression de SHA-0 ou de SHA-1.

peut donc penser que la NSA avait dj identi lun des problmes de SHA-0, savoir sa diffusion. Par comparaison la famille MD ou RIPEMD, le principe dune formule de rcurrence pour calculer les mots du message tendu semble une bonne ide. En termes de diffusion, de bien meilleures proprits sont obtenues. Par exemple, une perturbation sur un mot du message dentre M (modiant directement lun des premiers mots de W ) inuera trs rapidement sur lintgralit des mots suivants de W , ce qui nest pas vrai pour une permutation des mots de M par tour comme dans le cas des familles MD et RIPEMD. Cependant, dans le cas de SHA-0, cette diffusion ne sopre que sur une seule position de bit. Ainsi, si lon se cantonne ne modier M que sur une position j , cela naura des consquences que sur les bits en position j des mots de W . Cette faiblesse est directement corrige dans SHA-1, o une rotation est ajoute dans lexpansion de message.

Aprs cette premire attaque thorique pour la recherche de collisions, il fallut attendre plusieurs annes avant de voir progressivement apparatre de nouvelles amliorations. Tout dabord, Biham et Chen [BC04] introduisirent en 2004 la notion de bits neutres pour acclrer la recherche de collisions. Grce cette nouvelle technique, ils calculrent des presque collisions pour la fonction de compression. Ensuite, en 2005, en utilisant plusieurs blocs de message contenant des diffrences, Biham et al. [BCJ05] publirent la premire collision pour SHA-0 et apportrent ainsi une preuve pratique du bien-fond des hypothses des prcdents travaux. La complexit tant de lordre de 251 appels la fonction de compression, un trs grand nombre dordinateurs furent ncessaires pour trouver la collision en seulement trois semaines. Cette complexit fut amliore tout dabord par les travaux de Wang et al. [WYY05d], calculant des collisions pour une complexit annonce dapproximativement 239 appels la fonction de compression, puis par Naito et al. [NSS06]. Finalement, nous prsenterons dans cette thse la meilleure attaque connue ce jour [MP08], qui calcule des collisions en seulement une heure de calcul sur un ordinateur personnel (233 appels la fonction de compression). Mme si la rsistance de la fonction de compression quant la recherche de primages nest pour linstant toujours pas mise en dfaut, SHA-0 ne doit plus tre implante dans des applications cryptographiques. 41

Chapitre 4. Prsentation des fonctions de la famille MD-SHA

4.8
4.8.1

SHA-1
Description

SHA-1 est la version corrige de SHA-0, et fut publie en 1995 par le NIST [N-sha1]. Lexpansion de message mise part, la description de SHA-1 est absolument identique celle de SHA-0. La seule et unique diffrence consiste en une rotation dans la formule de rcurrence de lexpansion de message, ce qui implique une meilleure diffusion : Wi = Mi , < <1 (Wi3 Wi8 Wi14 Wi16 )< , pour 0 i 15 pour 16 i 79

Comme pour SHA-0, la description visuelle dune tape est donne dans la gure 4.7. Les caractristiques compltes de la fonction peuvent tre trouves dans [N-sha1].

4.8.2

Scurit actuelle

SHA-1 sembla rsister relativement bien aux attaques contre sa version antrieure SHA-0, seules des vulnrabilits sur des versions trs rduites furent publies [BCJ05]. Ceci tant d au fait que la diffusion des mots de message y est bien meilleure grce la rotation ajoute. Pour ces raisons, et cause des problmes de scurit rencontrs par les membres de la famille MD ou RIPEMD, SHA-1 est la fonction la plus implante et la plus utilise actuellement. Seulement, Wang et al. [WYY05b] surprirent toute la communaut de la recherche acadmique en cryptographie en exposant la premire attaque thorique contre SHA-1, en 269 appels la fonction de compression (amliore plus tard pour une complexit annonce de 263 appels la fonction de compression [WYY05a, WYY05c]). Cette attaque, assez complexe et difcile daccs, tait dautant plus surprenante quelle tait le fruit de plusieurs annes de recherche sans vraiment utiliser doutils informatiques. Plusieurs travaux sensuivirent pour essayer de mieux comprendre, thoriser, ou automatiser ces nouvelles attaques [CR06, JP07a]. prsent, la recherche de la premire collision relle est lun des principaux objectifs et un calcul distribu pour raliser ce but a rcemment t dmarr [MRR07] (pour une complexit annonce infrieure 261 appels la fonction de compression). Nous prsentons dans cette thse la meilleure attaque pratique [JP07c] qui calcule une collision sur une version rduite 70 tours de SHA-1 en moins de 4 jours sur un ordinateur personnel. Ainsi, mme si aucune collision sur la version complte na encore t trouve et mme si la rsistance en primage nest pour linstant toujours pas mise en dfaut, il est trs dconseill dutiliser SHA-1 dans une application cryptographique. Ceci explique en partie la dcision du NIST dorganiser un appel soumissions pour de nouvelles fonctions de hachage, dans le but de standardiser le futur SHA-3 [N-sha3].

4.9
4.9.1

SHA-256
Description

Publie en 2002 [N-sha2], SHA-256 fait partie des derniers membres en date de la famille MD-SHA. Outre sa taille de sortie, elle contient plusieurs nouveauts par rapport ses prdcesseurs. Par exemple, lexpansion de message est beaucoup plus complexe et corrige les prcdentes erreurs de SHA-0 ou SHA-1. De plus, la fonction dtape met jour deux registres la fois pour une meilleure diffusion. Nous notons dans la suite Ai et Bi ces registres 42

4.9. SHA-256 cibles. Aussi, il ny a plus rellement de notion de tour dans SHA-256, car les mmes fonctions boolennes sont utilises dans toutes les tapes. Comme son nom lindique, SHA-256 produit des hachs de n = 256 bits, mais il existe aussi une version 224 bits [N-sha2b] introduite 2 ans plus tard. On maintient donc un tat interne de r = 8 registres de w = 32 bits chacun, initialis par la variable de chanage dentre : A3 = h3 B3 = h7 A 2 = h 2 B2 = h6 A1 = h1 B1 = h5 A0 = h 0 B0 = h4 .

chaque appel, m = 16 mots de message seront traits, avec s = 64 tapes (on peut noter t = 1 et u = 64 dans notre formalisme). Lexpansion de message est beaucoup plus complexe que dans les autres versions de SHA, mais utilise toujours une formule de rcurrence : Wi = Mi , 1 (Wi2 ) + Wi7 + 0 (Wi15 ) + Wi16 , avec pour 0 i 15 pour 16 i 63

> >7 > >18 >3 0 (x) = (x> ) (x> ) (x> ) > > >17 > > >19 >10 1 (x) = (x ) (x ) (x> ).

Durant chaque tape i, les registres cibles Ai+1 et Bi+1 sont mis jour par les fonctions f et g respectivement : Ai+1 = f (Ai , Ai1 , Ai2 , Ai3 , Bi , Bi1 , Bi2 , Bi3 , Wi , Ki ) = 0 (Ai ) + MAJ(Ai , Ai1 , Ai2 ) + Bi3 + 1 (Bi ) + IF(Bi , Bi1 , Bi2 ) + Wi + Ki , Bi+1 = g (Ai , Ai1 , Ai2 , Ai3 , Bi , Bi1 , Bi2 , Bi3 , Wi , Ki ) = Ai3 + Bi3 + 1 (Bi ) + IF(Bi , Bi1 , Bi2 ) + Wi + Ki , o les Ki sont des constantes prdnies pour chaque tape et les fonctions MAJ et IF sont des fonctions boolennes dnies en section A de lappendice. Les fonctions 0 et 1 sont dnies par :
> >2 > >13 >22 0 (x) = (x> ) (x> ) (x> ) > >6 > >11 >25 1 (x) = (x> ) (x> ) (x> ).

la n des 64 tapes, les mots de la sortie de la fonction de compression sont calculs par : h0 = A64 + A0 h4 = B64 + B0 h1 = A63 + A1 h5 = B63 + B1 h2 = A62 + A2 h6 = B62 + B2 h3 = A61 + A3 h7 = B61 + B3 .

La version 224 bits ne diffre de la version 256 bits que par ses valeurs dinitialisation diffrentes et par sa troncature la n de la fonction de compression, an dobtenir la bonne taille de sortie (le dernier bloc h7 est retir). Une description visuelle dune tape est donne dans la gure 4.8 et les caractristiques compltes de la fonction 256 bits peuvent tre trouves dans [N-sha2] et dans [N-sha2b] pour la fonction 224 bits. 43

Chapitre 4. Prsentation des fonctions de la famille MD-SHA


Ai3 Ai2 Ai1 Ai Bi3
IF

Bi2

Bi1

Bi

n m w r t u s

256 16 32 8 1 64 64
M A J

Wi Ki 1

Ai2

Ai1

Ai

Ai+1

Bi2

Bi1

Bi

Bi+1

F IG . 4.8 Une tape de la fonction de compression de SHA-256.

4.9.2

Scurit actuelle

Pour linstant, aucune attaque na t publie pour la version complte de SHA-256. Les essais des cryptologues ne portant que sur des versions trs rduites [GH03, MPR06, NB08, IMP08, SS08]. Ceci peut sexpliquer par la nette amlioration de scurit apporte par SHA-256 par rapport ses anctres de la famille SHA. La mise jour de deux registres par tape permet une bien meilleure diffusion, mais surtout lexpansion de message nest plus linaire dans F2 comme cela tait le cas dans SHA-0 ou SHA-1. En effet, lutilisation dadditions modulaires rend le processus non linaire dans F2 et complique grandement le contrle du message tendu pour un attaquant. Au contraire, la perte de la notion de tour (et de lemploi de fonctions boolennes diffrentes chaque tour) semble faciliter le travail de lattaquant. Mais cette volution parait logique puisque lattention a t porte sur lintgration des mots de message qui fut largement sous-estime par le pass, compare au traitement assez robuste de la variable de chanage. Bien quaucune attaque nait encore t trouve, on peut se poser la question de la scurit inhrente aux membres de la famille MD-SHA du fait de leur pass tumultueux. Limplantation de SHA-256 dans des applications cryptographiques nest pas proscrire, mais par mesure de prcaution le NIST anticipe de futures avances en organisant un appel soumission pour de nouvelles fonctions de hachage, dans le but de standardiser le futur SHA-3 [N-sha3]. Cela permettra des fonctions de hachage trs diffrentes de MD-SHA de pouvoir peut-tre simposer comme nouveau standard.

4.10
4.10.1

SHA-512
Description

SHA-512 fut publie en mme temps [N-sha2] que SHA-256 et reprsente son quivalent pour les processeurs 64 bits, qui vont progressivement remplacer ceux de 32 bits dans les ordinateurs. Les mots traits seront donc de taille 64 bits pour proter pleinement de cette nou44

4.10. SHA-512 velle architecture. Les autres diffrences par rapport SHA-256 concernent la taille de sortie, qui est double pour obtenir une fonction viable sur le trs long terme, et le nombre dtapes qui est augment. Ainsi, SHA-512 produit des hachs de n = 512 bits, mais une version 384 bits [N-sha2] fut aussi introduite en mme temps. Comme pour SHA-256, deux registres sont mis jour durant une tape de SHA-512 et nous notons Ai et Bi ces registres cibles. On maintient donc un tat interne de r = 8 registres de w = 64 bits chacun, initialis par la variable de chanage dentre : A3 = h3 B3 = h7 A 2 = h 2 B2 = h6 A1 = h1 B1 = h5 A0 = h 0 B0 = h4 .

chaque appel, m = 16 mots de message sont traits, avec s = 80 tapes (t = 1 et u = 80 dans notre formalisme). Lexpansion de message, toujours de type rcursif, est similaire celle de SHA-256 except les fonctions 0 et 1 : Wi = Mi , 1 (Wi2 ) + Wi7 + 0 (Wi15 ) + Wi16 , avec pour 0 i 15 pour 16 i 79

> >1 > >8 >7 0 (x) = (x> ) (x> ) (x> ) > > >19 > > >61 > >6 1 (x) = (x ) (x ) (x ).

De la mme faon que dans SHA-256, durant chaque tape j , les registres cibles Aj +1 et Bj +1 sont mis jour par les fonctions f et g respectivement : Ai+1 = f (Ai , Ai1 , Ai2 , Ai3 , Bi , Bi1 , Bi2 , Bi3 , Wi , Ki ) = 0 (Ai ) + MAJ(Ai , Ai1 , Ai2 ) + Bi3 + 1 (Bi ) + IF(Bi , Bi1 , Bi2 ) + Wi + Ki , Bi+1 = g (Ai , Ai1 , Ai2 , Ai3 , Bi , Bi1 , Bi2 , Bi3 , Wi , Ki ) = Ai3 + Bi3 + 1 (Bi ) + IF(Bi , Bi1 , Bi2 ) + Wi + Ki , o les Ki sont des constantes prdnies pour chaque tape et les fonctions MAJ et IF sont des fonctions boolennes dnies en section A de lappendice. Les fonctions 0 et 1 sont diffrentes de celles qui sont utilises dans SHA-256 et sont dnies par :
> >28 > >34 >39 0 (x) = (x> ) (x> ) (x> ) > >14 > >18 >41 1 (x) = (x> ) (x> ) (x> ).

Enn, du fait du rebouclage, la n des 80 tapes, les mots de la sortie de la fonction de compression sont calculs par : h0 = A80 + A0 h4 = B76 + B0 h1 = A79 + A1 h5 = B75 + B1 h2 = A78 + A2 h6 = B74 + B2 h3 = A77 + A3 h7 = B73 + B3 .

La version 384 bits ne diffre de la version 512 bits que par ses valeurs dinitialisation diffrentes et par sa troncature la n de la fonction de compression, pour ainsi obtenir la bonne taille de sortie (les deux derniers blocs h6 et h7 sont retirs). Une description visuelle dune tape est donne dans la gure 4.9 et les caractristiques compltes des deux versions de la fonction peuvent tre trouves dans [N-sha2]. 45

Chapitre 4. Prsentation des fonctions de la famille MD-SHA


Ai3 Ai2 Ai1 Ai Bi3
IF

Bi2

Bi1

Bi

n m w r t u s

512 16 64 8 1 80 80
M A J

Wi Ki 1

Ai2

Ai1

Ai

Ai+1

Bi2

Bi1

Bi

Bi+1

F IG . 4.9 Une tape de la fonction de compression de SHA-512.

4.10.2

Scurit actuelle

Les remarques quant la scurit de SHA-256 sont tout aussi valables pour SHA-512, mme si laugmentation du nombre dtapes et la plus grande taille de sortie semblent la rendre encore plus rsistante des attaques pratiques. Ainsi, SHA-512 peut pour linstant toujours tre utilise dans des applications cryptographiques.

46

C HAPITRE 5

Historique de la cryptanalyse des fonctions de la famille SHA


Sommaire
5.1 5.2 Structure gnrale de la cryptanalyse dune fonction de hachage . . . Premires attaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Les collisions locales . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2 Conditions sur le masque de perturbation . . . . . . . . . . . . . 5.2.3 Attaque de la vraie fonction de compression de la famille SHA 5.2.4 Rechercher une paire de messages valide . . . . . . . . . . . . . 5.2.5 Les bits neutres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.6 Lattaque multiblocs . . . . . . . . . . . . . . . . . . . . . . . . . Attaques de Wang et al. . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 La modication de message . . . . . . . . . . . . . . . . . . . . . 5.3.2 La partie non linaire . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.3 La recherche de vecteurs de perturbation pour SHA-1 . . . . . . 5.3.4 Une analyse plus ne des conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 52 52 54 55 58 60 62 64 65 67 69 76

5.3

Nous tudions dans ce chapitre les diffrentes cryptanalyses qui sont apparues contre les fonctions de la famille SHA. Bien que les attaques contre les autres membres de la famille MD-SHA soient trs similaires tant donn le noyau de construction commun, nous ne les dcrirons pas ici. Nous considrerons des techniques gnriques de cryptanalyse, mais aussi et surtout les spcicits de SHA-0 et SHA-1. Sauf indication contraire, nous utilisons donc dans ce chapitre les paramtres de SHA-0 et SHA-1.

5.1

Structure gnrale de la cryptanalyse dune fonction de hachage

Tout dabord, il nous faut expliciter les diffrentes manires possibles daborder la cryptanalyse. Nous cherchons attaquer une fonction de hachage, ce qui peut tre interprt de diffrentes manires. Ici, nous nous intresserons exclusivement des attaques o lon cherche mettre en dfaut la rsistance en collision. Les fonctions de hachage de la famille MD-SHA utilisant le procd de Merkle-Damgrd comme algorithme dextension de domaine, toute la scurit repose sur la fonction de compression. Comme expliqu prcdemment, il doit ainsi 47

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA tre impossible pour un attaquant de calculer une pseudo-collision sur la fonction de compression, et plus gnralement il doit tre impossible pour lui de calculer deux messages qui aboutissent deux hachs dont la diffrence est prvue. Introduisons le principal outil utilis par les cryptanalystes des fonctions de hachage : le chemin diffrentiel ou caractristique diffrentielle dnit les diffrences qui seront introduites dans le message et la variable de chanage et celles attendues dans les registres internes chaque tape durant la recherche de collisions. Plus gnralement, le chemin diffrentiel peut aussi indiquer les valeurs de certains bits ou xer certaines conditions entre certains bits en plus des diffrences. Ainsi, cet outil est la base de travail lorsque lon souhaite partir dun masque de diffrences choisi (un ensemble de conditions imposes sur la diffrence) dans la variable de chanage et aboutir un autre masque de diffrences choisi en sortie de la fonction. Le rebouclage de la variable de chanage (feedforward) nest pour linstant pas considr ici, le chemin diffrentiel ne concernera que le chiffrement par blocs interne. Il existe plusieurs faons de conceptualiser un chemin diffrentiel, aucune nest parfaite. Dabord, les diffrences considres sont multiples : pour compliquer la cryptanalyse et viter de simples attaques algbriques, les oprations de base utilises dans la famille MD-SHA sont volontairement incompatibles. Par exemple, une diffrence sur une addition modulaire (dans Z2w ) ne se comportera pas de la mme faon quune diffrence binaire (dans Fw 2 ). Pour clarier, nous introduisons les types de diffrences utilises : La diffrence binaire entre deux nombres X {0, 1}w et Y {0, 1}w est dnie par le vecteur (X, Y ) {0, 1}w calcul par (X, Y ) = X Y . La diffrence additive (ou modulaire) entre deux nombres X {0, 1}w et Y {0, 1}w est dnie par (X, Y ) = X Y . Nous avons 2w < (X, Y ) < 2w . La diffrence binaire signe entre deux nombres X {0, 1}w et Y {0, 1}w utilise un ensemble de trois chiffres {1, 0, 1}. La paire (X, Y ) a une diffrence binaire signe (X, Y ) = (X 0 Y 0 , X 1 Y 1 , . . . , X w1 Y w1 ), cest--dire le i-ime chiffre de la diffrence est le rsultat de la soustraction des i-imes bits correspondants de X and Y . Pour reprsenter un chemin diffrentiel, nous utilisons la notation de [CR06], explicite dans le tableau 5.1. Relativement simple et claire pour utiliser la diffrence binaire ou binaire signe, elle prsente nanmoins le dsavantage de ne pas prendre en compte les conditions entre deux bits de positions diffrentes. En fait, cette reprsentation permet daller plus loin quune diffrence binaire signe puisque nimporte quel type de condition est pris en compte pour un couple de bits sur la mme position. Ainsi, on note (X, Y ) une caractristique diffrentielle pour un couple de mots de w bits X et Y . Par exemple, si w = 8, la diffrentielle (X, Y ) = {(X, Y ) | X 7 Y 7 = 0, X i = Y i pour 2 i 5, X 1 = Y 1 , X 0 = Y 0 = 0}

sera reprsente par (X, Y ) = [7 ?---x0]. Nous notons X la diffrence attendue sur un mot X et X le couple de mots (X, X ). Un tel couple satisfait la diffrence attendue si nous avons X X , cest--dire que la diffrence entre les mots X et X est lune des diffrences valides de X . Une caractristique diffrentielle pour une itration de la fonction de compression de SHA-0 ou de SHA-1 sera donc une collection A4 , . . . , A80 et W0 , . . . , W79 . Une paire de messages est i-valide pour un chemin diffrentiel (ou satisfait un chemin diffrentiel jusqu ltape i) si A A ,...,A Ai+1 4 4 i+1 W W0 , . . . , W W79
0 79

48

5.1. Structure gnrale de la cryptanalyse dune fonction de hachage (x, x ) ? x 0 u n 1 # (0, 0) (1, 0) (0, 1) (1, 1) (x, x ) 3 5 7 A B C D E (0, 0) (1, 0) (0, 1) (1, 1) -

TAB . 5.1 Notations utilises dans [CR06] pour reprsenter un chemin diffrentiel : x dsigne un bit du premier message et x dsigne le mme bit pour le deuxime message du couple. et une paire de messages est valide si elle est 79-valide dans le cas de SHA-0 et SHA-1. Supposons quun chemin diffrentiel nous soit donn. Il est possible dvaluer leffort en termes de calculs pour trouver une paire de messages vriant ce chemin laide dun algorithme trs simple de type profondeur en premier, xant les mots de message un par un en commenant par M0 [CR06]. Pour cela, il nous faut calculer le nombre moyen de noeuds visits dans larbre de recherche. Commenons par introduire quelques dnitions, provenant de larticle original de De Cannire et Rechberger [CR06] : Dnition 1 Le degr de libert L(i) dun chemin diffrentiel ltape i est gal au nombre de faons de choisir Wi Wi sans violer de conditions linaires imposes par le calcul du message tendu, tant donn des valeurs xes de Wj pour 0 j < i. Puisque le message tendu est totalement dtermin par les 16 premiers mots dans le cas de SHA-0 ou SHA-1, nous avons L(i) = 1 pour i 16. Dnition 2 La probabilit incontrle Pi (i) dun chemin diffrentiel ltape i est la probabilit que la sortie Ai+1 de ltape i soit valide pour ce chemin sachant que les mots dentre de cette tape sont aussi valides pour ce chemin : Pi (i) = P (Ai+1 Ai+1 | Aij Aij pour 0 j < 5 et Wi Wi ).

Cette dnition nous permet de facilement exprimer le nombre Ne (i) de noeuds visits chaque tape de la fonction de compression lors de la recherche dune paire de messages valide. Le nombre moyen de ls dun noeud ltape i est gal L(i) Pi (i). Ainsi, lorsque lon calcule le nombre de noeuds parcourir en moyenne en remontant les tapes, pour une tape i nous avons Ne (i) = Ne (i + 1) L1 (i) Pi1 (i). La recherche tant nie une fois arrive ltape s 1 = 79, on obtient alors la relation rcursive suivante :

Dans larticle original [CR06], les auteurs ont essay dintroduire une notion supplmentaire (la probabilit

49

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA

1 Ne (i) = Ne (i + 1) L1 (i) P 1 (i)


i

si i = s 1, si i < s 1,

et le nombre total de noeuds parcourus est gal


s 1

NT =
i=0

Ne (i).

An de faciliter la comprhension de ces diffrentes valeurs, nous donnons dans la gure 5.1 et 5.2 des exemples de chemins diffrentiels peu labors pour SHA-0. Pour plus de lisibilit, les probabilits Pi (i), les degrs de libert L(i) et les nombres de noeuds Ne (i) y sont donns en base logarithmique 2. Le premier chemin reprsente une caractristique trs simple o nous nimposons que la condition suivante : nous souhaitons obtenir une collision (aucune diffrence dans les 5 derniers registres mis jour) partir de la vritable valeur dinitialisation de la premire variable de chanage pour SHA-0 ou SHA-1. On remarque que lon doit alors parcourir plus de 2160 noeuds pour trouver une collision. Dans la deuxime gure, le nombre de noeuds parcourir est trs largement rduit grce quelques conditions imposes sur les registres internes et sur les mots de message tendu. La mthode de recherche de ces conditions sera explicite par la suite. On peut toutefois dj observer que les degrs de libert peuvent tre utiliss pour vrier les conditions dans les registres et ainsi potentiellement rduire le cot total de lattaque. De plus, le nombre de noeuds visiter est ncessairement croissant de ltape 79 ltape 15 puisquaucun degr de libert nest alors disponible, et Ne (16) sera en pratique presque toujours le terme maximal parmi les Ne (i) (ainsi NT Ne (16)). Les probabilits faibles sont donc moins contrariantes sur les 16 premires tapes que sur le reste de la fonction de compression, car les mots de messages sont dans ce cas entirement contrls par lattaquant. La condition Ne (s 1) = 1 dans notre mthode nous indique que nous calculons le nombre de noeuds visiter pour trouver une seule paire de messages vriant le chemin diffrentiel. Il est galement possible de gnraliser ce calcul pour trouver a paires valides distinctes en 1 (0) qui reposant Ne (s 1) = a. Ceci nous permet aussi de mieux cerner la signication de Ne prsente le nombre total de paires de messages valides que lon peut engendrer avec le chemin diffrentiel considr. Nous pouvons aussi considrer que cela reprsente le nombre de degrs de libert non utiliss pour rechercher une paire de messages. Il faut noter que la visite dun noeud ne correspond pas forcment au calcul complet dune itration de la fonction de compression. Il est donc prmatur de dire qutant donn un chemin diffrentiel, la complexit en temps pour trouver une paire de messages valide pour ce chemin est exactement gale NT appels la fonction de compression. Il faudra au pralable mesurer le cot moyen de parcours dun noeud, soit de manire thorique, soit de manire exprimentale. Une fois le chemin diffrentiel tabli, il reste lattaquant rechercher une paire de messages vriant ce chemin, ce qui constitue en gnral lessentiel de la complexit de lattaque. Ceci peut tre fait par la mthode trs simple dcrite prcdemment, mais de bien meilleures techniques sont possibles. Cette partie dacclration de recherche est quelquefois imbrique
contrle) pour prendre en compte certains cas particuliers darbres de recherche. Leur expression du nombre de noeuds parcourir dpend la fois de la probabilit contrle et de la probabilit incontrle. Cependant, dans les situations que lon considre, les deux expressions sont quivalentes et aboutissent la mme complexit nale de lattaque.

50

5.1. Structure gnrale de la cryptanalyse dune fonction de hachage


i -4 : -3 : -2 : -1 : 00 : 01 : 12 : 13 : 14 : 15 : 16 : 17 : 75 : 76 : 77 : 78 : 79 : 80 : Ai 00001111010010111000011111000011 01000000110010010101000111011000 01100010111010110111001111111010 11101111110011011010101110001001 01100111010001010010001100000001 ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? -----------------------------------------------------------------------------------------------------------------------------------------------------------Wi L(i) Pi (i) Ne (i)

???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ????????????????????????????????

64 64 64 64 64 64 0 0 0 0 0 0 0

0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -32.00 -32.00 -32.00 -32.00 -32.00

0.00 0.00 0.00 0.00 32.00 96.00 160.00 160.00 160.00 128.00 96.00 64.00 32.00

F IG . 5.1 Un premier chemin diffrentiel peu labor pour SHA-0.


i Ai 01100111010001010010001100000001 ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ---------------------------------------------------------------------------------------------------------------------------x-------------------------------------------------------------x------------------------------x ---------------------------------------------------------------------------------------------------------------------------x------------------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------Wi -------------------------------------------------------------- x------------------------x-----------------------------------xx------------------------------x------------------------------x--------------------------------------------------------------------------------------------------------------------------x-------------------------x------------------------------------x------------------------x----xx------------------------x----- ------------------------------xx------------------------------x-----------------------------xx------------------------x-----------------------------------x ----------------------------------------------------------------------------------------------------------------------------L(i) Pi (i) Ne (i)

00 : 01 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 43 : 44 : 45 : 46 : 47 : 76 : 77 : 78 : 79 : 80 :

32 32 32 32 32 32 32 32 32 32 32 0 0 0 0 0 0 0 0 0 0 0 0

0.00 0.00 0.00 0.00 0.00 0.00 -32.00 -32.00 -32.00 -32.00 -32.00 -2.00 -3.00 -4.00 -2.00 -1.00 -2.00 -1.00 -2.00 0.00 0.00 0.00 0.00

-255.00 -223.00 -31.00 1.00 33.00 65.00 97.00 97.00 97.00 97.00 97.00 97.00 95.00 92.00 59.00 57.00 56.00 54.00 53.00 0.00 0.00 0.00 0.00

F IG . 5.2 Un chemin diffrentiel plus labor pour SHA-0.

dans ltablissement du chemin diffrentiel et permet trs souvent une importante rduction de la complexit de lattaque. Cependant, la rapidit vient au dtriment de la facilit de descrip51

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA tion de lattaque et les techniques sont parfois tellement sophistiques que des erreurs sur des travaux publis peuvent rester plusieurs mois sans tre dtectes [LL05, YS05]. Notamment, nous avons dcouvert plusieurs nouvelles erreurs dans les travaux de Wang et al. [WYY05b, WYY05a] durant la rdaction de cette thse. Nous verrons aussi que lacclration de recherche a des limites, gnralement imposes par la consommation trop importante des degrs de libert. Ceci montre toute la complexit de lapproche du problme, o lattaquant se doit parfois de choisir entre un chemin diffrentiel ayant une relativement faible valeur NT , mais peu de degrs de libert (ce qui est souvent la meilleure stratgie), et un autre chemin ayant une valeur NT plus importante, mais permettant potentiellement une meilleure acclration grce un plus grand nombre de degrs de libert. Comme nous allons le voir, le cheminement historique des attaques contre les fonctions de hachage de la famille MD-SHA est marqu par des amliorations ponctuelles dun ou des deux outils de la cryptanalyse dune fonction de compression : ltablissement dun chemin diffrentiel et lacclration de la recherche de messages. Lamlioration de la comprhension des techniques donne la chance aux cryptanalystes de mieux mesurer la complexit de lapproche gnrale et lon peut supposer que lon verra apparatre dans le futur des mthodes qui permettent de choisir de faon automatise la meilleure stratgie possible.

5.2

Premires attaques

La premire attaque que nous allons dtailler fut publie en 1998 par Chabaud et Joux contre SHA-0 et reprsente lune des bases de la cryptanalyse moderne des fonctions de hachage. Relativement simple, cette attaque constitue nanmoins le squelette de toutes les attaques contre la famille SHA dcrites ultrieurement dans cette thse. Cette mthode utilise la diffrence binaire comme base de raisonnement pour simplier le schma, et considre ensuite la diffrence binaire signe pour amliorer la complexit. Ainsi, une diffrence, note x dans notre formalisme, a un sens et peut tre une diffrence montante n ou descendante u. Comme expliqu prcdemment, SHA-0 comporte des oprations incompatibles, ce qui complique grandement lanalyse. La premire tape de lattaque est de commencer par simplier lanalyse de lalgorithme en partant dun schma modi, puis de se rapprocher graduellement du schma original en corrigeant lattaque si ncessaire.

5.2.1

Les collisions locales

La diffrence binaire est trs facile tudier et peut constituer un premier point dappui pour le cryptanalyste. Ainsi, nous partons dun schma entirement linaire dans F32 2 en modiant les composantes non linaires : les additions modulaires sont transformes en ou exclusif bit bit et les fonctions boolennes MAJ et IF sont remplaces par la fonction XOR, dnie en appendice. Ce processus, appel linarisation de la fonction, aboutit donc la formule de mise jour suivante pour ltape i du tour k :
< <5 > >2 > >2 > >2 Ai+1 = (Ai )< Ai1 (Ai2 )> (Ai3 )> (Ai4 )> Wi Kk .

La deuxime ide de lattaque est dutiliser des collisions locales. Si lon introduit une diffrence a dans un mot du message, cette perturbation va ensuite simmiscer dans le prochain registre mis jour. Si aucune diffrence nest introduite dans les prochains mots du message, a va se propager dans les registres mis jour suivants et crer de nouvelles diffrences qui vont 52

5.2. Premires attaques leur tour se propager, etc. Bien videmment, ce comportement de diffusion des diffrences doit tre rapide dans une fonction de hachage pour viter des attaques o lon nintroduirait que trs peu de diffrences. Essayons prsent de compenser cette diffusion rapide en introduisant ds que possible les corrections adquates dans les mots de message qui suivent lintroduction de a. Supposons quaucune diffrence nest prsente dans les registres Ai4 , . . . , Ai et que lon introduit une premire diffrence binaire sur le mot Wi au niveau du bit j . ltape i, le registre Ai+1 sera mis jour et la diffrence sur Wij va sy propager. Le schma tant totalement linaris (les additions modulaires sont transformes en ou exclusif bit bit), la diffrence se propaj gera au bit Aj i+1 seulement. ltape suivante, la diffrence sur le bit Ai+1 va, en labsence de toute autre modication des entres de cette tape, se propager au prochain registre mis jour Ai+2 ; mais si lon introduit une nouvelle diffrence sur Wi+1 au niveau du bit j + 5 ( cause de la rotation de 5 positions sur Ai+1 ) alors les diffrences sannuleront et aucune diffrence ne sera prsente dans le registre Ai+2 . On continue de la mme manire aux tapes suivantes en 2 2 2 corrigeant Ai+3 , Ai+4 , Ai+5 et Ai+6 par Wij+2 , Wij+3 , Wij+4 et Wij+5 respectivement. Une fois le registre Ai+6 corrig ltape i + 5, la diffrence initiale dans le registre Ai+1 ne sexprimera plus par la suite. Nous avons donc cr une collision dans ltat interne sur ces quelques tapes en corrigeant exactement la diffusion de la perturbation introduite. Un tel motif est appel une collision locale et est dcrit dans la gure 5.3. On peut remarquer que si la perturbation se trouve en position j , les corrections se feront sur les positions j + 5, j et j 2 des mots de message tendu.
i Ai ------------------------------------------------------------------------------------------------------------------x--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Wi -----------------------------------------------------------------------------------x-------------------------x-----------------------------------x--------------------------------x------------------------------x------------------------------x---------------------------------------------------------------------

i2 i1 i i+1 i+2 i+3 i+4 i+5 i+6 i+7

F IG . 5.3 Une collision locale la position de bit j = 10.

Crer une collision locale est simple, mais cela ne suft pas construire une collision sur lensemble de la fonction puisque lattaquant na pas un contrle total sur les mots de message tendu, contrle qui pourrait sembler ncessaire pour raliser les corrections de la perturbation. cause de lexpansion de message, crer une collision locale une certaine tape impliquera srement lintroduction de diffrences non contrles dautres moments du calcul du hach, et ces nouvelles perturbations auront une trs faible probabilit dtre elles-mmes corriges. Il nous faut donc prcisment prvoir lintroduction des perturbations et des corrections dans tout le message tendu, de telle sorte que lexpansion de message entire dessine un motif de collisions locales imbriques, o chaque perturbation introduite est parfaitement corrige. Pour cela, on peut utiliser deux proprits de lexpansion de message de SHA-0 : sa linarit et le fait quil ny ait aucune rotation dans le calcul des mots de message tendu. Ainsi, les bits des mots de message tendu en position j voluent indpendamment de ceux en une position k = j . On 53

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA peut donc grandement simplier lanalyse puisquun raisonnement sur une seule position de bit est prsent possible : si nous introduisons les perturbations sur la position j uniquement, et si ces perturbations vrient lquation de rcurrence dexpansion de message pour SHA-0 Wi = Wi3 Wi8 Wi14 Wi16 alors nous aurons un motif de diffrences sur les mots de message tendu qui reprsente une succession de perturbations et les corrections appropries sur les bits en positions j + 5, j et j 2, et le tout vriant lexpansion de message. On appelle masque de perturbation ou vecteur de perturbation le vecteur qui dnit les tapes o des perturbations sont introduites (chaque perturbation correspondant une collision locale entire, avec les corrections adquates). partir dun masque de perturbation, le chemin diffrentiel correspondant sur les registres internes et sur les mots de message tendu peut tre entirement dduit.

5.2.2

Conditions sur le masque de perturbation

Un vecteur de perturbation vrie lexpansion de message et par consquent, nous avons seulement 216 candidats diffrents (lexpansion de message sur une position de bit est totalement dnie par les 16 premires tapes). Nanmoins, les candidats ne seront pas tous valides, car aucune perturbation tronque ne doit tre prsente. Une perturbation tronque est une perturbation qui apparat virtuellement dans une tape antrieure la premire tape de la fonction de compression. Le vecteur de perturbation peut en effet prendre en compte le cas o une perturbation est insre avant la premire tape et appliquer ainsi les corrections ncessaires (dont certaines seront prsentes dans les premires tapes de la fonction de compression). Aucune diffrence nest pourtant prsente dans la variable de chanage dentre et des corrections non voulues introduiront de nouvelles diffrences non corriges. Cette situation doit tre vite. Pour cela, on peut calculer lenvers la formule dexpansion de message pour le vecteur de perturbation et vrier quaucune perturbation napparat dans les 5 premires tapes virtuelles antrieures la premire tape de la fonction de compression. Nous pouvons dnir le masque de perturbation comme un vecteur de 85 bits M P5 , . . . , M P79 o M Pi impose linsertion dune perturbation ltape i et nous avons : Contrainte 1 Le vecteur de perturbation ne doit comporter aucune perturbation tronque : M P5 = . . . = M P1 = 0. En plus de cette premire contrainte, une condition supplmentaire doit tre satisfaite par les masques de perturbation. En effet, nous cherchons une collision la n des 80 tapes, ce qui nous impose de navoir aucune perturbation partir de ltape 75 puisquune collision locale entire ncessite en tout 6 tapes. Dans le cas contraire, une telle perturbation ne pourrait tre corrige totalement avant la n du calcul de la fonction de compression, et au moins une diffrence serait prsente en sortie. Nous avons donc : Contrainte 2 Le vecteur de perturbation ne doit comporter aucune perturbation non entirement corrige : M P75 = . . . = M P79 = 0. Seulement 128 masques de perturbation sur les 216 initiaux vrient les deux contraintes et en utilisant le chemin diffrentiel dni par lun de ces masques, le calcul dune collision 54

5.2. Premires attaques est immdiat, car le schma simpli que nous considrons est totalement linaire (chacun des 128 vecteurs conduit un chemin diffrentiel avec Ne (i) = 1 pour tout i, puisque nous avons P (i) = 1 chaque tape).

5.2.3

Attaque de la vraie fonction de compression de la famille SHA

Nous avons utilis la diffrence binaire pour trouver une cryptanalyse dune version linarise de SHA-0. Cependant, la fonction de compression nest pas F32 2 -linaire et il nous faut prsent rintroduire les lments rels, tels que laddition modulaire et les fonctions boolennes MAJ et IF. Dans larticle original de Chabaud et Joux, la rintroduction est trs progressive, mais nous tudions ici directement la fonction de compression relle de SHA-0. La diffrence binaire signe sera considre la place du ou exclusif , et nous allons voir que plusieurs nouveaux effets sont maintenant prendre en compte. En fait, nous passons dune attaque dterministe pour le schma simpli une attaque probabiliste pour le schma rel : les lments que nous avions remplacs se comporteront de faon linaire avec une certaine probabilit. Examinons tout dabord les fonctions boolennes. Deux tours sur les quatre utilisent la fonction XOR et ne ncessitent donc pas danalyse particulire (tout se comporte comme prvu avec probabilit 1). Les fonctions IF et MAJ ncessitent toutefois une analyse plus approfondie. Nous allons distinguer plusieurs cas diffrents suivant le nombre de diffrences en entre de la fonction boolenne sur une position de bit (trois bits en entre donc huit cas au total), ce nombre tant identique que lon considre les diffrences binaires ou celles binaires signes. Il est vident que lorsquaucune diffrence nest prsente en entre, les fonctions boolennes IF et MAJ se comportent comme la fonction XOR avec probabilit 1 puisquaucune diffrence ne sera cre. Nous pouvons donc exclure ce cas et il nous reste sept situations tudier : Situation 1 Seul le premier bit dentre de la fonction boolenne contient une diffrence. Situation 2 Seul le deuxime bit dentre de la fonction boolenne contient une diffrence. Situation 3 Seuls le premier et le deuxime bit dentre de la fonction boolenne contiennent une diffrence. Situation 4 Seul le troisime bit dentre de la fonction boolenne contient une diffrence. Situation 5 Seuls le premier et le troisime bit dentre de la fonction boolenne contiennent une diffrence. Situation 6 Seuls le deuxime et le troisime bit dentre de la fonction boolenne contiennent une diffrence. Situation 7 Tous les bits dentre de la fonction boolenne contiennent une diffrence. Pour toutes ces situations, il nous faut analyser si la propagation des diffrences se fait correctement (comme dans le cas du ou exclusif ) pour les fonctions boolennes IF et MAJ. De plus, si une diffrence doit apparatre en sortie de la fonction boolenne, il faut prendre en compte son signe pour corriger de manire approprie durant laddition avec une diffrence de signe oppos (mme pour la fonction boolenne XOR). Nous avons ainsi deux types deffet tudier : la propagation et laddition des diffrences binaires signes. 55

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA On peut se rendre compte quil est impossible davoir une diffrence la fois sur le premier et sur le deuxime bit dentre de la fonction boolenne (ou sur le premier et sur le troisime bit), car ils sont situs des positions diffrentes et nous avons conn les perturbations une seule position de bit. Ainsi, les situations 3, 5 et 7 sont impossibles et seules les situations 1, 2, 4 et 6 sont considrer . Par symtrie, les situations 2 et 4 sont quivalentes pour la fonction IF ; les situations 1, 2 et 4 sont quivalentes pour les fonctions MAJ et XOR comme les situations 3, 5, 6. Une table des valeurs permet de se rendre compte que dans les situations 1, 2 et 4 la fonction boolenne MAJ se comporte comme la fonction XOR avec probabilit 1/2 chaque tape. La situation 6 se comporte comme un XOR si et seulement si les deux diffrences ont un sens oppos. Ce qui veut dire que si lon prend la prcaution que ces deux perturbations conscutives insres aient un sens oppos, alors la fonction boolenne MAJ se comportera comme la fonction XOR avec probabilit 1 dans la situation 6 (et avec probabilit nulle sinon). Une probabilit nulle quivaut un chemin diffrentiel impossible et pour viter cette situation nous devons donc rajouter une nouvelle contrainte. Cette contrainte est nanmoins particulire, car elle concerne le sens des perturbations et non le masque des perturbations en lui-mme. Elle traduira simplement le fait que durant les tapes utilisant la fonction boolenne MAJ, nous ne devons pas observer de perturbations conscutives de mme sens (situation 6) : Contrainte sur signes 1 Le vecteur de perturbation ne doit pas comporter de perturbations conscutives de mme sens entre les tapes 36 et 56 : (M Pi M Pi+1 ) (Wij Wij+1 1) = 0 pour 36 i 55.

Pour la fonction boolenne IF, comme pour la fonction MAJ, tout se comporte comme une fonction XOR dans les situations 1, 2 et 4 avec une probabilit 1/2. La situation 6 est plus problmatique, car la probabilit dun comportement linaire est nulle : une diffrence sera ncessairement renvoye dans le cas de la fonction IF alors quaucune diffrence nest observe en sortie dans le cas de la fonction XOR. Cette situation doit donc tre vite sous peine dobtenir un chemin diffrentiel impossible vrier. Pour cela, il faut empcher davoir deux perturbations conscutives dans le premier tour, o la fonction IF est utilise. Plus prcisment, il faut viter davoir deux perturbations entre les tapes 4 et 16 puisque le problme se situe trois et quatre tapes aprs lintroduction de la perturbation. Cela nous rajoute ainsi une troisime contrainte sur le vecteur de perturbation : Contrainte 3 Le vecteur de perturbation ne doit pas comporter de perturbations conscutives entre les tapes 4 et 15 : M Pi M Pi+1 = 0 pour 4 i 15. Considrons prsent la rintroduction de laddition. Pour quune addition modulaire se comporte comme un ou exclusif , il faut quaucune retenue ne soit implique. En dautres termes, il faut quune perturbation introduite ne se propage pas sur les bits adjacents la position initiale par une modication de la valeur de la retenue sortante. Une simple table des valeurs indique que cela se produit avec une probabilit 1/2. Une condition supplmentaire est quune correction corrige exactement le bit vis, sans introduire de nouvelles diffrences dans les bits adjacents. Ici encore, la diffrence binaire signe devient utile. Si la perturbation
Mme si les perturbations ne sont pas connes une seule position de bit dans le cas de SHA-1, les situations 3, 5 et 7 napparatront que trs rarement en pratique.

56

5.2. Premires attaques que nous avons introduite est une diffrence montante n (respectivement descendante u) alors nous devons obtenir une diffrence montante (respectivement descendante) dans le premier registre mis jour (autrement la retenue a t modie et les bits adjacents comporteront aussi une diffrence), ce qui se produit avec probabilit 1/2. Les corrections devront se faire dans le sens inverse de celui dans lequel sexprime la diffrence concerne. Dans le cas de la premire et de la dernire correction, o la diffrence sexprime simplement comme un terme de laddition, il sufra dutiliser une diffrence de sens inverse la perturbation pour corriger avec probabilit 1. Les autres corrections sont plus complexes, car la perturbation sexprime alors dans la fonction boolenne et peut changer de sens suivant la valeur des autres bits dentre de la fonction. Reprenons les situations tudies prcdemment, sachant que lon ne garde que les cas o les fonctions boolennes se comportent de faon linaire. Pour la fonction XOR, la correction ne se fera dans le bon sens quavec probabilit 1/2 pour les situations 1, 2 et 4. Dans la situation 6, les diffrences sannulant, aucune correction ne sera ncessaire. Pour la fonction MAJ dans les situations 1, 2 et 4, si la diffrence est bien diffuse de faon linaire, son sens ne changera pas et lon peut la corriger avec probabilit 1 en utilisant une diffrence de sens inverse la perturbation. La situation 6 est identique au XOR, les diffrences sannulant. Pour la fonction IF, nous savons que la situation 6 est vite. Dans les situations 2 et 4, si la diffrence est bien diffuse de faon linaire, son sens ne changera pas et lon peut ainsi la corriger avec probabilit 1 en utilisant une diffrence de sens inverse la perturbation. Dans la situation 1, suivant la valeur des deux derniers bits dentre, le sens de la diffrence peut changer et nous corrigeons alors correctement avec probabilit 1/2. Il y a cependant une exception ce raisonnement concernant lopration daddition : si la position du bit considr est j = 31 (le bit de poids fort), alors la diffrence binaire signe na plus de sens puisque la retenue sera de toute faon absorbe par lapplication du modulo de laddition modulaire. cette position, on peut donc corriger sans se soucier du sens de la diffrence, et ceci avec probabilit 1. Il est de ce fait naturel de se servir de cette proprit pour augmenter le plus possible les probabilits de russite. Si nous introduisons les perturbations sur le bit j , la majorit des corrections se feront sur le bit j 2. On maximisera ainsi la russite en posant j 2 = 31, ce qui nous donne j = 33 = 1 (mod 32). Dans le cas de SHA-0, nous utilisons nalement la position j = 1 pour introduire les perturbations. Il existe une autre reprsentation des phnomnes analyss ci-dessus, car toutes les probabilits considres retent des conditions sur les registres internes ou sur les mots de message tendu. Une collision locale a une certaine probabilit de russite suivant son tape de dmarrage et sa position de bit, et ceci peut tre retranscrit en conditions. Nous rsumons dans le tableau 5.2 ces conditions et les probabilits de russite pour chaque tape dune collision locale dans les situations rencontres pour SHA-0 (les situations 1, 2, 4 et 6). Dans les tableaux B.1 et B.2 en appendice est donne une analyse plus complte, comportant toutes les situations. On appelle alors conditions sufsantes les conditions sur les bits de registres internes qui, une fois remplies, fournissent lattaquant une collision avec probabilit gale 1. Il devra donc tester 2b paires de messages, o b reprsente le nombre de conditions sufsantes, avant datteindre son but. Pour illustrer ce qui prcde de faon plus visuelle, la gure 5.4 reprsente un exemple de collision locale signe suivant la fonction boolenne considre. Nous notons C (i) le nombre de conditions prsentes sur Ai , sachant que toute condition portant sur n bits diffrents aura j un poids 1/n pour chacun deux. Par exemple, si nous avons la condition Aj i Ai+1 = 0,
Mme si j = 31, la probabilit ne peut tre gale 1 pour lintroduction de la perturbation, car le signe de la diffrence doit obligatoirement tre connu par lattaquant pour le reste de la collision locale.

57

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA


tape i i+1 i + 2 (IF) i + 2 (MAJ) i + 2 (XOR) i+3 IF i+3 MAJ i+3 XOR i+4 IF i+4 MAJ i+4 XOR i+5 type introduction correction corr. situation 1 corr. situation 1 corr. situation 1 corr. situation 2 (-,a,-) corr. situation 6 (-,a,p2 ) corr. situation 2 (-,a,-) corr. situation 6 (-,a,p2 ) corr. situation 2 (-,a,-) corr. situation 6 (-,a,p2 ) corr. situation 4 (-,-,a) corr. situation 6 (-,p2 ,a) corr. situation 4 (-,-,a) corr. situation 6 (-,p2 ,a) corr. situation 4 (-,-,a) corr. situation 6 (-,p2 ,a) correction
2 Wij+5 2 Aj i+3 j 2 Ai +3 2 Aj i+2 j 2 Ai +2 +2 Aj i1 j +2 Ai1

propagation Aj i+1
+2 Aj i j +2 Ai

addition = a et Wij =a

probabilit 1/2 1 1/4 (1/2 si j = 31) 1/2 a 1/2 (1 si j = 31) 1/2 0

= =

=1 Aj i

+5 Wij+1 =a j +2 j Ai1 = Wi+2 a Wij+2 = a +2 j +2 Aj = Wij+2 i1 Ai 2 Wij+3 =a

2 Wij+3

=a

1/2 1

p2 = a
j 2 j j 2 Ai +2 Ai = Wi+3 a

1/2 (1 si j = 1) 1

=0 Aj i+2
2 Aj i+3

2 Wij+4

=a

1/2 0

2 Wij+4

=a
2 Wij+4

1/2 1

p2 = a Aj i+2 = a

1/2 (1 si j = 1) 1

=a

TAB . 5.2 Conditions vrier pour la russite dune collision locale pour SHA-0 (ou dans la plupart des cas de SHA-1, voir tableaux B.1 et B.2 en appendice), avec une perturbation introduite ltape i et la position j . Le signe de la perturbation est donn par la contrainte Wij = a. La premire colonne dsigne ltape considre et la deuxime prcise le type daction applique et la situation le cas chant. La troisime colonne (respectivement la quatrime) donne les conditions pour que la propagation (respectivement laddition) des diffrences binaires signes se comporte de faon linaire. Enn, la dernire colonne donne la probabilit de russite. nous ajoutons 1/2 C (i) et C (i + 1). Nous donnerons dans la suite pour chaque tape soit les probabilits Pi (i), soit le nombre de conditions C (i) vrier (lanalyse tant quivalente).

5.2.4

Rechercher une paire de messages valide

Une fois lvaluation qualitative dun vecteur de perturbation introduite, on peut rechercher exhaustivement parmi les 216 candidats et garder celui minimisant le nombre de conditions ou celui minimisant Ne (i) pour une certaine tape i. Tout le problme, prsent, est de choisir le bon i. La partie recherche de vecteurs de perturbation reprsente en fait une phase de prcalcul et le vrai cot de lattaque est le cot durant la recherche dune paire de messages valide pour le chemin diffrentiel qui dcoule du vecteur de perturbation. Le i considrer peut varier suivant les mthodes de recherche. Il faut aussi noter que certaines conditions doivent tre vries sur le message tendu. En effet, en plus du masque de diffrences binaires dj prtabli, quelques bits du message tendu doivent vrier certaines relations comme lon peut le constater dans le tableau 5.2. Plusieurs techniques sont possibles pour maximiser la probabilit de succs, comme par exemple xer de faon approprie tous les prdcesseurs de ces bits pour 58

5.2. Premires attaques


fonction boolenne IF i i1 i i+1 i+2 i+3 i+4 i+5 i+6 Ai -----------------------------------------------------------------------------------n--------------------------------------------------------------------------------------------------------------------------------------------------------------------Wi ----------------------------------------------------n-------------------------u-----------------------------------u--------------------------------u------------------------------u------------------------------u--------------------------------------Pi (i) 0.00 -1.00 0.00 -2.00 -1.00 -1.00 0.00 0.00 C (i) 1.5 0.5 1.0 1.0 1.0 0.0 0.0 0.0

fonction boolenne XOR ou MAJ i Ai -----------------------------------------------------------------------------------n-------------------------------------------------------------------------------------------------------------------------------------------------------------------- Wi ----------------------------------------------------n-------------------------u-----------------------------------u--------------------------------u------------------------------u------------------------------u-------------------------------------- Pi (i) C (i)

i1 i i+1 i+2 i+3 i+4 i+5 i+6

0.00 -1.00 0.00 -1.00 -1.00 -1.00 0.00 0.00

0.5 1.0 1.0 1.0 0.5 0.0 0.0 0.0

F IG . 5.4 Une collision locale signe la position de bit j = 10, suivant la fonction boolenne utilise. Lavant-dernire colonne reprsente les probabilits de russite chaque tape (en base logarithmique 2) et la dernire donne le nombre de conditions. tre certain que les paires de messages testes vrieront ces conditions. Cela consommera des degrs de libert sur les messages, mais la recherche sera simplie et acclre, car le problme sera alors dnitivement rgl. On peut sinon exprimer les contraintes sur les mots de message non tendu pour ensuite ne tester que ceux qui appartiennent au sous-espace vriant les conditions durant la recherche dune paire valide. Une premire mthode de recherche trs nave serait de tirer alatoirement une paire de messages qui satisfait le masque de diffrence pour le vecteur W et desprer que le chemin diffrentiel soit aussi vri en ce qui concerne les registres. Toutes les conditions entre la premire et la dernire tape devraient alors tre pris en compte (le i considrer serait gal 0) et le cot total serait lev. Cette mthode nutilise aucun des degrs de libert qui nous sont offerts par les mots de message. Une mthode un peu plus sophistique, dj explicite prcdemment, serait de voir la recherche comme un algorithme de type profondeur en premier en xant tous les mots de message un par un et en commenant par M0 . Pour cette seconde mthode, le nombre total de noeuds visits NT est gal la somme pour chaque tape k des nombres moyens de noeuds visits Ne (k ). Nous avons dj expliqu quen gnral NT Ne (16), car lattaquant peut contrler compltement les 16 premiers mots de message durant les 16 premires tapes. Dans ce cas prsent, la valeur de i considrer est gale 16. Cette mthode utilise donc lgrement les degrs de libert offerts lattaquant, en xant simplement les mots de message des 16 premires tapes de faon indpendante. Nous considrerons par la suite que cette mthode reprsente la base de comparaison pour une recherche de paires de messages valides sans aucune acclration, et nous la nommerons mthode de rfrence. Notons que pour obtenir la complexit exacte 59

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA en termes de nombre dappels la fonction de compression, il nous faudrait valuer le cot du parcours des noeuds de larbre. Dans larticle de Chabaud et Joux [CJ98], une petite amlioration dans la recherche de messages est introduite. Il est remarqu que les conditions sur les registres A16 et A17 peuvent tre satisfaites directement en choisissant avec prcaution les instances du message. Cette amlioration utilise encore un peu plus les degrs de libert disponibles, et permet nalement dobtenir une complexit de 261 conditions pour trouver une collision sur SHA-0, au lieu de 269 pour la mthode de rfrence. Le vecteur de perturbation correspondant est donn en gure 5.5. On peut voir que les contraintes 1, 2 et 3 sont vries pour ce vecteur. Nous donnons aussi un chemin diffrentiel correspondant dans la gure 5.6. Les mots du registre interne Ai pour i = 4, . . . , 0 sont xes aux valeurs dinitialisation spcies pour SHA. Dans cet exemple, les perturbations sont bien toutes places sur la position de bit 1 et sont signes. Toute autre instance de ces signes est valide et quiprobable tant que toutes les contraintes sont vries. Enn, on remarque que les corrections du message tendu sur la position de bit 31 ne sont pas signes, car les signes des diffrences sont compltement sans effet quant la validit du chemin diffrentiel (aucune retenue ne se propage). 00000 00100010000000101111 01100011100000010100 01000100100100111011 00110000111110000000

F IG . 5.5 Vecteur de perturbation utilis pour lattaque en collision contre SHA-0 par Chabaud et Joux [CJ98]. Le vecteur se lit de la gauche vers la droite, les 5 premiers bits reprsentant les perturbations virtuelles sur la variable de chanage en entre.

5.2.5

Les bits neutres

Il faudra attendre six ans avant de voir une premire amlioration de lattaque de Chabaud et Joux sur SHA-0. Cette amlioration porte sur une meilleure utilisation des degrs de libert et non sur la construction du vecteur de perturbation. Cette technique, appele bits neutres et introduite pas Biham et Chen [BC04], est la premire mthode avance dacclration de recherche dune paire de messages valide pour la famille SHA. Lide essentielle est qutant donn une paire de messages i-valide trouve (lordre de grandeur de i en pratique tant entre 19 et 22), il existe des bits du message non tendu que lon peut modier simultanment sans changer la validit de la paire jusqu cette tape i. Chaque modication de ce type est appele bit neutre et peut donc concerner plusieurs bits de messages la fois (un bit neutre peut en fait tre compos de la modication de plusieurs bits de message). partir de la paire de messages i-valide considre, on cherche alors le plus grand ensemble possible Ebn de bits neutres, tel que toute modication compose dune paire de Ebn soit aussi un bit neutre. Cette recherche densemble peut tre conduite de manire assez rapide. Si lon note Nbn le nombre dlments de Ebn , il a t mesur exprimentalement que 1/8 des 2Nbn combinaisons possibles de cet ensemble (soit 2Nbn 3 ) sont des bits neutres pour ltape i. partir dun message i-valide original on peut donc gnrer approximativement 2Nbn 3 nouveaux messages i-valides en appliquant les modications correspondantes, et ce, sans recommencer la recherche entre les tapes 16 et i. 60

5.2. Premires attaques


i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : 80 : Ai 00001111010010111000011111000011 01000000110010010101000111011000 01100010111010110111001111111010 11101111110011011010101110001001 01100111010001010010001100000001 ----------------------------1------------------------------0--------------------------------n1------------------------------0---------------------------1------------------------------0--------------------------------n1------------------------------0-------------------------------------------------------------------------------------------------------------------------------------------------------0------------------------------1------------------------------0-u1---------------------------1--0---------------------------0-u1---------------------------0-n----------------------------1-u------------------------------u-------------------------------------------------------------n------------------------------u---------------------------------------------------------------------------------------------------------------------------n------------------------------n------------------------------n------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n-------------------------------------------------------------u---------------------------------------------------------------------------------------------------------------------------u---------------------------------------------------------------------------------------------------------------------------n--------------------------------------------------------------------------------------------u--------------------------------------------------------------------------------------------u--------------------------------------------------------------------------------------------u------------------------------n------------------------------u-------------------------------------------------------------u------------------------------u--------------------------------------------------------------------------------------------u------------------------------u----------------------------------------------------------------------------------------------------------------------------------------------------------n------------------------------n------------------------------u------------------------------u------------------------------u-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Wi L(i) Pi (i) Ne (i)

-------------------------1----1-------------------------1----0-------------------------0----n-------------------------u----1-------------------------1----nx------------------------1----0x------------------------0----nx------------------------u----0-------------------------0----nx------------------------1----0x------------------------0----1x------------------------1----1-------------------------1----0-------------------------0----1-------------------------1----u-------------------------n----1-------------------------1----0x------------------------n----nx------------------------u----0-------------------------n----0-------------------------n----nx------------------------1----1x------------------------u----u-------------------------n----u-------------------------0----n-------------------------1----0-------------------------0----nx------------------------u----n-------------------------u----1x------------------------u----u-------------------------0----nx------------------------1----1-------------------------1----1x------------------------1----0-------------------------0----1-------------------------1----n-------------------------u----0-------------------------0----0x------------------------n----1x------------------------1----n-------------------------1----1x------------------------1----ux------------------------n----0-------------------------0----nx------------------------1----0x------------------------0----nx------------------------u----0-------------------------0----ux------------------------0----ux------------------------n----1x------------------------1----nx------------------------1----ux------------------------n----0x------------------------0----nx------------------------1----ux------------------------n----nx------------------------u----0x------------------------n----u-------------------------0----0x------------------------n----u-------------------------n----u-------------------------0----u-------------------------0----u-------------------------n----ux------------------------n----nx------------------------1----n-------------------------1----1-------------------------1----0x------------------------0----n-------------------------u----n-------------------------u----0x------------------------n----0-------------------------n----0x------------------------n----nx------------------------1----nx------------------------1----0-------------------------0----0x------------------------0----0-------------------------0----1-------------------------1----1-

30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

-1.00 -1.00 -1.00 -1.00 -2.00 -1.00 -1.00 -1.00 -1.00 0.00 0.00 0.00 -1.00 -1.00 -2.00 -2.00 -3.00 -3.00 -2.00 -1.00 0.00 -1.00 -1.00 -1.00 -1.00 0.00 -1.00 -1.00 -2.00 -1.00 -1.00 0.00 0.00 0.00 0.00 -1.00 0.00 -2.00 0.00 -1.00 -1.00 -2.00 0.00 -1.00 -1.00 -2.00 0.00 -1.00 -2.00 -1.00 -1.00 -2.00 -1.00 -1.00 -2.00 -2.00 -2.00 -2.00 -2.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 0.00 0.00 -1.00 -1.00 -2.00 -2.00 -2.00 -1.00 -1.00 0.00 0.00 0.00 0.00 0.00

-398.00 -369.00 -340.00 -311.00 -282.00 -254.00 -225.00 -196.00 -167.00 -138.00 -108.00 -78.00 -48.00 -19.00 10.00 38.00 66.00 63.00 60.00 58.00 57.00 57.00 56.00 55.00 54.00 53.00 53.00 52.00 51.00 49.00 48.00 47.00 47.00 47.00 47.00 47.00 46.00 46.00 44.00 44.00 43.00 42.00 40.00 40.00 39.00 38.00 36.00 36.00 35.00 33.00 32.00 31.00 29.00 28.00 27.00 25.00 23.00 21.00 19.00 17.00 16.00 15.00 14.00 13.00 12.00 11.00 10.00 10.00 10.00 9.00 8.00 6.00 4.00 2.00 1.00 0.00 0.00 0.00 0.00 0.00

F IG . 5.6 Chemin diffrentiel utilis pour lattaque en collision contre SHA-0 par Chabaud et Joux [CJ98]. 61

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA Si lon arrive dtecter un ensemble assez grand (et puisque la recherche de Ebn ncessite un temps de calcul ngligeable), le cot pour trouver la paire de messages i-valide originale sera amorti et lon pourra dans ce cas considrer que la recherche dune collision commence ltape i. Plus exactement, il faut que la taille de lensemble des bits neutres valides soit au moins aussi grande que le nombre de conditions satisfaire entre ltape i et 80, soit :
79

Nbn 3 k =i

Pi1 (k ).

Cette ingalit doit tre vrie si lon souhaite que lattaque fonctionne partir dune seule paire de messages i-valide. On peut, si ncessaire, utiliser plusieurs paires de message i-valides pour relcher cette ingalit. Nanmoins, aprs application de la technique des bits neutres, on doit obtenir un nombre sufsant de paires i-valides pour esprer trouver une collision. On voit que le choix de ltape i considrer est crucial, car si i est trop petit il sera trs facile de trouver un ensemble Ebn trs grand, mais le gain nal ne sera pas sufsamment important. Inversement, choisir un i trop grand ne permettra pas de dtecter un ensemble Ebn contenant assez dlments pour trouver une collision parmi les messages obtenus grce aux bits neutres. Mme si ceci dpend du message i-valide original, on peut vrier exprimentalement que le choix i = 20 semble proche de loptimal pour SHA-0. Une limitation qui ne fut pas mentionne dans larticle original, car peu importante dans le cas de SHA-0, existe cependant. Comme prcis prcdemment, durant la recherche dun message i-valide, il faut tenir compte de contraintes sur le message tendu. Lapplication des modications dun bit neutre peut alors invalider ces contraintes pourtant vries pour le message i-valide original. Ainsi, lattaquant se retrouve rduit dans son espace de recherche de bits neutres : seuls peuvent tre considrs les bits du message non tendu qui ne sont pas prdcesseur dun bit du message tendu contraint (il est certes possible, mais trs rare, quun bit neutre modie plusieurs bits contraints du message non tendu, de telle sorte que les conditions sur le message tendu soient toujours vries). Ce problme nest pas trs contrariant dans le cas de SHA-0 : puisque les perturbations ne seront prsentes quexclusivement sur la position de bit 1, toutes les contraintes sur le message tendu seront situes sur les positions de bit 1, 6 ou 31. Aucune rotation ntant utilise dans lexpansion de message, toutes les contraintes sur le message non tendu seront aussi situes sur les positions de bit 1, 6 ou 31, et lespace de recherche de bits neutres nen sera que trs peu diminu. Par contre, comme nous le verrons plus tard dans le cas de SHA-1, les contraintes seront situes sur des positions de bits plus varies, mais surtout la rotation dans lexpansion de message inuera sur beaucoup plus de bits du message non tendu. Ceci explique pourquoi la technique des bits neutres est assez inefcace pour SHA-1. Finalement, grce cette nouvelle mthode, la complexit pour trouver une collision sur SHA-0 fut ramene 256 appels la fonction de compression.

5.2.6

Lattaque multiblocs

Lamlioration suivante [BCJ05] des cryptanalyses de SHA-0 concerna ltablissement de vecteurs de perturbation et non la recherche de paire de messages valide pour un vecteur donn. Lide est dessayer de relcher certaines des contraintes sur le vecteur de perturbation, et notamment les contraintes 1 et 2 stipulant quaucune diffrence ne doit tre prsente dans les variables de chanage dentre et de sortie. Ces contraintes ont un sens si lon recherche 62

5.2. Premires attaques une collision en nutilisant quune seule itration de la fonction de compression, mais on peut imaginer une collision pour laquelle des diffrences sur les blocs de message sont introduites dans plusieurs itrations conscutives. Lide de cette mthode, appele technique multiblocs, est ne de lobservation quil est plus facile de trouver une presque collision sur SHA-0 (quelques bits peuvent tre diffrents sur la variable de chanage de sortie) quune collision relle. Comment alors obtenir une collision laide de presque collisions successives ? Le rle du rebouclage tant ici important, nous considrerons les diffrences comme tant des diffrences i (respectivement i ) reprsente la diffrence modulaire en entre (respectivemodulaires : e s i la diffrence modulaire ment sortie) du chiffrement par blocs interne durant litration i, et M sur le bloc de message correspondant. Supposons que pour la premire itration o lon insre des diffrences dans le message, on puisse trouver un vecteur de perturbation sans diffrence 1 = 0) et aboutissant sur la variable de chanage dentre (vriant de ce fait la contrainte 1 : e 1 = 0). La nouvelle variable denune presque collision sur la variable de chanage de sortie (s 2 = 1 + 1 = 1 ) et lon tre pour la seconde itration comportera donc quelques diffrences (e e s s pourra essayer de chercher un autre vecteur de perturbation qui commence par ces diffrences 2 = 0). Il ne faut cependant pas oublier le et qui dbouche sur une autre presque collision (s i+1 = i + i ). On peut continuer, rebouclage qui rinjecte en sortie les diffrences dentre (e s e de la mme manire, sur plusieurs blocs de message jusqu aboutir une ultime itration k pour laquelle les diffrences dentre annuleront parfaitement celles de sortie lors du rebouk = k ). Il faut noter que puisque les diffrences en entre et en sortie dun vecteur clage (s e de perturbation peuvent tre signes comme le souhaite lattaquant, la dernire itration k fera en fait correspondre la mme diffrence binaire non signe en entre que celle en sortie (il sufra de forcer des signes inverses pour obtenir une collision aprs le rebouclage). la n du processus, nous obtenons une collision en ayant insr des diffrences sur les blocs de message durant plusieurs itrations conscutives (voir gure 5.7). La complexit totale sera alors gale la somme pour chaque itration des complexits pour trouver une paire de messages valide.

1 =0 e

1 M

2 e

2 M

k e

k M

Chemin diffrentiel 1
1 s 1 e

Chemin diffrentiel 2
2 s 2 e

Chemin diffrentiel
k
k = k s e k e

=0

F IG . 5.7 Principe de lattaque multiblocs. 63

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA Pour planier lattaque et prvoir quelles presque collisions nous allons tenter de parcourir, on peut construire au pralable un graphe orient dont les noeuds reprsentent les diffrences dans la variable de chanage et les artes sont des vecteurs de perturbation qui permettent de joindre un masque de diffrence sur la variable de chanage dentre un masque sur celle de sortie (toujours sans oublier le rebouclage). Il faut noter que puisque les perturbations sont toujours situes sur la position de bit 1, le nombre de masques possibles (le nombre de sommets) est gal 25 = 32. On associe ainsi chaque arte un poids qui correspond au cot estim de la recherche dune paire de messages valides pour le vecteur de perturbation correspondant. Une fois le graphe tabli grce des vecteurs de perturbation dont le cot nest pas trop grand, on recherche le chemin de poids le plus faible partant du sommet sans diffrence et arrivant ce mme sommet. Le chemin trouv dnira exactement les vecteurs de perturbation utiliser successivement. Cependant, dans le cas de SHA-0, le chemin de poids le plus faible dans ce graphe est le vecteur de perturbation dj trouv par Chabaud et Joux et ne ncessitant quune seule itration. Une autre amlioration est alors ncessaire. On peut augmenter la connectivit du graphe en analysant plus nement le comportement de la fonction boolenne IF utilise dans les premires tapes de SHA-0. Nous avons suppos prcdemment que cette fonction se comportait comme la fonction XOR avec une certaine probabilit et ceci nous a permis de construire des vecteurs de perturbation. Nanmoins, on peut aussi prendre en compte les situations ou cette approximation nest pas vrie, spcialement pour les 5 premires tapes (pour lesquelles sexpriment les diffrences sur la variable de chanage dentre). Concrtement, une diffrence dentre a pourra se comporter dune faon autre que celle prvue initialement. Ce comportement sera certaines fois identique celui dune autre diffrence dentre b se comportant elle de faon linaire pour aboutir la diffrence de sortie c. Ainsi, en plus de larte oriente b c, nous avons prsent larte a c pour un cot gal. Grce cette augmentation de la connectivit du graphe, il est prsent possible de trouver une attaque plus rapide que celle de Chabaud et Joux. Les vecteurs de perturbation de cette attaque, ncessitant 4 itrations o lon introduit des diffrences sur les blocs de message, sont explicits dans la gure 5.8. Pour tous les blocs, on peut observer que la contrainte 2 nest plus i = 0). De mme pour la contrainte 1 ( i = 0), sauf pour le premier bloc, car aucune vrie (s e 1 = 0). Enn, la contrainte 3 est toujours diffrence napparat dans la valeur dinitialisation (e prsente. La complexit nale est gale la somme des complexits pour trouver des paires de blocs de message valides pour chaque itration, soit 249 appels la fonction de compression. Cette valuation tient compte de la technique des bits neutres qui peut tre utilise dans la recherche de messages pour chaque itration. Ce travail a conduit au calcul de la premire collision pour SHA-0. Lamlioration multiblocs seule ne permet toujours pas dattaquer SHA-1, car la rotation dans lexpansion de message force les perturbations se situer sur des positions de bit diffrentes entre elles. Dans ce cas, le nombre de sommets dans le graphe augmente fortement et il est difcile de construire un graphe assez connexe pour trouver un chemin de poids faible.

5.3

Attaques de Wang et al.

partir de 2004, une quipe de recherche chinoise publia de nombreuses amliorations aux attaques dj connues sur les fonctions de hachage de la famille MD-SHA [WYY05d, WY05, WYY05c, WYY05b, WYY05a, WLF05, WFL04, YWY06]. Deux grandes nouveauts furent intro64

5.3. Attaques de Wang et al. Vecteur de perturbation Bloc 1 00000 (00000) 00010000101001000111 10010110000011100000 00000011000000110110 00000110001011011000 Bloc 2 01000 (11000) 10000000010000101001 00011110010110000011 10000000000011000000 11011000000110001011 Bloc 3 10001 (10011) 00100101000100101111 11000010000100001100 00101100100000000001 11010011101000010001 Bloc 4 11010 (00010) 00100000000100001010 01000111100101100000 11100000000000110000 00110110000001100010

F IG . 5.8 Vecteurs de perturbation pour lattaque multiblocs sur SHA-0 [BCJ05]. Chaque vecteur se lit de la gauche vers la droite, les 5 premiers bits reprsentant les perturbations virtuelles sur la variable de chanage en entre. Les bits entre parenthses reprsentent les vraies perturbations attendues en entre. duites, lune concernant ltablissement de vecteurs de perturbation et lautre permettant une meilleure recherche dune paire de messages valide.

5.3.1

La modication de message

Cette mthode permet dacclrer la recherche dune paire de messages valide pour un vecteur de perturbation donn. Cette avance tant le fruit dun travail indpendant des prcdents rsultats sur la famille SHA, la technique elle-mme de recherche dune paire de messages valide sera diffrente. On peut distinguer deux types : la modication de message simple et la modication de message avance. Lide gnrale dune modication de message consiste modier minutieusement certains bits du message de telle sorte quune condition sur les registres internes auparavant non vrie devienne valide, tout en vitant de perturber celles dj remplies pour les tapes prcdentes. Ces modications sont tablies juste aprs avoir trouv le chemin diffrentiel et utilises plus tard si ncessaire durant la recherche dune paire de messages valide. Plus exactement, une fois le vecteur de perturbation choisi et le chemin diffrentiel tabli, les conditions sur le message non tendu pourront tre dduites. On se place ainsi dans le sousespace des messages qui vrient ces contraintes et lon choisit un membre au hasard dans cet ensemble. On calcule alors tape par tape les valeurs des registres internes pour ce candidat. chaque rencontre de contrainte non vrie sur ces registres, on applique la modication de message correspondante pour forcer la validit et lon continue la condition suivante. Avec une probabilit relativement forte, aucune condition prcdemment force ne sera invalide par lapplication de la modication. Il faut noter que comme pour les bits neutres, on doit faire attention toujours vrier les conditions sur le message lorsque lon effectue une modication. La modication de message simple concerne seulement les conditions qui appartiennent aux tapes 0 15, pour lesquelles lattaquant possde un contrle total, car lexpansion de mes65

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA sage nest pas encore utilise. En gnral, ces modications ne se composent que dun seul bit changer, directement reli au bit du registre interne ventuellement corriger. Par exemple, j si une condition nest pas vrie sur le bit Aj i , on pourra modier le bit Wi (sous rserve quil ne soit pas impliqu dans une contrainte sur le message tendu). Cette technique remplace en fait notre prcdente recherche de messages sous forme de parcours darbre. Pour cette partie de lattaque, les conditions peuvent de toute faon tre xes de manire relativement indpendante. Ceci implique que le cot total de lattaque nest pas corrl cette premire phase et donc quaucune amlioration ne dcoulera des modications de message simples (par analogie, le nombre de noeuds parcourir dans larbre restera constant). La modication de message avance permet de satisfaire des conditions postrieures ltape 15 et induit ainsi une amlioration de la complexit totale. Approximativement, il est possible de corriger les conditions non valides jusqu ltape 25 dans le cas de SHA. Le reste des conditions seront satisfaites de manire probabiliste, en essayant de nombreuses instances de message. Les modications de message avances sont beaucoup plus complexes et ncessitent en gnral de changer plusieurs bits la fois. La mthode est aussi moins directe que celle des modications de message simples. Par exemple, on pourra modier un bit Wij du message, ce qui induira une modication de Aj i+1 (on suppose que la retenue ne se propage +5 pas). Cette modication dans le registre va se diffuser dans les mots suivants : dans Aj i+2 , puis 2 j j +10 dans Aj i+3 , puis dans Ai+4 et Ai+4 etc. et dautres modications seront aussi cres partir de Wij cause de lexpansion de message. Ces nouvelles modications vont leur tour ellesmmes crer dautres modications et ainsi de suite. On espre donc corriger prcisment une position de bit du registre interne des tapes relativement avances, sans pour autant invalider les prcdentes conditions remplies dautres positions. En pratique, les retenues se propageant certaines fois, il y aura une probabilit dchec associe toute modication. Pour cette raison, lordre dapplication des modications de message sera en fait trs important. Il faut aussi rappeler que lattaquant nest pas compltement libre de modier les bits de message cause des contraintes dues au chemin diffrentiel.

Une fois le chemin diffrentiel tabli, lattaquant peut engendrer lensemble des modications de message possibles en linarisant le schma (comme lors de la construction du vecteur de perturbation). En identiant les positions de bit o des conditions sont prsentes, il peut choisir les meilleures modications de message en tenant compte de leur probabilit de succs pour le schma rel (non linaris) et en slectionnant lordre dapplication optimal. Trouver des modications de message dpend aussi fortement du vecteur de perturbation considr. Dans les articles originaux sur SHA, trs peu de dtails furent donns sur ce sujet et il est suppos que toutes les modications de message furent tablies la main. Il tait de plus impossible de rellement valuer la complexit du processus dans le cas de SHA-0 ou de SHA-1 tant donn le ou concernant limplantation des modications de message. Le cas de MD concernant la modication de message est nalement assez diffrent de celui de SHA, car lexpansion de message est ici un lment trs important considrer.

On peut enn remarquer la dualit entre les bits neutres et les modications de messages : les premiers tentent de multiplier les instances de message valides tandis que les seconds corrigent les mauvaises instances. Dans les deux cas, ces techniques reprsentent une meilleure utilisation des degrs de libert durant lattaque. 66

5.3. Attaques de Wang et al.

5.3.2

La partie non linaire

La deuxime avance majeure concerne ltablissement du vecteur de perturbation. La technique multiblocs a dj permis de saffranchir des contraintes 1 et 2 sous rserve que lon russisse trouver un chemin de poids faible dans le graphe orient des connexions possibles entre les variables de chanage. Nous allons ici essayer de nous dbarrasser de la contrainte 3 qui nous impose de ne pas observer deux collisions locales conscutives durant le premier tour ( cause de la fonction boolenne IF qui ne se comporte jamais de faon linaire dans ce cas). Voir SHA-1 de faon linarise permet de grandement simplier lanalyse, le problme tant que le retour la fonction relle implique de fortes contraintes sur le vecteur de perturbation (contrainte 3). On peut alors essayer de laisser lvolution des diffrences se comporter de faon non linaire. En gnral, plus le schma se comportera de faon non linaire et plus les probabilits de succs seront faibles. Cependant, nous avons dj vu que les probabilits pour les 16 premires tapes ninuent que trs peu sur la complexit totale de lattaque, car nous avons un contrle absolu sur le message et les conditions peuvent tre vries de faon relativement indpendante. Il est donc naturel dessayer de permettre un comportement non linaire faible probabilit de succs durant ces premires tapes en laissant par exemple se propager les diffrences sur les retenues lors des additions ou en considrant la fonction boolenne IF relle.

1 =0 e

1 M

2 = e s

2 M

Partie NL1 Chemin diffrentiel 1


1 e

Partie NL2 Chemin diffrentiel 2


2 e

=0

F IG . 5.9 Attaque multiblocs avec partie non linaire pour les premires tapes. Cette technique est en fait trs similaire (bien que plus gnrale et beaucoup plus complexe mettre en oeuvre) celle utilise par Biham et al. [BCJ05] pour construire le graphe orient des connexions possibles entre les variables de chanage, o lon considrait que la fonction boolenne IF dans les 5 premires tapes peut se comporter de faon non linaire. Leffet sera identique : la connectivit du graphe sera augmente. De plus, la complexit totale tant relativement indpendante de cette partie non linaire, le poids de larte ne dpend que du vecteur 67

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA de perturbation entre les tapes 16 et 80. Thoriquement, si lon arrive toujours trouver une partie non linaire quelles que soient les diffrences prsentes sur la variable de chanage dentre, le graphe devient mme complet (tous les sommets sont relis deux deux par une arte). Autrement dit, on peut relier nimporte quel masque de diffrences sur la variable de chanage dentre nimporte quel masque de diffrences sur celle de sortie (sous rserve quun vecteur de perturbation existe), avec des poids relativement faibles. videmment, le deuxime effet sera aussi que la contrainte 3 nest plus vrier puisque lon ne se place plus dans un comportement linaire et que par consquent, de meilleurs vecteurs de perturbation peuvent tre utiliss.

1 1 = 0 M = 0 e

2 =0 e

2 M

Bloc sans diffrence


1 =0 s

Partie NL Chemin diffrentiel


2 =0 s

1 e

2 e

=0

F IG . 5.10 Attaque en un bloc de diffrence avec partie non linaire pour SHA-0 [WYY05d]. Dans le cadre dune attaque multiblocs, nous navons prsent besoin que de deux itrations. Nous nallons en fait utiliser quun seul vecteur de perturbation pour les deux blocs de message qui contiennent des diffrences. Ceci est explicit dans la gure 5.9. On recherche tout dabord le meilleur vecteur de perturbation (celui avec la plus forte probabilit de russite entre les tapes i et 80, o i reprsente ltape partir de laquelle les modications de message ne peuvent plus tre appliques) sans tenir compte des contraintes 1, 2 et 3 et quelles que soient les diffrences prsentes sur la variable de chanage dentre et celle de sortie. Soit V ce vec teur, qui fait correspondre une diffrence binaire e en entre une diffrence binaire s en sortie. Ce vecteur tant recherch en linarisant le schma, il est par consquent non sign au dpart. Les conditions sur les mots de messages tendus, au choix de lattaquant, permettront de le signer lors de la recherche dune instance de paire de messages valide. Son masque de diffrences binaires en entre et en sortie peut de ce fait correspondre des diffrences binaires signes montantes ou descendantes, fournissant directement les diffrences modulaires correspondantes. Ainsi, V peut tre utilis comme un vecteur possdant une diffrence modulaire s ou s sur la variable de chanage de sortie, il suft dinverser les signes. Le cot de ce vecteur restera inchang, quels que soient les signes utiliss. On choisit donc au hasard une 68

5.3. Attaques de Wang et al. instance s de diffrence modulaire. Le premier bloc commence par une diffrence nulle et lon cherchera une partie non linaire N L1 permettant de se replacer dans les 16 premires tapes sur le vecteur de perturbation V partir dune diffrence nulle. On obtient alors une diffrence modulaire s avant et aprs application du rebouclage la n du premier bloc. Cette mme diffrence sera prsente en entre de la deuxime itration et il faudra rechercher une autre partie non linaire N L2 partant cette fois de s et se replaant sur V dans les 16 premires tapes. la n de V , nous avons une diffrence s qui aprs application du rebouclage aboutit une diffrence nulle, une collision. On peut remarquer que le masque de diffrences en entre de V na aucune importance et seul celui de sortie est considrer. Nous avons considr jusquici quil tait toujours possible de trouver une partie non linaire. Toutefois, dans les articles originaux, aucun dtail ne fut donn ce sujet et il semble que les parties non linaires de SHA-0 et de SHA-1 furent, comme les modications de message, trouves la main. Il faut noter que mme si une partie non linaire fut utilise par lquipe de recherche chinoise pour SHA-0, aucune technique multiblocs ne fut considre, contrairement au cas de SHA-1. Cela peut sexpliquer par lincapacit de trouver la main un chemin non linaire pour les deux itrations pour SHA-0. Lattaque ncessite cependant deux blocs, dont le premier ne contient aucune diffrence. En effet, certaines conditions sur la valeur des bits dans la variable de chanage dentre sont requises par la partie non linaire du deuxime et dernier bloc (conditions non vries dans les valeurs dinitialisation spcies par lalgorithme). Ceci est explicit dans la gure 5.10 00111 01111001010010101000 01100010001011100000 01000001000000000100 11001101011101000000

F IG . 5.11 Vecteur de perturbation utilis pour lattaque en un bloc sur SHA-0 [WYY05d]. Le vecteur se lit de la gauche vers la droite, les 5 premiers bits reprsentant les perturbations virtuelles sur la variable de chanage en entre. Finalement, le vecteur de perturbation utilis pour SHA-0 est donn dans la gure 5.11. On peut remarquer que les contraintes 1 et 3 nont plus besoin dtre vries grce la partie non linaire. Par contre, la contrainte 2 est toujours vrie, car nous ne sommes pas en prsence dune attaque multiblocs. Le chemin diffrentiel nal est donn dans la gure 5.12, les auteurs ont annonc la recherche dune collision en approximativement 239 appels la fonction de compression laide de la technique de modication de message.

5.3.3

La recherche de vecteurs de perturbation pour SHA-1

Nous nous sommes jusqu prsent surtout concentrs sur le cas de SHA-0, car les prcdentes amliorations ne sufsaient pas attaquer SHA-1. La modication de message et la partie non linaire aboutirent en fait la premire attaque thorique contre SHA-1 [WYY05b, WYY05c, WYY05a]. Les mthodes sont identiques celles utilises pour SHA-0, except la recherche de vecteurs de perturbation. En effet, la rotation dans lexpansion de message change compltement la situation et il a fallu crer une nouvelle heuristique pour trouver de bons candidats. 69

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA


i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : 80 : Ai ------------------------------------------------------------------------------------1-----1-1----------------------1-----1-0--------11110011111--11110-----u-------01001110111-101nuu--1-u0-0--11111nuuuuuuuuuu1-unnun1--1-1--111110-0nuu0010u0u--01010n1----1-nuuuuu000--1111-n110011-0------n-000100100100-0-01-nu---------011011110nu0-unn--0--10n0------11101111u0100--000----1n---------unnnnnnnnnnn-111---1--1----------000000011001-----0-------------111111111111-------n0---------------------n-----1--0-----------------------0---0--------------------------1---0-n1---------------------------1--0---------------------------1-u1---------------------------0--0-----------------------------u1---------------------------------------------------------------------------------------------------------------------------------------------------------u------------------------------n---------------------------------------------------------------------------------------------------------------------------n---------------------------------------------------------------------------------------------------------------------------n-------------------------------------------------------------u------------------------------n------------------------------u------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------u---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n--------------------------------------------------------------------------------------------u------------------------------n--------------------------------------------------------------------------------------------u------------------------------u-------------------------------------------------------------u-------------------------------------------------------------n------------------------------u------------------------------n-------------------------------------------------------------u------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Wi L(i) Pi (i) Ne (i)

n------------------------n----u-------------------------1----1n------------------------n----n-------------------------u----0-------------1100-0------u----1----------101------------n----nn--------0---------------0----un------------------------1----n-----------0-------------u----0n----------111010--------0----1n------------------------n----0n------------------------0----n-------------------------0----nn------------------------u----0n------------------------0----0n------------------------u----0x------------------------0----1-------------------------n----0x------------------------0----u-------------------------1----1x------------------------1----0x------------------------0----u-------------------------n----n-------------------------u----ux------------------------1----n-------------------------0----1-------------------------1----nx------------------------u----1-------------------------1----ux------------------------1----1x------------------------1----nx------------------------u----0-------------------------0----1x------------------------n----nx------------------------u----1-------------------------n----n-------------------------0----ux------------------------1----0-------------------------0----0x------------------------0----1-------------------------1----1-------------------------1----n-------------------------u----1-------------------------1----ux------------------------1----0x------------------------0----0x------------------------0----0-------------------------0----u-------------------------n----1-------------------------1----nx------------------------0----0x------------------------0----0x------------------------0----1-------------------------1----1-------------------------1----1-------------------------1----1-------------------------1----0-------------------------0----n-------------------------u----0-------------------------0----ux------------------------1----ux------------------------n----nx------------------------u----ux------------------------1----u-------------------------1----u-------------------------n----ux------------------------n----nx------------------------0----1-------------------------n----0-------------------------0----0-------------------------u----ux------------------------n----0-------------------------u----u-------------------------1----1x------------------------n----1-------------------------1----u-------------------------1----1x------------------------1----0x------------------------0----0-------------------------0----1-

29 30 29 30 25 27 28 29 29 23 29 29 30 29 29 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

-20.00 -25.00 -29.03 -22.00 -14.00 -16.00 -18.00 -16.00 -13.00 -7.00 -3.00 -3.00 -3.00 -2.00 -3.00 -2.00 -2.00 -1.00 0.00 0.00 0.00 -1.00 -1.00 -1.00 -1.00 0.00 -1.00 0.00 -1.00 0.00 -1.00 0.00 -2.00 -1.00 -2.00 -1.00 -1.00 0.00 0.00 0.00 0.00 -1.00 0.00 -1.00 -1.00 -1.00 0.00 -1.00 0.00 -1.00 -1.00 -1.00 0.00 0.00 0.00 0.00 0.00 -1.00 0.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -1.00 -2.00 0.00 -2.00 -1.00 -2.00 -1.00 -2.00 0.00 -1.00 0.00 0.00 0.00 0.00

-212.97 -203.97 -198.97 -199.00 -191.00 -180.00 -169.00 -159.00 -146.00 -130.00 -114.00 -88.00 -62.00 -35.00 -8.00 18.00 45.00 43.00 42.00 42.00 42.00 42.00 41.00 40.00 39.00 38.00 38.00 37.00 37.00 36.00 36.00 35.00 35.00 33.00 32.00 30.00 29.00 28.00 28.00 28.00 28.00 28.00 27.00 27.00 26.00 25.00 24.00 24.00 23.00 23.00 22.00 21.00 20.00 20.00 20.00 20.00 20.00 20.00 19.00 19.00 18.00 17.00 16.00 15.00 14.00 13.00 12.00 11.00 9.00 9.00 7.00 6.00 4.00 3.00 1.00 1.00 0.00 0.00 0.00 0.00

F IG . 5.12 Chemin diffrentiel utilis pour lattaque en un bloc sur SHA-0 avec partie non linaire [WYY05d]. 70

5.3. Attaques de Wang et al. Tout dabord, les remarques prcdentes sur la position des perturbations pour SHA-0 restent valides : la position de bit 1 est privilgier pour introduire une perturbation, car cest celle qui ncessite le moins de conditions en gnral. Hlas, dans le cas de SHA-1, il est impossible de conner une seule position lensemble des perturbations cause de la rotation dans lexpansion de message. Cette rotation engendre deux problmes : on ne peut plus se contenter facilement de choisir la position de bit 1, et lespace de recherche parmi les vecteurs de perturbations devient immense. Dans le cas de SHA-0, nous avions pu rduire lespace de recherche un vecteur de 16 bits. Pour SHA-1, lespace est prsent de 16 mots de 32 bits chacun : un bit pour chaque position dintroduction. Les vecteurs de perturbation entiers (pour les 80 tapes) peuvent tre dduits en utilisant comme prcdemment la formule dexpansion de message ou son inverse si ncessaire.
i 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : vecteur de perturbation 1-----------------------------1-------------------------------------------------------------1-------------------------------------------------------------11 -------------------------------------------------------------1------------------------------1-------------------------------1 -------------------------------------------------------------1------------------------------1-------------------------------1 --------------------------------------------------------------------------------------------1------------------------------11 -------------------------------------------------------------1------------------------------1--------------------------------------------------------------------------------------------1---------------------------------------------------------------------------------------------------------------------------1-------------------------------------------------------------1-------------------------------------------------------------1-------------------------------i 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : vecteur de perturbation ------------------------------1--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1-------------------------------------------------------------------------------------------1-------------------------------------------------------------------------------------------1--------------------------------------------------------------1----------------------------1-------------------------------------------------------------------------------------------1--------------------------------------------------------------1-1--------------------------1-------

F IG . 5.13 Vecteur de perturbation pour lattaque multiblocs sur SHA-1 en 269 appels la fonction de compression [WYY05b]. Les 16 premires tapes ont t tes, car remplaces par la partie non linaire en pratique. Les caractres 0 ont t remplacs par - pour une meilleure lisibilit. Wang et al. [WYY05c] choisirent une mthode assez simple pour valuer rapidement la qualit dun vecteur de perturbation. Chaque perturbation commenant dans une tape utilisant la fonction boolenne XOR induit 2 conditions si elle est base sur la position de bit 1, et 4 conditions sinon. Pour une perturbation commenant dans une tape utilisant la fonction boolenne IF (respectivement MAJ), on compte 5 conditions (respectivement 4 conditions) quelle que soit la position de bit. Les situations o des perturbations affectent deux fonctions boolennes diffrentes (perturbations introduites ltape 37 par exemple) sont aussi prises en compte et traites au cas par cas. Une fois la mthode dvaluation dun vecteur dnie, Wang et al. testent une sous-partie de lespace des candidats possibles : tous les vecteurs sur 16 tapes dont les 71

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA perturbations sont connes aux positions de bit 0 ou 1. On considre aussi les vecteurs dcals dun certain nombre dtapes positif ou ngatif. Cela demande donc de traiter peu prs 64 232 vecteurs diffrents (232 vecteurs et 64 dcalages possibles). Parmi ces candidats, ils gardrent alors celui ayant le moins de conditions entre les tapes 16 et 80. Cette mthode aboutit au vecteur prsent dans la gure 5.13. On peut voir quun trs petit nombre de perturbations sont introduites dans le troisime tour. Cela semble logique puisque la fonction boolenne MAJ impose de nombreuses conditions et est donc coteuse pour lattaquant. De plus, cette forme de vecteur, de trs faible poids de Hamming dans les tours intermdiaires et de poids plus fort dans les premiers et les derniers tours (ce qui est invitable du fait de lexpansion de message et de sa rotation), permet de maximiser le ratio de perturbations introduites la position de bit 1, position qui est trs avantageuse dans le deuxime et dernier tour cause de la fonction boolenne XOR. Nous donnons dans la gure 5.15 le chemin diffrentiel nal pour le premier bloc fourni dans larticle original. Il faut noter que ce chemin comportait une erreur que nous avons corrig dans notre gure : la valeur dinitialisation spcie contredit certaines conditions pourtant ncessaires quant la validit de la partie non linaire. Cest la raison pour laquelle la valeur initiale de la variable de chanage dentre na pas t ajoute dans la gure.
i 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : vecteur de perturbation 1-----------------------------1------------------------------11-----------------------------1-------------------------------------------------------------1-------------------------------------------------------------11 -------------------------------------------------------------1------------------------------1-------------------------------1 -------------------------------------------------------------1------------------------------1-------------------------------1 --------------------------------------------------------------------------------------------1------------------------------11 -------------------------------------------------------------1------------------------------1--------------------------------------------------------------------------------------------1---------------------------------------------------------------------------------------------------------------------------1-------------------------------------------------------------1-------------------------------i 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : vecteur de perturbation ------------------------------1-------------------------------------------------------------1--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1-------------------------------------------------------------------------------------------1-------------------------------------------------------------------------------------------1--------------------------------------------------------------1----------------------------1-------------------------------------------------------------------------------------------1-------------------------------------

F IG . 5.14 Vecteur de perturbation pour lattaque multiblocs sur SHA-1 en 263 appels la fonction de compression [WYY05a]. Les 16 premires tapes ont t tes, car elles sont en pratique remplaces par la partie non linaire. Les caractres 0 ont t remplacs par - pour une meilleure lisibilit. Wang et al. ont estim que grce la technique de modication de message une complexit dapproximativement 269 appels la fonction de compression pouvait tre atteinte pour trouver une collision sur SHA-1 en deux blocs [WYY05b]. Quelques mois plus tard, un 72

5.3. Attaques de Wang et al.


i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : 80 : Ai ----------------------------------------------------------------------------------------------11-----------------------------00-----------------------------nn-------------1---------0001-nuu10-----------0----0--nuu-0nu0-100-------------nuuu--0111n-0u u0010--------nuuu----01n10011-u0 0011n-----nu-00-100-1111-0un-111 1-0-0nu11-1001-nu11xxx-1-10-001n--110111-0111--101---10-un-u1-n -01---unnnnnnn--001--111---01-1-00-----1000unnnnnnnnnn----11-u0---------------111000000-----n--------------10111111nu1------0-----------------------10--u--------------------------11-----n -1--------------------------0-1u0--------------------------1-0--1-------------------------0-nn-0---------------------------u--1----------------------------------------------------------n-------------------------------------------------------------xx -------------------------------------------------------------x------------------------------x-------------------------------x -------------------------------------------------------------x------------------------------x-------------------------------x --------------------------------------------------------------------------------------------x------------------------------xx -------------------------------------------------------------x------------------------------x--------------------------------------------------------------------------------------------x---------------------------------------------------------------------------------------------------------------------------x-------------------------------------------------------------x-------------------------------------------------------------x-------------------------------------------------------------x--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------x-------------------------------------------------------------------------------------------x-------------------------------------------------------------------------------------------x--------------------------------------------------------------x----------------------------x-------------------------------------------------------------------------------------------x--------------------------------------------------------------x-x--------------------------x------Wi L(i) Pi (i) Ne (i)

-nn----------------------------nuu-----------------------n-u-u--n----------------------u----nn u-un---------------------n-----nn-n---------------------n-u--un nn-n----------------------u---u--n-----------------------------nn-----------------------uu--u-uu----------------------u----un --u----------------------n-----unu----------------------u----n-uu---------------------------nn------------------------------n --------------------------u------1---------------------------nu -u-----------------------u-n--n-x-----------------------u-----xnn----------------------n-u--ux-n---------------------1----1-x------------------------u-------x----------------------------x --u----------------------xx----x------------------------------x -x-----------------------x----xxx-----------------------x----xx -x------------------------x---x------------------------------xx -x-----------------------x----xxx-----------------------x----xx xx------------------------x---x-------------------------------x -x----------------------------xxx-----------------------x----xx -x-----------------------xx---xx------------------------------x -x-----------------------x----x-x-----------------------x----x-x----------------------------x------------------------------x-------------------------x-----x-----------------------------xx------------------------------x-----------------------------xx------------------------x------------------------------------x------------------------x-----x-------------------------------------------------------x-----x-------------------------------------------------------x-----x-----------------------------x-------------------------------x------------------------------x---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------x-------------------------x-----------------------------------x-----------------------------x--x -----------------------x-------x ----------------------------x--x ---------------------------x--x----------------------x-------x---------------------------xx-x-----------------------x--x--x----------------------x------xx---------------------------x--xx-------------------------x--x-x--------------------x-------x-x-------------------------xx-------------------------x-xx--x----

30 26 28 28 25 27 31 27 27 30 27 29 30 31 29 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

-7.00 -13.00 -17.42 -27.19 -25.00 -27.09 -26.42 -24.87 -21.83 -12.00 -16.00 -10.00 -3.00 -4.00 -6.00 -3.00 -4.00 -1.00 -1.00 0.00 -3.00 -2.00 -2.00 -3.00 -4.00 -3.00 -2.00 -3.00 -4.00 -3.00 -1.00 -2.00 -4.00 -4.00 -2.00 -3.00 -3.00 -2.00 -1.00 -1.00 -2.00 -1.00 -2.00 -1.00 -2.00 -2.00 -3.00 -2.00 -3.00 -2.00 -3.00 -1.00 -1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -1.00 -1.00 -1.00 -2.00 -2.00 -2.00 -2.00 -2.00 -3.00 -3.00 -3.00 -3.00 -3.00 -3.00 -3.00 -4.00

-88.19 -65.19 -52.19 -41.60 -40.79 -40.79 -40.89 -36.30 -34.17 -29.00 -11.00 0.00 19.00 46.00 73.00 96.00 121.00 117.00 116.00 115.00 115.00 112.00 110.00 108.00 105.00 101.00 98.00 96.00 93.00 89.00 86.00 85.00 83.00 79.00 75.00 73.00 70.00 67.00 65.00 64.00 63.00 61.00 60.00 58.00 57.00 55.00 53.00 50.00 48.00 45.00 43.00 40.00 39.00 38.00 38.00 38.00 38.00 38.00 38.00 38.00 38.00 38.00 38.00 38.00 38.00 37.00 36.00 35.00 33.00 31.00 29.00 27.00 25.00 22.00 19.00 16.00 13.00 10.00 7.00 4.00

F IG . 5.15 Chemin diffrentiel pour le premier bloc de lattaque multiblocs sur SHA-1 en 269 appels la fonction de compression [WYY05b]. 73

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA


i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : 80 : Ai 00001111010010111000011111000011 01000000110010010101000111011000 01100010111010110111001111111010 11101111110011011010101110001001 01100111010001010010001100000001 nun-------------0-----0----00-0u -1n00-1---------00----111-00-u01 nu01-----unnnnnnnnnnnnnnn1---n01 n-101------0000000un0010nun---u0-01n-0--u-1111111111-0un0nu0100 u-011-0--0-1111-----nu---101-0---0-nuuuuuuuuuuuu---0-10-00-01-n 110---0111101111111-1-11----n0-n0----1111111111111---un----1-0u -11---------------------11--1-n100-------------------un11--0--0-----------------------01----n0-----------------------11-----1-------------------------------------------------------------n -1-----------------------------x0----------------------------x--1---------------------------xx-----------------------------x-------------------------------------------------------------x-------------------------------------------------------------xx -------------------------------------------------------------x------------------------------x-------------------------------x -------------------------------------------------------------x------------------------------x-------------------------------x --------------------------------------------------------------------------------------------x------------------------------xx -------------------------------------------------------------x------------------------------x--------------------------------------------------------------------------------------------x---------------------------------------------------------------------------------------------------------------------------x-------------------------------------------------------------x-------------------------------------------------------------x-------------------------------------------------------------x--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------x-------------------------------------------------------------------------------------------x-------------------------------------------------------------------------------------------x--------------------------------------------------------------x----------------------------x-------------------------------------------------------------------------------------------x------------------------------------Wi L(i) Pi (i) Ne (i)

u0u---------------------------un --n-----------------------nu----nn--------------1-0-1--0----000 unu-------------11--------u-u-u--n----------------------n---1nu n-nu---------------------u-----nn-n---------------------n-u--nu nn-n----------------------n---u--u-----------------------------un-----------------------nn--u-nn----------------------u----un --u----------------------n-----nnu----------------------u----u-uu---------------------------nn-0----------------------------n --------------------------n-----1----------------------------xx -u-----------------------x-x--x-x-----------------------x-----xxx----------------------x-x--xx-x----------------------------x------------------------x-------x----------------------------x --x----------------------xx----x------------------------------x -x-----------------------x----xxx-----------------------x----xx -x------------------------x---x------------------------------xx -x-----------------------x----xxx-----------------------x----xx xx------------------------x---x-------------------------------x -x----------------------------xxx-----------------------x----xx -x-----------------------xx---xx------------------------------x -x-----------------------x----x-x-----------------------x----x-x----------------------------x------------------------------x-------------------------x-----x-----------------------------xx------------------------------x-----------------------------xx------------------------x------------------------------------x------------------------x-----x-------------------------------------------------------x-----x-------------------------------------------------------x-----x-----------------------------x-------------------------------x------------------------------x---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------x-------------------------x-----------------------------------x-----------------------------x--x -----------------------x-------x ----------------------------x--x ---------------------------x--x----------------------x-------x---------------------------xx-x-----------------------x--x--x----------------------x------xx---------------------------x--xx-------------------------x--x-x--------------------x-------x-x-

27 29 23 24 27 28 25 27 31 27 27 30 27 29 29 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

-4.01 -13.68 -16.00 -19.75 -38.05 -17.42 -22.00 -19.42 -24.00 -4.74 -10.00 -4.00 -5.00 -1.00 -1.00 -1.00 -4.00 -4.00 -4.00 -6.00 -2.00 -2.00 -3.00 -3.00 -2.00 -3.00 -4.00 -3.00 -2.00 -3.00 -4.00 -3.00 -1.00 -2.00 -4.00 -4.00 -2.00 -3.00 -3.00 -2.00 -2.00 -2.00 -2.00 -1.00 -2.00 -1.00 -2.00 -2.00 -3.00 -2.00 -3.00 -2.00 -3.00 -1.00 -1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -1.00 -1.00 -1.00 -2.00 -2.00 -2.00 -2.00 -2.00 -3.00 -3.00 -3.00 -3.00 -3.00 -3.00

-106.93 -83.95 -68.63 -61.63 -57.38 -68.43 -57.84 -54.84 -47.26 -40.26 -18.00 -1.00 25.00 47.00 75.00 103.00 133.00 129.00 125.00 121.00 115.00 113.00 111.00 108.00 105.00 103.00 100.00 96.00 93.00 91.00 88.00 84.00 81.00 80.00 78.00 74.00 70.00 68.00 65.00 62.00 60.00 58.00 56.00 54.00 53.00 51.00 50.00 48.00 46.00 43.00 41.00 38.00 36.00 33.00 32.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 30.00 29.00 28.00 26.00 24.00 22.00 20.00 18.00 15.00 12.00 9.00 6.00 3.00

F IG . 5.16 Chemin diffrentiel pour le premier bloc de lattaque multiblocs sur SHA-1 en 263 appels la fonction de compression [WYY05a]. 74

5.3. Attaques de Wang et al.


i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : 80 : Ai 00001111010010111000011111000011 01000000110010010101000111011000 01100010111010110111001111111010 11101111110011011010101110001001 01100111010001010010001100000001 nun0000001000000011000011110010u 11n00011010010000010111110001u01 nu0110100unnnnnnnnnnnnnnn1101n01 n01010100000000000un0010nun110u0 0101n0011u11111111111-0un0nu0100 u0011001101111101011nu-1-1010010 0001nuuuuuuuuuuuu-110010-000011n 110010011110111111101011-000n000 n001111111111111111---un---0110u 11100011011-------------11-110n0 10010110--------------un11-00011 011--0------------------01---0n1 0-----------------------11---0-1---1------------------------1-----------------------------0--n -1--------------------------1--u0--------------------------0-u0-1-------------------------0-nn-0---------------------------u--0----------------------------------------------------------u-------------------------------------------------------------un -------------------------------------------------------------n------------------------------n-------------------------------u -------------------------------------------------------------n------------------------------u-------------------------------n --------------------------------------------------------------------------------------------u------------------------------nn -------------------------------------------------------------n------------------------------u--------------------------------------------------------------------------------------------u---------------------------------------------------------------------------------------------------------------------------u-------------------------------------------------------------u-------------------------------------------------------------u-------------------------------------------------------------u--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n-------------------------------------------------------------------------------------------u-------------------------------------------------------------------------------------------u--------------------------------------------------------------u----------------------------n-------------------------------------------------------------------------------------------n------------------------------------Wi L(i) Pi (i) Ne (i)

u0u000001000101111001001001100un 01n10100100010110010010111nu1000 1nn00010000010010110110101011000 unu10010111110001110100001u0u0u1 00n011010101011111010-110n0001nu n1nu110001011010-111-----u111011 nn0n111001010100011-1010-n0u10nu nn0n01101010-000011-0----1n001u1 11u10110100100000-0-0------00000 1un011000111111-111------0nn00u1 1nn10100111111111-----01-u1110un 01u010001001111--0-0----0n011101 nnu001001-1011-001-------u0110u0 0uu100000010-000----1-----0000n1 n00010110010-1--0-0-------11001n 01011001-1111-101-------00n10010 01001000011-010----1------0101uu 0u000010010-0--0-1-------n0n01n0 1n00010-1011-111--------0u101010 unn1110010-100----0------n1u01n1 u1n01011-1-1--1-0-------10000100 n10111-0110-101----------n101111 11n111101-1-0----1--------11110n 10u1000-1-1--1-0--------1nu00100 u1101-0110-000------------00010n 0u110000-0-0----1--------u0011n0 nn0010-0-0--0-0---------1u0111nu 1u01-0110-0-1------------1n110u0 0010100---1----1---------10000nu 1u111-1-0----0-----------u0000u0 un0-1101-1---------------n0001un nn0001---1----1---------11u001u1 1011-1-0----0------------111011u 0u-0011-0---------------111101u0 un000---0----1---------11n1010nn 0u0-1-1----0------------0uu011u1 u-1101-------------------001111n 0n10---0----0-----------1u0000u1 1u-0-0-------------------n1000u1 -u100-------------------001000u0 111---1----0-------------10110u0 0-0-1-------------------1n000110 u000--------------------001011nn0---0------------------01011011 x0-1--------------------101111u0 u01---------------------1n0101-0 1---0-------------------00010011 n-1--------------------10n01101u1----------------------00100-10 ---0-------------------00n011001 x0----------------------000000-1 0----------------------11n10-011 x-0---------------------001101n1----------------------011101-0x-----------------------100-0011 x0---------------------1000101-------------------------0111-0-0 -----------------------010-01110----------------------100001-------------------------0001-1-0-----------------------00-1011------------------------01101---0 -----------------------100-1-1-----------------------00-1110-------------------------1000---1----------------------000-0-0--------------------------1001-n-----------------------00u1---0------------------------1-0-1-x------------------------1011-u--x -----------------------n0---1--x ----------------------0-1-1-x--u -----------------------000-u--x----------------------n1---1--x-----------------------0-0-xu-n----------------------0n0-n--x----------------------u1---1-xx-----------------------1-1-x--nx----------------------00-n--x-x--------------------u1---1--x-n-

0 0 0 0 1 6 2 6 8 7 6 7 9 10 11 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0.00 0.00 0.00 0.00 0.00 -4.00 -1.00 -5.00 -3.51 -1.00 -4.00 -1.42 -4.46 -3.00 -1.00 -2.00 -4.00 -4.00 -4.00 -1.00 -1.00 0.00 -4.00 0.00 -3.00 -2.00 -3.00 -1.00 -2.00 -2.00 -3.00 -1.00 -1.00 -2.00 -3.00 -1.00 -3.00 -2.00 -2.00 -1.00 -1.00 -1.00 -1.00 -1.00 -2.00 0.00 -2.00 -1.00 -3.00 -1.00 -3.00 -1.00 -2.00 -1.00 -1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -1.00 0.00 -1.00 -2.00 -1.00 -1.00 -2.00 -1.00 -2.00 -2.00 -2.00 -2.00 -3.00 -1.00

40.38 40.38 40.38 40.38 40.38 41.38 43.38 44.38 45.38 49.87 55.87 57.87 63.46 68.00 75.00 85.00 92.00 88.00 84.00 80.00 79.00 78.00 78.00 74.00 74.00 71.00 69.00 66.00 65.00 63.00 61.00 58.00 57.00 56.00 54.00 51.00 50.00 47.00 45.00 43.00 42.00 41.00 40.00 39.00 38.00 36.00 36.00 34.00 33.00 30.00 29.00 26.00 25.00 23.00 22.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 21.00 20.00 20.00 19.00 17.00 16.00 15.00 13.00 12.00 10.00 8.00 6.00 4.00 1.00

F IG . 5.17 Une instance signe du chemin diffrentiel de la gure 5.16. 75

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA autre vecteur fut trouv, lequel aboutit une complexit annonce de 263 appels la fonction de compression [WYY05a]. Ce nouveau vecteur, en fait identique au premier, mais dcal de 2 tapes, est prsent dans la gure 5.14. Il comporte plus de conditions que le prcdent, mais les modications de message y sont plus efcaces et permettent en n de compte un gain pour lattaquant. Le chemin diffrentiel non sign correspondant pour le premier bloc est donn dans la gure 5.16. Une instance possible des signes des perturbations est enn donne dans la gure 5.17. Il faut noter que nous avons encore corrig une nouvelle erreur prsente dans [WYY05a] concernant la partie non linaire du chemin diffrentiel originellement propos. Les complexits annonces par Wang et al. furent assez controverses sur plusieurs points. Dune part, trs peu de dtails taient donns sur lattaque et sur toute possible implantation. Plusieurs erreurs furent dcouvertes quelque temps aprs la publication des attaques. Au cours de la rdaction de cette thse, nous avons nous-mme trouv plusieurs erreurs auparavant inconnues. De plus, tant donn que seul le chemin diffrentiel pour le premier bloc tait explicit, on peut supposer que celui pour le deuxime est beaucoup plus difcile trouver la main. Un travail non automatis pour trouver des parties non linaires conduit souvent des conditions sur la variable de chanage dentre, ce qui nest pas trs contrariant pour le premier bloc (puisquil est facile de rajouter pralablement un bloc sans diffrence pour vrier ces conditions sur la variable de chanage dentre), mais qui peut ltre beaucoup plus pour le deuxime : les conditions sur la variable de chanage dentre du deuxime bloc devront tre comptes durant le calcul du nombre de conditions total pour le premier bloc, ce qui aura une inuence signicative sur la complexit nale de lattaque. Dautre part, le cot rel dune modication de message pouvait sembler assez imprcis. Lattaque nale tant trs complexe, aucune implantation na ce jour t publie pour vrier ce cot suppos. De nombreux travaux ont cependant combl ce manque de dtails et il est maintenant admis quune telle attaque est ralisable avec une complexit dapproximativement 263 appels la fonction de compression [Coc07].

5.3.4

Une analyse plus ne des conditions

La complexit annonce par Wang et al. pour SHA-1 tient compte dune analyse assez ne des conditions dun chemin diffrentiel. Tout dabord, on peut se concentrer sur la n du vecteur, savoir les 5 dernires tapes. On remarque que ces 5 dernires tapes produisent les variables de chanage qui seront effectivement utilises lors du rebouclage. Dans ce cas prcis, le rebouclage nutilisant que laddition modulaire, il nest plus ncessaire de considrer plusieurs types de diffrences et lon peut se contenter de la diffrence modulaire. Pour le premier bloc, on pourra donc laisser les diffrences introduites se propager arbitrairement, sans imposer de conditions ( part leur signe modulaire durant lintroduction qui est choisi par lattaquant travers le message tendu). Pour le deuxime bloc, il sufra dinsrer des perturbations inverses dun point de vue de laddition modulaire pour corriger parfaitement et ainsi obtenir une collision aprs le rebouclage (la propagation des diffrences binaires nest plus importante). Hlas, sil y a propagation de diffrences, cela impliquera aussi la propagation de beaucoup de diffrences binaires dont le signe est inconnu aprs application de la fonction boolenne XOR. On souhaite viter cette situation et lon peut laisser les diffrences se propager tant quelles ne sont pas utilises comme entre de la fonction boolenne XOR. Cette situation se prsente pour les deux dernires tapes. Toutes les perturbations insres sur les deux dernires tapes peuvent donc tre considres sans conditions pour les deux blocs (puisque mme si les diffrences se 76

5.3. Attaques de Wang et al. propagent travers les retenues, elles ne sexprimeront pas dans la fonction boolenne). Une analyse encore plus pousse met en vidence que pour le premier bloc, toutes les conditions relatives aux corrections des deux dernires tapes peuvent tre omises. Autrement dit, nous aurons Pi (78) = Pi (79) = 1. Ceci est d au fait que pour les deux dernires tapes, mme si la correction dune diffrence lentre de la fonction boolenne XOR ne se passe pas bien, nous pourrons corriger ce comportement dans le deuxime bloc avec la mme probabilit que si tout avait t parfaitement corrig au premier. Seules les deux dernires tapes sont concernes pour les mmes raisons que prcdemment (tout comportement invalide ne doit pas pouvoir sexprimer travers la fonction boolenne). Ainsi, nous navons pas contrler la moindre condition pour les deux dernires tapes du premier bloc, sans pour autant changer la probabilit de succs pour le deuxime. Ceci explique aussi pourquoi le premier bloc cote moins cher que le deuxime lors de la recherche dune collision pour SHA, le cot de ce dernier tant le terme dominant pour la complexit totale de lattaque.
non compress i i1 i i+1 i+2 i+3 i+4 i+5 i+6 Ai ---------------------------------------------------------------------------------unn--------------------------------------------------------------------------------------------------------------------------------------------------------------------Wi --------------------------------------------------unn-----------------------nuu---------------------------------nuu------------------------------nuu----------------------------nuu----------------------------nuu--------------------------------------compress i i1 i i+1 i+2 i+3 i+4 i+5 i+6 Ai -----------------------------------------------------------------------------------u--------------------------------------------------------------------------------------------------------------------------------------------------------------------Wi --------------------------------------------------unn-----------------------nuu---------------------------------nuu------------------------------nuu----------------------------nuu----------------------------nuu--------------------------------------Pi (i) 0.00 -1.00 0.00 -1.00 -1.00 -1.00 0.00 0.00 C (i) 0.5 1.0 1.0 1.0 0.5 0.0 0.0 0.0 Pi (i) 0.00 -3.00 0.00 -3.00 -3.00 -3.00 0.00 0.00 C (i) 1.5 3.0 3.0 3.0 1.5 0.0 0.0 0.0

F IG . 5.18 Compression de bits de 3 collisions locales adjacentes aux positions de bit 10, 11 et 12. Les probabilits pour cet exemple correspondent aux fonctions boolennes XOR ou MAJ. Moins quune relle avance de cryptanalyse, la compression de bits (terme introduit par Yajima et al. dans [YIN08a, YIN08b]) permet aussi de gagner quelques conditions tant donn un vecteur de perturbation. Elle intervient lorsque lon introduit plusieurs diffrences conscutives sur des bits adjacents dun mme mot. Dans ce cas prcis, lintroduction de ces perturbations peut tre vue comme une seule et unique perturbation, positionne sur le bit de poids le plus faible des bits concerns. Nous ne compterons alors que les conditions pour cette unique perturbation. Ceci sexplique par le fait quau lieu de contrler que la premire diffrence ne se propage pas, nous allons au contraire la forcer se diffuser (le cot restant le mme). On peut de ce fait gratuitement continuer de propager cette diffrence puis arrter la propagation par la dernire perturbation (celle de poids fort). Le cot est nul, puisque tout est contrl par le signe de lintroduction des perturbations adjacentes, choisies pralablement par lattaquant dans le message tendu. Dans le registre interne, une seule diffrence apparatra et nous naurons donc que celle-ci corriger lorsquelle inuencera la sortie de la fonction boolenne. Il faut cependant noter que certaines exceptions existent : il ne doit pas y avoir de diffrences conscutives sur les positions 1 et 2, 26 et 27 ou 31 et 0, car la propagation de la diffrence par laddition modulaire ne serait plus assure cause des rotations de 2 ou de 5 positions dans la formule de 77

Chapitre 5. Historique de la cryptanalyse des fonctions de la famille SHA mise jour des registres internes (la propagation des diffrences binaires signes serait arrte par le modulo de laddition modulaire). De plus, si au moins lune des perturbations se trouve dans une situation o deux diffrences sont prsentes dans la fonction boolenne (situations 3, 5 ou 6), alors la technique ne sapplique plus pour les mmes raisons que prcdemment. Bien entendu, cette mthode ne sera pas utile dans le cas de SHA-0 puisque toutes les perturbations sont positionnes sur le bit 1 uniquement. Par contre, elle pourra tre utilise dans le cas de SHA-1, par exemple pour les perturbations insres ltape 34 du vecteur de la gure 5.17. Nous donnons un exemple de compression de bit dans la gure 5.18. Toutes ces petites amliorations permettent, lorsquelles sont considres, un gain assez signicatif en complexit. On peut gnraliser ces techniques : certaines tapes, plusieurs tronons de chemin diffrentiels diffrents pourront convenir (ils aboutissent tous nalement au mme masque de diffrences sur les registres internes aprs quelques tapes). On peut donc observer la ralisation de nimporte lequel de ces tronons de chemin, et lon peut ainsi additionner leurs probabilits de succs respectives pour obtenir la probabilit relle lorsque lon cherchera une paire de messages valide.

78

C HAPITRE 6

Amlioration des mthodes de cryptanalyse


Sommaire
6.1 6.2 Un problme plusieurs dimensions . . . . . . . . . . . . . . . . . . . . . Recherche de chemin : le vecteur de perturbation . . . . . . . . . . . . . . 6.2.1 La technique de Wang et al. . . . . . . . . . . . . . . . . . . . . . . . 6.2.2 Les techniques avances . . . . . . . . . . . . . . . . . . . . . . . . . Recherche de chemin : la partie non linaire . . . . . . . . . . . . . . . . . 6.3.1 Calcul efcace de probabilit pour un chemin diffrentiel . . . . . . 6.3.2 Calcul efcace de rafnage de conditions . . . . . . . . . . . . . . . 6.3.3 Structure de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . Recherche de candidats valides : les attaques boomerang . . . . . . . . . 6.4.1 Lattaque boomerang pour les algorithmes de chiffrement par blocs 6.4.2 Adapter lattaque boomerang aux fonctions de hachage itres . . . 6.4.3 Les diffrentes approches possibles . . . . . . . . . . . . . . . . . . . 6.4.4 Application la famille SHA . . . . . . . . . . . . . . . . . . . . . . 79 82 82 83 84 85 87 89 94 94 95 98 101

6.3

6.4

Nous tudions ici de nouvelles mthodes ou des amliorations de cryptanalyses existantes pour la famille de fonctions de hachage SHA. Ces avances ont toutes pour point de dpart commun dessayer de mieux comprendre les concepts sous-jacents des attaques de Wang et al., trs peu dcrites et difciles vrier. Cela permet soit la dcouverte de nouvelles techniques, soit une automatisation des anciennes, apportant ainsi une amlioration des rsultats.

6.1

Un problme plusieurs dimensions

Aprs la publication des attaques de lquipe chinoise contre les nombreuses fonctions de hachage de la famille MD-SHA, il fallut au reste de la communaut de recherche en cryptographie une assez longue priode pour comprendre le fonctionnement rel de ces techniques et pour vrier leur exactitude. Cela ne fut pas ais, du fait que peu de dtails taient donns et que lattaque complte est assez complexe. La preuve en est que, certaines erreurs furent dcouvertes aprs la publication des travaux et que lattaque contre SHA-1 en 263 appels la fonction de compression na ce jour toujours pas t publie, ni dcrite en dtail. Une premire tape de thorisation de ces avances fut ncessaire. 79

Chapitre 6. Amlioration des mthodes de cryptanalyse Les chercheurs ont rencontr une autre difcult dans lanalyse des avances de Wang et al.. En effet, tout ayant t tabli la main et tait dcrit sans amples explications, il est en pratique impossible de rutiliser ces attaques en essayant dy apporter une amlioration puisque tout le travail initial devrait alors tre refait. Par exemple, la recherche dune partie non linaire ou les modications de message devront tre reconstitues la main par le cryptanalyste. Un premier sujet dtude pourrait donc tre de trouver des algorithmes permettant deffectuer ces tches de manire automatise dans lespoir dobtenir de meilleures attaques sans pour autant apporter des concepts innovants de cryptanalyse. Une seconde voie pourrait ensuite tre, grce ces nouveaux outils, dessayer de mettre au point de nouvelles mthodes pour une ou plusieurs tapes de lattaque de Wang et al.. Par exemple, on pourra tenter damliorer la recherche de modications de message ou de trouver de nouvelles heuristiques en ce qui concerne les vecteurs de perturbation. Une question subsiste mme si lon dispose doutils automatiss et de nouvelles mthodes : comment obtenir la meilleure attaque nale possible partir de toutes les techniques connues ? On se rend rapidement compte que le problme est complexe et nest pas unidimensionnel. Utiliser les outils dans un ordre prcis napporte en gnral pas la meilleure attaque. Un attaquant pourrait tre tent de choisir tout dabord un vecteur de perturbation qui possde un poids de Hamming faible pour minimiser la complexit, puis de trouver les parties non linaires (si ncessaire) pour aboutir un chemin diffrentiel complet ; et enn, de rechercher une paire de messages valide laide dune mthode avance dacclration (modications de message, bits neutres, etc.). Cependant, il ne sait pas lavance si une partie non linaire peut tre trouve de manire efcace pour le vecteur de perturbation choisi, ou quel sera leffet de lacclration de recherche de paires valides suivant ce vecteur. Une telle stratgie est sous-optimale et il faut en pratique prendre en compte le plus de paramtres possible en mme temps. Cest ce qui explique, pour SHA-1, le passage contre-intuitif par Wang et al. de lattaque en 269 appels la fonction de compression [WYY05b] lattaque amliore [WYY05a] de complexit 263 : la premire possde a priori un meilleur vecteur de perturbation que la seconde, mais lacclration de recherche y est bien moins efcace. De plus, il est possible que le nombre de degrs de libert dans le chemin diffrentiel nal soit insufsant pour trouver une collision, ce qui obligera lattaquant tout recommencer depuis le dbut. Le sens inverse dutilisation des outils nest pas plus efcace puisquil nest pas vident de deviner lavance lefcacit de lacclration de recherche sans connatre le vecteur de perturbation ou la partie non linaire. Une mthode de proche en proche semble pour linstant tre la meilleure approche possible. Par exemple, si aprs avoir choisi un vecteur de perturbation et engendr une partie non linaire, on observe que lacclration de recherche est difcile mettre en oeuvre, on peut essayer dengendrer dautres parties non linaires pour corriger ce problme. Si cela ne suft toujours pas, il faudra sans doute changer le vecteur de perturbation ou modier la technique dacclration de recherche. Lattaque comporte donc plusieurs parties considrer et ne peut juste se rduire au chemin diffrentiel nal. Nous avons alors quatre paramtres interdpendants qui inuent sur la complexit totale de lattaque : le vecteur de perturbation, les parties non linaires, lacclration de la recherche dune paire de messages valide et la quantit de degrs de libert disponibles dans le chemin diffrentiel nal. Ceci est explicit dans la gure 6.1. Le vecteur de perturbation est bien entendu la colonne vertbrale de lattaque et dtermine approximativement la complexit de celle-ci. Il nous oblige xer les positions de diffrences sur les mots de message et consomme donc au moins la moiti des degrs de libert initialement disponibles (puisque dcider si lon souhaite ou non la prsence dune diffrence sur une 80

6.1. Un problme plusieurs dimensions

vecteur de perturbation

parties non linaires

degrs de libert

acclration de la recherche

F IG . 6.1 La cryptanalyse de SHA, un problme plusieurs dimensions. position de bit consomme un degrs de libert). Il est assez difcile de prdire la possibilit de trouver une partie non linaire tant donn un vecteur, la seule mthode tant concrtement de chercher cette partie. Concernant lacclration de la recherche dune paire de messages valide, on peut utiliser une heuristique naturelle en raisonnant sur le nombre de conditions prsentes juste aprs la partie non linaire. Ces conditions sont en effet celles susceptibles dtre contrles durant cette phase dacclration, et lon tentera destimer grossirement leur nombre. Comme expliqu prcdemment, la partie non linaire ninue pas directement sur la complexit nale de lattaque, mais elle est une condition sine qua none pour obtenir un chemin diffrentiel valide. En outre, on peut juger de la qualit de ce morceau de chemin diffrentiel : si la partie non linaire impose beaucoup de conditions, on consommera beaucoup de degrs de libert, essentiels pour obtenir une acclration de recherche puissante. Les degrs de libert naux doivent aussi tre en nombre sufsant pour esprer trouver une collision avec le chemin diffrentiel nal. Comme nous le verrons dans les sections suivantes, lacclration de la recherche existe sous de nombreuses formes, chacune de ces formes ayant des qualits et des dfauts. On peut gnralement observer quune acclration puissante consommera de nombreux degrs de libert. Il faudra alors utiliser les formes adquates et tablir un compromis entre la rapidit de vrication du chemin diffrentiel nal (le nombre de conditions) et la probabilit de trouver 1 (0) et donc directement dpendante des une collision avec ce chemin (probabilit gale Ne degrs de libert disponibles) pour obtenir la meilleure complexit nale. En effet, on peut trs bien imaginer une attaque o lon engendre pour le mme bloc plusieurs chemins diffrentiels diffrents partir du mme vecteur de perturbation : partir du vecteur de perturbation considr, on peut varier la manire de signer les perturbation ou encore engendrer plusieurs parties non linaires diffrentes. Chacun de ces chemins aura une probabilit relativement faible daboutir une collision cause du manque de degrs de libert, mais la vrication sera rapide grce lacclration de recherche puissante. En engendrant plusieurs chemins, la somme de ces probabilits sera sufsante pour obtenir une collision. Lavantage ici serait dobtenir une acclration trs puissante (et demandant donc beaucoup de degrs de libert) pour chacun des chemins diffrentiels. Dans ce cas, il faut bien entendu compter lensemble des tapes dans 81

Chapitre 6. Amlioration des mthodes de cryptanalyse la complexit nale, savoir, pour chaque chemin diffrentiel : la gnration des parties non linaires, ltablissement de lacclration de recherche et bien entendu la recherche nale dune paire de messages valide. Lattaquant doit tre capable de trouver en un temps relativement faible les parties non linaires et les acclrations de recherche pour chaque chemin diffrentiel. On saperoit que les degrs de libert sont les lments essentiels considrer pour optimiser lattaque. Nous prsentons dans les sections suivantes des mthodes avances pour chaque tape de lattaque, tout en gardant lesprit la problmatique des degrs de libert. Nanmoins, la meilleure technique ce jour pour SHA-1 semble tre une utilisation de proche en proche, tout en utilisant fortement lintuition de lattaquant. Dans le cas de SHA-0, les choses sont beaucoup plus simples puisque nous disposons dune trs grande quantit de degrs de libert (grce la physionomie du chemin diffrentiel, born une seule position de bit). Il reste un dernier point clarier : le calcul du cot nal. Les attaques mettant en dfaut la rsistance la recherche de collisions pour SHA-0 ou SHA-1 sont devenues trs complexes, et leur cot total est assez difcile valuer de manire thorique. En gnral, la plupart des estimations thoriques diffrent dun facteur non ngligeable des implantations. Ceci peut aussi tre expliqu par une implantation non optimale. Une manire naturelle pour rigoureusement comparer deux attaques diffrentes, ou deux outils diffrents, serait de mesurer le nombre moyen dappels la fonction de compression en une unit de temps donne et sur une plate-forme donne, avec une bonne implantation de lalgorithme (pour cela, on utilisera par exemple OpenSSL [OpenSLL]). On pourra ainsi obtenir une comparaison assez prcise du cot pratique en excutant les attaques sur des plates-formes similaires. Dans la suite, nous parlerons de complexit mesure lorsque nous utilisons cette mthode de comparaison.

6.2

Recherche de chemin : le vecteur de perturbation

Nous nous occupons dans cette section de trouver un vecteur de perturbation adquat. Nous avons dj expliqu des techniques avances pour chercher un bon vecteur, mais nous essayons ici de montrer les diffrences entre ces techniques et la mthode de Wang et al..

6.2.1

La technique de Wang et al.

Lalgorithme de recherche de vecteurs de perturbation de Wang et al. est assez simple. On construit tous les vecteurs sur 16 tapes conscutives ayant des perturbations sur les positions de bit 0 ou 1 (232 vecteurs possibles), puisque la position 1 est privilgier pour des raisons de probabilits dj expliques. Chacun de ces petits vecteurs dnit entirement un vecteur de perturbation entier, grce la formule dexpansion de message. On considre toutes les fentres de 16 tapes conscutives (80 16 = 64 possibilits en tout), ce qui nous donne nalement 64 232 candidats. Pour chaque vecteur test, on calcule de faon trs simple les conditions du chemin diffrentiel induit : dans le cas de la fonction boolenne XOR, chaque perturbation sur la position de bit 1 induit 2 conditions et 4 conditions sinon. Pour la fonction boolenne IF (respectivement MAJ), on compte 5 conditions (respectivement 4) quelle que soit la position de bit considre. On tient aussi compte des perturbations qui affectent deux fonctions boolennes diffrentes. Une compression de bits simple est considre (seulement dans le cas de deux perturbations 82

6.2. Recherche de chemin : le vecteur de perturbation adjacentes sur les positions de bit 0 et 1). On tient aussi compte des conditions qui peuvent tre relaxes la n du chemin diffrentiel. Enn, parmi tous les candidats, Wang et al. choisissent le vecteur imposant le moins de conditions entre les tapes 16 et 79. Un autre vecteur fut propos ultrieurement (il sagit en fait du mme vecteur dcal de 2 tapes), contenant plus de conditions, mais permettant une meilleure acclration de recherche dune paire de messages valide.

6.2.2

Les techniques avances

La technique dcrite par Wang et al. est assez simple et donne des vecteurs de perturbation relativement bons. Il est nanmoins possible dafner cette recherche. Une premire amlioration simple consisterait considrer une compression de bit gnralise, et non uniquement borne aux positions de bit 0 et 1. Lattaquant peut aussi remarquer que les conditions comptes pour une perturbation introduite la position de bit 31 sont trop nombreuses. Ceci est d au fait que lune des corrections de la perturbation seffectue sur cette mme position de bit, et leffet de propagation de la retenue peut tre relax. Ensuite, les cas o deux perturbations sont utilises en mme temps en entre dune fonction boolenne ne sont pas pris en compte. Ces cas permettent gnralement une diminution du nombre de conditions. Enn, Wang et al. ayant sous-estim lavantage pour un attaquant dintroduire des perturbations la position de bit 31, on pourra tendre la recherche cette position en plus de 0 et 1 dans les petits vecteurs sur 16 tapes. Ceci nous donne en tout 64 248 vecteurs, mais on peut rduire ce nombre en ne testant que ceux dont le poids de Hamming nest pas trop grand. Cette heuristique semble naturelle et nte que des vecteurs comportant vraisemblablement beaucoup de conditions. Plus gnralement, toutes ces amliorations peuvent tre dduites des tableaux B.1 et B.2 en Appendice. En programmant cette recherche, nous obtenons le tableau 6.1 pour SHA-0 et le tableau 6.2 pour SHA-1 qui rsument les rsultats en fonction de ltape de dpart considre. On peut remarquer que ce programme nous fournit de meilleurs chemins diffrentiels que ceux de Wang et al.. Une premire version de ces travaux a t publie par Yajima et al. [YIN08a] puis nous avons particip lamlioration de ces rsultats dans [YIN08b]. i 16 17 18 19 20 21 22 23 nombre de conditions 40 (39) 38 (38) 37,5 (36,5) 36 (36) 35,5 (34,5) 35 (34) 33,5 (32,5) 33 (32) i 24 25 26 27 28 29 30 31 nombre de conditions 32 (31) 32 (31) 32 (31) 30 (30) 30,5 (29,5) 30 (29) 29 (28) 29,5 (27,5)

TAB . 6.1 Nombre de conditions suivant ltape i de dbut de comptage dans le cas de SHA-0. Les nombres entre parenthses tiennent compte des conditions qui peuvent tre relaxes la n du chemin diffrentiel (cest le nombre rel de conditions pour le premier bloc).

83

Chapitre 6. Amlioration des mthodes de cryptanalyse i 16 17 18 19 20 21 22 23 nombre de conditions 87 (85) 83,5 (81,5) 79,5 (77,5) 76,5 (73,5) 74 (71) 72 (69) 70,5 (67,5) 67,5 (64,5) i 24 25 26 27 28 29 30 31 nombre de conditions 64,5 (61,5) 62 (59) 59 (57) 56,5 (54,5) 53,5 (51,5) 50,5 (48,5) 48 (46) 45,5 (43,5)

TAB . 6.2 Nombre de conditions suivant ltape i de dbut de comptage dans le cas de SHA-1. Les nombres entre parenthses tiennent compte des conditions qui peuvent tre relaxes la n du chemin diffrentiel (cest le nombre rel de conditions pour le premier bloc).

6.3

Recherche de chemin : la partie non linaire

Lune des composantes les plus importantes des attaques de Wang et al. [WYY05d, WYY05b, WYY05a, WYY05c] concerne la gnration de la partie non linaire. Hlas, ces recherches ayant t ralises de faon non automatise, grce un long et patient travail des chercheurs, toute rutilisation des chemins diffrentiels de Wang et al. est impossible moins daccomplir une nouvelle fois cette tche fastidieuse. Il est donc important de pouvoir engendrer des parties non linaires de manire automatise. Dans cette section, nous dcrivons les travaux de De Cannire et Rechberger [CR06] pour SHA-0 ou SHA-1, permettant de construire des parties non linaires de faon automatise et assez rapide, tant donn un vecteur de perturbation et une variable de chanage dentre initiale. Grce ces travaux ont pu tre engendres une collision pour SHA-1 rduit 64 tapes [CR06], puis une collision sur une version rduite 70 tapes [CMR07]. Larticle original ne fournit cependant que trs peu de dtails, insufsants pour permettre une implantation par le lecteur. Nous donnons donc ici tous les dtails ncessaires la programmation de cet outil trs utile et efcace la fois pour SHA-0 et SHA-1. La rapidit dexcution de lalgorithme tant un critre trs important, nous proposons galement des mthodes pour amliorer ce paramtre. Il faut noter que nous explicitons ici notre propre implantation, ce qui peut se traduire par quelques diffrences en comparaison des travaux originaux de De Cannire et al. Mme si cet algorithme constitue la meilleure approche actuelle, on peut citer dautres avances dans le domaine des outils automatiss pour la recherche de parties non linaires, par exemple le travail de Yajima et al. [YSN07]. Pour construire des parties non linaires dun chemin diffrentiel, nous aurons besoin de deux procdures. Ces procdures devront tre trs rapides excuter. Nous consacrons les deux sections suivantes cette problmatique. Nous examinerons ensuite comment lalgorithme gnral utilise ces procdures pour trouver des parties non linaires de manire heuristique. 84

6.3. Recherche de chemin : la partie non linaire

6.3.1

Calcul efcace de probabilit pour un chemin diffrentiel

Tout dabord, nous devons tre en mesure de calculer efcacement et exactement la probabilit incontrle Pi (i) pour chaque tape i, et ce, de manire trs rapide et pour nimporte quel type de chemin diffrentiel. Une manire trs nave et trs lente de calculer Pi (i) serait de parcourir toutes les possibilits suivant les conditions imposes sur les mots dtat interne Ai4 , . . . , Ai et sur le mot de message Wi , puis de compter les candidats qui vrient les conditions sur le mot de sortie Ai+1 . Par exemple, considrons le tronon de chemin diffrentiel trs simple de la gure 6.2. On testera tous les mots possibles pour le registre Ai4 , au nombre de 232 puisque chaque bit contient la condition aucune diffrence dnote par le caractre - . Pour chaque candidat de Ai4 , on testera toutes les valeurs possibles pour Ai3 (231 candidats), puis Ai2 (231 candidats), etc. Pour chaque combinaison, on regarde si les contraintes sur Ai+1 sont vries. On saperoit que la complexit devient trs vite rdhibitoire.
i Ai -----------------------------------------------------------1------------------------------0----------------------------------------------------------------------------------------------x Wi

i4 i3 i2 i1 i i+1

------------------------------x

termes Ai3 Ai2 Ai1 i (Ai1 , Ai2 , Ai3 ) Ai4 Ai Wi Ki Ai+1

contraintes ------------------------------1------------------------------0----------------------------------------------------------------------------------------------------------------------------------------------------------x01101110110110011110101110100001 ------------------------------x-

F IG . 6.2 Un exemple de calcul de Pi (i), en supposant que ltape i appartienne au deuxime tour. Le tableau du bas prend en compte les rotations de la formule de mise jour du registre interne Ai+1 . Cette mthode tant bien trop coteuse, nous lamliorons en faisant un calcul position de bit par position de bit. Pour cela, nous allons devoir considrer la retenue qui se propage entre chaque position durant laddition. Cette retenue ne pourra atteindre quun nombre limit de valeurs quil nous faut dterminer au pralable. Nous avons faire une addition 5 termes : deux mots dtat interne Ai et Ai4 , la sortie de la fonction boolenne (prenant en entre Ai1 , Ai2 et Ai3 ), le mot de message Wi et la constante Ki . Si pour une position de bit donne tous ces lments sont 1, le total sera 5 et nous aurons donc une retenue sortante gale 2 (la retenue initiale tant nulle). Si pour la position de bit suivante nous avons toujours tous 85

Chapitre 6. Amlioration des mthodes de cryptanalyse les lments 1, le total sera 7 cause de la nouvelle retenue arrivant et nous aurons par consquent une retenue sortante gale 3. Nous continuons, ainsi de suite, la prochaine tape aboutissant un total de 8, la retenue sortante tant gale 4. Enn, le total suivant est de 9 et la retenue reste gale 4. Finalement, nous avons montr que la retenue ne pouvait prendre que des valeurs situes entre 0 et 4 compris. Nous allons calculer la probabilit Pi (i) comme le produit des probabilits conditionnelles de succs pour chaque position de bit. Nous allons donc aussi maintenir un tableau de probabilits concernant la retenue entre chaque position de bit. Ce tableau sera compos pour chaque position de bit dune matrice 5 5 : il existe 5 valeurs de retenue possibles et il faut prendre en compte des transitions puisque lon a faire un chemin diffrentiel (mme si certaines transitions de retenue sont impossibles, par exemple de 4 vers 0). On commence par la position 0, en considrant bien entendu que la retenue arrivant en cette position est nulle. On parcourt alors toutes les possibilits pour chaque bit concern, suivant les contraintes du chemin diffrentiel, et lon compte le nombre de candidats qui vrient la condition sur le bit de sortie vis. On peut de cette faon rapidement calculer la probabilit de succs pour cette position de bit, ainsi que la matrice de probabilit de la retenue sortante, en ne prenant en compte que les candidats valides (ceux qui sont invalides ne doivent pas inuer sur les probabilits de la matrice de retenue sortante). On continue la position suivante en prenant maintenant en compte les probabilits de la matrice de retenue entrante et ainsi de suite jusquau bit 31. Pour illustrer cette mthode, prenons lexemple de la gure 6.2, o le tableau du bas est le plus lisible du fait que nous y avons incorpor les rotations des registres internes durant la mise jour de Ai+1 . En commenant la position de bit 0, le calcul est trs simple puisque nous avons uniquement des contraintes aucune diffrence sur tous les termes de laddition. Ainsi, nous avons une probabilit gale 1 de navoir aucune diffrence en sortie sur le bit 0 de Ai+1 , ce qui est bien attendu dans notre chemin diffrentiel (si nous avions la contrainte 1 sur le bit 0 de Ai+1 , la probabilit de succs aurait t de 1/2). Pour ce qui concerne la matrice de retenue sortante, sans expliciter le calcul exact, nous avons une probabilit de 1/16 davoir la transition 0 0, 10/16 davoir 1 1, 5/16 davoir 2 2, et une probabilit nulle pour les 22 transitions restantes (puisquaucune diffrence nest prsente en entre, la retenue ne change jamais). Pour la position de bit 1, nous avons une diffrence en entre de Ai et une diffrence attendue en sortie sur Ai+1 . On peut facilement sapercevoir que cela se produit avec probabilit 1, mais il faudra tout de mme parcourir tous les cas pour calculer la nouvelle matrice de retenue sortante. En effet, la retenue en sortie aura cette fois une probabilit de 1/2 de contenir une diffrence (une transition i j avec i = j ), selon que nous ayons une propagation de retenue ou non. Du fait que pour la position de bit 2 nous ne souhaitons aucune diffrence sur Ai+1 et puisquaucune diffrence napparat sur les entres, nous avons une probabilit de succs gale 1/2 pour cette position de bit. Seules les instances valides (celles ne propageant pas la diffrence sur la retenue) seront considres pour le calcul de la nouvelle matrice de probabilits de retenue. Cette matrice comporte de ce fait des probabilits nulles pour toutes les transitions i j avec i = j . Finalement, tous les cas des autres positions de bit sont trs simples parce que plus aucune diffrence napparat ni dans les entres, ni dans les retenues et nous attendons constamment la condition aucune diffrence sur Ai+1 , ce qui se produit toujours avec probabilit 1. Nous pouvons conclure que Pi (i) = 1/2. Cette fonction de calcul de Pi (i) tant cruciale et frquemment utilise, pour obtenir une bonne vitesse dexcution il est trs important durant limplantation dviter de recalculer une valeur dj calcule auparavant, en nhsitant pas pour ce faire stocker des rsultats. Pour acclrer le calcul, il est recommand de prcalculer et de stocker dans des tableaux, suivant les 86

6.3. Recherche de chemin : la partie non linaire entres possibles pour une position de bit, les sorties possibles correspondantes pour le registre Ai+1 et la retenue sortante. Enn, on peut utiliser certaines symtries existantes, par exemple entre les mots de registre interne dans les fonctions boolennes MAJ et XOR, ou encore entre Ai et Ai4 durant laddition.

6.3.2

Calcul efcace de rafnage de conditions

La seconde procdure dont nous avons besoin est un algorithme de rafnage des conditions. Par rafnage, nous entendons la dtermination de conditions non encore tablies et ncessaires au bon droulement du chemin diffrentiel, sur les registres internes ou sur les mots de message. Prenons par exemple le cas de la gure 6.3, qui est trs similaire celui de la gure 6.2. Nous y avons relax un certain nombre de conditions sur le mot de registre interne Ai+1 en ajoutant des ? . Lanalyse prcdente nous a montr que nous avons deux possibilits quiprobables : soit la diffrence prsente sur la position de bit 1 dans Wi provoque une propagation dans la retenue lors du calcul de laddition, soit elle reste borne la position de bit 1 de Ai+1 . Dans les deux cas, nous nous apercevons quune diffrence existera ncessairement sur le bit 1 de Ai+1 et quaucune diffrence ne sera prsente sur le bit 0. De ce fait, nous pouvons rafner ces conditions en remplaant les ? par un - pour le bit 0 et par un x pour le bit 1 dans le chemin diffrentiel de la gure 6.3. Pour le reste des positions de bit, rien ne peut tre dduit.
i Ai -----------------------------------------------------------1------------------------------0----------------------------------------------------------------???????????????????????????????? Wi

i4 i3 i2 i1 i i+1

------------------------------x

Ai -----------------------------------------------------------1------------------------------0----------------------------------------------------------------??????????????????????????????x

Wi

i4 i3 i2 i1 i i+1

------------------------------x

F IG . 6.3 Un exemple de rafnage. Le premier chemin nest pas rafn et nous pouvons trouver deux nouvelles conditions sur les bits 0 et 1 de Ai+1 . Nous obtenons ainsi une caractristique rafne pour le deuxime chemin diffrentiel. Comment maintenant implanter une telle fonction dans des cas beaucoup plus complexes que celui de la gure 6.3 ? En premier lieu, nous allons maintenir un grand tableau, que nous appellerons tableau de rafnage, indiquant pour chaque bit de chaque tape si un rafnage cette position de bit est ncessaire ou non (cela peut tre implant grce un tableau de 80 32 variables boolennes, une entre est gale 1 pour rafner et 0 pour dj rafn). Nous tendons 87

Chapitre 6. Amlioration des mthodes de cryptanalyse le chemin diffrentiel en considrant aussi les matrices de retenue entre chaque position de bit durant laddition. En effet, nous pouvons aussi rafner les conditions sur les retenues, mme si cela nest pas visible directement sur le chemin diffrentiel que nous afchons. Lalgorithme est trs simple : nous parcourons tous les bits de toutes les tapes et nous vrions quaucun bit du tableau de rafnage nest 1. Si nous rencontrons un tel bit, nous devons analyser cette position et agir en consquence. Soit aucune nouvelle condition ne peut tre dduite et nous modions le bit correspondant du tableau de rafnage 0 pour indiquer quaucun rafnage nest possible, soit nous trouvons une nouvelle condition et nous lappliquons au chemin diffrentiel. Cependant, tout ajout dune nouvelle condition impose lalgorithme de revrier certains bits puisque ltat a chang (de nouveaux bits du tableau de rafnage sont donc 1). Tout le problme est danalyser en dtail quels nouveaux bits peuvent potentiellement tre inuencs par cette modication pour obtenir une bonne rapidit dexcution de lalgorithme. Par exemple, revrier toutes les positions de bit possibles pour toutes les tapes possibles lorsque nous navons ajout quune seule condition reprsente un gaspillage doprations. Nous pouvons dduire assez facilement les rgles de mise jour suivantes, en fonction du type de condition modie : si nous modions une condition de ltat interne la position j de ltape i, soit Aj i : nous devons rafner six positions, savoir le bit j des tapes i et i + 2, le bit j + 5 de ltape i + 1, et enn les bits j 2 des tapes i + 3, i + 4 et i + 5. si nous modions une condition du mot de message la position j de ltape i, soit Wij : nous devons rafner nouveau la mme position, savoir le bit j de ltape i. si nous modions une condition de la matrice de retenue entre les positions j et j +1 de ltape i (matrice entrante pour la position de bit j +1, matrice sortante pour la position de bit j ) : nous devons rafner deux positions, savoir les bits j et j + 1 de ltape i. Il faut noter que les matrices de retenue sortantes des positions de bit 31 peuvent tre oublies puisque laddition sopre modulo 232 . De mme, les matrices de retenue entrantes la position de bit 0 ne peuvent tre rafnes du fait que la retenue est toujours nulle dans ce cas. Une fois ces rgles de mise jour dnies, il nous reste dcrire la fonction qui rafne une position de bit si besoin est. Pour cela, nous pouvons utiliser une version lgrement modie de lalgorithme de calcul de probabilit incontrle Pi (i) de la section prcdente. Pour une position de bit donne j une tape i, nous avons en entre les conditions dduites du chemin diffrentiel sur le bit j du mot de message Wi et les bits correspondants des mots de ltat interne Ai4 Ai (nous avons aussi les contraintes sur la matrice de retenue entrante la position j ). Nous allons simplement tester toutes les possibilits qui vrient ces conditions dentre et retenir celles compatibles avec les contraintes imposes en sortie sur le bit j de Ai+1 et sur la matrice de retenue sortante. Nous pouvons alors dduire plusieurs informations. Tout dabord, en ce qui concerne le rafnage des sorties, lespace de sortie atteint peut tre diffrent de celui dni par la condition sur le bit j de Ai+1 . Si tel est le cas, soit les espaces sont disjoints (ce qui implique une impossibilit et donc un chemin diffrentiel invalide), soit nous pouvons prciser la condition sur le bit j de Ai+1 (et donc ensuite mettre jour les nouveaux bits vrier suivant les rgles tablies prcdemment). De plus, nous pouvons aussi rafner exactement de la mme manire la matrice de retenue sortante la position j . Pour ce qui concerne les entres, nous pouvons examiner quel espace a permis datteindre de faon valide la condition sur le bit j de Ai+1 et celles sur la matrice de retenue sortante la position j . Cela nous permettra de prciser les contraintes sur les entres si ncessaire (puis de mettre jour les nouveaux bits 88

6.3. Recherche de chemin : la partie non linaire vrier le cas chant), ou dinvalider le chemin diffrentiel si nous avons affaire des espaces disjoints. Cette mthode est prsente graphiquement dans la gure 6.4. Il faut tre attentif durant limplantation moduler le rafnage suivant ltape dans laquelle on se trouve, puisque la formule de mise jour est diffrente suivant le tour considr.
+2 Aj i4

+2 Aj i3

Entres

+2 Aj i2

Aj i1
j 5 Ai

Entres
Wij

1er rafnage

2me rafnage

Ci

j +1/j

Aj i+1

Ci

j/j 1

Sorties

Sorties
F IG . 6.4 Technique de rafnage pour une position j de ltape i. Une fois lensemble des espaces possibles parcourus et ceux valides dduits, on rafne les sorties (le bit j de Ai+1 et j +1/j la matrice de retenue sortante note Ci ) et les entres (les bits du message Wij , les bits correspondants des mots de ltat interne Ai4 Ai et la matrice de retenue entrante note j/j 1 Ci ). Chaque modication dduite (si cela se produit) doit tre suivie de la mise jour des nouveaux bits rafner dans le tableau de rafnage. Nous avons ainsi entirement dcrit une technique qui permet de trouver des conditions non prcdemment dduites sur un chemin diffrentiel : chaque bit gal 1 du tableau de rafnage sera trait (plus dautres si des modications ont eu lieu), et le tableau de rafnage en sortie de lalgorithme sera entirement nul. La procdure propose ne permet de rafner qu un degr 1 puisquon ne cherche pas tablir dautres conditions plus complexes qui pourraient tre dduites si lon augmentait le champ de vision de lalgorithme. Mme si un rafnage de degrs suprieur tait possible implanter (quoiquassez complexe), son cot serait excessif compte tenu de lutilisation que nous voulons en faire. La mthode de rafnage propose prsente lavantage dtre assez simple dimplantation, mais galement trs rapide.

6.3.3

Structure de lalgorithme

Nous disposons prsent dun algorithme qui calcule la probabilit incontrle Pi (i), mais aussi et surtout dune fonction permettant le rafnage de conditions non prcdemment d89

Chapitre 6. Amlioration des mthodes de cryptanalyse duites. Cette dernire nous renvoie de plus une impossibilit si un chemin diffrentiel possde des conditions contradictoires. Avant de dcrire le coeur de lalgorithme de recherche de parties non linaires, nous devons prparer le chemin diffrentiel de dpart. Nous avons en entre de lalgorithme un vecteur de perturbation et une valeur de variable de chanage (pouvant potentiellement comporter des diffrences). Nous crons donc en premier lieu le squelette du chemin diffrentiel grce ces deux entres, mais nous allons relaxer toutes les conditions sur les registres internes entre A0 et Ak . Ce paramtre k dpend grandement du vecteur de perturbation et devra tre dtermin empiriquement par lattaquant pour faciliter la tche de lalgorithme. Bien entendu, nous ne modions pas les conditions sur les mots de message entre ces tapes puisque la partie non linaire ne concernera que les registres internes. En outre, nous avons observ quen relaxant lgrement les conditions sur les positions de bit de poids trs faible ou trs fort des registres internes aprs ltape k , lalgorithme prsente un meilleur comportement. Une fois ce premier squelette cr, nous appelons la fonction de rafnage pour aboutir un chemin diffrentiel CDdepart qui sera notre point de dpart. Nous donnons un exemple dun tel squelette dans la gure 6.5.
i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : Ai 00001111010010111000011111000011 01000000110010010101000111011000 01100010111010110111001111111010 11101111110011011010101110001001 01100111010001010010001100000001 ????x--------------------------???????????????????????????????x ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???????????????????????????????? ???----------------????????????? ???------------------??????????? ???--------------------????????? ???----------------------??????? ??-------------------------????? ??x---------------------------?? ??-----------------------------? Wi L(i) Pi (i) Ne (i)

xxx-x------------------------------x-----------------------xx----xx--------------------------x-xxx-----------------------x-xxx--x----------------------x-----x-xx---------------------x---xxxx-x---------------------x-x-x-xx-x----------------------x------x--------------------------x--xx-----------------------xx-xx-xx----------------------x-------x----------------------x---x-xxx----------------------x---x--xx---------------------------xx--------------------------------------------------------x--xx-----------------------------x--x-----------------------x-x----x-----------------------x---

32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 0 0 0

0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -16.00 -18.00 -20.00 -22.00 -25.00 -12.28 -11.16 -9.33

-244.40 -212.40 -180.40 -148.40 -116.40 -84.40 -52.40 -20.40 11.60 43.60 75.60 107.60 123.60 137.60 149.60 159.60 166.60 154.31 143.15

F IG . 6.5 Un exemple de squelette de dpart CDdepart , avec k = 11. Nous ne montrons ici quun tronon du chemin diffrentiel total tant donn que la partie non linaire se situe dans les premires tapes. On peut observer que les conditions sur le registre A1 ont t rafnes puisquau dpart ce registre tait entirement non contraint. Nous avons remarqu empiriquement que la forme en triangle des conditions relaxes aprs ltape k donne de bons rsultats. Le coeur de lalgorithme est alors trs simple : nous allons tirer alatoirement un bit des registres internes entre les tapes 0 et k , et ragir suivant sa valeur. Si ce bit ne possde aucune condition ( ? ), nous imposons quaucune diffrence ny soit prsente ( - ), nous mettons 1 le bit du tableau de rafnage correspondant la modication et nous rafnons le chemin diffrentiel. Si ce bit possde dj une diffrence ( x ), nous forons son signe en tirant alatoirement une diffrence montante ( n ) ou descendante ( u ), ensuite nous mettons jour le tableau de rafnage et nous rafnons le chemin. Pour tout autre type de condition, nous ne faisons rien. On poursuit de la mme manire, et si lon rencontre une impossibilit un moment donn, on peut revenir une tape en arrire en annulant la prcdente modication (ou 90

6.3. Recherche de chemin : la partie non linaire


i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : Ai 00001111010010111000011111000011 01000000110010010101000111011000 01100010111010110111001111111010 11101111110011011010101110001001 01100111010001010010001100000001 -0u0u111011001000-------0-0----1 -01-1nnnnnnnnnnnnnnnnnnnnnn-nnnn -n-uu-010000111-------u---u---00 x---10111101n010u-----????-----E -x-0-00------un-nn-nnD-?--?-?----x0----------00n-n---???-?---D---01------n---01B5x---B?-D-B??x n-n-0--------0----0-u0--u-?-?---n--0--------0------1--------x---010------------Bx---u---??---? --u--------------Bx-0---Ex-u-n-0 ----1-------------------1-n--uu1 ?-n-1--------------------n-----n x1--1-------------------DB--Dx?0 ?-n-1--------------------n-----0 -x--1-------------------------?1 -?u11--------------------------x ----0-------------------------- Ai 00001111010010111000011111000011 01000000110010010101000111011000 01100010111010110111001111111010 11101111110011011010101110001001 01100111010001010010001100000001 -0u0u11101100100001010000-0010-1 -01-1nnnnnnnnnnnnnnnnnnnnnn-nnnn -n-uu-0100001111001100u010u11000 n1--10111101n010u01110uu1n1---1n -u-0-00------un-nn0nnn0u11u0u----u0----------00n1n1-1n1u--01-0---01------n---01-0u101u00n00u1u n0n-0--------0----0-u0--u1n1n1-1 -n1-0--------0------100110-0-u01 --010------------un---u001u0011n 01u--------------un00---1n-u1n-0 01--1-------------------1-n10uu1 1-n-1--------------11----n00110n u1--1-------------------nu-1nun0 n1n-1--------------------n--1110 1n1-1---------------------10-0u1 -uu11----------------------1---n ----0-------------------------- Wi L(i) Pi (i) Ne (i)

xnn0u1111010111110-------------0 -1--n1001100----------------uu10 -1-nu-11111111-----------------0 x-nuu001101-----------------u-xxx--n----------------------x-----x-xn---------------------x---xxxx-n---------------------x-x-x-xx-n----------------------x------x--------------------------x--xx-----------------------xx-xx-xx----------------------x-------n----------------------x---x-xxx----------------------u---x--un---------------------------xx--------------------------------------------------------x--0 xx-----------------------------x--x-----------------------x-x----x-----------------------x--- Wi

14 19 20 22 31 31 31 31 32 32 32 31 31 30 32 31 0 0 0

-2.00 -16.07 -4.00 -12.42 -20.42 -17.43 -16.65 -22.51 -21.36 -16.82 -21.69 -19.85 -16.02 -8.74 -15.49 -8.53 -9.50 -8.68 -5.63

-60.68 -48.68 -45.75 -29.75 -20.16 -9.58 4.00 18.35 26.84 37.48 52.66 62.98 74.13 89.11 110.37 126.88 149.36 139.86 131.18

i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 :

L(i)

Pi (i)

Ne (i)

xnn0u1111010111110001111--01---0 -1--n10011001010001--001----uu10 -1-nu-1111111110100----1001-1--0 x-nuu001101001010011011101--u-n0 xx--n--------00-1--------10n-----u-xn--------10000--------x---xuux-n----------1-----1----u-u-x-xx-n------------------0---n------u---------------0----------x--xn-------------------1---xx-xn-nu----------------------x-------n---------------------1u1--x-nxx----------------------u---0 x--un--------------------------1 -un-1--------------------------1 ----1-----------------------n0-0 xn-1---------------------------0 x--n-----------------------u-u----u-----------------------u---

6 9 10 5 25 25 25 29 30 30 29 28 29 29 28 28 0 0 0

-3.00 -6.00 -7.00 -3.00 -14.09 -13.00 -18.00 -16.42 -15.00 -16.42 -14.00 -9.19 -14.42 -9.00 -9.00 -9.42 -7.42 -1.00 0.00

-57.31 -54.31 -51.31 -48.31 -46.31 -35.40 -23.40 -16.40 -3.82 11.18 24.77 39.77 58.58 73.16 93.16 112.16 130.75 123.33 122.33

F IG . 6.6 Un exemple de sortie de lalgorithme de recherche de parties non linaires, en partant du squelette CDdepart de la gure 6.5. Le premier chemin reprsente la sortie avant la recherche exhaustive avec l = 25, do la prsence de bits non contraints et de diffrences non signes dans les registres internes entre les tapes 0 et k = 17. Le deuxime chemin reprsente la sortie nale CDf inal aprs application de la recherche exhaustive. plusieurs si un retour avait dj t effectu prcdemment) puis en continuant normalement (les tats successifs devront ainsi tre stocks). On limitera cependant le nombre de retours une certaine quantit r, dtermine empiriquement par lattaquant. On arrte lorsque le chemin rafn comporte au plus l bits des registres internes sans aucune condition ( ? ), le nombre l tant aussi dtermin empiriquement par lattaquant. On aboutit un chemin diffrentiel i temporaire CDtemp , pour lequel nous allons tester presque exhaustivement les combinaisons possibles des bits qui restent sans condition (ou avec une diffrence non signe), et chercher un candidat dbouchant sur un chemin diffrentiel valide (ne renvoyant pas dimpossibilit aprs le rafnage nal). Si lon aboutit un tel candidat, nous avons trouv une partie non linaire CDf inal ; sinon on ritre lalgorithme en partant de CDdepart . Pour plus de clart, cette mthode est prsente sous forme algorithmique dans la gure 6.7. Nous donnons aussi un 91

Chapitre 6. Amlioration des mthodes de cryptanalyse exemple dexcution de lalgorithme dans la gure 6.6 Entres : k , r, l et CDdepart Sorties : CDf inal tant que (vrai) faire proftemp = 0; rtemp = 0; ChargeChemindepart(CDdepart ); tant que ((rtemp <r) et (NombreBitsNonContraints()>l)) faire bit = ChoisitBitAleatoirement(k ); proftemp = proftemp + 1; SauveChemin(proftemp ); impossibilit = faux; suivant (bit.valeur) faire cas o ? bit.valeur = - ; TableauRafnage[bit] = 1; impossibilit = RaffineChemin(); n cas o x bit.valeur = ChoisitAleatoire( u , n ); TableauRafnage[bit] = 1; impossibilit = RaffineChemin(); n n si (impossibilit == vrai) alors proftemp = proftemp - 1; ChargeChemin(proftemp ); rtemp = rtemp + 1; n n si (impossibilit == faux) alors si (RechercheExhaustive() == vrai) alors retourner solution; n n n

F IG . 6.7 Algorithme de recherche de parties non linaires. La fonction ChoisitBitAleatoirement(k ) choisit alatoirement un bit entre les tapes 0 et k . La fonction NombreBitsNonContraints() renvoie le nombre de bits sans contrainte ( ? ) dans le chemin diffrentiel. La fonction ChoisitAleatoire(a,b) renvoie a avec probabilit 1/2 et b avec probabilit 1/2. La fonction RaffineChemin() rafne le chemin diffrentiel suivant le tableau de rafnage et rinitialise zro ce tableau. Enn, la fonction RechercheExhaustive() parcourt exhaustivement les candidats possibles (nous imposons que ? puisse devenir - , n ou u ; et que x puisse devenir n ou u ) et renvoie vrai si une solution valide aprs rafnage est trouve. 92

6.3. Recherche de chemin : la partie non linaire Bien que cet outil soit entirement heuristique, nous pouvons tenter danalyser qualitativement quelques tapes. Premirement, le fait de forcer des bits non contraints ( ? ) des conditions de non-diffrence augmente les chances daboutir une partie non linaire possdant un faible nombre de diffrences. Nous avons dj observ quun faible nombre de diffrences augmente la probabilit de succs dun chemin diffrentiel, et donc, dans notre cas, accrot les chances de trouver une partie non linaire. Ensuite, le fait dimposer un signe si lon rencontre une diffrence permet de rapidement entrer dans un espace de solutions plus petit, car de nombreuses conditions seront imposes par le rafnage qui suit cette modication. Cela aura pour effet de plus rapidement se rendre compte si lon volue dans un espace sans solutions. Il est assez facile de trouver une partie non linaire non signe, mais ds que lon tente de forcer les signes des diffrences (ce qui doit tre fait de toute manire avant la recherche dune paire de messages valide), on aboutit frquemment une impossibilit. Ceci sexplique par le fait que notre rafnage ne sapplique qu un degr 1, et certaines conditions contradictoires trs complexes ne peuvent tre repres facilement. Imposer un signe aux diffrences permet ainsi dviter de continuer chercher dans un chemin o des conditions contradictoires trs complexes existent, sans tre dcouvertes. Limiter r le nombre de retours empche lalgorithme de boucler indniment lorsquil se trouve dans un sous-espace sans solutions. Choisir un r trs grand laissera aboutira demeurer trop longtemps dans des sous-espaces sans solutions, utiliser un r trs petit ne pas tolrer assez de tentatives pour quune solution soit i , nous avons une probabilit non nglitrouve. Si lon arrive un chemin temporaire CDtemp geable quune solution puisse en tre extraite. Pour cette raison, nous nous arrtons lorsquil reste moins de l bits non contraints et nous recherchons presque exhaustivement lhypothtique solution pour viter tout risque de la manquer. Ne pas utiliser cette amlioration revient demander lalgorithme de chercher la solution complte, tout en sachant quil sarrtera aprs r erreurs. On peut enn remarquer que l ne doit pas tre choisi trop grand sous peine de ne pas pouvoir excuter la recherche exhaustive. En pratique, nous avons observ que le jeu de paramtres k = 11, r = 150 et l = 70 donne un bon rsultat. En pratique, nous ne testons pas 2l cas puisquen parcourant lensemble des candidats sous forme dun arbre il est possible de couper un grand nombre de branches, ce qui acclre grandement la recherche. Ritrer lalgorithme avec des lgres variations pour ces valeurs peut permettre daugmenter la probabilit de succs. Bien entendu, de nombreuses amliorations sont sans doute possibles, par exemple traiter les cas o lon choisit un bit qui possde des conditions de type 3 , 5 , 7 , A , etc., au lieu de ne rien faire. Aussi, il semble indispensable de mmoriser les conditions rafnes sur les matrices de retenue, pour viter de devoir les recalculer si lon opre un retour cause dune impossibilit. Le lecteur avis remarquera que nous navons pas utilis la fonction de calcul de probabilit incontrle Pi (i). Nous utilisons en fait cette fonction pour parfaire notre partie non linaire nale. En essayant alatoirement de xer des conditions sur CDf inal , nous pouvons garder uniquement celles qui amliorent grandement la probabilit de succs de la partie non linaire. On pourra continuer amliorer le chemin diffrentiel de cette manire tant quassez de degrs de libert sont disponibles. Nous pouvons enn observer quil est facile dinclure des conditions dans le chemin diffrentiel de dpart CDdepart , puis de chercher une partie non linaire qui prenne en compte ces conditions. Cela sera un outil indispensable pour la section suivante, qui traite des attaques boomerang. 93

Chapitre 6. Amlioration des mthodes de cryptanalyse

6.4

Recherche de candidats valides : les attaques boomerang

Lacclration de la recherche de candidats valides est primordiale pour la rapidit de lattaque nale. Les bits neutres et les modications de message sont dj des techniques avances, mais de nouvelles mthodes plus sophistiques sont apparues, comme les modications sous-marines introduites par Naito et al. [NSS06] ou les tunnels de Klima [Kli06]. Nous montrons dans cette section que lattaque boomerang [Wag99], qui tait originalement un outil de cryptanalyse pour les algorithmes de chiffrement par blocs, peut tre transpose au contexte des fonctions de hachage pour donner une gnralisation des techniques dacclration de la recherche de candidats valides. Cette gnralisation permet tout dabord damliorer la comprhension des concepts sous-jacents ces techniques. De plus, elle aboutit de nouvelles variantes trs intressantes dacclration de la recherche de collisions. Ces rsultats sont le fruit de notre coopration avec Antoine Joux dans le but damliorer les cryptanalyses de SHA-1, et ont fait lobjet de publications [JP07a, JP07b]. En collaboration avec Stphane Manuel [MP08], nous avons ensuite appliqu ces techniques avec succs SHA-0. Il existe dautres travaux ayant trait la recherche de candidats valides. On peut par exemple noter le travail de Sugita et al. [SKP07], assez lcart du chemin trac par Wang et al., qui permet de trouver des collisions pour SHA-1 laide de modications de message utilisant des bases de Grbner [Buc65]. Cette voie, bien quintressante, semble contrainte ne cryptanalyser que des versions rduites de SHA-1 cause de sa trs grande consommation de degrs de libert (le meilleur rsultat parvient jusqu ltape 58 de SHA-1).

6.4.1

Lattaque boomerang pour les algorithmes de chiffrement par blocs

Lattaque boomerang fut dcouverte par Wagner [Wag99] comme un outil de cryptanalyse des algorithmes de chiffrement par blocs. Elle permet denchevtrer deux chemins diffrentiels indpendants et partiels (ne couvrant pas le nombre total dtapes) en une attaque globale contre lalgorithme de chiffrement. Lide conductrice est simple. Supposons que lon dispose dun chemin diffrentiel 1 sur la premire moiti du chiffrement par blocs, commenant par une diffrence E 1 en entre et aboutissant une diffrence S 1 en sortie avec une probabilit p1 . Supposons dautre part que lon dispose dun autre chemin diffrentiel 2 sur le dchiffrement de la deuxime moiti du chiffrement par blocs, commenant par une diffrence S 2 sur le bloc de chiffr et aboutissant une diffrence sur le bloc intermdiaire avec une probabiE2 lit p2 . En utilisant ces deux chemins diffrentiels partiels, on peut dessiner un diagramme (voir gure 6.8) qui implique quatre paires texte clair/chiffr (P1 , C1 ), (P2 , C2 ), (P1 , C1 ), (P2 , C2 ) . Ce diagramme peut aboutir une attaque de la manire suivante. Tout dabord, lattaquant choisit alatoirement un texte clair P1 et demande le chiffrement de P1 et de P2 = P1 E 1 . On note respectivement C1 et C2 les deux chiffrs obtenus. Ensuite, lattaquant calcule les chiffrs C1 et C2 en appliquant la diffrence S 2 sur C1 et C2 respectivement : C1 = C1 S 2 et C2 = C2 S 2 . Il demande le dchiffrement de C1 et C2 et obtient les textes clairs P1 et P2 . Lide de lattaque est de remarquer que lorsque la paire de textes clairs (P1 , P2 ) est valide pour le chemin diffrentiel 1 et lorsque les deux dchiffrements (C1 , C1 ) et (C2 , C2 ) suivent le chemin diffrentiel 2 , alors les valeurs intermdiaires correspondant P1 et P2 prsentent une diffrence S 1 . Enn, si la paire de textes clairs (P1 , P2 ) est aussi une paire valide pour le chemin diffrentiel 1 , lattaquant obtient par consquent P1 P2 = E1. En supposant une indpendance entre les quatre instances de chemins diffrentiels, on ob2 tient une probabilit de succs nale gale p2 1 p2 . Si ces probabilits ne sont pas trop faibles, 94

6.4. Recherche de candidats valides : les attaques boomerang P1 P1 E1 E1 P2 P2

S1 E2 S1

E2

S2 C1 C1 C2

S2

C2

F IG . 6.8 Vue schmatique de lattaque boomerang contre les algorithmes de chiffrement par blocs. cela permettra lattaquant de distinguer avec une probabilit de succs non ngligeable lalgorithme de chiffrement par blocs dune permutation idale. Il faut enn noter que de nombreuses variantes existent, mais leur description dpasse le cadre de cette thse.

6.4.2

Adapter lattaque boomerang aux fonctions de hachage itres

premire vue, du fait que beaucoup de fonctions de compression sont fondes sur un algorithme de chiffrement par blocs, il semble tentant dappliquer directement les attaques boomerang aux fonctions de hachage itres correspondantes. Toutefois, plusieurs problmes empchent cette approche directe. En particulier, la capacit de dchiffrer, lment essentiel pour les attaques boomerang, ne peut tre obtenue dans le contexte des fonctions de hachage cause de la rsistance la recherche de primages. De plus, le contexte des fonctions de hachage est diffrent de celui des algorithmes de chiffrement par blocs puisquaucun secret, aucune cl ne sont considrer ici. Cependant, les attaques boomerang peuvent tre utilises autrement et devenir utiles pour la cryptanalyse des fonctions de hachage itres. Plus exactement, il est possible dadapter la variante texte clair choisi des attaques boomerang (aussi appele attaque boomerang amplie [KKS00]) pour acclrer des attaques diffrentielles dj tablies. Lide est de manier, en plus du chemin diffrentiel principal utilis de manire classique dans les attaques diffrentielles, plusieurs chemins diffrentiels partiels qui se comportent trs bien sur un nombre limit dtapes, mais ne couvrent pas le nombre total dtapes de la fonction de compression. Autrement dit, ces chemins auront une bonne probabilit de succs sur un petit nombre dtapes, mais ne peuvent tre utiliss pour essayer de trouver une collision sur la version complte 95

Chapitre 6. Amlioration des mthodes de cryptanalyse de la fonction de hachage. Pour combiner ces petits chemins, appels chemins diffrentiels auxiliaires, et le chemin diffrentiel principal, on utilise le mme type de diagramme que pour les attaques boomerang sur les algorithmes de chiffrement par blocs (voir gure 6.9). Nanmoins, mme si lide gnrale est la mme, quelques diffrences apparaissent. La premire diffrence, dj cite, concerne lincapacit de lattaquant dinverser la fonction de compression. Deuximement, nous naurons plus de symtrie avec les deux caractristiques diffrentielles 1 et 2 qui jouent presque le mme rle. la place, il y aura un chemin diffrentiel principal P , qui sera notre cible, et plusieurs chemins diffrentiels auxiliaires i A qui vont nous aider trouver une paire de messages valide pour P . M1 M2 EP EAi EP M1 EAi M2

CP SAi CP

SAi

SP H1 H2 SP H1 H2

F IG . 6.9 Vue schmatique de lattaque boomerang contre les fonctions de hachage.

Notre adaptation des attaques boomerang aux fonctions de hachage itres ncessite une caractristique diffrentielle principale. On commence donc en premier lieu par trouver un chemin diffrentiel principal pour la fonction de hachage considre. Par souci de simplicit et sans perte de gnralit, on suppose que ce chemin nutilise quun unique bloc de message et ne ncessite donc quune seule itration pour aboutir une collision. Il est trivial de gnraliser la description de lattaque au cas de chemins diffrentiels utilisant des presque collisions et de plusieurs itrations. Le chemin principal P imposera une certaine diffrence EP et certaines conditions sur les mots de message. Nous chercherons alors des paires de messages (M, M ) (avec M = M EP ) en esprant que lune de ces paires aboutisse une collision en sortie de la fonction de compression ( SP = 0), ce qui se produira avec probabilit pP pour chaque candidat. Comme prcdemment dcrit pour la famille SHA, cette probabilit tient en compte des premires tapes o les mots du message M peuvent tre choisis indpendamment les uns des autres et nous les appelons tapes prcoces. Pour linstant, nous divisons le reste des tapes 96

6.4. Recherche de candidats valides : les attaques boomerang en deux sous-parties : tapes centrales et les tapes nales . Ceci est explicit dans la gure 6.10.

1111111 0000000 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111

F IG . 6.10 Division dun chemin diffrentiel en trois sous-parties. chacune de ces parties on associe une probabilit de succs pC et pF respectivement et lon note CP la diffrence attendue sur ltat interne la n des tapes centrales. En supposant les tapes indpendantes, nous avons pP = pC pF . Le but de notre attaque sera alors damliorer la probabilit de succs pC et ainsi diminuer la complexit nale. Pour cela, nous utilisons comme outils des chemins diffrentiels auxiliaires qui couvriront avec une bonne probabilit de succs la fois les tapes prcoces, mais aussi celles centrales. Supposons un chemin diffrentiel i A prdisant quavec probabilit pAi , deux messages M et M EAi aboutissent, la n des tapes centrales, deux tats internes avec une diffrence prvue (et non ncessairement nulle) . Choisissons prsent une paire de messages M1 et M1 = M1 EP valide SAi pour le chemin diffrentiel principal P durant les tapes prcoces et centrales. Puis, supposons que les deux paires (M1 , M2 ) avec M2 = M1 et (M1 , M2 ) avec M2 = M1 EAi EAi sont toutes les deux valides pour le chemin diffrentiel auxiliaire i . Dans ce cas, on peut A sapercevoir que les diffrences sur les tats internes vont sannuler la n des tapes centrales et que la paire de messages (M2 , M2 ) est donc aussi valide pour le chemin diffrentiel principal P jusqu la n de ces tapes centrales (voir gure 6.9). Ici, nous navons considr que des diffrences binaires, ce qui signie que notre nouvelle paire de messages (M2 , M2 ) peut vrier le chemin diffrentiel pour les diffrences binaires, mais pas pour celles modulaires ou modulaires signes. On supposera de ce fait que les chemins auxiliaires sont assez indpendants de celui principal pour viter ce genre de comportement. En supposant cette indpendance, la paire de messages (M2 , M2 ) fournira une collision avec probabilit p2 PF . Ai Cette ide dattaque semble assez prometteuse en thorie, car lorsque p2 < pC , on peut Ai sattendre une amlioration de lattaque classique par la technique boomerang. En pratique, la
On peut imaginer une autre sous-partie : nous avons dj vu que dans le cas des attaques multiblocs, les toutes dernires tapes sont un peu particulires puisque quelques conditions peuvent y tre ignores.

MESSAGE

TAPES PRCOCES TAPES CENTRALES

EXPANSION

TAPES FINALES

97

Chapitre 6. Amlioration des mthodes de cryptanalyse situation est plus complexe. moins de possder une premire paire de messages (M1 , M1 ), il est impossible de construire la deuxime paire (M2 , M2 ). Par consquent, au mieux, cette amlioration double le nombre de paires de messages candidates. Heureusement, lorsquun grand nombre de chemins diffrentiels auxiliaires peut tre trouv, ce qui est une hypothse raisonnable tant donn la faible quantit dtapes considre, on pourra utiliser cette amlioration plusieurs fois. En supposant que pAi = 1 pour tous les i chemins diffrentiels auxiliaires, on amplie une paire de messages candidate en 2i paires. Il est vident quil faudra arranger les chemins diffrentiels auxiliaires de manire approprie pour viter tout chevauchement ou toute incompatibilit similaire. Lorsque pAi est infrieur 1 (mais pas trop faible), nous amplions tout de mme une seule paire de messages en plusieurs. On peut voir tout de suite lutilit dune telle attaque pour lacclration de la recherche dune paire de messages valide pour un chemin diffrentiel. On pourrait opposer deux principales objections cette amlioration. Premirement, lhypothse dindpendance peut paratre peu naturelle, puisque toutes ces paires de messages sont corrles. Exprimentalement, cette hypothse est fausse. Cependant, nous avons remarqu que pour des caractristiques diffrentielles bien choisies, le biais induit par les dpendances joue en la faveur de lattaquant et non contre lui. Le principal argument tant que, puisque M et M EP suivent des tats internes successifs trs similaires durant le calcul de la fonction de compression, la probabilit de succs nale des deux paires pour le chemin diffrentiel auxiliaire est plus proche de pAi que de p2 . La seconde objection serait que les Ai tapes prcoces et centrales ne semblent pas gratuites pour lattaquant dans les chemins diffrentiels auxiliaires. Cela peut tre un problme majeur puisque nous souhaitons que pAi soit bien plus grand que pC . En fait, il existe plusieurs moyens dviter ce problme, dpendants de la fonction de hachage considre et des proprits diverses des chemins diffrentiels utiliss. Nous donnons des exemples dans la section suivante et nous verrons plus tard que lattaque boomerang pour les fonctions de hachage est en fait une gnralisation des bits neutres et des modications de message utiliss pour la famille SHA.

6.4.3

Les diffrentes approches possibles

Nous avons dcrit dans la section prcdente lattaque boomerang pour les fonctions de hachage de manire thorique. Nous allons maintenant examiner les diffrentes approches pratiques qui se prsentent nous. En particulier, nous discuterons des buts possibles dun chemin diffrentiel auxiliaire et de la manire de lutiliser. Les approches bits neutres ou modication de message Concentrons-nous pralablement sur lobjectif dun chemin diffrentiel auxiliaire. On peut remarquer la similarit entre la description de ces chemins et la technique des bits neutres pour SHA-0, prcdemment explique. En fait, les bits neutres sont une instance de lattaque boomerang. Une fois le chemin diffrentiel principal tabli, Biham et Chen [BC04] tentent de trouver des modications qui ne dtruiront pas la validit dune paire de messages jusqu une certaine tape de ce chemin. Chacune de ces modications forme en fait un chemin diffrentiel auxiliaire pour lequel on considre que les tapes centrales vont approximativement de 16 20. Une fois un grand nombre de bits neutres trouvs, Biham et Chen multiplient les instances valides en parcourant toutes les combinaisons de modications possibles (comme nous multiplions les instances en appliquant toutes les combinaisons de chemins diffrentiels auxiliaires) et observent exprimentalement que ces nouveaux candidats seront eux-mmes valides avec 98

6.4. Recherche de candidats valides : les attaques boomerang une certaine probabilit. Ceci sexplique dans notre modle par linterdpendance des chemins diffrentiels auxiliaires, et notre formalisation plus adquate fournit des outils pour essayer de diminuer cet effet nfaste pour lattaquant. La diffrence essentielle entre les deux techniques est que les bits neutres sont cherchs de manire empirique par Biham et Chen tandis que nous donnons ici une explication thorique des mcanismes sous-jacents. Nous pouvons donc effectuer des recherches de bits neutres plus efcaces, cibles et prvues lavance dans le chemin diffrentiel principal. Il existe une manire radicalement diffrente dutiliser les attaques boomerang. Au lieu de multiplier les instances valides, comme pour les bits neutres, on peut la place tenter de corriger celles qui sont invalides. Cette mthode, duale de la prcdente, gnralise en fait les modications de message introduites par Wang et al. [WLF05, WYY05b, WY05, WYY05d]. Les modications trouves par Wang et al. pour corriger certaines conditions qui ne seraient pas vries sont en fait des chemins diffrentiels auxiliaires dont la diffrence en sortie nest pas nulle. On souhaitera donc que les diffrences obtenues la n du chemin auxiliaire corrigent des conditions invalides du chemin principal durant les tapes centrales. La probabilit de succs dune modication sera alors dpendante de la qualit du chemin diffrentiel auxiliaire, mais aussi de linterdpendance entre tous ceux utiliss. De la mme faon que pour les bits neutres, nous pouvons prsent mieux construire des modications de message, et ce, de manire automatise, en cherchant des chemins diffrentiels auxiliaires. Linterdpendance sera aussi plus facile mesurer et diminuer. Lattaque sera amliore et il nous sera plus facile de calculer le cot rel dun processus complet de modication de message. Dans les deux cas dutilisation, lamlioration des attaques boomerang provient du fait que lon peut considrer que le calcul du cot rel du chemin diffrentiel principal commence au dbut des tapes nales au lieu du dbut des tapes centrales. Dans le cas des bits neutres, on amortit le cot de recherche dune paire de messages valide jusqu la n des tapes centrales en multipliant les instances partir dune seule, ce qui nous donne un cot unitaire faible. Dans le cas des modications de message, on utilise les chemins diffrentiels auxiliaires pour engendrer directement et efcacement une paire de messages valide jusqu la n des tapes centrales. La mise en place des chemins auxiliaires Nous avons vu deux objectifs trs diffrents pour les attaques boomerang, mais lon peut aussi distinguer les mises en place possibles de celles-ci. La premire, la plus simple, consiste placer lattaque boomerang tout la n de la procdure dattaque : on tablit tout dabord un chemin diffrentiel, puis lon cherche et utilise les caractristiques auxiliaires lors de la recherche de paires de messages, comme cela est effectu pour la technique des bits neutres originale. Il faut noter que le processus de recherche de chemins auxiliaires devra tre excut pour chaque paire de messages valide jusquaux tapes centrales. Nous retombons donc exactement sur la mthode originale de Biham et Chen dans le cas dune utilisation en bits neutres. Dans le cas des modications de message, cette conguration semble inadapte, car nous nessayons pas damortir le cot, mais dengendrer directement une paire de messages valide jusqu la n des tapes centrales, ce qui devra tre ralis trs rapidement. Cela sera trs difcile puisque le processus de recherche de chemins auxiliaires devra tre excut pour chaque candidat. De faon gnrale, cette mthode prsente lavantage dtre simple, mais ne fournira pas de trs bons rsultats en ce qui concerne lacclration de recherche dune paire de messages valide. En effet, la probabilit quil existe des bits neutres 99

Chapitre 6. Amlioration des mthodes de cryptanalyse ou des modications de message puissants et ayant de bonnes chances de succs est faible. De plus, dans le cas de la famille SHA, lorsque des parties non linaires sont ajoutes, beaucoup de degrs de libert sont consomms. De nombreuses conditions sur le chemin diffrentiel sont ncessaires pour les parties non linaires, et ces conditions pourraient aider aussi lacclration de recherche. Cette dernire remarque nous amne la deuxime mthode, o lacclration de recherche est directement prise en compte dans le chemin diffrentiel (de manire totale ou seulement partielle). Lattaquant peut en effet adapter la physionomie du chemin diffrentiel principal pour amliorer les chemins auxiliaires. Pour amliorer encore lefcacit, lattaquant pourra directement ajouter des conditions dans le chemin diffrentiel pour amliorer les probabilits de succs des caractristiques auxiliaires. Cela nous permettra dengendrer des bits neutres beaucoup plus puissants (valides jusqu une tape plus tardive) ou des modications de message ayant une meilleure probabilit de succs et rendant donc le processus total de modication beaucoup plus rapide. Pour le cas de la famille SHA, nous pouvons distinguer deux variantes de la deuxime mthode : lintgration dans le chemin diffrentiel principal des chemins auxiliaires avant ou aprs celle des parties non linaires. Si lon intgre avant, nous pourrons trouver de bien meilleurs chemins auxiliaires et nous conomiserons des degrs de libert du fait que certaines conditions seront communes ces chemins et aux parties non linaires. Cependant, lattaque sera beaucoup plus complexe mettre en oeuvre et demandera un important travail de prparation. De plus, trop de chemins auxiliaires vont compliquer ltablissement des parties non linaires. Un compromis sera donc ncessaire. On peut remarquer que la modication de message avec une recherche de chemins auxiliaires postrieure aux parties non linaires est illustre par la technique de modication de message originale de Wang et al. et par celle des modications sous-marines introduites par Naito et al. [NSS06]. On peut aussi noter que la technique des tunnels de Klima [Kli06], appliqus MD5, correspond des bits neutres avec quelques conditions sur le chemin diffrentiel ajoutes aprs ltablissement des parties non linaires. De nouvelles et intressantes perspectives souvrent nous, car les congurations restantes nont pas encore t utilises. Le tableau 6.3 rcapitule toutes les diffrentes variantes de lattaque boomerang pour les fonctions de hachage. bits neutres avant parties non linaires aprs parties non linaires aprs chemin diffrentiel total nouvelle variante tunnels [Kli06] bits neutres [BC04] modication de message nouvelle variante modication de message [WYY05b] modications sous-marines [NSS06] nouvelle variante

TAB . 6.3 Les diffrentes variantes de lattaque boomerang pour les fonctions de hachage.

100

6.4. Recherche de candidats valides : les attaques boomerang

6.4.4

Application la famille SHA

Nous allons nous concentrer dans cette section sur le cas de la famille SHA, pour laquelle nous appliquons les attaques boomerang et amliorerions ainsi les techniques existantes dacclration de recherche de candidats valides. Nous divisons cette description en trois tapes : la construction des chemins auxiliaires, lincorporation de ces chemins dans la caractristique principale, puis leur utilisation lors de la recherche de candidats valides. En collaboration avec Antoine Joux [JP07a, JP07b], nous avons publi la partie thorique des attaques boomerang et leur application pour SHA-1. Nous avons ensuite trait le cas de SHA-0 en coopration avec Stphane Manuel dans [MP08]. Construire des chemins diffrentiels auxiliaires pour SHA Notre but ici est de construire un chemin diffrentiel pour SHA sur un nombre dtapes limit et dont les diffrences en sortie sont relativement contrles. Bien entendu, plus le nombre dtapes sera important et plus le chemin diffrentiel sera puissant, mais difcile construire. Il faut aussi garder lesprit que lattaquant souhaite utiliser des chemins diffrentiels auxiliaires lgers, en ce sens que peu de degrs de libert sont ncessaires pour obtenir une bonne probabilit de succs pAi 1. On peut dores et dj remarquer que lanalyse sera lgrement diffrente suivant que lon souhaite appliquer lapproche bits neutres ou modication de message . Nous nous concentrerons en premier sur la premire approche. Mme si la physionomie gnrale du chemin diffrentiel principal est connue, il semble assez risqu de laisser se propager des diffrences dans les chemins auxiliaires. Naturellement, nous allons donc essayer de construire des chemins qui aboutissent une collision interne, et ce, ltape la plus tardive possible et pour un cot en termes de degrs de libert sufsamment faible. Les problmes tant trs similaires, nous allons utiliser la technique classique de construction de chemins diffrentiels : les collisions locales. Il faudra utiliser le moins possible de collisions locales pour avoir une bonne probabilit de succs intrinsque (cette probabilit peut tre augmente loisir au prix dune consommation de degrs de libert en ajoutant des conditions). Le vecteur de perturbation pour le chemin auxiliaire ne concernant quun nombre dtapes trs rduit, la rotation dans lexpansion de message de SHA-1 ne sera pas trs contrariante et sa construction pour SHA-0 et SHA-1 sera quasi identique, contrairement au cas du chemin diffrentiel principal. Les collisions locales ont dj t dcrites en section 5.2.1, mais nous utilisons ici une version un peu plus gnrale. Nous considrerons une variante o lon admettra un comportement non linaire des fonctions boolennes (et notamment de la fonction IF utilise pour les 20 premires tapes de SHA). Auparavant, du fait de la complexit pour construire un chemin diffrentiel sur 80 tapes, nous avions utilis un modle linaire et ainsi constamment corrig les perturbations insres. Ce modle tait utile, car valide pour les trois fonctions boolennes utilises dans SHA, et seul le vecteur de perturbation tait considrer. Comme les chemins auxiliaires concernent presque uniquement la fonction boolenne IF, on augmentera le nombre de collisions locales possibles en se permettant de corriger ou non lorsque la perturbation sexprime dans la fonction boolenne (contrairement la fonction boolenne XOR, la fonction IF peut absorber des diffrences). Les autres corrections restent identiques et le tableau 6.4 rsume les diffrentes possibilits considres. Au lieu dune seule collision locale dans le modle linaire, nous disposons prsent de 23 = 8 collisions locales non linaires diffrentes. Nous souhaitons utiliser le moins de collisions locales possible, 5 semblant tre dj une 101

Chapitre 6. Amlioration des mthodes de cryptanalyse tape i i+1 i+2 type pas de retenue correction pas de correction correction i+3 pas de correction correction i+4 pas de correction correction i+5 correction contraintes
j Aj i+1 = a et Wi = a +5 Wij+1 =a +2 j +2 Aj i1 = Ai +2 j +2 +2 j Aj et Aj i1 = Ai i1 = Wi+2 a 2 Aj i+2 = 0 2 j 2 Aj i+2 = 1, Wi+3 = a 2 Aj i+3 = 1 2 j 2 Aj i+3 = 0, Wi+4 = a 2 Wij+5 =a

TAB . 6.4 Variantes possibles dune collision locale avec comportement non linaire de la fonction boolenne pour une perturbation insre sur Wij dans le premier tour de SHA. quantit trop grande. Par contre, nous ne nous limitons pas concernant ltape nale, car un chemin auxiliaire trs lger et peu puissant pourra nous tre utile (la raison en sera dtaille plus loin). Il semble a priori logique dajouter des perturbations sur une seule position de bit, pour les mmes raisons que lors de la construction dun chemin diffrentiel principal. Nos chemins auxiliaires seront ainsi invariants par rotation sur la position de bit. Nous forons donc des collisions locales non linaires durant les 16 premires tapes simplement en parcourant exhaustivement les 16 positions possibles, et pour toutes les collisions locales non linaires possibles. Nous souhaitons viter de poser des conditions sur des bits postrieurs ltape 15 puisque lattaquant ny a plus de contrle direct, ce qui impliquerait une diminution signicative de la probabilit pAi . Plus prcisment, pour le cas de SHA-1, nous interdisons lintroduction de perturbations partir de ltape 11 du fait que certaines corrections correspondantes se drouleraient sur une position de bit dcale cause de lexpansion de message (si la perturbation est introduite sur une position de bit j , certaines corrections sopreront de manire errone sur la position de bit j + 1 et rinjecteraient des diffrences non contrles). Cela nous donne 816 = 248 candidats au total pour SHA-0 et 811 = 233 candidats pour SHA-1, mais nous ne testons que ceux qui comportent au plus 5 collisions locales non linaires, ce qui rduit grandement lespace de recherche. Pour chaque candidat engendr, on calcule lexpansion de message partir de ltape 16 et lon identie ltape k laquelle arrive la premire diffrence non contrle. Cela impliquera que nous aurons une collision interne jusqu ltape k 1 et ce chemin pourra tre utilis comme bit neutre. En pratique, mme si des diffrences non contrles arrivent aux tapes k , k + 1, etc., ces perturbations ninterfreront pas immdiatement avec le chemin diffrentiel principal. Ceci explique pourquoi un chemin auxiliaire avec la premire diffrence non contrle ltape k peut tre utilis comme un bit neutre jusqu une tape plus tardive que k 1. Plus ltape vise est tardive et plus la probabilit de succs du bit neutre dcrot. Cela dpend bien entendu aussi de la position de bit considre, relativement au chemin diffrentiel principal. On peut mesurer cet effet en pratique pour faire le bon choix de ltape nale du bit neutre. 102

6.4. Recherche de candidats valides : les attaques boomerang La mthode de recherche prcdemment explique nous fournit de nombreux candidats et nous donnons ici deux bons exemples de chemins diffrentiels auxiliaires. Le premier, not AP1 (Auxiliary Path 1), aura trs peu de contraintes, mais ltape nale est assez prcoce. En dautres termes, il sera lger, mais peu puissant. Au contraire, le second, not AP2 , induira beaucoup de contraintes, mais aura une tape nale assez tardive. Nous donnons en gure 6.11 et 6.12 la description de AP1 et AP2 respectivement. AP1 utilise une collision locale ltape 6 et la j 2 premire diffrence non contrle apparat ltape 19, avec W19 . Si les conditions sur le chemin sont conrmes, nous aurons pAi = 1 : chaque bit a peut prendre nimporte quelle valeur, tant que les contraintes a sont vries. AP2 utilise trois collisions locales aux tapes 0, 2, j 10 et la premire diffrence non contrle apparat ltape 24, avec W24 . On peut noter que AP2 possde des conditions sur la variable de chanage, ce qui complique lgrement son utilisation. En pratique, AP1 et AP2 pourront tre utiliss jusquaux tapes 22 et 27 respectivement, au prix dune lgre diminution de la probabilit de succs du bit neutre. W0 W15 perturbations diffrences sur W j diffrences sur W j +5 diffrences sur W j 2 0000001000000000 0000001000000000 0000000100000000 0000000000010000 0000101101100111 0000010110110011 0001001000000010 W16 W31

i -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 :

Ai ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------b------------------------------b--------------------------------a--------------------------------0 -------------------------------1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Wi

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------a-------------------------a----------------------------------------------------------------------------------------------------------------------------------a -----------------------------------------------------------------------------------------------------------------------------

F IG . 6.11 Chemin diffrentiel auxiliaire AP1 . Le premier tableau donne les 32 premires tapes du vecteur de perturbation par des collisions locales non linaires. La premire diffrence non contrle apparat ltape 19. Le second tableau fournit, pour le cas o lon se positionne sur la position de bit j = 2, les contraintes ajouter pour avoir une probabilit de russite gale 1 pour ce chemin auxiliaire. Les lettres reprsentent une valeur de bit, et la valeur complmentaire est note par cette mme lettre avec une barre au-dessus. Pour ce qui concerne lapproche modication de messages , le mme type de mthode peut tre utilis. Lattaquant utilise des collisions locales pour obtenir une chemin auxiliaire o la premire diffrence non contrle est assez tardive. Il essaye ensuite de pouvoir inuer 103

Chapitre 6. Amlioration des mthodes de cryptanalyse W0 W15 perturbations diffrences sur diffrences sur diffrences sur Wj W j +5 W j 2 1010000000100000 1010000000100000 0101000000010000 0001111100000011 0000000010110110 0000000001011011 0000000000001110 W16 W31

i -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 :

Ai ---------------------------d------------------------------d------------------------------e-a----------------------------e---1 -----------------------------b-0 -------------------------------0 -------------------------------0 ------------------------------------------------------------------------------------------------------------------------f------------------------------f--------------------------------c--------------------------------0 -------------------------------0 ---------------------------------------------------------------

Wi

-----------------------------a-------------------------a-----------------------------------b-------------------------b------a -------------------------------a -------------------------------a -------------------------------b -------------------------------b -------------------------------------------------------------------------------------------c-------------------------c---------------------------------------------------------------------------------------------------c -------------------------------c

F IG . 6.12 Chemin diffrentiel auxiliaire AP2 . Le premier tableau donne les 32 premires tapes du vecteur de perturbation par des collisions locales non linaires. La premire diffrence non contrle apparat ltape 24. Le second tableau fournit, pour le cas o lon se positionne sur la position de bit j = 2, les contraintes ajouter pour avoir une probabilit de russite gale 1 pour ce chemin auxiliaire. Les lettres reprsentent une valeur de bit, et la valeur complmentaire est note par cette mme lettre avec une barre au-dessus. directement sur une condition prcise grce ces premires diffrences non contrles. On pourra aussi tudier les cas de propagation de ces diffrences pour pouvoir atteindre dautres positions : ce nest pas la diffrence non contrle qui corrigera elle-mme la condition, mais sa propagation (on espre nanmoins que la diffrence non contrle ninvalidera pas une condition dj vrie sur une tape prcdente). Il faut noter que de nombreux bits neutres ou modications de message existent pour les tapes 16, 17 ou 18, ralisables par exemple en introduisant une perturbation sur les toutes dernires tapes prcoces durant lesquelles lattaquant jouit dun contrle sur les messages insrs. Cela sexplique par la trs faible diffusion tant donn le peu dtapes considres et cela rsulte essentiellement de la remarque de Chabaud et Joux [CJ98] qui stipule que les tapes 16 18 peuvent tre attaques de manire indpendante en adaptant limplantation de lattaque en consquence. Enn, nous pouvons valuer le cot en degrs de libert dun chemin diffrentiel auxiliaire comme tant le nombre de conditions quil force dans la caractristique principale diminu de linverse du logarithme en base deux de linverse de sa probabilit de succs. En effet, les 104

6.4. Recherche de candidats valides : les attaques boomerang conditions reprsentent le cot direct tandis que sa probabilit de succs dnote la nouvelle quantit de degrs de libert que nous apporte ce chemin. Placer les chemins diffrentiels auxiliaires pour SHA Une fois les chemins diffrentiels auxiliaires dnis, il faudra prsent les placer lintrieur de la caractristique principale. La mthode de placement dpendra du moment o lon souhaite ajouter ces chemins. Si lon souhaite ajouter les chemins auxiliaires aprs avoir slectionn une paire de messages, on se retrouvera dans le cas des bits neutres. On essayera donc de trouver des positions de bit o les conditions ncessaires au bon droulement du chemin auxiliaire sont vries. On voit tout le problme de cette mthode, car peu de positions seront satisfaisantes si lon ne rgle pas cette partie en amont. Si lon souhaite ajouter les chemins auxiliaires juste aprs ltablissement des parties non linaires du chemin principal, on utilisera exactement la mme technique. La probabilit de trouver des positions satisfaisantes sera augmente puisque nous aurons des degrs de libert qui proviendront de tous les bits non contraints du chemin diffrentiel principal. Enn, si lon souhaite ajouter les chemins auxiliaires avant ltablissement des parties non linaires du chemin principal, nous disposerons dencore plus de degrs de libert. Il faudra juste tenir compte du squelette du chemin diffrentiel principal, dni par le vecteur de perturbation. On vitera ainsi de placer un chemin auxiliaire sur des positions de bit qui contiennent des diffrences dans celui principal (on utilisera des positions de bit situes approximativement entre 6 et 28), car certaines conditions ne pourraient tre vries pour les deux messages de la paire teste. En gnral, si les chemins auxiliaires sont situs sur des positions proches du centre (positions de bit 15 ou 16), linteraction entre ces chemins et le chemin principal sera minimise. Par contre, pour conomiser des degrs de libert, on pourra tenter de combiner deux chemins auxiliaires ayant des conditions communes. Cest prcisment ici quintervient loutil de gnration automatique des parties non linaires [CR06]. Nous allons placer le plus de caractristiques diffrentielles auxiliaires possible dans le squelette du chemin principal, puis engendrer des parties non linaires qui tiennent compte des conditions de ces chemins auxiliaires. Bien entendu, plus nous placerons de chemins et plus lacclration de recherche sera ensuite puissante. En contrepartie, la perte de degrs de libert se traduira par un ralentissement voire un blocage de loutil automatique de gnration de parties non linaires. Un compromis sera donc ici ncessaire, situ au maximum de chemins auxiliaires quil est possible dinsrer en prservant un comportement relativement bon de loutil automatique. Plus gnralement, il faut aussi considrer les types de chemins auxiliaires inclure. Il est absolument inutile de placer uniquement des chemins trs puissants et trs coteux en termes de degrs de libert. Un certain nombre de caractristiques auxiliaires peu puissantes seront sufsantes pour amortir le cot de recherche dune paire de messages valide une tape assez prcoce. Ensuite, plus on essayera damortir le cot pour une tape tardive, plus les chemins utiliser devront tre puissants. Il est donc important dutiliser une bonne proportion des diffrents chemins auxiliaires disponibles pour ne pas gaspiller des degrs de libert. Par exemple, si nous avons une condition une tape i puis trois conditions une tape i + 5, lidal serait dutiliser un chemin auxiliaire de tant un bit neutre pour ltape i puis trois chemins tant des bits neutres pour ltape i + 5. Utiliser quatre chemins tant des bits neutres pour ltape i + 5 aboutira au mme rsultat, mais consommera a priori plus de degrs de libert. 105

Chapitre 6. Amlioration des mthodes de cryptanalyse Enn, surtout dans le cas des modications de message o linterdpendance entre les chemins auxiliaires joue un rle assez important, on peut organiser lattaque en ordonnanant rigoureusement ces chemins. Par cette mthode, on essayera de limiter au maximum les dpendances en sachant exactement dans quel ordre seront utiliss les chemins auxiliaires. Utiliser des chemins diffrentiels auxiliaires pour SHA Une fois les chemins diffrentiels auxiliaires trouvs et placs, la dernire partie concerne leur utilisation. Dans les deux cas dutilisation, lalgorithme est simple. Pour le cas de lapproche de type bits neutres , supposons que lon possde des chemins auxiliaires dont les puissances vont de ltape i pour les plus faibles ltape j pour les plus forts. On cherche pralablement une paire de messages i-valide, puis on multiplie cette instance en dclenchant les chemins auxiliaires de puissance i. Pour toutes les nouvelles instances, on ne garde que celles i + 1-valides (certaines seront mme limines avant si la probabilit de succs du bit neutre nest pas gale 1) et on continue la prochaine tape. On multiplie, de la mme manire, les instances jusqu ltape j , puis lon vrie enn parmi toutes les instances restantes si lune delles suit parfaitement le chemin diffrentiel principal jusqu la dernire tape. Nous ritrons cet algorithme tant quaucune paire de messages valide na t trouve, ou jusqu ce que tous les degrs de libert soient consomms (auquel cas il faudra chercher une nouvelle instance de chemin diffrentiel principal). Pour lapproche de type modication de message , supposons que lon possde des chemins auxiliaires qui corrigent des conditions de ltape i pour les plus faibles, et jusqu ltape j pour les plus forts. On cherche dabord une paire de messages i 1-valide, puis lon teste si les conditions ltape i sont vries. Si tel est le cas, on continue ltape suivante sans dclencher les modications de message. Autrement, on utilise les modications de messages correspondant aux conditions non vries puis lon teste si la modication na pas chang les contraintes avant ltape i et si ltape i est prsent correcte. Il faudra tester une nouvelle instance de message si toutes les conditions ne sont pas vries jusqu ltape i, sinon nous pouvons passer ltape suivante. De la mme manire, nous corrigeons notre instance jusqu ltape j , puis vrions enn si notre instance suit parfaitement le chemin diffrentiel principal jusqu la n. Nous ritrons cet algorithme tant quaucune paire de messages valide na t trouve, ou jusqu ce que tous les degrs de libert soient consomms (auquel cas il faudra chercher une nouvelle instance de chemin diffrentiel principal). Il faut noter que nous utilisons des diffrentielles auxiliaires formes de collisions locales. Si toutes les conditions relatives ces collisions locales sont intgres dans le chemin principal (et donc, nous avons une probabilit de succs gale 1), nous navons pas besoin de recalculer tout le cheminement chaque dclenchement dun chemin auxiliaire. Nous pouvons directement commencer le calcul partir de la premire diffrence non contrle. Nous obtenons ainsi un gain de performance supplmentaire par limplantation des attaques boomerang.

106

C HAPITRE 7

Application la cryptanalyse de la famille SHA


Sommaire
7.1 7.2 Cas de SHA-0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Cas de SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

Nous appliquons ici toutes les amliorations dcrites dans le chapitre prcdent aux cas de SHA-0 et SHA-1, en utilisant deux blocs de message pour trouver une collision. Les rsultats concernant SHA-0 ont t publis la confrence FSE 2008 avec Stphane Manuel [MP08], ceux concernant SHA-1 la confrence CRYPTO 2007 avec Antoine Joux [JP07a].

7.1

Cas de SHA-0

Notre amlioration par rapport aux attaques prcdentes sur SHA-0 [WYY05d, NSS06] est double. Premirement, en utilisant les attaques boomerang, nous amliorons lacclration de recherche. De plus, grce loutil automatique de gnration de parties non linaires [CR06] et grce notre recherche amliore de vecteurs de perturbation, nous aboutissons un bien meilleur chemin diffrentiel ncessitant deux blocs de message (voir gures 7.3 et 7.4), les prcdentes attaques nen utilisant quun seul. Ce chemin comporte 39 conditions pour le premier bloc et 38 conditions pour le second entre les tapes 17 et 80 (cela reprsente approximativement la complexit de lattaque sans acclration de recherche). Il faut noter quil existe un meilleur chemin pour minimiser le nombre de conditions, mais son comportement avec loutil automatique de gnration de parties non linaire est beaucoup plus dlicat lorsque lon souhaite ajouter des caractristiques diffrentielles auxiliaires. Nous avons utilis les deux types de chemins auxiliaires AP1 et AP2 selon lapproche bits neutres . Pour le premier bloc, nous avons 2 chemins auxiliaires AP1 aux positions de bit 9 et 11, puis 5 chemins AP2 aux positions de bit 10, 14, 19, 22 et 27. Pour le second bloc, nous avons 2 chemins auxiliaires AP1 aux positions de bit 9 et 11, puis 3 chemins AP2 aux positions de bit 17, 22 et 30. Cette diffrence entre les deux blocs sexplique par le fait que la valeur dinitialisation de la variable de chanage pour SHA est trs structure (lgalit entre deux bits situs la mme position sur les deux derniers mots de la variable de chanage initialise nest pas distribue de manire uniforme), et facilite donc grandement lincorporation de chemins auxiliaires AP2 qui requirent des conditions sur la variable de chanage. Cependant, en moyenne, il est ais de placer 5 diffrentielles auxiliaires. 107

Chapitre 7. Application la cryptanalyse de la famille SHA Finalement, nous aboutissons une attaque contre SHA-0 [MP08] ne requrant quune heure de calcul sur un ordinateur ordinaire (au lieu de 100 heures prcdemment). Nous avons mesur la complexit en nombre dappels la fonction de compression de SHA-0, 232,2 pour le premier bloc et 233 pour le deuxime. Cela nous donne une complexit totale de 233,6 appels la fonction de compression de SHA-0, ce qui est la meilleure attaque ce jour. Thoriquement, nous attendions 2397 = 232 appels pour le premier bloc et 2385 = 233 pour le deuxime, ce qui est trs proche de la complexit mesure. Nous donnons dans la gure 7.1 un exemple de collision pour SHA-0. Dans notre valuation de complexit, nous navons pas compt la gnration de parties non linaires, et ce, pour deux raisons. Tout dabord, elle est relativement faible (en moyenne, 30 minutes de calcul sur un ordinateur ordinaire). Ensuite, une fois le premier bloc trouv, le chemin diffrentiel pour le deuxime bloc nous permet dengendrer un grand nombre de collisions sans recalculer la partie non linaire. Ainsi, le cot relatif de la gnration des parties non linaires par collision trouve devient compltement ngligeable.
i 0-3 4-7 8-11 12-15 i 0-3 4-7 8-11 12-15 Message 1 - Premier Bloc 4643450B 41D35081 FE16DD9B 3BA36244 E6424055 16CA44A0 20F62444 10F7465A 5A711887 51479678 726A0718 703F5BFB B7D61841 A5280003 6B08D26E 2E4DF0D8 Message 1 - Second Bloc 9A74CF70 04F9957D EE26223D 9A06E4B5 B8408AF6 B8608612 8B7E0FEA E17E363C A2F1B8E5 CA079936 02F2A7CB F724E838 37FFC03A 53AA8C43 90811819 312D423E Message 2 - Premier Bloc 46434549 41D350C1 FE16DDDB 3BA36204 66424017 96CA44A0 A0F62404 10F7465A 5A7118C5 D147963A 726A0718 703F5BB9 B7D61801 A5280041 6B08D26C AE4DF0D8 Message 2 - Second Bloc 9A74CF32 04F9953D EE26227D 9A06E4F5 38408AB4 38608612 0B7E0FAA E17E363C A2F1B8A7 4A079974 02F2A7CB F724E87A 37FFC07A 53AA8C01 9081181B B12D423E

Valeur de hach nale 6F84B892 1F9F2AAE 0DBAB75C 0AFE56F5 A7974C90

F IG . 7.1 Un exemple de paire de messages aboutissant une collision pour SHA-0 et sa valeur de hach associe [MP08], pour les chemins diffrentiels des gures 7.3 et 7.4. Les octets sont nots sous forme hexadcimale.

7.2

Cas de SHA-1

Nous dcrivons ici comme exemple des techniques boomerang pour SHA-1 une attaque sur la version rduite 70 tapes. Le chemin diffrentiel du premier bloc est prsent en gure 7.5 et le deuxime en gure 7.6. Ce chemin comporte 42 conditions pour le premier bloc et 45 conditions pour le second entre les tapes 17 et 80 (cela reprsente approximativement la complexit de lattaque sans acclration de recherche). Ce nombre de conditions ne peut tre lu directement sur les gures 7.5 et 7.6, car il nous faut prendre en compte les contraintes qui peuvent tre relaxes durant les dernires tapes, ainsi que la compression de bit. Ce travail tant antrieur celui sur SHA-0, nous navons utilis quun seul type de chemin auxiliaire, AP2 , selon lapproche bits neutres . Pour le premier et le deuxime bloc, nous avons 5 chemins auxiliaires AP2 aux positions de bit 7, 9, 10, 12 et 16. 108

7.2. Cas de SHA-1


i 0-3 4-7 8-11 12-15 i 0-3 4-7 8-11 12-15 Message 1 - Premier Bloc BDD77848 4FF53120 678B09E0 6C08A508 950A1CB9 3A92154B B78CA6D8 1092006C A3C3331B 9CE9568E 1D629EB0 7051A403 F04FC758 3BBE0731 76C54123 8A00A65A Message 1 - Second Bloc A77D4037 5E854D1E 0425118C 8D5788C3 3117F80B 300B5150 4EF7758D A4F02975 B4237099 9A7E7BB8 3EFFF106 DFFE9648 D8EC1118 4A3C66FC A9FD35D5 4E6E26CC Message 2 - Premier Bloc 2DD77838 FFF53173 578B09E8 6C08A54B 450A1CCB 8A92155B 478CA6BA D092002E A3C3332B 7CE956CC 3D629ED0 9051A442 D04FC708 FBBE0770 96C54151 2A00A659 Message 2 - Second Bloc 377D4047 EE854D4D 34251184 8D578880 E117F879 800B5140 BEF775EF 64F02937 B42370A9 7A7E7BFA 1EFFF166 3FFE9609 F8EC1148 8A3C66BD 49FD35A7 EE6E26CF

Valeur de hach nale 8F2FB5E0 EA262496 653A9B0E 23D75B12 B936129B

F IG . 7.2 Un exemple de paire de messages aboutissant une collision pour SHA-1 rduit 70 tours et sa valeur de hach associe [JP07a, JP07b], pour les chemins diffrentiels des gures 7.5 et 7.6. Les octets sont nots sous forme hexadcimale. Finalement, nous prsentons une attaque contre SHA-1 rduit 70 tapes [JP07a, JP07b, JP07c], ne requrant quune dizaine dheures de calcul sur 8 ordinateurs ordinaires. Nous avons mesur la complexit en nombre dappels la fonction de compression de SHA-1, 236,5 pour le premier bloc et 239 pour le deuxime. Cela nous donne une complexit totale de 239,2 appels la fonction de compression de SHA-1. Thoriquement, nous attendions 2425 = 237 appels pour le premier bloc et 2455 = 240 pour le deuxime, ce qui est proche de la complexit mesure. Nous donnons dans la gure 7.2 un exemple de collision pour SHA-1 rduit 70 tapes. Dans notre valuation de complexit, nous navons pas compt la gnration de parties non linaires, car elle est largement ngligeable. titre de comparaison, De Cannire et al. publirent une attaque en collision contre SHA-1 rduit 64 tapes [CR06] ncessitant 235 appels la fonction de compression, puis une attaque sur une version rduite 70 tapes [CMR07] de complexit 244 appels. Rcemment, Mendel et al. [MRR07] ont annonc une complexit lgrement infrieure 261 appels la fonction de compression pour trouver une collision sur la version totale de SHA-1, et un calcul distribu pour raliser ce but a t dmarr en 2007. Ces derniers rsultats nont pas encore t publis mais lon peut supposer quils se fondent sur leur prcdents travaux [CMR07]. Lamlioration relle des attaques boomerang pour la version totale de SHA-1 est encore dterminer, mme si nous conjecturons quil peut en rsulter une diminution de la complexit dun facteur de 25 sur les algorithmes de recherche de collisions de Wang et al.. Lattaque totale tant trs difcile mettre en oeuvre et le nombre doprations requis tant hors de porte dordinateurs ordinaires, des travaux supplmentaires restent ncessaires pour conrmer cette conjecture.

109

Chapitre 7. Application la cryptanalyse de la famille SHA


i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : 80 : Ai 00001111010010111000011111000011 01000000110010010101000111011000 01100010111010110111001111111010 11101111110011011010101110001001 01100111010001010010001100000001 1110110111111111100111011n1111u0 01100111011111111101n10101101010 001101010010100n00001100n0uuuuu0 111100000nu000001010110001110000 00111n00000010011000100000u0n1u1 10110101110110110000101u100u1001 100unnnnnnnnn0100nu0100101u11001 1000011100001n000n100u0n010nn001 0010000000000010un00nu1u1un01100 11100110100101000nu01u10un00n100 011110001110001101nuu10101000101 01001101011010000010u0000n110000 010110011100000----010-0-01001u0 10111100--------------1--110u011 10100------------------0-1-u0100 --01-----------------------n0011 -----------------------------1n1----------------------------0---------------------------------------------------------------------------------------------n-------------------------------------------------------------n-------------------------------------------------------------n---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------u--------------------------------------------------------------------------------------------u----------------------------------------------------------------------------------------------------------------------------------------------------------u-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n----------------------------------------------------------------------------------------------------------------------------------------------------------u--------------------------------------------------------------------------------------------n-------------------------------------------------------------n------------------------------u------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------u---------------------------------------------------------------------------------------------------------------------------n----------------------------------------------------------------------------------------------------------------------------------------------------------n----------------------------------------------------------------------------------------------------------------------------Wi L(i) Pi (i) Ne (i)

0100111001001011000001010n0010u1 0100000011011011010100001n000000 1111011000011110100111011n011011 0011100010101001011100100u000101 u110010001000000010100000u0101n1 n0010100110010000101010010100000 n010001011110100001111000u000100 00010010111101000101011001011010 0101101001110001000110001n0001u1 n101000101000111100101100u1110n0 01111010011000100100011100011000 0111000100110111010110011u1110u0 10110111110101-----1-----u000001 101001010----------------n0000u1 01101-0----0--1----0---0-1-011u0 n0101-0----0--1----0---0-1-11000 010001110----------------00101n0 n1000-0----1--1----1---0-u-10011 01000-0----1--1----0---0-0-011u0 n00110100----------------0001011 n0110-0----1-------0-----0-000u1 u1100-1------------------u-10111 00001-1------------------0-00110 n1011-1----0-------0-----u-11001 u0000-0------------------1-11100 01101-1------------------u-10111 u1010-1----0-------1-----0-011u0 01001-1------------------0-01110 u0000-0------------------1-11011 u0111-0------------------0-00010 01101-1------------------1-10010 10110-1------------------0-01001 00111-1------------------1-00100 01011-1------------------1-11101 00010-0------------------0-010u0 10001-0------------------n-10110 11100-0------------------0-000u1 n0010-0------------------0-001u0 n1101-0------------------n-11110 n1100-1------------------0-001n0 n1111-0------------------0-10000 n0010-1------------------0-11010 n0100-0------------------1-110u1 00000-1------------------n-01010 00011-0------------------0-100n0 n0111-1------------------1-10110 n0111-1------------------0-00010 u0010-1------------------1-00000 01101-0------------------0-010n0 11111-1------------------u-10011 01000-1------------------0-100u0 u1110-1------------------0-10010 n1101-1------------------1-11110 n0001-1------------------1-001u0 11011-0------------------n-11110 10001-0------------------0-000n0 n0111-1------------------0-001n1 n0110-1------------------u-11101 u1110-1------------------1-11001 u1110-0------------------u-010u1 n1111-1------------------n-100n1 01010-0------------------0-010n1 01111-1------------------1-11111 10011-1------------------0-00010 n1000-0------------------0-10110 01000-0------------------1-00011 01000-0------------------0-101u1 01001-0------------------n-01001 10001-0------------------0-100u0 u0010-1------------------1-11000 u1010-0------------------1-011n1 u0101-0------------------u-01101 00011-1------------------0-100u0 n1010-1------------------0-11000 n1100-0------------------0-10010 u1110-1------------------1-110n1 11011-1------------------u-00100 00111-0------------------1-000n1 n0011-0------------------1-11101 u0101-0------------------1-01000

0 0 0 0 0 0 0 0 0 0 0 0 10 16 16 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -4.00 -1.00 -2.00 -2.00 0.00 -2.00 0.00 0.00 -1.00 0.00 -2.00 0.00 -2.00 0.00 -1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -1.00 0.00 -1.00 -1.00 0.00 -1.00 -1.00 -1.00 -1.00 0.00 -1.00 -1.00 -1.00 0.00 -1.00 0.00 -1.00 -1.00 -1.00 -1.00 0.00 -1.00 -2.00 -1.00 -2.00 -2.00 -1.00 -1.00 0.00 0.00 0.00 0.00 -1.00 0.00 -1.00 0.00 -1.00 0.00 -1.00 0.00 0.00 -1.00 0.00 -1.00 0.00 0.00

-10.00 -10.00 -10.00 -10.00 -10.00 -10.00 -10.00 -10.00 -10.00 -10.00 -10.00 -10.00 -10.00 -4.00 11.00 25.00 39.00 39.00 37.00 37.00 37.00 36.00 36.00 34.00 34.00 32.00 32.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 30.00 30.00 29.00 28.00 28.00 27.00 26.00 25.00 24.00 24.00 23.00 22.00 21.00 21.00 20.00 20.00 19.00 18.00 17.00 16.00 16.00 15.00 13.00 12.00 10.00 8.00 7.00 6.00 6.00 6.00 6.00 6.00 5.00 5.00 4.00 4.00 3.00 3.00 2.00 2.00 2.00 1.00 1.00 0.00 0.00

F IG . 7.3 Chemin diffrentiel pour le premier bloc de lattaque sur SHA-0 en 233,6 appels la fonction de compression [MP08]. 110

7.2. Cas de SHA-1


i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : 80 : Ai 111011010000101010001110101010u1 01000110011100010110101100101000 10010000011011111010001110100111 11100110001011011100010100001001 01011110101010111100001100111101 u0111011010011100010111unn1010n1 11010011001110011011u000110u0111 111001111000010u000unnnnnn000100 u0100101unn01010000u100011110110 n000un001000011u00100000000nn0n0 nnn0010001011110011100n1nu1u011u 10nuuuuuuuuuuuuu11100n00un0u1001 0001111100000000unnn11010001n001 00000111111111111110001n111un111 1110110110111111110100nu111uu011 00111110010001010011011uu0n000u0 010001101000111000111111nuu1u011 101010000000----0--------01111u0 00110001-----------------1010010 10011--------------------10101n0 0-------------------------011000 1-----------------------------n0--------------------------------------------------------------------------------------------------------------------------n-------------------------------------------------------------n-------------------------------------------------------------u---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n--------------------------------------------------------------------------------------------u----------------------------------------------------------------------------------------------------------------------------------------------------------u-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------u----------------------------------------------------------------------------------------------------------------------------------------------------------u--------------------------------------------------------------------------------------------u-------------------------------------------------------------u------------------------------u------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n---------------------------------------------------------------------------------------------------------------------------n----------------------------------------------------------------------------------------------------------------------------------------------------------n----------------------------------------------------------------------------------------------------------------------------Wi L(i) Pi (i) Ne (i)

1001101001110110110011110u1100n0 0000010010111001100101010u111101 1110111000100100001000100n111101 1001101001000110011001001n110101 u011100001000000000010101u1101u0 u0111000011000000000011000010010 u000101101111110100001011u101010 11100001011111111111011000111100 1010001011110001101110001u1001n1 u100101000000111100110010n1101u0 00000010111100001010011111001011 1111011101100100111010101n1110n0 001101111111-------------n111010 01010--------------------u0000u1 10010------0----1--------00110n1 n0110------0----1--------0111110 10000--------------------11010u1 u1000------1----1--------u100111 01100------1----0--------01111u0 n1010--------------------1110100 u1000------1-------------10000n1 n1101--------------------u010011 11101--------------------1100010 u1011------0-------------u110101 n1001--------------------0010110 00010--------------------n001011 u0001------1-------------01110u0 10111--------------------0011001 n1110--------------------1101001 u0000--------------------0010100 01000--------------------0001001 01011--------------------1000101 00101--------------------1010111 11000--------------------0010001 01110--------------------00000n0 10101--------------------u101001 10011--------------------10110u1 n1000--------------------01100u0 n1001--------------------n010100 n0001--------------------11000n0 u0101--------------------1001001 n0100--------------------0010111 u0000--------------------01100u1 00111--------------------n101101 10001--------------------01011n0 n0011--------------------1010000 n0011--------------------1100111 n0011--------------------0011000 11101--------------------10011u0 01010--------------------n001000 01110--------------------11100n0 n0111--------------------0111000 n0001--------------------1101011 n0100--------------------11100u0 11000--------------------n000010 00111--------------------00001n0 u1100--------------------10001u0 u0001--------------------n110000 n1000--------------------1101011 u1111--------------------n0000u1 n0010--------------------n0100n0 01100--------------------10100n1 11001--------------------0101000 01100--------------------0000100 n0011--------------------0101001 00101--------------------0101000 01011--------------------11101n0 11111--------------------u100000 11110--------------------10100n1 n0100--------------------1010011 n0010--------------------00011n0 n0100--------------------u100001 10011--------------------10101u1 n1001--------------------0010111 n0101--------------------1101110 u1111--------------------11001n1 01100--------------------u111110 00001--------------------11010n0 n0111--------------------1101000 n0001--------------------0110011

0 0 0 0 0 0 0 0 0 0 0 0 13 20 18 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -1.54 -3.00 -2.00 -1.00 -2.00 -1.00 0.00 0.00 -1.00 0.00 -2.00 0.00 -2.00 0.00 -1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -1.00 0.00 -1.00 -1.00 0.00 -1.00 -1.00 -1.00 -1.00 0.00 -1.00 -1.00 -1.00 0.00 -1.00 0.00 -1.00 -1.00 -1.00 -1.00 0.00 -1.00 -2.00 -1.00 -2.00 -2.00 -1.00 -1.00 0.00 0.00 0.00 0.00 -1.00 0.00 -1.00 0.00 -1.00 0.00 -1.00 0.00 0.00 -1.00 0.00 -1.00 0.00 0.00

-21.46 -21.46 -21.46 -21.46 -21.46 -21.46 -21.46 -21.46 -21.46 -21.46 -21.46 -21.46 -21.46 -10.00 7.00 23.00 40.00 38.00 37.00 37.00 37.00 36.00 36.00 34.00 34.00 32.00 32.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 31.00 30.00 30.00 29.00 28.00 28.00 27.00 26.00 25.00 24.00 24.00 23.00 22.00 21.00 21.00 20.00 20.00 19.00 18.00 17.00 16.00 16.00 15.00 13.00 12.00 10.00 8.00 7.00 6.00 6.00 6.00 6.00 6.00 5.00 5.00 4.00 4.00 3.00 3.00 2.00 2.00 2.00 1.00 1.00 0.00 0.00

F IG . 7.4 Chemin diffrentiel pour le second bloc de lattaque sur SHA-0 en 233,6 appels la fonction de compression [MP08]. 111

Chapitre 7. Application la cryptanalyse de la famille SHA

i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 :

Ai 00001111010010111000011111000011 01000000110010010101000111011000 01100010111010110111001111111010 11101111110011011010101110001001 01100111010001010010001100000001 0nnn11111111000111000--1111n1100 n00n001011101000100010n11u10011u 000u11101111100000nnn-0100101uu1 0110111111001nnn011-0010u1101111 10unu1uu01u0000000u01001unnn1n10 1n110n00000010100010100n1un10110 u1u01u110010100010n0111n1nn11n1n 1nnnnnnnnnnnnnn0100u00n00001110n 1111011100000001010111011111un11 000101101111111110-1u0111nu1u11u u1011101000110100000000101001101 1000111001001101---01n10nuu1111u 1100110011110--------nuuuu1uuun1 n111110001--------------10n01011 010010-11--------------011001u11 n-011----------------------u0100 --1-----------------------1--1n1 u-0--------------------------1---------------------------------------------------------------------------------------------u------------------------------u-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n-------------------------------------------------------------n-------------------------------------------------------------n--------------------------------------------------------------u --------------------------------------------------------------------------------------------n----------------------------------------------------------------------------------------------------------------------------------------------------------n-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n-------------------------------------------------------------n----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n-------------------------------------------------------------------------------------------u-------------------------------u-----------------------------------------------------------u-------------------------------n------------------------------x---

Wi

L(i)

Pi (i)

Ne (i)

n11u00000011110100101--10nuu1001 u0nu11011111111---1111110u0u10nu 01nu0100110101100000---01111n110 010111100101100--0-------n1011un nn0n0000010000-110011000-unn10u1 u0nu11011100110000001----00u0010 nnnn011010101000110011101uu001u1 un001100101101100010----0u1100n0 000100111010101000111-0110un0111 unn001000111011101-011100n1000n1 11n0110111010-11010111111nn10110 unu0000000000000-1-011000u00011u 10u000101110-0-------1111u1n1101 nn1111011011-1-1--------1u10100n unu0100111-1011--------00nuu10n1 n0n11101010-1---1----------000nn nn010101111-1-0--------1000n00n0 1un111000-0011----------1u01111u nn00100000-1---0----------nu01u1 11u0110011-1-0----------1111011n uu110000-00-1-----------001111n0 nun010011-1---1----------n1110u0 1nu000000-0-1----------10n0111u0 u100101-00-0--------------0110u1 00000100-1---1----------00010111 10110000-1-0-----------101001110 n10110-00-0--------------1101111 1110101-0---0----------0100111n0 1001011-1--------------10u001100 01100-10-0----------------111010 u11011-0---0----------010u110111 n01110-1------------------010001 1111-11-0----------------u110100 u1011-0---1------------00010000n 00110-1------------------nu01011 n11-00-0----------------010010nu 0n11-1-----------------0100111n0 un10-1-------------------u100001 nu-10-0----------------0011011u0 u11-1--------------------0110000 n00-1-------------------11011010 u-10-1----------------11001110n1 00-0--------------------0u110000 11-0---------------------11010u1 x10-0-----------------1100111101 u-1----------------------1110101 n-0---------------------00001101 10-1---------------------11110n-1----------------------1u100000 -0---------------------010111010 n-1---------------------0u1111-1 u-----------------------010001u0---------------------101110101x0----------------------10110-11 x----------------------1111111-1 ------------------------001101-1 1----------------------11111-01------------------------00101-1-----------------------000001-1------------------------010-01-0 -----------------------11110-0-------------------------0110-n-1 -----------------------0u0-01-0------------------------001-1x------------------------0000-u--x -----------------------n1-11-u-x -----------------------1n1-0x--u -----------------------101-u-xx----------------------n0-00-n-xx -----------------------u0-0xx-nx

2 3 3 9 2 4 0 4 1 1 1 2 8 10 9 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0.00 -3.00 -2.00 -8.00 -2.00 -4.00 0.00 -4.00 -1.00 0.00 -1.00 0.00 -2.00 -2.00 -3.00 -1.00 -1.00 -2.42 0.00 0.00 -2.00 -2.00 -1.00 -1.00 0.00 0.00 0.00 -1.00 0.00 -2.00 0.00 -2.00 0.00 -2.00 0.00 -1.00 -2.00 -1.00 -1.00 0.00 -1.00 -1.00 0.00 -1.00 -1.00 -1.00 0.00 -1.00 0.00 -2.00 -1.00 -2.00 -1.00 -1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -1.00 0.00 -1.00 -2.00 -2.00 -1.00 -3.00 -3.00 -3.00

10.42 12.42 12.42 13.42 14.42 14.42 14.42 14.42 14.42 14.42 15.42 15.42 17.42 23.42 31.42 37.42 50.42 49.42 47.00 47.00 47.00 45.00 43.00 42.00 41.00 41.00 41.00 41.00 40.00 40.00 38.00 38.00 36.00 36.00 34.00 34.00 33.00 31.00 30.00 29.00 29.00 28.00 27.00 27.00 26.00 25.00 24.00 24.00 23.00 23.00 21.00 20.00 18.00 17.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00 15.00 15.00 14.00 12.00 10.00 9.00 6.00 3.00

F IG . 7.5 Chemin diffrentiel pour le premier bloc de lattaque sur SHA-1 rduit 70 tours en 236,5 appels la fonction de compression [JP07a, JP07b, JP07c].

112

7.2. Cas de SHA-1

i -4 : -3 : -2 : -1 : 00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 :

Ai 00111110001100010010011110011u10 01101010111101111001010011000000 001100110011110100001101111u0101 001001111101110100001000101nu101 000110010101111001101011unn1n010 1nnn1011011010100101-u-n0n010n1u nn1u0010101001110uu1n00011101u0u 1unn00111011u1uu100111110u10111n 0010100uu0n01000001u1010nn11uu0n n00101111000011u0000101n11011u01 110011unnnn1111100n01110u101001n 1110000001001n0100n0u00n1000nn00 n010010011111111n0u110n0010n110n u110010000001011110011111u1n0u01 110001110101010nuu1-0---110111u1 u0110110011101100010--1-101n10n1 00101010110001110011--0-10n1n11n 11010010101111--------u--1unnnu0 n00111100001------------u-00110u 100001000---------------1-010n01 u0011---------------------101110 --1--0----------------------01n1 n-0--------------------------1------------------------------1--------------------------------------------------------------u------------------------------n-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------u-------------------------------------------------------------n-------------------------------------------------------------u--------------------------------------------------------------u --------------------------------------------------------------------------------------------n----------------------------------------------------------------------------------------------------------------------------------------------------------u-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n-------------------------------------------------------------n----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------u-------------------------------------------------------------------------------------------n-------------------------------n-----------------------------------------------------------n-------------------------------u------------------------------u---

Wi

L(i)

Pi (i)

Ne (i)

n10u1000101000000----0-10nnu0011 n0nn00100100010-0-0011010u0n01nn 00nn010010101000101--0101000u010 011001100100011111110110-n0111nn un1n01001011110000010010-nuu00n1 n0uu10110011011010111----11u1000 uunu001011001111111010001un001n0 uu00110000001010110001000n0111n1 00111001100111100111101110nn0010 uuu1001001100011111-----0n1000u1 10u0010110110-0-0-------0uu00011 unn000000100000--0---1-11u00111n 00n111001011111----------n0n0000 uu1110010011-1-0---------n11111n uun0010100-1110----------nuu01u0 u0u10110111-0-0-1---------0100uu nn111001010-0-0---------010n10u1 1nu001101-1110----------1n01101n nu10011010-0-0-0---------0nu01u1 11n0100011-0-0----------1100001u un011000-1101-----------110111u1 uun100010-0-0-0---------1n0110n0 1un011010-0-1-----------0u1001u1 n010000-11-0-------------11001n0 11101000-1-1-1---------001100100 00110011-0-0-----------000100000 u11111-01-0-------------00100001 1011001-1-0-0-----------101011u0 1110010-1-0-------------1n010010 11000-00-0---------------0101000 n00001-1---0------------0u101001 u01010-0-----------------1111111 1110-11-0---------------0n100000 u0110-0---1------------00010000n 01010-0-----------------0nu01101 u00-10-0---------------1101010un 0n00-0---0-------------0000101n0 uu00-0------------------1u110010 nu-10-0----------------1100000n1 n11-0-------------------01011111 n11-0------------------100101110 u-00-0-----------------0010111u0 01-1-------------------11n000010 00-1--------------------000001n1 x10-0------------------101100010 u-1---------------------01001111 n-0--------------------110011011 01-1--------------------110001n-1---------------------01u011000 -1--------------------0010011111 u-1--------------------01u1111-0 n----------------------1000010u1---------------------001101000x1---------------------000111-01 x---------------------00011111-0 -----------------------0001010-0 0---------------------001001-01-----------------------101110-0----------------------0001101-0-----------------------1101-01-1 ----------------------101011-0------------------------11011-u-0 ----------------------01n0-10-0-----------------------1100-0x-----------------------10000-n--x ----------------------1u1-10-n-x ----------------------11u0-0x--n ----------------------0100-n-xx---------------------0u1-11-u-xx ----------------------0n0-0xu-ux

5 2 2 1 1 4 0 0 0 5 9 6 10 11 11 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

-3.00 -2.00 -2.00 -1.00 -1.00 -4.00 0.00 0.00 0.00 -1.00 -8.00 -5.46 -1.14 -4.00 -4.00 -1.00 -2.00 -1.00 0.00 0.00 -2.00 -2.00 -1.00 -1.00 0.00 0.00 0.00 -1.00 0.00 -2.00 0.00 -2.00 0.00 -2.00 0.00 -1.00 -2.00 -1.00 -1.00 0.00 -1.00 -1.00 0.00 -1.00 -1.00 -1.00 0.00 -1.00 0.00 -2.00 -1.00 -2.00 -1.00 -1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 -1.00 0.00 -1.00 -2.00 -2.00 -1.00 -3.00 -3.00 -3.00

8.60 10.60 10.60 10.60 10.60 10.60 10.60 10.60 10.60 10.60 14.60 15.60 16.14 25.00 32.00 39.00 50.00 48.00 47.00 47.00 47.00 45.00 43.00 42.00 41.00 41.00 41.00 41.00 40.00 40.00 38.00 38.00 36.00 36.00 34.00 34.00 33.00 31.00 30.00 29.00 29.00 28.00 27.00 27.00 26.00 25.00 24.00 24.00 23.00 23.00 21.00 20.00 18.00 17.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00 16.00 15.00 15.00 14.00 12.00 10.00 9.00 6.00 3.00

F IG . 7.6 Chemin diffrentiel pour le second bloc de lattaque sur SHA-1 rduit 70 tours en 239 appels la fonction de compression [JP07a, JP07b, JP07c].

113

Chapitre 7. Application la cryptanalyse de la famille SHA

114

T ROISIME PARTIE

Cryptanalyses de nouvelles fonctions de hachage

115

C HAPITRE 8

Cryptanalyse de G RINDAHL
Sommaire
8.1 8.2 Description de G RINDAHL . . . . . . . . . . . . Analyse gnrale . . . . . . . . . . . . . . . . . 8.2.1 Les diffrences tronques . . . . . . . . . 8.2.2 Analyse de la fonction MixColumns . . 8.2.3 Existence des octets de contrle . . . . . 8.2.4 Stratgie gnrale . . . . . . . . . . . . . 8.2.5 Trouver un chemin diffrentiel tronqu Trouver une collision . . . . . . . . . . . . . . . 8.3.1 Le chemin diffrentiel tronqu . . . . . . 8.3.2 Lattaque par collision . . . . . . . . . . 8.3.3 Discussion de lattaque . . . . . . . . . . Amliorations et autres attaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 121 121 121 123 123 124 125 125 127 129 130

8.3

8.4

la suite des rcentes avances dans le domaine de la cryptanalyse des fonctions de hachage de la famille SHA ou MD, de nouvelles fonctions de hachage ont t proposes. Parmi ces algorithmes gure G RINDAHL, conu par Knudsen, Rechberger et Thomsen et publi rcemment FSE 2007 [KRT07]. Lune de ses particularits est quil suit les mmes principes de construction que R IJNDAEL [DR02], et prsente une efcacit lgrement meilleure que SHA-256. Nous montrons dans ce chapitre que la version 256 bits de G RINDAHL nest pas rsistante la recherche de collisions. En effet, avec une attaque ncessitant approximativement 2112 appels la fonction de hachage, il est possible de gnrer deux messages distincts qui aboutissent au mme hach. Ces travaux ont fait lobjet dune publication la confrence ASIACRYPT 2007 [Pey07] qui a obtenu le prix du meilleur article.

8.1

Description de G RINDAHL

G RINDAHL est une famille de fonctions de hachage fonde sur la stratgie ConcatnationPermutation-Troncature. La permutation utilise les principes de lalgorithme de chiffrement par blocs R IJNDAEL [DR02], connu pour tre celui choisi lors du processus dlection de lAdvanced Encryption Standard (AES) [N-aes] du NIST. Deux algorithmes sont dnis : une version produisant des hachs de taille 256 bits et une autre version produisant des hachs de taille 512 bits. De plus, il existe un mode fonction de compression nacceptant que des entres de taille xe, utiliser avec nimporte quel algorithme dextension de domaine. Nous donnons dans cette 117

Chapitre 8. Cryptanalyse de G RINDAHL section une rapide description de la fonction de hachage G RINDAHL avec 256 bits de sortie. Pour une description plus dtaille, on se reportera [KRT07]. Soit n = 256 le nombre de bits de sortie de la fonction de hachage H, utilisant un tat interne s de 48 octets (384 bits), et soit M le message hacher (pralablement complt par un sufxe de faon approprie). M est tout dabord divis en m blocs M1 , . . . , Mm de 4 octets chacun (32 bits). chaque itration k , le bloc de message Mk sera utilis pour mettre jour ltat interne sk1 . Nous appelons tat interne tendu s k la concatnation du bloc de message Mk+1 et de ltat interne sk : s k = Mk+1 ||sk . Nous avons ainsi |s k | = (4 + 48) 8 = 416 bits. Nous notons TRONCl t (x) les t bits de poids 416 {0, 1}416 une faible de x et TRONCm ( x ) les t bits de poids fort de x . Soit P : { 0 , 1 } t permutation non linaire, et soit s0 ltat interne initial dnit par s0 = {0}384 . Chaque itration k , avec 0 < k < m, est dnie par sk = TRONCm sk1 )). Pour la 384 (P ( dernire itration, la troncature est omise : s m = P ( sm1 ). Finalement, on applique huit tours blanc s k = P ( sk1 ), pour m < k m+8, et la sortie de la fonction de hachage est TRONCl sm+8 ). 256 ( La description nest pas complte, car P na pas encore t dnie. Cette permutation utilise les principes de conception de R IJNDAEL et ltat tendu s est donc considr comme une matrice doctets. Cependant, au lieu de manipuler une matrice (4, 4) doctets comme dans le cas de R IJNDAEL nous aurons une matrice de 4 lignes et 13 colonnes pour la version 256 bits de G RINDAHL. Llment de la matrice situ sur la i-ime ligne et la j -ime colonne est un octet not i,j . Ainsi, nous obtenons : 0,0 0,1 1,1 2,1 3,1 0,12

1,0 = 2,0 3,0

1,12 . 2,12 3,12

Chaque octet peut tre vu comme un lment du corps GF(28 ). En divisant ltat interne tendu s en 52 octets x0 , . . . , x51 , il est possible de dnir la conversion de s par i,j = xi+4j (cette application possde un inverse naturel). Ainsi, avant chaque itration, la premire colonne de la matrice est crase par les 4 octets du bloc de message arrivant en entre. La permutation P est alors dnie par P () = MixColumns ShiftRows SubBytes AddConstant().

MixColumns. Cette transformation est exactement celle dnie pour lalgorithme R IJNDAEL. Plus prcisment, nous appliquons une transformation chaque colonne de la matrice de ltat interne tendu. Aux quatre octets dentre (0,j , 1,j , 2,j , 3,j ), nous faisons correspondre quatre nouveaux octets (0,j , 1,j , 2,j , 3,j ) : 118

8.1. Description de G RINDAHL

0,j 1,j 2,j 3,j

= 2 0,j + 3,j + 2,j + 3 1,j = 2 1,j + 0,j + 3,j + 3 2,j = 2 2,j + 1,j + 0,j + 3 3,j = 2 3,j + 2,j + 1,j + 3 0,j

les lois daddition et de multiplication tant celles du corps GF(28 ). ShiftRows. Cette transformation dcale les octets sur les lignes de la matrice de faon cyclique, le nombre de positions de dcalage dpendant de la ligne considre. Ainsi, la i-ime ligne est dcale de i positions sur la droite, avec 0 = 1, 1 = 2, 2 = 4 et 3 = 10 : i,j = i,(i +j ) mod 13 . SubBytes. Il sagit de la seule partie non linaire de la permutation. Elle est dnie exactement comme la fonction SubBytes pour lalgorithme R IJNDAEL : tous les lments de ltat interne tendu sont mis jour par application dune bote de substitution i,j = SBOX (i,j ), donne dans le tableau 8.1.
HH

a
HH H H

0 63 ca b7 04 09 53 d0 51 cd 60 e0 e7 ba 70 e1 8c

1 7c 82 fd c7 83 d1 ef a3 0c 81 32 c8 78 3e f8 a1

2 77 c9 93 23 2c 00 aa 40 13 4f 3a 37 25 b5 98 89

3 7b 7d 26 c3 1a ed fb 8f ec dc 0a 6d 2e 66 11 0d

4 f2 fa 36 18 1b 20 43 92 5f 22 49 8d 1c 48 69 bf

5 6b 59 3f 96 6e fc 4d 9d 97 2a 06 d5 a6 03 d9 e6

6 6f 47 f7 05 5a b1 33 38 44 90 24 4e b4 f6 8e 42

7 c5 f0 cc 9a a0 5b 85 f5 17 88 5c a9 c6 0e 94 68

8 30 ad 34 07 52 6a 45 bc c4 46 c2 6c e8 61 9b 41

9 01 d4 a5 12 3b cb f9 b6 a7 ee d3 56 dd 35 1e 99

a 67 a2 e5 80 d6 be 02 da 7e b8 ac f4 74 57 87 2d

b 2b af f1 e2 b3 39 7f 21 3d 14 62 ea 1f b9 e9 0f

c fe 9c 71 eb 29 4a 50 10 64 de 91 65 4b 86 ce b0

d d7 a4 d8 27 e3 4c 3c ff 5d 5e 95 7a bd c1 55 54

e ab 72 31 b2 2f 58 9f f3 19 0b e4 ae 8b 1d 28 bb

f 76 c0 15 75 84 cf a8 d2 73 db 79 08 8a 9e df 16

0 1 2 3 4 5 6 7 8 9 a b c d e f

TAB . 8.1 Bote de substitution SBOX utilise dans R IJNDAEL et G RINDAHL. tout octet i,j = 16 b + a, on fait correspondre loctet i,j donn par le tableau. Les valeurs sont notes en hexadcimal. AddConstant. Cette fonction est simplement dnie par 3,12 3,12 01, o 01 est la valeur hexadcimale de 1. 119

Chapitre 8. Cryptanalyse de G RINDAHL Une vue schmatique de la version 256 bits de G RINDAHL est donne dans la gure 8.1. La version 512 bits de G RINDAHL est fonde sur les mmes principes que celle de 256 bits, la diffrence prs que ltat interne tendu est plus grand (8 lignes au lieu de 4). Le mode fonction de compression pour G RINDAHL-256 consiste simplement hacher 40 blocs de message de 4 octets pour chaque appel la fonction de compression. Pour la suite, sauf indication contraire, ltat interne sera considr dans sa forme matricielle.
sk1 initialisation de ltat interne

ajout du message Mk

mise jour de ltat interne avec les blocs de message Mk et la permutation P

11 00 00 11 00 11 00 11 00 11

MESSAGE

AddConstant

11 00 00 11 00 11
SubBytes
SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB

8 tours blanc (sans message)

SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB

ShiftRows

troncation de 416 256 bits


MixColumns MixColumns

MixColumns
MixColumns MixColumns MixColumns MixColumns MixColumns MixColumns MixColumns MixColumns MixColumns MixColumns MixColumns

sk

F IG . 8.1 Vue schmatique de la fonction de hachage G RINDAHL. La partie de gauche reprsente la vue gnrale de lalgorithme tandis que celle de droite reprsente la permutation interne P utilise. Chaque cellule correspond un octet de ltat interne.

120

8.2. Analyse gnrale

8.2

Analyse gnrale

Dans cette partie, nous chercherons tout dabord un moyen de trouver un bon chemin diffrentiel pour la version 256-bit de G RINDAHL. Plus exactement, nous cherchons un chemin de k itrations commenant par s0 et tel que deux messages diffrents M et M (mais de mme longueur m blocs pour viter dventuels problmes dus au rembourrage) aboutissent au mme l hach, cest--dire TRONCl sM sM 256 ( m+8 ) = TRONC 256 ( m+8 ). Notre objectif est de mettre au point des attaques recherchant des collisions ou des secondes primages. Trouver un chemin diffrentiel incluant les tours blanc semble tre trs difcile puisquaucun mot de message ny est insr, ce qui laisse trs peu de contrle lattaquant sur cette partie. Cependant, mme si le nombre de bits sur lesquels lon tente de trouver une collision est alors plus grand (ltat interne est plus grand que le hach nal), le problme semble beaucoup plus simple lorsque lon essaye de trouver une collision interne : un chemin diffrentiel excluant les tours blanc, cest--dire tel que s M M m =s m . Nous expliquons ici comment trouver un tel chemin.

8.2.1

Les diffrences tronques

Dans larticle original [KRT07], les concepteurs de G RINDAHL mentionnent une faiblesse possible de lalgorithme, dcouverte par un membre anonyme du comit de programme. La technique de cryptanalyse est assez naturelle : lattaquant ne soccupe pas des valeurs relles des diffrences prsentes dans les octets de ltat interne, mais regarde seulement sil y a une diffrence ou non. Nous appelons ce type de diffrences diffrences tronques en rfrence aux diffrences tronques trs similaires utilises par Knudsen dans [Knu94]. Cette faon de voir lalgorithme permet de simplier son analyse, du fait notamment que les fonctions AddConstant et SubBytes peuvent prsent tre omises, car elles sont transparentes du point de vue des diffrences tronques. Ensuite, lattaquant tente de trouver un chemin compos de diffrences tronques (appel chemin diffrentiel tronqu) pour lequel chaque itration le nombre doctets actifs (octets avec une diffrence tronque non nulle) est faible. Durant ce chemin diffrentiel tronqu, les diffrences tronques ne peuvent tre effaces qu deux des tapes dune itration : lors de la transformation MixColumns ou lors de la troncature la n de litration. Par une utilisation intelligente de la fonction MixColumns le nombre de diffrences tronques dans une colonne peut tre rduit et leurs positions changes. Il est cependant impossible deffacer toutes les diffrences tronques dune colonne la fois. Une diffrence tronque est aussi efface si elle se trouve dans la premire colonne de la matrice la n dune itration, et ce, du fait de la troncature. Cette deuxime possibilit est prise en compte directement lors de ltablissement du chemin diffrentiel nal, et non durant la recherche dune paire de messages valide. Cependant, pour llimination des diffrences tronques lors de lapplication de MixColumns, il est possible de jouer sur les blocs de message insrs chaque itration pour forcer le comportement recherch de la fonction (voir section 8.2.2). Dans ce cas, les octets du message agissent comme des octets actifs/passifs en ce sens quils naffectent pas certaines parties de ltat interne pour un nombre limit ditrations (voir section 8.2.3). La faisabilit de cette mthode fut laisse ltat de problme ouvert et nous montrons en section 8.2.4 quil existe un meilleur moyen pour trouver des collisions sur G RINDAHL.

8.2.2

Analyse de la fonction MixColumns

La transformation MixColumns utilise dans G RINDAHL est la mme que celle dnie dans R IJNDAEL. Comme elle est drive dun code MDS (Maximum Distance Separable), une propa121

Chapitre 8. Cryptanalyse de G RINDAHL gation maximale des diffrences est assure. Plus prcisment, la somme du nombre des octets actifs en entre et en sortie est toujours suprieure ou gale 5 (ou gale 0 dans le cas o aucun octet nest actif en entre), ce qui implique que le nombre de diffrences tronques non nulles en entre et en sortie est aussi suprieur ou gal 5. Plus formellement, soit V = (A, B, C, D) un vecteur dentre de 4 octets A, B , C et D. Soit W = (A , B , C , D ) un vecteur de sortie de 4 octets A , B , C et D . On note M C : V W o M C : (A, B, C, D) (A , B , C , D ) la fonction MixColumns et lon note Di (V1 , V2 ) la fonction retournant 1 si les valeurs du i-ime octet des vecteurs V1 et V2 sont distinctes, et 0 dans le cas contraire. Enn, N D(V1 , V2 ) retourne le nombre doctets distincts, cest--dire N D(V1 , V2 ) = #{i | Di (V1 , V2 ) = 1}. Nous obtenons ainsi que si W1 = M C (V1 ) et W2 = M C (V2 ) avec V1 = V2 , alors N D(V1 , V2 ) + N D(W1 , W2 ) 5. Une autre proprit intressante de cette fonction est que pour tout octet dentre et tout octet de sortie la fonction partielle associe est une permutation quelle que soit la valeur des trois autres octets dentre. Donc avec V1 = V2 tirs uniformment et alatoirement dans {0, 1}48 , W1 = M C (V1 ) et W2 = M C (V2 ), nous avons pour tout 1 i 4 : PD = P [Di (W1 , W2 ) = 0] = PD 2563 1 2 8 , 2564 1 = P [Di (W1 , W2 ) = 1] = 1 PD 1 28 . (8.1) (8.2)

Notre but ici est de calculer la probabilit quun masque de diffrentielles tronques x en entre donne un masque de diffrentielles tronques x en sortie, ce qui nous servira plus tard calculer la probabilit de succs dun chemin diffrentiel tronqu. Par exemple, on souhaite savoir quelle est la probabilit que deux mots dentre V1 et V2 distincts sur leurs deux premiers octets donnent en sortie deux mots distincts sur leurs trois premiers octets aprs application de MixColumns. Ces probabilits peuvent tre calcules de deux faons : formellement ou empiriquement, en testant exhaustivement toutes les valeurs dentre. Puisque la fonction MixColumns est linaire, considrer des valeurs ou des diffrences revient au mme (durant le test, au lieu de chercher des diffrences ou des non-diffrences, on cherche des valeurs nulles ou non nulles). Nous donnons dans le tableau 8.2 une approximation de ces probabilits.
PP PP DO PP DI P

0 0 - - - -

1 - - - - -24

2 - - - -16 -16

3 - - -8 -8 -8

4 - 0 0 0 0

0 1 2 3 4

TAB . 8.2 Probabilit approche que deux mots dentre de 4 octets chacun, avec DI octets distincts sur des positions prdnies, donnent aprs application de MixColumns deux mots de sortie de 4 octets chacun avec DO octets distincts sur des positions prdnies. Les valeurs sont notes en chelle logarithmique de base 2.

122

8.2. Analyse gnrale

8.2.3

Existence des octets de contrle

Modier des octets du message inuera videmment trs rapidement sur ltat interne, mais pas immdiatement. Pour chaque octet modi du message Mk , nous donnons dans le tableau 8.3 les colonnes de s (dans sa reprsentation matricielle ) affectes par cette modication aprs 1, 2 et 3 itrations. partir de 4 itrations, tout octet du message affecte entirement ltat interne. Cette proprit doctets actifs/passifs va nous permettre dattaquer diffrentes colonnes de diffrentes itrations de faon plus ou moins indpendante. En fait, nous allons contrler indpendamment le comportement de certaines transitions de MixColumns grce aux octets actifs/passifs.
0 Ak Bk Ck Dk 0 Ak Bk Ck Dk 0 Ak Bk Ck Dk 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12

TAB . 8.3 Inuences sur les colonnes de ltat interne tendu dune modication dun octet du bloc de message Mk = (Ak , Bk , Ck , Dk ) entrant litration k . Nous reprsentons une colonne affecte (ou active) par et le cas contraire par un vide. Le premier tableau montre linuence sur sk1 , le deuxime sur sk et le troisime sur sk+1 .

8.2.4

Stratgie gnrale

Nous disposons prsent de tous les outils ncessaires pour construire un chemin diffrentiel tronqu et valuer sa probabilit de succs. La question qui demeure est celle de la mthode de construction. Lintuition naturelle dun cryptanalyste (comme suggr par le membre anonyme du comit de programme de la confrence FSE 2007) est de chercher maintenir un nombre faible de diffrences tronques non nulles durant le chemin, pour ainsi augmenter sa probabilit de succs. Cependant, trouver un tel chemin semble tre trs complexe, et il est possible de sen convaincre par les proprits donnes dans larticle original [KRT07] : Proprit 1 Une collision interne pour G RINDAHL-256 requiert au moins 5 itrations. Cette proprit peut tre vrie grce une recherche exhaustive de type rencontre au milieu comme expliqu dans larticle original. Cependant, avec une lgre amlioration de 123

Chapitre 8. Cryptanalyse de G RINDAHL cet algorithme, il est possible de prouver quune collision interne pour G RINDAHL-256 requiert au moins 6 itrations. Proprit 2 Tout chemin diffrentiel commenant et nissant avec des diffrences nulles dans ltat interne contient au moins une itration dans laquelle au moins la moiti des octets de ltat interne sont actifs. La deuxime proprit revient dire quil est impossible de trouver un chemin diffrentiel de poids faible pour G RINDAHL, ncessaire pour esprer une bonne probabilit de succs. La seule autre option pour un attaquant serait un chemin diffrentiel trs court, possibilit exclue par la premire proprit. Ces deux proprits forment le principal argument de scurit de G RINDAHL quant la recherche de collisions. Une dernire observation intressante pour lattaquant est quen introduisant des diffrences dans ltat interne, aprs quelques itrations, nous arrivons trs rapidement une paire dtats contenant uniquement des diffrences tronques non nulles (tous les octets sont actifs). De plus, cette situation de paire dtats partout diffrents est quasiment stable : la probabilit quune paire de colonnes, comptant uniquement des diffrences tronques non nulles, donne aprs application de MixColumns nouveau une paire de colonnes comportant uniquement des diffrences tronques non nulles est approximativement gale PA = (1 28 )4 . Ce 12 qui nous donne une probabilit gale PA 20,27 pour quun tel vnement se produise simultanment pour les douze colonnes de ltat interne. Cela semble indiquer quil est facile dobtenir et de conserver une paire dtats partout diffrents. Lide de dpart de notre attaque est contre-intuitive pour un cryptanalyste puisque nous allons essayer de construire un chemin diffrentiel aboutissant une collision en partant dune paire dtats partout diffrents. Lavan12 nous permet de disposer dautant tage de cette approche est que la trs grande probabilit PA de paires dtats partout diffrents que lon souhaite.

8.2.5

Trouver un chemin diffrentiel tronqu

Chercher un chemin diffrentiel tronqu commenant par une paire dtats internes partout diffrents est assez facile. Une mthode possible est de remonter le schma en arrire de faon quasi exhaustive. En effet, dans G RINDAHL les diffrences tronques se propagent en arrire la mme vitesse quen avant. Plus prcisment, pour chercher une collision la n de litration k , nous essayons tous les masques possibles de diffrences tronques pour les blocs de message insrs aux itrations k , k 1, etc., et toutes les transitions de diffrentielles tronques possibles par application de la fonction MixColumns, jusqu atteindre une paire dtats partout diffrents. Cet algorithme peut tre grandement amlior laide dune technique dabandon rapide : on calcule une borne infrieure sur le cot du chemin que lon est en train de construire (en prenant en compte le contrle apport par les octets actifs/passifs, voir section 8.3) et lon arrte la branche de recherche actuelle si la complexit de lattaque atteint ou dpasse 2128 oprations (borne idale pour une fonction de hachage de 256 bits de sortie). On arrte aussi la recherche si lon va trop loin en termes de nombre ditrations : dans certains cas particuliers, la complexit globale de lattaque peut rester constante mme en augmentant indniment le nombre ditrations, et lalgorithme de recherche dun chemin diffrentiel tronqu bouclerait alors indniment. videmment, toujours ajouter des diffrences tronques dans tous les blocs de message insrs est le moyen le plus rapide darriver une paire dtats partout diffrents. Cependant, 124

8.3. Trouver une collision durant la recherche dune paire de messages vriant le chemin diffrentiel tronqu, nous allons utiliser les octets de message insrs comme octets de contrle pour attaquer indpendamment certaines parties du chemin et ainsi amliorer la probabilit de succs. Il peut donc tre prfrable de ne pas ajouter trop vite de diffrences et daugmenter ainsi le nombre ditrations du chemin diffrentiel tronqu. Cela aura pour effet daugmenter le nombre de blocs de message insrs, et donc de fournir plus doctets de contrle. On peut voir cette technique comme une dilution du chemin. Par exemple, il est possible de trouver un chemin commenant par une paire dtats partout diffrents et menant une collision en seulement 4 itrations, avec une probabilit de succs dapproximativement 2312 . Nanmoins, un autre chemin dune taille de 8 itrations et avec une probabilit de succs de 2440 pourrait tre meilleur dans notre cas. Effectivement, dans le deuxime cas, mme si la probabilit de succs a t divise par un facteur 2138 , nous avons en contrepartie insr 8 paires de mots de message au lieu de 4 dans le premier cas. Ainsi, nous obtenons environ 2 4 4 8 = 256 degrs de libert en plus (4 paires de mots de message de 4 octets chacun), ce qui peut tre un gain plus important que la perte quant la probabilit de succs. Il existe videmment une limite : partir dun certain point, continuer dajouter des itrations namliore plus la situation, mais laggrave presque toujours.

8.3

Trouver une collision

Dans cette partie nous prsentons une attaque par collision pour la version 256 bits de G RINDAHL, fonde sur lanalyse prcdente.

8.3.1

Le chemin diffrentiel tronqu

Avant de dcrire lattaque permettant de trouver des collisions, la gure 8.2 donne le chemin diffrentiel tronqu gnr par un programme implantant la technique explique en section 8.2.5. Ce chemin est lun des candidats donnant la meilleure complexit dattaque possible. Nous notons k la dernire itration de notre chemin diffrentiel tronqu, ce qui correspond la dernire ligne dans la gure 8.2. Tout dabord, on peut observer que toutes les transitions de diffrences tronques de MixColumns sont valides (vrient la proprit MDS). Ces transitions se produisent avec une certaine probabilit, et en multipliant ces probabilits entreelles, on obtient la probabilit nale du chemin diffrentiel tronqu, approximativement gale 2558 = 2440 . Cette dernire semble trs faible, mais nous insrons aussi beaucoup de blocs de message, ce qui va nous permettre dattaquer plusieurs parties de faon indpendante. Notre but est maintenant de trouver une paire de messages vriant le chemin diffrentiel tronqu attendu. Pour cela, nous ne chercherons pas satisfaire les contraintes du chemin diffrentiel itration par itration, mais nous allons plutt traiter les mots de message de 4 octets un par un. En dautres termes, nous allons xer les 4 octets dune paire de mots de message de telle faon que les nouvelles transitions diffrentielles de MixColumns imposes soient celles attendues dans le chemin diffrentiel tronqu. Si cest le cas, nous continuons la prochaine paire de mots de message, jusqu obtenir la collision. Dans le tableau 8.4 sont rcapituls les dpendances des transitions MixColumns en les mots de message insrs et utiliss comme octets de contrle pour le chemin diffrentiel tronqu de la gure 8.2. Le cot de chaque transition est indiqu (voir section 8.2.2) ainsi que les octets de contrle insrs chaque itration (voir section 8.2.3). La deuxime colonne du tableau donne la position des colonnes de ltat interne tendu pour lesquelles nous forons 125

Chapitre 8. Cryptanalyse de G RINDAHL


Mk7 itration k 7
SHIFTROW MIXCOL TRUNC

0 1 2 3 4 5 6 7 8 9 10 11 12 Mk6 itration k 6
SHIFTROW

0 1 2 3 4 5 6 7 8 9 10 11 12

0 1 2 3 4 5 6 7 8 9 10 11 12

MIXCOL

TRUNC

0 1 2 3 4 5 6 7 8 9 10 11 12 Mk5 itration k 5
SHIFTROW

0 1 2 3 4 5 6 7 8 9 10 11 12

0 1 2 3 4 5 6 7 8 9 10 11 12

MIXCOL

TRUNC

0 1 2 3 4 5 6 7 8 9 10 11 12 Mk4 itration k 4
SHIFTROW

0 1 2 3 4 5 6 7 8 9 10 11 12

0 1 2 3 4 5 6 7 8 9 10 11 12

MIXCOL

TRUNC

0 1 2 3 4 5 6 7 8 9 10 11 12 Mk3 itration k 3
SHIFTROW

0 1 2 3 4 5 6 7 8 9 10 11 12

0 1 2 3 4 5 6 7 8 9 10 11 12

MIXCOL

TRUNC

0 1 2 3 4 5 6 7 8 9 10 11 12 Mk2 itration k 2
SHIFTROW

0 1 2 3 4 5 6 7 8 9 10 11 12

0 1 2 3 4 5 6 7 8 9 10 11 12

MIXCOL

TRUNC

0 1 2 3 4 5 6 7 8 9 10 11 12 Mk1 itration k 1
SHIFTROW

0 1 2 3 4 5 6 7 8 9 10 11 12

0 1 2 3 4 5 6 7 8 9 10 11 12

MIXCOL

TRUNC

0 1 2 3 4 5 6 7 8 9 10 11 12 Mk itration k
SHIFTROW

0 1 2 3 4 5 6 7 8 9 10 11 12

0 1 2 3 4 5 6 7 8 9 10 11 12

MIXCOL

0 1 2 3 4 5 6 7 8 9 10 11 12

0 1 2 3 4 5 6 7 8 9 10 11 12

0 1 2 3 4 5 6 7 8 9 10 11 12

F IG . 8.2 Chemin diffrentiel tronqu en 8 itrations et commenant par une paire dtats partout diffrents. Ltat interne tendu est vu dans sa reprsentation matricielle, chaque cellule reprsentant un octet. Les cellules grises correspondent une diffrence tronque non nulle pour loctet concern, les blanches correspondent une diffrence tronque nulle. Chaque ligne dtats internes tendus reprsente une itration. Le schma simpli est dcrit : seules les transformations ayant une inuence sur les diffrentielles tronques sont considres, les fonctions AddConstant et SubBytes tant donc omises. La premire colonne donne ltat interne tendu juste aprs sa mise jour laide dun mot de message de 4 octets, et la deuxime colonne donne le mme tat aprs application de la transformation ShiftRows. Enn, la troisime colonne correspond ltat interne tendu juste aprs application de la fonction MixColumns. Chaque premire colonne de 4 octets de la premire colonne dtats tendus reprsente les mots de message insrs chaque itration, qui seront utiliss comme octets de contrle. Il faut noter que dans chaque ligne, la premire colonne de 4 octets de la dernire colonne dtats tendus (aprs application de MixColumns) peut prendre nimporte quelle valeur de masque de diffrences tronques puisque ces octets seront crass par le prochain mot de message insr.

126

8.3. Trouver une collision une transition diffrentielle dune valeur de diffrence non-nulle vers une valeur nulle durant la transformation MixColumns, et la premire colonne du tableau indique quelle itration cela intervient. Pour chaque transition, la troisime colonne du tableau correspond au cot en termes de nombre doctets de contrle (pour un cot c, la transition a une probabilit gale 2c8 ). Enn, chacune des sept colonnes restantes du tableau reprsente une paire de mots de message, qui sera utilise comme octets de contrle : les lettres a ou A, b ou B, c ou C et d ou D reprsentent respectivement le premier, deuxime, troisime et quatrime octet des 4 octets de message insrs. Une lettre en majuscule signie que lon a deux octets de contrle ( cause dune diffrence dentre tronque non nulle, il est possible de faire varier les deux octets de la paire) et une lettre en minuscule signie que lon na quun seul octet de contrle (il ny a aucune diffrence pour cet octet de message). Dans le corps du tableau, un tiret ou une croix indique si la transition MixColumns dsigne par la ligne correspondante est affecte par loctet de contrle dsign par la colonne correspondante. Nous avons divis ces dpendances en deux groupes pour plus de simplicit : les croix reprsentent pour chaque transition MixColumns les dpendances du dernier mot de message impliqu (les tirets indiquant les autres dpendances). Enn, la dernire ligne calcule le cot pour lattaquant en termes de nombre doctets pour chaque mot de message x (la somme de ces cots est gale la complexit nale de lattaque). Le calcul de ce cot est expliqu en section 8.3.2. En lisant le tableau, nous obtenons nalement quil nous faille tester 2148 = 2112 paires dtats internes partout diffrents pour avoir une bonne probabilit daboutir une collision. Lattaque est dcrite plus en dtail dans la section suivante.

8.3.2

Lattaque par collision

Premire tape : partir de la valeur initiale prdnie pour ltat interne, calculer quelques itrations avec beaucoup de diffrences tronques dans les blocs de message insrs pour rapidement arriver une paire dtats internes partout diffrents, note A. Cette tape peut tre omise lors du calcul total de la complexit, son cot tant largement ngligeable. Deuxime tape : partir de la paire dtats internes partout diffrents A, engendrer 2148 = 2112 paires dtats internes partout diffrents A1 , . . . , A2112 . Cette tape ncessite 2112 20,27 = 2112,27 itrations. Troisime tape : Fixer les octets de contrle itration par itration : pour les blocs de message ajouts au dbut des itrations k 8, k 7 et k 6 de notre chemin diffrentiel tronqu du tableau 8.4, nous avons plus doctets de contrle que ncessaire. En effet, nous avons 8 (respectivement 8 et 7) octets disponibles pour les messages insrs litration k 8 (respectivement k 7 et k 6), alors que seulement 2 (respectivement 7 et 7) octets de degrs de libert sont requis, comme lindique le calcul dans le tableau 8.4 de la somme des cots des lignes o une croix apparat dans la colonne considre. De faon plus gnrale, pour chaque paire de mots de message insrs (Mki , M ki ), ces octets seront utiliss pour ajuster le comportement des transitions MixColumns o les croix apparaissent la colonne Mki dans le tableau 8.4 : puisque les croix reprsentent le dernier mot de message impliqu dans cette transition, les dpendances qui le 127

Chapitre 8. Cryptanalyse de G RINDAHL


blocs de message insrs k8 k7 k6 k5 k4 k3 k2 A B C D A B C D A B c D a B c D A b C D A B C D A B c d 2 8 0

it.

col. 2 3 7 1 2 3 7 8 10 12 2 3 8 9 11 1 3 4 7 9 10 11 12 1 2 4 5 9 10 11 12 1 2 6 12 3

cot 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 3 2 2 2 2 2 1 2 3 3 3 2 3

k-7

k-6

k-5

7 8 0

k-4

7 7 0

k-3

7 6 1 9 7 2 14 8 6 9 4 5

k-2

k-1

Contraintes Octets de contle COUT

TAB . 8.4 Dpendances des blocs de message utiliss comme octets de contrle et insrs lors du chemin diffrentiel tronqu de la gure 8.2 pour une collision la n de litration k .

prcdent (reprsentes par des tirets) sont dj xes ce moment de lattaque. Pour chaque mot de message, le cot total est gal la somme des cots de toutes les transitions MixColumns impliques, diminue du nombre doctets de contrle disponibles et utilisables dans Mki . Ainsi, ce point de lattaque, nous maintenons toujours 2112 paires dtats internes vriant le chemin diffrentiel tronqu. Pour les mots de message insrs durant litration k 5, nous avons 6 octets de contrle pour 7 octets de conditions sur les transitions, nous gardons 128

8.3. Trouver une collision ainsi une paire dtats internes sur 28 et nous avanons au (k 4)-ime mot de message avec 2104 paires dtats internes valides. Nous continuons lattaque de la mme manire pour les trois derniers mots de message k 4, k 3 et k 2, qui fournissent respectivement 7, 8 et 4 octets de contrle pour 9, 14 et 9 octets de conditions respectivement. Nous avons donc une bonne probabilit de trouver une paire dtats internes (et sa paire de messages correspondante) vriant entirement le chemin diffrentiel tronqu en commenant avec 2148 = 2112 lments diffrents. Quatrime tape : Ajouter un (k + 1)-ime bloc de message avec des diffrences tronques nulles pour forcer lcrasement des diffrences non nulles dans la premire colonne de ltat interne tendu aprs la dernire itration k , le tout sans en introduire de nouvelles. Ceci permet dviter dentrer directement dans les tours blanc (pour lesquels la troncature est omise) juste aprs le chemin diffrentiel, auquel cas la premire colonne ne serait pas crase et les diffrences tronques non nulles toujours prsentes.

8.3.3

Discussion de lattaque

Dans un souci de clart, nous explicitons ici plus en dtail comment manipuler les octets de contrle en tudiant un exemple : la manire dont lattaquant peut xer la paire de messages introduite litration k 5 (septime colonne du tableau 8.4). Les prcdents mots de message ayant dj t xs durant le dbut de lattaque, nous devons juste raliser les contraintes indiques par une croix de la colonne considre dans le tableau 8.4. Certaines transitions diffrentielles de MixColumns doivent se comporter comme attendu dans le chemin diffrentiel tronqu, et cela a un cot (voir tableau 8.2). Par exemple, dans la deuxime colonne de la (k 5)-ime itration, nous attendons une transition de 4 diffrences tronques 3 diffrences tronques et cela se produira avec probabilit 28 , donc avec un cot dun octet. Cependant, pour faire se produire cette transition, nous pouvons utiliser le mot de message insr litration k 5 (et plus exactement son deuxime octet) pour ainsi varier linstance de transition, et ce jusqu arriver celle attendue (il y a plusieurs faons de procder pour cette tape, et ceci est tudi dans le prochain paragraphe). Il y a en fait une bonne probabilit de trouver 28 paires doctets valides, car nous avons deux octets de contrle pour un octet de condition. Nous continuons le mme processus pour la transition de la septime colonne de litration k 4 avec le quatrime octet du mot de message : encore une fois, nous disposons de deux octets de contrle pour un octet de conditions et donc de 28 paires doctets valides. On identie alors les lments du produit des deux ensembles de taille 28 venant dtre calculs pour lesquels la transition MixColumns de la douzime colonne de litration k 4 est vrie, ce qui nous cote un octet de conditions et nous laisse donc 28 paires valides pour le deuxime et le quatrime octet du message insr litration k 5. On xe alors le premier octet du message pour raliser la transition de la troisime colonne de litration k 4 : puisque nous consommons un octet de contrle pour un octet de conditions, nous maintenons toujours 28 paires valides. Enn, avec le dernier octet du message xer (le troisime), nous cherchons raliser une bonne transition pour la neuvime colonne de litration k 3 : nous ne disposons que dun octet de contrle pour deux octets de conditions, mais comme nous avions maintenu 28 paires valides, cela nous
pour le cas du mot de message k 2, nous avons seulement 4 octets de contrle et non 6 comme pourrait le suggrer le tableau 8.4 : puisque c et d ne sont impliqus dans aucune transition MixColumns du chemin diffrentiel tronqu, ils ne peuvent tre considrs comme octets de contrle.

129

Chapitre 8. Cryptanalyse de G RINDAHL fournit un octet de contrle en plus. Pour rsumer, la n de cette tape nous avons une bonne probabilit de trouver une paire du mot de message arrivant litration k 5 vriant les transitions cites. Cependant, nous navons pas encore pris en compte la transition de la onzime colonne de la k 4-ime itration, ce qui nous cote un octet de conditions. Finalement, pour cet exemple, xer le mot de message nous cotera 28 essais, car nous avions un total de six octets de contrle utilisables pour sept octets de conditions. En rptant ce raisonnement pour tous les mots de message insrs chaque itration du chemin diffrentiel tronqu, nous aboutissons la complexit totale de 2112 pour trouver une collision. On pourrait penser que mme sil faut essayer 2112 paires dtats partout diffrents, lopration de base qui consiste faire varier les octets de contrle peut tre coteuse. En effet, en prenant lexemple prcdent, certaines tapes demandent de tester 28 ou 216 valeurs de mots de message, chacune ncessitant un calcul de la fonction SubBytes, ou dune ou deux itrations (cela dpend de la colonne de ltat interne tendu o la transition a lieu). Mme si cela reprsente toujours une attaque valide, la complexit en est lgrement augmente. Cet argument est vrai si lattaquant utilise une mthode de recherche nave. Cependant, des prcalculs peu coteux permettent de rduire le cot de recherche en procdant uniquement de rapides consultations de tables en mmoire. Par exemple, avec un prcalcul de complexit 232 en temps et en mmoire, il est possible dengendrer toutes les informations requises pour trs rapidement effectuer la recherche des bons lments durant la troisime tape de lattaque par collision. On peut aussi se demander pourquoi la complexit des transitions de 4 diffrences tronques vers 4 diffrences tronques nest pas comptabilise. De telles transitions se produisent toujours avec une trs grande probabilit PA = (1 28 )4 20,02 et cest pourquoi elles ont un effet ngligeable sur la complexit totale de lattaque. De plus, le mode fonction de compression utilise 40 itrations pour un appel la fonction de compression, ce qui montre que notre attaque est mme plus rapide que 2112 appels la fonction de hachage. Nous avons vri quune attaque de ce type de complexit au plus 2120 appels la fonction de hachage existe pour toutes les constantes de rotation apportant la meilleure diffusion possible (au sens du critre retenu par les concepteurs pour choisir ces constantes), ce qui semble indiquer que ltat interne de G RINDAHL nest pas assez grand. La version 512 bits de G RINDAHL peut probablement tre attaque de la mme manire. Mais la recherche de chemins diffrentiels est alors beaucoup trop coteuse, car ltat interne devient trs grand. Cependant, cette recherche ncessite une capacit de calcul bien moindre que celle requise par la borne de lattaque gnrique du paradoxe des anniversaires, mme si elle est hors de porte des ordinateurs actuels.

8.4

Amliorations et autres attaques

Lattaque que nous venons de prsenter peut tre amliore si lon dispose de beaucoup de mmoire, comme le montre Khovratovich [Kho08]. Grce une utilisation ne des messages tests, il est possible de crer des structures en entre qui vont multiplier naturellement les instances. Ceci est possible, du fait que notre attaque utilise des diffrentielles tronques. Ainsi, presque toute paire issue dun groupe de n messages pourra vrier un chemin compos de diffrences tronques, alors que nous navions considr que n/2 paires parmi les n messages. Cette amlioration aboutit une attaque en collision contre la version 256 bits de G RINDAHL avec une puissance de calcul de 2100 appels la fonction et de complexit 284 en mmoire. 130

8.4. Amliorations et autres attaques La mthode dattaque en collision contre G RINDAHL prsente dans ce chapitre peut tre lgrement modie pour cryptanalyser la famille de fonctions de hachage R ADIO G ATN, fonde sur la thorie des fonctions ponges [BDP08] et rcemment propose par Bertoni et al. [BDP06]. Nous expliquons dans [Pey08] quil semble possible de trouver des collisions en un temps infrieur celui de lattaque gnrique du paradoxe des anniversaires, en utilisant des diffrences trs spciques et une mthode de recherche de chemins diffrentiels assez semblable celle explicite dans ce chapitre. Enn, G RINDAHL et R ADIO G ATN possdant une structure similaire, nous pouvons introduire le concept de fonctions ponges tendues, incluant ces deux schmas. En collaboration avec Stefan Lucks et Michael Gorski, nous avons montr dans [Pey08, GLP08] quune technique de cryptanalyse issue des algorithmes de chiffrement par blocs, les attaques glissantes [BW99], peut sappliquer aux fonctions de hachage utilisant des fonctions ponges comme composant principal. Plus prcisment, nous montrons quil est possible dattaquer certaines de ces fonctions lorsquon les utilise pour calculer un MAC, lune des principales applications des fonctions de hachage. Ces techniques sappliquent aux deux versions de G RINDAHL ainsi qu une version trs lgrement modie de R ADIO G ATN.

131

Chapitre 8. Cryptanalyse de G RINDAHL

132

C HAPITRE 9

Cryptanalyse de FORK-256
Sommaire
9.1 9.2 9.3 9.4 Description de FORK-256 . . . . . . . . . . . . . . . . . . . . . . . Observations prliminaires sur FORK-256 . . . . . . . . . . . . . Les microcollisions . . . . . . . . . . . . . . . . . . . . . . . . . . . Une premire tentative de recherche dun chemin diffrentiel . 9.4.1 Une pseudo-presque collision au septime tour . . . . . . . 9.4.2 Choisir la diffrence . . . . . . . . . . . . . . . . . . . . . . . 9.4.3 Pseudo-presque collisions pour la fonction de compression Trouver des chemins diffrentiels pour FORK-256 . . . . . . . . 9.5.1 Principe gnral . . . . . . . . . . . . . . . . . . . . . . . . . 9.5.2 Gnralisation de la recherche . . . . . . . . . . . . . . . . . Collisions pour la fonction de compression de FORK-256 . . . . 9.6.1 Trouver des collisions avec peu de mmoire . . . . . . . . . 9.6.2 Amlioration de lattaque laide de tables prcalcules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 136 138 140 141 143 143 144 144 146 146 147 150

9.5

9.6

FORK-256 est une nouvelle famille de fonctions de hachage de 256 bits de sortie conue par Hong et al. [HCS05, HCS06]. Une de ses principales caractristiques (et aussi lorigine de son nom) est que, comme la famille de fonctions de hachage RIPEMD, elle utilise plusieurs branches parallles lintrieur de sa fonction de compression. La version propose, plus rapide que SHA-256, requiert quatre branches parallles. Une premire cryptanalyse dune version rduite deux branches fut rapidement publie par Mendel et al. [MLP07], puis Matusiewicz et al. [MCP06] prsentrent dautres vulnrabilits. Suite un travail indpendant, fusionn avec les rsultats de Matusiewicz, Contini et Pieprzyk, nous avons publi un article la confrence FSE 2007 prsentant la premire attaque par collision pour la fonction entire [MPB07]. Par la suite, une amlioration de notre attaque fut propose par Contini et al. [CMP07]. Enn, lalgorithme a t mis jour par Hong et al. [HCS07] pour corriger ces dfauts, mais cette modication a immdiatement t suivie par la publication dune nouvelle vulnrabilit [Saa07a].

9.1

Description de FORK-256

FORK-256 est une famille de fonctions de hachage fonde sur une construction relativement classique : elle utilise le schma de Merkle-Damgrd avec une fonction de compression h 133

Chapitre 9. Cryptanalyse de FORK-256 qui fait correspondre 256 bits de variable de chanage Hi et 512 bits de message M , la nouvelle variable de chanage Hi+1 de 256 bits. Nous donnons ici une description rapide de cet algorithme ; pour obtenir les caractristiques compltes, on pourra se reporter [HCS05, HCS06]. chaque itration i, la fonction de compression maintient un ensemble de quatre branches parallles {BRANCHEj } avec j 1, 2, 3, 4, chacune delles utilisant un ordonnancement diffrent des 16 mots de 32 bits de message M = {m0 , . . . , m15 } dni par une permutation j . La variable de chanage, compose de 8 mots de 32 bits chacun Hi = (A0 , B0 , C0 , D0 , E0 , F0 , G0 , H0 ) est insre dans les 4 branches la fois. Aprs avoir calcul la sortie de chacune des branches parallles hj = BRANCHEj (Hi , M ), on en dduit la nouvelle variable de chanage par : Hi+1 = Hi + [(h1 + h2 ) (h3 + h4 )] , o les oprations + et sont effectues mot de 32 bits par mot de 32 bits. Ceci est expliqu dans la gure 9.1. Hi

F IG . 9.1 Squelette de la fonction de compression de FORK-256. Chaque branche BRANCHEj est compose de 8 tapes. chaque tour k = 1, . . . , 8, la fonction de branche met jour sa propre copie dun tat interne de huit mots de 32 bits, tous initialiss par la variable de chanage Hi . Rj,k reprsente la valeur du registre R {A, . . . , H } dans la j -ime branche aprs ltape k . Les mots Aj,0 , . . ., Hj,0 sont initialiss avec les valeurs correspondantes des 8 mots de la variable de chanage entrante A0 , . . ., H0 . Une tape k applique la transformation dcrite dans la gure 9.2, savoir pour 1 j 4 : 134

1 ( M )

2 ( M )

3 (M )

4 ( M )

BRANCHE 2

h1

BRANCHE 1

BRANCHE 3

BRANCHE 4

h2

h3

h4

Hi+1

9.1. Description de FORK-256

Xf

= f (Aj,k1 + mj (2k2) )

Xg = g (Aj,k1 + mj (2k2) + j (2k2) ) Yg = g (Ej,k1 + mj (2k1) ) Yf = f (Ej,k1 + mj (2k1) + j (2k1) )


< <21 < <17 Aj,k = (Hj,k1 + Yg< ) Yf<

Bj,k = Aj,k1 + mj (2k2) + j (2k2) Cj,k = (Bj,k1 + Xf ) Xg


< < <5 < < <9 Dj,k = (Cj,k1 + Xf ) Xg < < <17 < < <21 Ej,k = (Dj,k1 + Xf ) Xg

Fj,k = Ej,k1 + mj (2k1) + j (2k1) Gj,k = (Fj,k1 + Yg ) Yf


< <9 < <5 Hj,k = (Gj,k1 + Yg< ) Yf<

Aj,k1 mj (2k2)

Bj,k1

Cj,k1

Dj,k1 mj (2k1)

Ej,k1

Fj,k1

Gj,k1

Hj,k1

f
< < < 5

g
< < < 9 < < < 21

F IG . 9.2 Transformation lors du tour k pour la branche j de FORK-256. Les Q-structures sont encadres.
< <7 < <22 Les fonctions f et g sont respectivement dnies par f (x) = x + x< x< et g (x) = < < <13 < < <27 x x +x . Enn, les constantes 0 , . . . , 15 sont donnes dans le tableau 9.1, et les permutations j et j sont dnies dans le tableau 9.2.

j (2k2)

j (2k1)

< < < 17

g
< < < 9 < < < 21

f
< < < 5 < < < 17

QL

QR

Aj,k

Bj,k

Cj,k

Dj,k

Ej,k

Fj,k

Gj,k

Hj,k

135

Chapitre 9. Cryptanalyse de FORK-256


0 0x428a2f98 4 0x3956c25b 8 0xd807aa98 12 0x72be5d74 1 Ox71374491 5 Ox59f111f1 9 Ox12835b01 13 Ox80deb1fe 2 Oxb5c0fbcf 6 Ox923f82a4 10 Ox243185be 14 Ox9bdc06a7 3 Oxe9b5dba5 7 Oxab1c5ed5 11 Ox550c7dc3 15 Oxc19bf174

TAB . 9.1 Constantes 0 , . . . , 15 utilises pour FORK-256.


j 1 2 3 4 0 7 1 2 3 14 15 11 9 5 12 1 permutation de messages j () 4 5 6 7 4 8 9 10 11 12 13 14 15 0 5 2 6 5 0 1 3 1 1 0 2 3 8 10 3 2 13 0 permutation de constantes j () 3 2 4 5 5 6 7 8 9 10 11 12 13 14 15 4 5 3 2 2 3 1 0 0 1 4 7 6 9 8 11 10 13 12 15 14 7 12 1 15 14 13 12 11 10 9 8 7 6 5 6 14 15 12 13 10 11 8 9 6 7 4

6 10 14 13 2

9 12 11 4 15 8

8 15 0 13 11 3 10 9

7 14 4

TAB . 9.2 Permutations des mots de message et des constantes utilises dans chaque branche j de FORK-256.

9.2

Observations prliminaires sur FORK-256

Comme nous lavons expliqu dans la section prcdente, FORK-256 maintient quatre branches parallles oprant sur le mme tat initial et utilisant les mmes blocs de message, mais dans un ordre diffrent. Cela semble tre lune des principales forces de FORK-256 et de fait, les premires cryptanalyses publies taient limites deux des quatre branches [MLP07]. En dautres termes, la difcult pour cryptanalyser FORK-256 provient essentiellement du fait que les mmes blocs de message sont les entres des quatre branches, mais dans un ordre permut. Ainsi, alors quattaquer une ou deux branches semble relativement facile, leffet des diffrences est difcile liminer dans les branches restantes. On peut cependant identier quelques caractristiques diffrentielles intressantes de FORK-256.
k 0 1 2 3 4 Aj,k d d d d 0 Bj,k d 0 0 0 0 Cj,k d d 0 0 0 Dj,k d d d 0 0 Ej,k d d d d 0 Fj,k d 0 0 0 0 Gj,k d d 0 0 0 Hj,k d d d 0 0 mL d d d d mR d d d d Prob. Pd6 Pd4 Pd2 1

TAB . 9.3 Une caractristique diffrentielle pour FORK-256 sur 4 tours et aboutissant une collision locale. Le tableau donne le chemin diffrentiel dans une branche ainsi que sa probabilit de succs chaque tour. Enn, mL (respectivement mR ) reprsente le mot de message ajout droite (respectivement gauche) de chaque tour dans une branche. La premire, identie indpendamment par Muller [Mul06p] et Mendel et al. [MLP07], 136

9.2. Observations prliminaires sur FORK-256 surmonte le problme des quatre branches en appliquant la mme diffrence modulaire d chaque bloc de message. Si aprs que la quatrime tape est termine, ltat interne prsente la diffrence d sur chacun de ses 8 mots de 32 bits, nous obtenons une collision sur chacune des branches la n des huit tours. Ce comportement, rsum dans le tableau 9.3, rend compltement inefcace lutilisation de quatre branches avec une permutation sur lordre des messages pour contrer la cryptanalyse diffrentielle : la mme diffrence est applique chaque mot de message et le mme motif survient dans les quatre branches simultanment. La probabilit Pd reprsente la probabilit que la diffrence d se propage sans modication durant un tour, compte tenu de ce que la diffrence modulaire doit passer travers un . En effet, les diffrences modulaires ne se propagent pas sans modication lorsquun est travers (de la mme faon que les diffrences binaires ne se propagent pas sans modication travers un +). Cette probabilit peut tre calcule de manire exacte pour toute diffrence d donne. Une tude plus gnrale de ce problme a t ralise par Lipmaa, Walln et Dumas [LWD04] et nous donnons ici une version plus faible de leurs rsultats, adapte nos besoins : Proprit 3 Soit d un mot de 32 bits, la probabilit Pd = Prx,y (x + d) y = x y + d

o les lments x et y sont deux mots de 32 bits, peut tre exprime comme le produit matriciel suivant : Pd = L Md31 Md30 Md0 C, o di reprsente le i-ime bit de d et L, C , M0 , et M1 sont dnis par :
1 M0 = 4 4 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 , 1 M1 = 4
T

1 1 0 0 1 1 0 0 1

0 0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 0 1

0 1 0 1 0 1 0 1 1

0 0 0 0 0 0 0 0 1

0 0 0 0 0 4 0 0 1

0 0 0 0 1 1 1 1 1

0 0 0 0 0 0 0 0 .

L=

C=

Il faut noter que la diffrence d se propage sans modication durant un tour lorsquelle est situe dans le registre A ou le registre E de ltat interne, mais avec une probabilit Pd dans le 12 cas contraire. La probabilit nale du chemin diffrentiel du tableau 9.3 est donc gale Pd pour chaque branche. Une autre mthode pour viter le problme des diffrents ordonnancements des mots de message sur les quatre branches consiste appliquer une diffrence sur la variable de chanage ou sur la variable de chanage et le message plutt que sur le message seul. On est donc amen rechercher pour la fonction de compression h une pseudo-collision h(Hi , M ) = h(Hi , M ) ou une pseudo-presque collision h(Hi , M ) h(Hi , M ) o (Hi , M ) = (Hi , M ). Dans le cas de FORK-256, les diffrences dans chaque mot de ltat interne ne se diffusent pas de manire identique, comme on peut le remarquer sur la gure 9.2. Plus prcisment, seules les diffrences prsentes dans les registres A et E vont se propager aux autres registres la prochaine tape. Les autres diffrences (dans les registres B , C , D, F , G et H ) sont simplement dcales 137

Chapitre 9. Cryptanalyse de FORK-256


k 0 1 2 3 4 5 6 7 Aj,k 0 0 0 0 0 0 0 d7 Bj,k d0 0 0 0 0 0 0 0 Cj,k 0 d1 0 0 0 0 0 0 Dj,k 0 0 d2 0 0 0 0 0 Ej,k 0 0 0 d3 0 0 0 0 Fj,k 0 0 0 0 d4 0 0 0 Gj,k 0 0 0 0 0 d5 0 0 Hj,k 0 0 0 0 0 0 d6 0 mL 0 0 0 0 0 0 0 mR 0 0 0 0 0 0 0 Prob.

TAB . 9.4 Un chemin diffrentiel de sept tapes aboutissant une pseudo-presque collision pour FORK-256. Le tableau donne le chemin diffrentiel dans une branche ainsi que sa probabilit de succs chaque tour. Enn, mL (respectivement mR ) reprsente le mot de message ajout droite (respectivement gauche) de chaque tour dans une branche.

dun registre vers la droite (et potentiellement modies). Ainsi, en appliquant une diffrence au deuxime mot de la variable de chanage (correspondant au registre B ), cette diffrence va se propager vers la droite sans se diffuser aux autres registres durant trois tours. Pendant le quatrime tour, la diffrence d3 va trs probablement se diffuser partir du registre E dans trois des autres registres internes (F , G, et H ), et ce, dans les quatre branches. Cependant, nous montrons dans la prochaine section quil est possible dviter la diffusion dune diffrence lorsquelle est prsente dans les registres A ou E , ce qui se produirait, si la diffusion dune diffrence vers plusieurs mots de sortie pouvait tre modlise par le tirage au sort de diffrences de sortie indpendantes, avec probabilit P 2332 = 296 . On peut constater que le raisonnement pour cette caractristique diffrentielle sera identique si lon applique la diffrence d0 sur le registre F au lieu du registre B . De plus, la mme remarque que pour le premier motif est toujours valable : si lon souhaite quune diffrence se propage sans tre modie, cela ne se produira quavec probabilit Pd (sauf pour le quatrime tour o la probabilit est gale 1 puisque la diffrence est alors situe sur le registre A ou E ).

9.3

Les microcollisions

La transformation excute chaque tape dans chaque branche, dcrite en section 9.1, peut tre dcoupe en trois parties : ajout des mots de message, deux structures parallles QL et QR , et une permutation nale des registres internes. Ces parties sont identies dans la gure 9.2. QL et QR sont les principaux lments apportant confusion et diffusion dans la fonction de compression. Dans cette section, nous donnons une mthode pour trouver, quelle que soit la branche considre, des chemins diffrentiels de la forme (A, 0, 0, 0) (A, 0, 0, 0) travers une structure QL et montrons que cela sapplique de la mme manire au cas dune structure QR . Lide gnrale est de chercher des valeurs du registre A et les valeurs appropries en entre des registres B , C , D pour que la diffrence en sortie de B , C , D soit gale zro, malgr des diffrences non nulles en sortie des fonctions f et g . De telles situations se produisent si lon obtient trois microcollisions simultanes, i.e. si dans chacun des registres B , C et D, la diffrence en sortie de la fonction g annule exactement la diffrence en sortie de la fonction f . Soit y = f (x), y = f (x ) et z = g (x + ), z = g (x + ). Nous obtenons une microcollision 138

9.3. Les microcollisions pour le registre B si lquation (y + B ) z = (y + B ) z (9.1)

est vrie pour des valeurs de y , y , z , z donnes et une constante B . Notre but est de trouver lensemble des constantes B pour lesquelles lquation (9.1) est satisfaite. Nous rutilisons les trois diffrentes manires de reprsenter une diffrence entre deux nombres x et x de w bits chacun, dj introduites dans le chapitre 5. Les relations entre ces reprsentations seront utiles pour la suite. On peut observer que si une diffrence binaire signe vaut (r0 , r1 , . . . , rw ) o ri {1, 0, 1}, alors la diffrence binaire correspondante est gale (|r0 |, |r1 |, . . . , |rw |) : pour chaque bit, chaque diffrence positive ou ngative est considre comme une diffrence, et une diffrence nulle reste une diffrence nulle. La relation entre une diffrence additive et une diffrence binaire signe est plus complexe : la diffrence additive (x, x ) correspondant une diffrence binaire signe (x, x ) = (r0 , . . . , rw ), avec ri i {1, 0, 1}, vaut (x, x ) = w i=0 2 ri . Il faut noter que cette correspondance nest pas univoque. Par exemple, en considrant des mots de 4 bits, nous avons (11, 2) = (1, 0, 0, 1), (14, 5) = (1, 0, 1, 1), et (12, 3) = (1, 1, 1, 1). Toutes ces diffrences binaires signes correspondent la mme diffrence additive (x, x ) = 9. Il est aussi possible de passer dune paire de valeurs une autre en ajoutant une constante approprie, par exemple (12, 3) = (11 + 1, 2 + 1). Cette addition prserve la diffrence additive, mais peut modier la diffrence binaire signe. En rcrivant lquation (9.1) sous la forme (y + B ) (y + B ) = z z , on peut facilement voir que la diffrence binaire signe (y + B, y + B ) ne peut avoir un chiffre non nul quaux positions o la diffrence binaire (z, z ) vaut 1. Cela permet de diminuer lensemble des reprsentations binaires signes possibles qui vrient la diffrence binaire 2hw ( (z,z )) lments, o hw (x) reprsente le poids de Hamming dune diffrence binaire signe x de w bits. Mais puisqu une diffrence binaire signe correspond une unique diffrence additive, il y a aussi seulement 2hw ( (z,z )) diffrences additives (y + B, y + B ) (et donc seulement 2hw ( (z,z )) diffrences additives (y, y ) puisquune diffrence additive est prserve lorsque lon ajoute une constante B ) qui vrient la diffrence binaire (z, z ) donne. Ainsi, pour vrier si une diffrence additive particulire (y, y ) = y y peut potentiellement satisfaire la diffrence binaire dsire, il faut rsoudre le problme suivant : tant donn (y, y ) = y y , 232 < (y, y ) < 232 et un ensemble de positions I = {k0 , k1 , . . . , km } {0, . . . , 31} dtermines par les bits non nuls de (z, z ), dcider sil est possible de trouver une reprsentation binaire signe r = (r0 , . . . , r31 ) correspondant (y, y ) et telle que
m

(y, y ) =
i=0

2k i r k i

o rki {1, 1} .

(9.2)

En remplaant rki par 2 ti 1 o ti {0, 1}, cette quation peut tre mise sous la forme quivalente
m

(y, y ) +
i=0

2ki = 2k0 +1 t0 + 2k1 +1 t1 + + 2km +1 tm ,

(9.3)

Dcider sil existe des nombres ti qui satisfont lquation (9.3) est une instance du problme appel problme du sac dos [Kar72]. Il est de plus connu que lorsque linstance de ce problme est supercroissante (ce qui est le cas ici puisque tous les poids sont des puissances de 2, ce qui est notre cas), il est facile de le rsoudre. Cela nous donne ainsi une condition ncessaire pour 139

Chapitre 9. Cryptanalyse de FORK-256 une microcollision qui est facile calculer : la diffrence (y, y ) = y y doit pouvoir tre reprsente comme dans lquation (9.2), car dans le cas contraire aucune constante B telle que recherche nexiste et il ny pas de solution lquation (9.1). Il est aussi possible de montrer que cette condition est sufsante : si lon peut trouver une solution au problme de lquation (9.2), alors il existe une constante B modiant la diffrence binaire signe de telle faon que lon obtienne nalement la diffrence binaire voulue. Puisquune solution une instance supercroissante du problme du sac dos est unique, la solution de (9.2) est aussi unique. Cela signie que lon connat lunique diffrence binaire signe (u, u + (y, y )) = (r0 , . . . , r31 ) qui est compatible avec la diffrence binaire (z, z ) et donnant la diffrence additive (y, y ). Cependant, une unique diffrence binaire signe correspond plusieurs paires (u, u + (y, y )). Si une position particulire j I , nous avons rj = 1, alors nous sommes certains quen cette position la valeur du j -ime bit de u doit changer de 1 0. De la mme manire, si nous avons rj = 1, le j -ime bit de u doit changer de 0 1. Les bits restants de u (correspondants aux positions contenant des 0 dans (u, u + (y, y ))) peuvent avoir nimporte quelle valeur. Ainsi, il nous est trs facile de dterminer lensemble U des valeurs u recherches. Il est de plus vident que U contient toujours au moins un lment. prsent, puisque u = y + B pour tout u U , lensemble B de toutes les constantes B qui satisfont lquation (9.1) est simplement B = {u y : u U}. Ce raisonnement montre aussi que si lon peut obtenir une microcollision sur lun des registres de ltat interne, il y a |B| = 232hw (z z ) constantes aboutissant une microcollision si le bit de poids fort de z z est nul et 232hw (z z )+1 si ce bit est gal 1. Cette distinction est due au fait que si 31 I , nous navons pas besoin de changer u31 dune manire particulire (cest--dire soit 1 0 ou soit 0 1), tout changement est satisfaisant puisque nous nintroduisons plus de retenues. Finalement, puisquaucune proprit des fonctions f et g na t utilise durant le raisonnement prcdent, celui-ci reste valable non seulement pour la recherche de microcollisions dans QR , mais aussi pour toute structure de ce type utilisant nimporte quelle fonction la place de f ou de g .

9.4

Une premire tentative de recherche dun chemin diffrentiel

Dans la section 9.2, nous avons tudi le chemin diffrentiel du tableau 9.4 qui comporte une diffrence additive d0 sur le registre B en entre des quatre branches. Si lon souhaite que 12 d0 = d1 = d2 = d3 simultanment pour chaque branche, cela se produira avec probabilit Pd puisquune diffrence additive peut tre modie aprs application dune autre opration que laddition ou la soustraction. Ainsi, le facteur 12 provient du fait que lon force la constance de la diffrence additive durant trois tours sur les quatre branches simultanment. Nous devons donc prsent forcer lapparition de microcollisions pour le quatrime tour de chaque branche. Pour cela, lentre de ce quatrime tour, nous devons xer les registres (E, F, G, H ) certaines valeurs qui sont facilement calculables grce la mthode explicite dans la prcdente section. Nous expliquons ici comment xer les registres ces valeurs. Nous ne nous occupons pas de la propagation des diffrences pour le reste des tours puisquaucune microcollision ne devra tre force aprs le quatrime tour (d4 , d5 et d6 peuvent prendre un valeur arbitraire). 140

9.4. Une premire tentative de recherche dun chemin diffrentiel

9.4.1

Une pseudo-presque collision au septime tour

Notre principal outil ici sera un bon ordonnancement dans la dtermination des mots de message pour pouvoir imposer aux quadruplets (E, F, G, H ) de chaque branche les valeurs voulues. Pour cela, nous allons tout dabord tudier les relations entre les mots de message et les mots de la variable de chanage dune part et les quadruplets de chaque branche dautre part. Avant dentrer dans les dtails, et pour simplier ltude des ces relations dans chaque branche j , il faut remarquer que xer la valeur du quadruplet (Ej,3 , Fj,3 , Gj,3 , Hj,3 ) est quivalent forcer celle du quadruplet (Ej,3 , Fj,3 , Fj,2 , Fj,1 ). Ceci peut tre facilement vri en parcourant les tours lenvers dans les branches de FORK-256, ce qui nous donne les quations suivantes : (a) (c) Fj,2 = Gj,3 f (Fj,3 ) g (Fj,3 j (5) ), (9.4) Fj,1 = Gj,2 f (Fj,2 ) g (Fj,2 j (3) ).
< <5 < <9 (b) Gj,2 = Hj,3 f (Fj,3 )< g (Fj,3 j (5) )< ,

Ainsi, lquation (a) permet de directement xer Fj,2 , puis Fj,1 est dduit des quations (a), (b) et (c). En prenant en compte cette remarque, le tableau 9.5 donne toutes les relations tudier. Les quadruplets xer des valeurs prcalcules composent la colonne de gauche et chaque ligne indique la dpendance des mots de ces quadruplets en des mots de message ou de variable de chanage. En vue du tableau 9.5, nous proposons lalgorithme suivant pour assigner squentiellement les valeurs des mots de message et de variable de chanage de telle manire que les quadruplets dans chaque branche soient gaux aux valeurs prdnies. Certains ajustements sont ajouts pour aider la diffrence introduite initialement dans le registre B de chaque branche se propager sans tre modie durant les 3 premiers tours. Il est par exemple possible de sassurer que cela se produit en forant zro la valeur dentre de la fonction g . 1. Initialiser. Choisir A0 de faon alatoire. 2. Ajuster. Assigner m0 , m5 , m7 et m14 les valeurs suivantes : m0 = (A0 + 1 (0) ), m14 = (A0 + 2 (0) ), m7 = (A0 + 3 (0) ), m5 = (A0 + 4 (0) ). 3. Forcer les mots Gj,3 . Choisir D0 tel que F3,2 ait la valeur correcte. Ensuite, choisir m3 , m9 , et m8 un par un, tels que F1,2 , F2,2 , et F4,2 atteignent la bonne valeur. 4. Forcer les mots Hj,3 . (Si cette tape a dj t excute 232 fois, retourner ltape 1.) Choisir H0 de faon alatoire. Ajuster m11 et m1 pour viter que la diffrence introduite ne soit modie durant la deuxime tape dans les branches 2 et 4 respectivement. Ensuite, xer les mots E0 , m15 , m6 , et m12 tels que F1,1 , F2,1 , F3,1 , et F4,1 respectivement atteignent la bonne valeur. 5. Forcer les mots Fj,3 . Choisir C0 tel que F4,3 ait la valeur correcte. Ensuite, xer m10 et m2 un un, tels que F2,3 et F3,3 respectivement aient la bonne valeur. cet instant de lattaque, F1,3 est compltement dni. Si sa valeur est celle attendue, continuer ltape suivante, sinon retourner ltape 4. 6. Forcer les mots E1,3 , E2,3 , et E4,3 . (Si cette tape a dj t excute 232 fois, retourner ltape 1.) Choisir G0 de faon alatoire. Fixer B0 tel que E4,3 ait la valeur correcte 141

Chapitre 9. Cryptanalyse de FORK-256


variable de chanage blocs de message mi

A0 B0 C0 D0 E0 F0 G0 H0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 E4,3 E3,3 E2,3 E1,3 F4,3 F3,3 F2,3 F1,3 G4,3 F4,2 G3,3 F3,2 G2,3 F2,2 G1,3 F1,2 H4,3 F4,1 H3,3 F3,1 H2,3 F2,1 H1,3 F1,1

- x - x - x - x x x x x

- - - - x x x x x x x x

- -

- x

x x - -

- -

- - - - - - x - - - x x -

- x - -

x x x -

x x x x x

TAB . 9.5 Relations entre les quadruplets xer dans chaque branche et les mots de message et de variable de chanage. Les symboles - et x reprsentent chacun un degr de libert pour xer la valeur dun des mots des quadruplets, lorsque toutes les autres dpendances de la ligne correspondante ont dj t xes. Dans le cas dune dpendance x , le mot peut tre directement x par le degr de libert, cest--dire la relation entre ces deux mots est simple une fois les autres dpendances xes. Au contraire, une dpendance - impose lattaquant de parcourir les valeurs du mot apportant le degr de libert jusqu aboutir la valeur recherche pour le mot xer du quadruplet correspondant. Enn, U V signie que lon souhaite forcer une valeur sur le mot V pour indirectement xer le mot U grce aux quations (a), (b) et (c). puis xer m4 tel que E2,3 atteigne la bonne valeur. cet instant de lattaque, E1,3 est compltement dni. Si sa valeur est celle attendue, continuer ltape suivante, sinon retourner ltape 6. 7. Forcer les mots E3,3 . (Si cette tape a dj t excute 232 fois, retourner ltape 1.) Choisir m13 de faon alatoire. cet instant de lattaque, E3,3 est compltement dni. Si sa valeur est celle attendue, afcher la solution trouve, sinon retourner ltape 7. Cet algorithme excute quelques recherches exhaustives indpendantes de taille 232 . Pour cela, aucune mmoire nest requise et la complexit moyenne est de 232 excutions dun quart de FORK-256, et donc 230 excutions de la fonction de compression. Cependant, pour que lattaque russisse, la diffrence d doit se propager sans tre modie jusquau quatrime tour. Puisque la probabilit dun tel vnement pour une tape dune branche est gale Pd , et 142

9.4. Une premire tentative de recherche dun chemin diffrentiel puisque nous avons dj forc cet vnement pour la premire tape (tape 2 de lalgorithme) et pour deux des branches de la deuxime tape (tape 4 de lalgorithme), la probabilit totale 6. est gale Pd Nous pouvons aussi remarquer que le mot F0 de la variable de chanage ne modie pas les valeurs xes pour les quadruplets de chaque branche. Ainsi, pour chaque solution fournie par notre algorithme, nous pouvons assigner F0 nimporte laquelle des 232 valeurs possibles. En dautres termes, notre obtenons pour chaque solution 232 paires {(M, IV), (M, IV )} telles quaprs application des sept premiers tours de FORK-256, une diffrence apparat seulement dans les registres Aj,7 de chaque branche.
6 Pour conclure, nous obtenons 232 solutions pour une complexit quivalente 230 Pd excutions de la fonction de compression, et le cot moyen du calcul dune paire est approxi6 mativement de 1/4 Pd excutions de FORK-256.

9.4.2

Choisir la diffrence

Dans les paragraphes prcdents, nous avons montr quune diffrence additive intressante doit satisfaire deux conditions. La premire est que des microcollisions puissent se produire simultanment durant le quatrime tour des quatre branches et la deuxime est que la probabilit Pd que cette diffrence se propage sans tre modie soit aussi grande que possible. Puisque minimiser le poids de Hamming de la reprsentation de cette diffrence maximise Pd , nous cherchons tout dabord des diffrences additives de poids 1 ou 2. Finalement, le meilleur candidat trouv est la diffrence additive d = 0x00000404 qui nous donne une probabilit Pd approximativement gale 23 . Enn, comme expliqu prcdemment, nous pouvons calculer des valeurs cibles pour les quadruplets de chaque branche pour cette diffrence additive d = 0x00000404 :
E1 , 3 F1,3 G1 ,3 H1 ,3 = 0x030e9c3f, = 0xa4115fb0, = 0x22c18168, = 0x1816822c, E 2 ,3 F 2 ,3 G 2 ,3 H 2 ,3 = 0x7e24de5c, = 0x10276030, = 0x4db27e00, = 0x27e004db, E 3 ,3 F 3 ,3 G 3 ,3 H 3 ,3 = 0x00fa4d1e, = 0x35edee6e, = 0xd81cdc6c, = 0xcdc6bd82, E4,3 F4,3 G4,3 H4,3 = 0x20b7363f, = 0xefc6172f, = 0x8c2c7c00, = 0xc7bff8c3.

9.4.3

Pseudo-presque collisions pour la fonction de compression

Une version rduite sept tours. Nous nous focalisons tout dabord sur une version rduite sept tours (au lieu de huit) de FORK-256 : le huitime tour est omis, mais les additions nales du rebouclage et la permutation nale du huitime tour sont conserves. Les diffrences Aj,7 en sortie du septime tour (seules restantes aprs excution de notre algorithme) vont se dplacer en Bj,8 puisque la permutation nale du huitime tour na pas t retire. Aprs addition du rebouclage, qui comporte une diffrence seulement en Bj,0 , il semble que lon puisse trouver une pseudo-collision pour cette fonction de compression. Nanmoins, toutes ces diffrences auront leur bit non nul de poids le plus faible la mme position, dnie par la position du bit non nul de poids le plus faible dans d = 0x00000404. Dans notre cas, la position est le troisime bit de poids faible. On additionnera donc de telles diffrences pour les 4 branches et aussi pour le rebouclage, ce qui donnera un nombre impair de termes et imposera la valeur 1 au troisime bit de poids 143

Chapitre 9. Cryptanalyse de FORK-256 faible de la diffrence du deuxime mot de sortie de la fonction de compression. Obtenir une pseudo-collision par cette mthode est donc impossible, le meilleur rsultat possible tant une pseudo-presque collision avec seulement un bit de diffrence en sortie. Nous avons alors estim la probabilit dune telle attaque comme suit : aprs avoir choisi des valeurs alatoires (vriant nanmoins le chemin diffrentiel du tableau 9.4) pour les registres internes de chaque branche aprs application du quatrime tour, nous excutons le reste de la fonction de compression de cette version rduite de FORK-256 et vrions le type de pseudo-presque collisions obtenues. La probabilit dune pseudo-presque collision avec seulement un bit de diffrence en sortie a pu tre estime 215 (sur 232 exprimentations, 127665 sorties taient des pseudo-presque collisions avec seulement un bit de diffrence). Enn, puisque notre algorithme nous fournit 232 6 = 249 excutions de la fonction de compression, la complexit candidats valides avec 230 /Pd 17 pour trouver 2 paires distinctes de pseudo-presque collisions avec seulement un bit de diffrence en sortie est approximativement gale 249 appels la fonction de compression de FORK-256 (do une complexit moyenne de 249+1532 = 232 par solution). La fonction de compression complte de FORK-256. Lalgorithme prcdemment dcrit nous fournit 232 paires de variables de chanage et de mots de message pour lesquelles la sortie de la fonction de compression de FORK-256 est identique sur quatre des huit mots pour une complexit de 249 excutions. Il reste en effet annuler un bit de diffrence (sur une position xe) dans le second registre et les diffrences sur trois mots de 32 bits (dans les troisime, quatrime et cinquime registres). La probabilit dune pseudo-presque collision avec 1 bit de diffrence sur le second mot a t value 215 , et celle dannuler les diffrences sur lun des trois registres suivants a t value 231 pour la diffrence initiale d = 0x0000404. Ainsi, la complexit nale pour trouver une pseudopresque collision avec 1 bit de diffrence pour la fonction de compression de FORK-256 est gale 249+93+1532 = 2125 . De la mme manire, la probabilit de trouver une pseudo-presque collision avec 2 bits de diffrence sur le deuxime registre est gale 210 , ce qui nous donne une complexit nale de 249+93+1032 = 2120 pour calculer une telle collision sur la sortie complte de la fonction de compression de FORK-256. Rsultats exprimentaux. Dans la gure 9.3, nous donnons comme exemple une pseudo-presque collision avec 22 bits de diffrence, obtenue par lalgorithme dcrit en section 9.4.1 avec les valeurs cibles des quadruplets et la diffrence d de la section 9.4.2. Cette solution donne aussi une pseudo-presque collision avec 2 bits de diffrence pour la version de FORK-256 rduite sept tours.

9.5
9.5.1

Trouver des chemins diffrentiels pour FORK-256


Principe gnral

Dans cette section, nous retournons au problme initial de trouver des chemins diffrentiels pour les quatre branches de FORK-256, et donner une solution la plus gnrale possible. En supposant que lon puisse viter la propagation des diffrences dans les structures QL et QR (cest--dire que lon sait comment trouver des microcollisions) et que les diffrences additives restent inchanges dans les registres B, C, D et F, G, H (si Pd = 1), alors les seuls emplacements o des modications de diffrences peuvent intervenir sont les registres A et E , aprs addition 144

9.5. Trouver des chemins diffrentiels pour FORK-256

Variable de chanage entrante Hi A0 = 0x8406e290 E0 = 0xf5c5d865 A0 = 0x8406e290 E0 = 0xf5c5d865 Message m0 = 0x396eedd8 m4 = 0x9935952b m8 = 0xc6fef1d8 m1 = 0x0e8c2a93 m5 = 0xe01d16c9 m9 = 0x4c472ca6 m2 = 0xb961f8a4 m6 = 0xddc60aa4 m3 = 0xf0a06fc6 m7 = 0x0ac1d8df B0 = 0x5988c6af F0 = 0x458b2dd1 B0 = 0x5988cab3 F0 = 0x458b2dd1 C0 = 0x76a1d478 G0 = 0x528590bf C0 = 0x76a1d478 G0 = 0x528590bf D0 = 0x0eb60cea H0 = 0xc3bf98a1 D0 = 0x0eb60cea H0 = 0xc3bf98a1

m10 = 0x58d9322d m11 = 0x2d087b65

m12 = 0x7c8e1a26 m13 = 0x71ba5da1 m14 = 0xba5d2bfc m15 = 0x1988f929 Variable de chanage sortante Hi+1 A0 = 0x9897c70a E0 = 0x9aa0637d A0 = 0x9897c70a E0 = 0xf4792bf4 B0 = 0x4e18862d F0 = 0xae772570 B0 = 0x4e1880f9 F0 = 0xae772570 C0 = 0xb4725ac1 G0 = 0x74dd4af1 C0 = 0x1e677302 G0 = 0x74dd4af1 D0 = 0xcfc9f92c H0 = 0xcd444dd7 D0 = 0x4c650966 H0 = 0xcd444dd7

F IG . 9.3 Une pseudo-presque collision, sans diffrence sur le message, avec 22 bits de diffrence pour la fonction de compression de FORK-256. Les valeurs sont donnes en notation hexadcimale et les octets comportant des diffrences sont souligns. modulaire dune diffrence dans un des mots de message. Ainsi, les valeurs diffrentielles des registres lors des tours peuvent tre vues comme des fonctions linaires (au sens de laddition modulaire) des registres de la variable de chanage (A0 , . . . , H0 ) et des mots de message m0 , . . . , m15 . Si lon considre le cas le plus gnral et que lon suppose, de faon trs optimiste, que deux diffrences modulaires identiques peuvent sannuler, nous travaillons alors dans F2 et les diffrences dans tous les registres sont des combinaisons F2 -linaires des diffrences A0 , . . . , H0 et m0 , . . . , m15 (qui sont maintenant vues comme des lments de F2 ). Les diffrences de sortie (A, . . . , H ) de la fonction de compression (aprs rebouclage) sont aussi des combinaisons linaires de celles de S = (A0 . . . , H0 , m0 , . . . , m15 ), ce qui peut tre reprsent par une application F2 -linaire (A, . . . , H ) = Lout (S ). Cela signie que lon peut trouver lensemble Sc de tous les vecteurs S de diffrences en entre naboutissant aucune diffrence en sortie de la fonction de compression, simplement en cherchant le noyau de cette application Sc = ker(Lout ). Pour minimiser la complexit de lattaque nale, nous pouvons rajouter la condition que lon souhaite trouver des chemins diffrentiels de poids le plus petit possible. Puisquune dif145

Chapitre 9. Cryptanalyse de FORK-256 frence dans un registre chaque tour est une fonction linaire des diffrences A0 . . . , H0 , m0 , . . . , m15 et que lon a seulement 224 possibilits, une approche logique consiste numrer toutes ces possibilits et garder les solutions minimisant le nombre de registres contenant une diffrence non nulle. Les diffrences dans les registres autres que A et E ne contribuent que peu la complexit totale de lattaque, car elles ne demandent pas de forcer des microcollisions, ce qui est le plus coteux. Ainsi, en ne prenant en compte que les diffrences dans les registres A et E , nous ne considrons que celles qui risquent de poser problme.

9.5.2

Gnralisation de la recherche

Il est possible de gnraliser lapproche dcrite prcdemment. Suivant que lon force ou non une microcollision sur lun des registres en sortie de QL ou QR , nous avons huit faons diffrentes de modliser la propagation dune diffrence travers de telles structures. En utilisant le modle linaire supposant que les diffrences sannulent, nous pouvons exprimer les diffrences de sortie de chaque structure QL :
Ai+1 = Ai , Bi+1 = Bi + qB Ai , Ci+1 = Ci + qC Ai , Di+1 = Di + qD Ai .

o qB , qC , qD F2 sont des coefcients xs caractrisant les structures QL . Le raisonnement est identique pour les structures QR . Ainsi, nous avons 864 modles linaires possibles pour FORK-256 si lon autorise des microcollisions plus varies. Cette libert va nous permettre de diminuer le nombre de structures Q actives, mais va cependant ajouter des conditions supplmentaires pour annuler les diffrences arrivant en entre des diffrentes parties de la structure. Les rsultats naux de notre recherche de chemins diffrentiels pour la fonction de compression de FORK-256 sont rsums dans le tableau 9.6. On peut observer quen introduisant un modle plus complexe de propagation des diffrences travers les structures Q, on diminue grandement le nombre de microcollisions ncessaires par rapport au cas o une microcollision devrait ncessairement apparatre simultanment sur les trois derniers registres en sortie de la structure Q. Le tableau montre aussi quil est possible dobtenir une collision en najoutant quune seule diffrence dans m12 et en nayant que six structures Q dans lesquelles des microcollisions devront tre forces. Nous tudions dans la prochaine section comment utiliser ce chemin diffrentiel pour calculer des presque collisions, mais aussi des collisions pour la fonction de compression de FORK-256.

9.6

Collisions pour la fonction de compression de FORK-256

Dans cette section, nous montrons comment utiliser le chemin diffrentiel ne comportant que des diffrences sur m12 et trouv par la mthode de la section 9.5 pour obtenir des diffrences trs faibles en sortie de la fonction de compression de FORK-256. Nous donnons alors deux stratgies diffrentes pour trouver des collisions pour cette fonction de compression, plus rapidement que la borne thorique obtenue par le paradoxe des anniversaires dans le cas dune fonction de hachage idale. Notre attaque exploite le fait que si lon introduit des diffrences additives seulement dans m12 , si lon arrive trouver des microcollisions dans le premier et le cinquime tour de la quatrime branche et dans le quatrime tour de la troisime branche, et enn si lon parvient 146

9.6. Collisions pour la fonction de compression de FORK-256


Scnario Pseudo-collisions Collisions Pseudo-collisions Branches 1,2,3,4 1,2,3,4 1,2,3 1,2,4 1,3,4 2,3,4 1,2,3 1,2,4 1,3,4 2,3,4 m 5 6 2 3 3 3 3 4 5 5 Diffrences dans H0 , m2 , m11 m12 B0 , m12 H0 , m11 H0 , m 2 D0 , m9 m0 , m3 , m9 m1 , m2 m9 m3 , m9 Structures Q actives 12 :000, 25 :000, 35 :001, 41 :001, 51 :010 13 :000, 31 :001, 40 :000, 47 :100, 50 :000, 57 :000 8 :100, 24 :0 3 :000, 51 :010, 60 :000 35 :001, 44 :000, 51 :000 36 :010, 43 :000, 52 :000 1 :001, 20 :010, 39 :100 2 :001, 9 :000, 25 :100, 51 :000 10 :000, 39 :001, 42 :001 43 :010, 59 :000 20 :010, 27 :000, 39 :000 57 :000, 59 :010

Collisions

TAB . 9.6 Nombre minimal m de structures Q actives selon diffrents scnarios de chemins diffrentiels pour la fonction de compression de FORK-256. Les structures Q sont numrotes de 1 64 o 1 correspond QL dans le premier tour de la premire branche et 64 QR dans le dernier tour de la quatrime branche. La notation N :bcd signie que dans la structure Q numro N, la diffrence dentre de A (E dans le cas de QR ) se propagera aux registres B , C et D respectivement (F , G et H dans le cas de QR ) si b = 1, c = 1, d = 1 respectivement. Par exemple, le chemin diffrentiel de la gure 9.4 peut tre encod comme 13 :110, 31 :111, 40 :000, 47 :111, 50 :000, 57 :000. viter la propagation de la diffrence de A1,6 E1,7 dans la premire branche, alors la diffrence en sortie sera conne aux registres B , C , D, et E , cest--dire seulement 128 bits des 256 bits de sortie de la fonction de hachage. Le chemin diffrentiel considr est explicit dans la gure 9.4. Comme indiqu prcdemment, le nombre de bits affects en sortie peut tre rduit par un choix judicieux de la diffrence additive utilise dans m12 : les diffrences maximisant la position p du bit non nul de poids le plus faible permettront de conner les diffrences sur les positions suprieures ou gales p dans le registre B de la sortie de la fonction de compression. Dans la prochaine section, nous explicitons une premire mthode permettant de trouver des presque collisions et des collisions, ne ncessitant quun faible cot en mmoire. Ensuite, dans la section suivante, nous montrons comment tirer parti dune certaine quantit de mmoire pour prcalculer des tables qui seront utiles durant le droulement de lattaque, pour diminuer la complexit totale en temps.

9.6.1

Trouver des collisions avec peu de mmoire

Lattaque se dcompose en deux phases. Durant la premire tape, nous devons simultanment forcer des microcollisions au premier tour et au cinquime tour de la quatrime branche et au quatrime tour de la troisime branche pour une diffrence additive injecte dans le message m12 . Durant la seconde tape, nous utilisons les mots de message m4 et m9 , laisss libres 147

Chapitre 9. Cryptanalyse de FORK-256

BRANCHE 1
0 1 14

BRANCHE 2
15 7

BRANCHE 3
6 5

BRANCHE 4
12

11

10

14

10

13

15

12

13

11

13

11

10

10

11

15

12

13

14

14

15

12

F IG . 9.4 Chemin diffrentiel utilis pour calculer des collisions pour la fonction de compression de FORK-256. Les lignes en gras montrent la propagation des diffrences. Les structures Q ncessitant des microcollisions sont grises. Les nombres indiquent lordonnancement des mots de message. ce point de lattaque, pour viter la propagation de la diffrence prsente dans A1,6 E1,7 . Cette microcollision, uniquement sur un seul registre, intervient durant le septime tour de la premire branche. Trouver des microcollisions dans la troisime et la quatrime branche. On suppose ici quune diffrence additive d adquate a dj t choisie. Nous procdons alors comme suit : 1. Quatrime branche, premier tour. Choisir x1 tel que la paire (x1 , x1 + d) puisse aboutir des microcollisions dans QR pour le premier tour dans la quatrime branche. Fixer alors m12 = x1 E0 et assigner les valeurs correctes F0 , G0 , et H0 pour raliser les microcollisions sur les trois registres. 2. Quatrime branche, cinquime tour. Donner des valeurs alatoires m5 , m1 , m8 , m15 , m0 , m13 , et m11 . Calculer ensuite la premire moiti de la quatrime branche, jusquau cin148

9.6. Collisions pour la fonction de compression de FORK-256 quime tour, et trouver une paire de valeurs (x2 , x2 + d ) (o d est la diffrence additive prsente dans le registre A4,4 ) pouvant aboutir des microcollisions dans QL . Calculer alors les valeurs 1 , 2 et 3 imposer en entre des trois registres B4,4 , C4,4 et D4,4 pour obtenir les microcollisions. Si aucune solution nexiste, recommencer cette tape, sinon Fixer m3 = x2 A4,4 . Fixer m13 = 1 A4,3 8 tel que B4,4 soit gal la valeur 1 . Fixer m15 = [2 g (B4,4 )] f (B4,4 8 ) A4,2 10 tel que C4,4 = 2 . Fixer m1 tel que D4,4 = 3 . Il faut prsent ajuster m0 et m11 pour compenser les modications de m1 et de m15 . 3. Troisime branche. Trouver une paire de valeurs (x3 , x3 + d) permettant des microcollisions dans QR au niveau de la quatrime tape de la troisime branche et calculer les constantes correspondantes 1 , 2 , et 3 que doivent atteindre les registres F3,3 , G3,3 et H3,3 . De la mme manire que prcdemment, xer m2 tel que F3,3 = 1 , m14 tel que G3,3 = 2 , et m6 tel que H3,3 = 3 . Il faut prsent ajuster m10 pour compenser les modications de m6 . Il faut aussi compenser la modication de m14 , mais m13 ne peut tre ajust tant donn que ce mot de message a dj t x dans la quatrime branche. la place, nous slectionnons B0 de telle manire que E3,3 soit gal la bonne valeur x3 . 4. Quatrime branche. la modication de B0 est la seule des modications effectues durant ltape de la troisime branche pouvant inuer sur les microcollisions dj forces dans la quatrime branche. En effet, la valeur du registre A4,4 sera change. Cependant, cela peut tre corrig en ajustant encore une fois m11 . lissue de cette procdure, nous obtenons une paire de mots de message et de mots de variable de chanage vriant les deux dernires branches du chemin diffrentiel prsent dans la gure 9.4. Pour le reste de lattaque, nous allons utiliser les mots de message m4 et m9 qui nont pas encore t xs. Une microcollision dans la premire branche. Nous devons prsent traiter la premire et de la deuxime branche. La deuxime branche ne demande aucun travail de la part de lattaquant : m12 apparat dans le dernier tour de la deuxime branche et cela ninduit des diffrences que dans les registres B , C , D, et E de la sortie de la fonction de compression. La premire branche est plus problmatique, car nous devons y forcer une microcollision dans D1,6 E1,7 durant le septime tour. Il ne semble pas y avoir de meilleur moyen pour y parvenir que de tester alatoirement des instances des mots de message m4 et m9 jusqu obtenir cette microcollision. La probabilit de succs de cette approche dpend largement de la diffrence additive utilise, et le tableau 9.7 nous montre les deux meilleurs candidats obtenus par exprimentation. Analysons prsent la complexit de la recherche de cette microcollision en termes de nombre dappels la fonction de compression de FORK-256. tant donn une diffrence additive, soit le nombre de valeurs de A1,6 valides pour obtenir une microcollision. Les valeurs valides de A1,6 sont les valeurs x pour lesquelles il existe une constante qui aboutit une microcollision pour la paire (x, x + d). Par exemple, pour la diffrence additive d =22f80000, nous avons = 221.7 valeurs de A1,6 valides. Notre algorithme concernant la premire branche est alors comme suit : 1. Initialiser. Fixer m4 0. 149

Chapitre 9. Cryptanalyse de FORK-256


diffrence d 0xdd080000 0x22f80000 221.7 221.7 probabilit observe 224.6 224.6

TAB . 9.7 Meilleures diffrences additives d trouves par exprimentation et leur probabilit respective de fournir une microcollision dans D1,6 E1,7 durant le septime tour de la premire branche. Le nombre de valeurs dentre de A1,6 pouvant aboutir une microcollision est donn dans la colonne . 2. Prcalculer une table. Calculer tous les registres internes jusquau septime tour. Alors, pour chaque valeur valide x, poser A1,6 = x et revenir en arrire pour obtenir la valeur H1,5 correspondante, puis mmoriser le rsultat dans une table T . 3. Chercher un m9 valide. Pour toutes les valeurs possibles de m9 , calculer la valeur de H1,5 correspondante et chercher si ce rsultat apparat dans la table T . Si cest le cas, aller ltape 4. Une fois toutes les valeurs de m9 testes, incrmenter m4 et revenir ltape 2. 4. Vrier. Si la valeur actuelle de m9 donne une microcollision dans D1,6 E1,7 alors, afcher la solution trouve, sinon retourner ltape 3. Ltape 2 reprsente 1/64 dun calcul complet de la fonction de compression de FORK-256 pour toutes les valeurs valides. Ainsi, sa complexit est de /64 = 215.7 calculs de FORK256. Ltape 3 reprsente 1/64 dun calcul complet de la fonction de compression de FORK256 pour les 232 valeurs de m9 testes. Donc, sa complexit est de 226 calculs de FORK-256. Enn, puisque ltape 4 russit avec une probabilit 224.6 (voir tableau 9.7), nous obtenons 27.4 solutions pour une complexit de 226 . Le cot moyen de notre algorithme pour trouver une solution est donc dapproximativement 218.6 valuations de FORK-256. Complexit totale de lattaque. On peut vrier exprimentalement que pour la diffrence additive d = 0xdd080000 en entre, la distribution des diffrences en sortie de la fonction de compression de FORK-256 sur les 108 bits affects (il y a en tout 109 bits pouvant contenir une diffrence, mais la diffrence sur le bit 19 du registre B sera toujours annule) est trs proche de la distribution uniforme. Ainsi, nous pouvons esprer trouver une collision en engendrant 2108 paires vriant le chemin diffrentiel de la gure 9.4. Enn, puisque chaque solution nous cote en moyenne 218.6 calculs de la fonction de compression de FORK-256, nous obtenons une attaque par collision de complexit 2126.6 , ce qui est trs proche de la borne thorique dans le cas dune fonction de compression idale. Lattaque ncessite une mmoire dapproximativement 2 222 mots de 32 bits pour le stockage des tables prcalcules.

9.6.2

Amlioration de lattaque laide de tables prcalcules

Dans cette section, nous montrons comment amliorer lattaque prcdemment dcrite par lutilisation de tables prcalcules. Considrons le mcanisme de diffusion lorsquaucune diffrence nest implique. chaque tour, les huit registres sont traits quatre par quatre : gauche nous avons (A, B, C, D) puis (E, F, G, H ) droite. Prenons lexemple de (E, F, G, H ), lautre cas tant identique. Le bloc de message m arrivant sur le registre E permet de xer le registre 150

9.6. Collisions pour la fonction de compression de FORK-256 de sortie F nimporte quelle valeur dsire, mais quelle est son action sur les trois autres registres de sortie, par exemple le registre H ? En moyenne, pour tout registre dentre G, il existe une valeur du bloc de message telle que le registre H soit gal une valeur prdnie. Ainsi, pour toute valeur prdnie du registre de sortie H , on peut construire une table TH contenant les valeurs (G, y ) telles que G (y ) = H . La construction de la table, excute avant la recherche de collisions, demande moins de 232 appels la fonction de compression de FORK-256 et 232 blocs de mmoire. En construisant 232 tables de ce type (une pour chaque valeur possible de H ), pour toute paire (G, H ) il devient possible avec forte probabilit de trouver un bloc de message tel que le registre dentre G aboutisse effectivement au registre de sortie H travers lexcution du tour. Le cot total de construction des tables est de 264 en temps et en mmoire, mais laccs une table est en temps constant. Pour notre attaque, nous utiliserons plusieurs tables. La premire, T10 , sera utilise pour contrler la transition C3,1 D3,2 grce m10 , cest--dire m10 = T10 (C3,1 , D3,2 ). Une autre famille de tables, T9,a , sera utilise pour dterminer quelle valeur de m9 produira la transition recherche E1,4 A1,6 tant donn m11 x, cest--dire m9 = T9,a (E1,4 , m11 ) doit satisfaire A1,6 = a, o a est une valeur xe (il y a 253 valeurs de a pour lesquelles la probabilit dune microcollision est de 28 ). Comme dans lattaque prcdente, nous utilisons le chemin diffrentiel de la gure 9.4 en injectant une diffrence seulement dans le mot de message m12 , et en cherchant des microcollisions dans les zones grises. Nous allons choisir les blocs de message suivant un certain ordonnancement pour satisfaire ces contraintes, mais contrairement lattaque prcdente, nous choisissons lavance les instances de microcollisions dans la troisime et la quatrime branche. Nous devons tout dabord nous assurer que la diffrence additive dans le registre A4,4 sera la mme que celle injecte m12 . De plus, pour la valeur de diffrence d = 0xdd080000 que nous allons utiliser, nous ne considrons que les 253 valeurs de a pour lesquelles nous avons la plus forte probabilit que la diffrence d ne se diffuse pas de A1,6 E1,7 , cest--dire quune seule microcollision se produise. La valeur a m12 = 0xe8db2d4b en est un exemple. 1. Initialiser. Fixer m12 , F0 , G0 , et H0 pour obtenir une microcollision dans le premier tour de la quatrime branche. 2. Quatrime branche. Choisir m1 pour xer B4,2 la valeur recherche. Choisir m5 de faon alatoire puis ajuster m8 pour que la diffrence d se propage sans tre modie. Choisir m13 pour xer B4,4 la valeur recherche. Ajuster m11 pour que la diffrence d se propage sans tre modie et choisir m3 pour obtenir la bonne valeur de A4,4 . 3. Troisime branche. Choisir m6 pour xer F3,1 la valeur recherche. Choisir m7 de faon alatoire puis choisir m14 pour xer F3,2 la valeur recherche. Utiliser la table T10 pour trouver m10 tel que E3,3 soit la bonne valeur (ce qui est possible, car m5 , m7 , m13 , et m14 ont dj t xs). Choisir m2 pour obtenir la bonne valeur de F3,3 . 4. Premire branche. Choisir m4 de faon alatoire, puis utiliser la table T9,a pour une certaine valeur a et ainsi dcider quelle valeur de m9 aboutira a = A1,6 . Cette valeur a permet desprer une microcollision sur E1,7 avec une probabilit de 28 . Sil ny a pas de microcollisions pour la valeur de a choisie, recommencer cette tape avec un autre candidat. Puisque nous avons 253 candidats potentiels, nous avons une bonne probabilit den trouver un valide. La complexit de cet algorithme est proche dun seul appel la fonction de compression de FORK-256, mais ncessite une phase de prcalcul dapproximativement 264 en temps et en 151

Chapitre 9. Cryptanalyse de FORK-256 mmoire. Puisque 108 bits au plus diffrent en sortie de la fonction de compression en utilisant la diffrence additive 0xdd080000, notre algorithme ncessite environ 2108 calculs de FORK256 pour trouver une collision.

152

Bibliographie
[AB96] R.J. Anderson and E. Biham. TIGER : A Fast New Hash Function. In D. Gollmann, editor, Fast Software Encryption FSE 1996, volume 1039 of Lecture Notes in Computer Science, pages 8997. Springer-Verlag, 1996. E. Andreeva, G. Neven, B. Preneel and T. Shrimpton. Seven-Property-Preserving Iterated Hashing : ROX. In K. Kurosawa, editor, Advances in Cryptology ASIACRYPT 2007, volume 4833 of Lecture Notes in Computer Science, pages 130146. Springer-Verlag, 2007. D. Augot, M. Finiasz and N. Sendrier. A Family of Fast Syndrome Based Cryptographic Hash Functions. In E. Dawson and S. Vaudenay, editors, Progress in Cryptology MYCRYPT 2005, volume 3715 of Lecture Notes in Computer Science, pages 6483. Springer-Verlag, 2005. J.P. Aumasson and W. Meier. Analysis of Multivariate Hash Functions. In K. Nyberg, editor, Information Security and Cryptology ICISC 2007 volume 4817 of Lecture Notes in Computer Science, pages 309323. Springer-Verlag, 2007. J.P. Aumasson, W. Meier and R.C.W. Phan. The Hash Function Family LAKE. In K.H. Nam and G. Rhee, editors, Fast Software Encryption FSE 2008, to appear. Springer-Verlag, 2008. G. Avoine, J. Monnerat and T. Peyrin. Advances in Alternative Non-adjacent Form Representations. In A. Canteaut and K. Viswanathan, editors, Progress in Cryptology INDOCRYPT 2004, volume 3348 of Lecture Notes in Computer Science, pages 260274. Springer-Verlag, 2004. P. Barreto and V. Rijmen. The Whirlpool Hashing Function. First version in 2000 but revised in May 2003. http://paginas.terra.com.br/informatica/ paulobarreto/WhirlpoolPage.html. M. Bellare. New Proofs for NMAC and HMAC : Security Without Collision Resistance. In C. Dwork, editor, Advances in Cryptology CRYPTO 2006, volume 4117 of Lecture Notes in Computer Science, pages 602619. Springer-Verlag, 2006. M. Bellare, R. Canetti and H. Krawczyk. Keying Hash Functions for Message Authentication. In N. Koblitz, editor, Advances in Cryptology CRYPTO 1996, volume 1109 of Lecture Notes in Computer Science, pages 115. Springer-Verlag, 1996. M. Bellare and T. Ristenpart. Multi-Property-Preserving Hash Domain Extension and the EMD Transform. In X. Lai and K. Chen, editors, Advances in Cryptology ASIACRYPT 2006, volume 4284 of Lecture Notes in Computer Science, pages 299 314. Springer-Verlag, 2006. 153

[ANP07]

[AFS05]

[AM07]

[AMP08]

[AMP04]

[BR00]

[Bel06]

[BCK96]

[BR06]

Bibliographie [BR93] M. Bellare and P. Rogaway. Random Oracles are Practical : A Paradigm for Designing Efcient Protocols. In ACM Conference on Computer and Communications Security, pages 6273, 1993. K. Bentahar, D. Page, M-J.O. Saarinen, J.H. Silverman and N.P. Smart. LASH. In Proceedings of Second NIST Cryptographic Hash Workshop, 2006. http://csrc. nist.gov/groups/ST/hash/second_workshop.html. G. Bertoni, J. Daemen, M. Peeters and G. Van Assche. RadioGatun, a Belt-and-Mill Hash Function. In Proceedings of Second NIST Cryptographic Hash Workshop, 2006. http://csrc.nist.gov/groups/ST/hash/second_workshop.html. G. Bertoni, J. Daemen, M. Peeters and G. Van Assche. On the Indifferentiability of the Sponge Construction. In N.P. Smart, editor, Advances in Cryptology EUROCRYPT 2008, volume 4965 of Lecture Notes in Computer Science, pages 181197. Springer-Verlag, 2008. E. Biham and R. Chen. Near-Collisions of SHA-0. In M.K. Franklin, editor, Advances in Cryptology CRYPTO 2004, volume 3152 of Lecture Notes in Computer Science, pages 290305. Springer-Verlag, 2004. E. Biham, R. Chen, A. Joux, P. Carribault, C. Lemuet and W. Jalby. Collisions of SHA-0 and Reduced SHA-1. In R. Cramer, editor, Advances in Cryptology EUROCRYPT 2005, volume 3494 of Lecture Notes in Computer Science, pages 36 57. Springer-Verlag, 2005. E. Biham and O. Dunkelman. A Framework for Iterative Hash Functions : HAIFA. In Proceedings of Second NIST Cryptographic Hash Workshop, 2006. http: //csrc.nist.gov/groups/ST/hash/second_workshop.html. O. Billet, M.J.B. Robshaw and T. Peyrin. On Building Hash Functions From Multivariate Quadratic Equations. In J. Pieprzyk, H. Ghodosi and E. Dawson, editors, Information Security and Privacy ACISP 2007, in volume 4586 of Lecture Notes in Computer Science, pages 8295. Springer-Verlag, 2007. J. Black, P. Rogaway, and T. Shrimpton. Black-Box Analysis of the Block-CipherBased Hash-Function Constructions from PGV. In M. Yung, editor, Advances in Cryptology CRYPTO 2002, volume 2442 of Lecture Notes in Computer Science, pages 320335. Springer-Verlag, 2002. B. den Boer and A. Bosselaers An Attack on the Last Two Rounds of MD4. In J. Feigenbaum, editor, Advances in Cryptology CRYPTO 1991, volume 576 of Lecture Notes in Computer Science, pages 194203. Springer-Verlag, 1991. B. den Boer and A. Bosselaers Collisions for the Compressin Function of MD5. In T. Helleseth, editor, Advances in Cryptology EUROCRYPT 1993, volume 765 of Lecture Notes in Computer Science, pages 293304. Springer-Verlag, 1993. E. Bresson, B. Chevallier-Mames, C. Clavier, B. Debraize, P.A. Fouque, L. Goubin, A. Gouget, G. Leurent, P.Q. Nguyen, P. Paillier, T. Peyrin and S. Zimmer. Revisiting Security Relations Between Signature Schemes and their Inner Hash Functions. In Proceedings of ECRYPT Hash Workshop, 2007. http://events.iaik. tugraz.at/HashWorkshop07/program.html. L. Brown, J. Pieprzyk, and J. Seberry. LOKI - a Cryptographic Primitive for Authentication and Secrecy Applications. In J. Pieprzyk and J. Seberry, editors, Advances in Cryptology AUSCRYPT 1990, volume 453 of Lecture Notes in Computer Science, pages 229236. Springer-Verlag, 1990.

[BPS06]

[BDP06]

[BDP08]

[BC04]

[BCJ05]

[BD06]

[BPR07]

[BRS02]

[BB91]

[BB93]

[BCC07]

[BPS90]

154

[BW99]

A. Biryukov and D. Wagner. Slide Attacks. In L.R. Knudsen, editor, Fast Software Encryption FSE 1999, volume 1636 of Lecture Notes in Computer Science, pages 245259. Springer-Verlag, 1999. B. Buchberger. Ein Algorithmus zum Aufnden der Basiselemente des Restklassenringes nach einem nulldimensionalen Polynomideal (An Algorithm for Finding the Basis Elements in the Residue Class Ring Modulo a Zero Dimensional Polynomial Ideal). PhD thesis, University of Innsbruck, 1965. C. De Cannire and C. Rechberger. Finding SHA-1 Characteristics : General Results and Applications. In X. Lai and K. Chen, editors, Advances in Cryptology ASIACRYPT 2006, volume 4284 of Lecture Notes in Computer Science, pages 120. Springer-Verlag, 2006. C. De Cannire, F. Mendel and C. Rechberger. Collisions for 70-Step SHA-1 : On the Full Cost of Collision Search. In C.M. Adams, A. Miri and M.J. Wiener, editors, Selected Areas in Cryptography SAC 2007, volume 4876 of Lecture Notes in Computer Science, pages 5673. Springer-Verlag, 2007. F. Chabaud and A. Joux. Differential Collisions in SHA-0. In H. Krawczyk, editor, Advances in Cryptology CRYPTO 1998, volume 1462 of Lecture Notes in Computer Science, pages 5671. Springer-Verlag, 1998. M. Cochran. Notes on the Wang et al. 263 SHA-1 Differential Path. ePrint archive, 2007. http://eprint.iacr.org/2007/474.pdf. S. Contini, A.K. Lenstra and R. Steinfeld. VSH, an Efcient and Provable Collision Resistant Hash Function. In S. Vaudenay, editor, Advances in Cryptology EUROCRYPT 2006, volume 4004 of Lecture Notes in Computer Science, pages 165182. Springer-Verlag, 2006. S. Contini, K. Matusiewicz and J. Pieprzyk. Extending FORK-256 Attack to the Full Hash Function. In S. Qing, H. Imai and G. Wang, editors, Information Security and Cryptology ICISC 2007, volume 4861 of Lecture Notes in Computer Science, pages 296305. Springer-Verlag, 2007. S. Contini, K. Matusiewicz, J. Pieprzyk, R. Steinfeld, G. Jian, L. San and H. Wang. Cryptanalysis of LASH. In K. Nyberg, editor, Fast Software Encryption FSE 2008, to appear. Springer-Verlag, 2008. S. Contini and Y.L. Yin. Forgery and Partial Key-Recovery Attacks on HMAC and NMAC Using Hash Collisions. In X. Lai and K. Chen, editors, Advances in Cryptology ASIACRYPT 2006, volume 4284 of Lecture Notes in Computer Science, pages 3753. Springer-Verlag, 2006. D. Coppersmith, S. Pilpel, C.H. Meyer, S.M. Matyas, M.M. Hyden, J. Oseas, B. Brachtl, and M. Schilling. Data Authentication Using Modication Dectection Codes Based on a Public One Way Encryption Function. U.S. Patent No. 4,908,861, March 13, 1990. J.S. Coron, Y Dodis, C Malinaud and P Puniya. Merkle-Damgard Revisited : How to Construct a Hash Function. In V. Shoup, editor, Advances in Cryptology CRYPTO 2005, volume 3621 of Lecture Notes in Computer Science, pages 430448. Springer-Verlag, 2005. J. Daemen and V. Rijmen The Design of Rijndael. Springer-Verlag, 2002. 155

[Buc65]

[CR06]

[CMR07]

[CJ98]

[Coc07] [CLS06]

[CMP07]

[CMP08]

[CY06]

[CPM90]

[CDM05]

[DR02]

Bibliographie [Dam89] I. Damgrd. A Design Principle for Hash Functions. In G. Brassard, editor, Advances in Cryptology CRYPTO 1989, volume 435 of Lecture Notes in Computer Science, pages 416427. Springer-Verlag, 1989. M. Daum. Cryptanalysis of Hash Functions of the MD4-Family. PhD thesis, RuhrUniversity Bochum, 2005. R.D. Dean. Formal Aspects of Mobile Code Security. PhD thesis, Princeton University, 1999. C. Debaert and H. Gilbert. The RIPEMD and RIPEMD Improved Variants of MD4 Are Not Collision Free. In M. Matsui, editor, Fast Software Encryption FSE 2001, volume 2355 of Lecture Notes in Computer Science, pages 5265. Springer-Verlag, 2001. H. Dobbertin. Cryptanalysis of MD4. In D. Gollmann, editor, Fast Software Encryption FSE 1996, volume 1039 of Lecture Notes in Computer Science, pages 5369. Springer-Verlag, 1996. H. Dobbertin. Cryptanalysis of MD5 compress. In Rump Session of Advances in Cryptology EUROCRYPT 1996, 1996. ftp://ftp.rsasecurity.com/pub/ cryptobytes/crypto2n2.pdf. H. Dobbertin. RIPEMD with Two-Round Compress Function is Not CollisionFree. In volume 10(1) of Journal of Cryptology, pages 5170. Springer-Verlag, 1997. H. Dobbertin, A. Bosselaers and B. Preneel. RIPEMD-160 : A Strengthened Version of RIPEMD. In D. Gollmann, editor, Fast Software Encryption FSE 1996, volume 1039 of Lecture Notes in Computer Science, pages 7182. Springer-Verlag, 1996. O. Dunkelman and B. Preneel. Generalizing the Herding Attack to Concatenated Hashing Schemes. In Proceedings of ECRYPT Hash Workshop, 2007. P-A. Fouque, G. Leurent and P.Q. Nguyen. Full Key-Recovery Attacks on HMAC / NMAC-MD4 and NMAC-MD5. In A. Menezes, editor, Advances in Cryptology CRYPTO 2007, volume 4622 of Lecture Notes in Computer Science, pages 1330. Springer-Verlag, 2007. H. Gilbert and H. Handschuh. Security Analysis of SHA-256 and Sisters. In M. Matsui and R.J. Zuccherato, editors, Selected Areas in Cryptography SAC 2003, volume 3006 of Lecture Notes in Computer Science, pages 175193. Springer-Verlag, 2003. O. Goldreich, S. Goldwasser and S. Halevi. Collision-Free Hashing from Lattice Problems. In volume 42(3) of Electronic Colloquium on Computational Complexity (ECCC), 1996. M. Gorski, S. Lucks and T. Peyrin. Slide Attacks on Hash Functions. To appear in J. Pieprzyk, editor, Advances in Cryptology ASIACRYPT 2008, Lecture Notes in Computer Science. Springer-Verlag, 2008. H. Handschuh and D. Naccache. SHACAL. Submission to the NESSIE project, 2000. http://www.cryptonessie.org. H. Handschuh and D. Naccache. SHACAL : A Family of Block Ciphers. Submission to the NESSIE project, 2002. http://www.cryptonessie.org.

[Dau05] [Dea99] [DG01]

[Dob96a]

[Dob96b]

[Dob97] [DBP96]

[DP07] [FLN07]

[GH03]

[GGH96]

[GLP08]

[HN00] [HN02]

156

[HSK03]

Y-S. Her, K. Sakurai and S-H. Kim. Attacks for nding collision in reduced versions of 3-pass and 4-pass HAVAL. In International Conference on Computers, Communications and Systems ICCCS 2003, CE-15, pages 7578, 2003. S. Hirose. Provably Secure Double-block-length Hash Functions in a Black-box Model. In C. Park and S. Chee, editors, Information Security and Cryptology ICISC 2004, volume 3506 of Lecture Notes in Computer Science, pages 330342. Springer-Verlag, 2004. S. Hirose. Some Plausible Constructions of Double-Block-Length Hash Functions. In M.J.B. Robshaw, editor, Fast Software Encryption FSE 2006, volume 4047 of Lecture Notes in Computer Science, pages 210225. Springer-Verlag, 2006. J.J. Hoch and A. Shamir. Breaking the ICE - Finding Multicollisions in Iterated Concatenated and Expanded (ICE) Hash Functions. In M.J.B. Robshaw, editor, Fast Software Encryption FSE 2006, volume 4047 of Lecture Notes in Computer Science, pages 179194. Springer-Verlag, 2006. D. Hong, D. Chang, J. Sung, S. Lee, S. Hong, J. Lee, D. Moon and S. Chee. A New Dedicated 256-Bit Hash Function : FORK-256. In Proceedings of First NIST Cryptographic Hash Workshop, 2005. http://csrc.nist.gov/groups/ST/hash/ first_workshop.html. D. Hong, D. Chang, J. Sung, S. Lee, S. Hong, J. Lee, D. Moon and S. Chee. A New Dedicated 256-Bit Hash Function : FORK-256. In M.J.B. Robshaw, editor, Fast Software Encryption FSE 2006, volume 4047 of Lecture Notes in Computer Science, pages 195209. Springer-Verlag, 2006. D. Hong, D. Chang, J. Sung, S. Lee, S. Hong, J. Lee, D. Moon and S. Chee. New FORK-256. ePrint archive, 2007. http://eprint.iacr.org/2007/185.pdf. S. Indesteege, F. Mendel, B. Preneel and C. Rechberger. Collisions and other NonRandom Properties for Step-Reduced SHA-256. ePrint archive, 2008. http:// eprint.iacr.org/2008/131.pdf. A. Joux. Multi-collisions in Iterated Hash Functions. Application to Cascaded Constructions. In M. Franklin, editor, Advances in Cryptology CRYPTO 2004, volume 3152 of Lecture Notes in Computer Science, pages 306316. Springer-Verlag, 2004. A. Joux and T. Peyrin. Hash Functions and the (Amplied) Boomerang Attack. In A. Menezes, editor, Advances in Cryptology CRYPTO 2007, volume 4622 of Lecture Notes in Computer Science, pages 244263. Springer-Verlag, 2007. A. Joux and T. Peyrin. Hash Functions and the (Amplied) Boomerang Attack. In Proceedings of ECRYPT Hash Workshop, 2007. http://events.iaik.tugraz. at/HashWorkshop07/program.html. A. Joux and T. Peyrin. Hash Functions and the (Amplied) Boomerang Attack. Presentation during Advances in Cryptology CRYPTO 2007, August 2007. R.M. Karp. Reducibility among combinatorial problems. In R.E. Miller and J.W. Thatcher, editors, Complexity of Computer Computations, pages 85103. Plenum Press, 1972. P. Kasselman and W. Penzhorn. Cryptanalysis of reduced version of HAVAL. In volume 36(1) of 6th Electronics letters, pages 3031. 2000. 157

[Hir04]

[Hir06]

[HS06]

[HCS05]

[HCS06]

[HCS07] [IMP08]

[Jou04]

[JP07a]

[JP07b]

[JP07c] [Kar72]

[KP00]

Bibliographie [KK06] J. Kelsey and T. Kohno. Herding Hash Functions and the Nostradamus Attack. In S. Vaudenay, editor, Advances in Cryptology EUROCRYPT 2006, volume 4004 of Lecture Notes in Computer Science, pages 183200. Springer-Verlag, 2006. J. Kelsey, T. Kohno and B. Schneier. Amplied Boomerang Attacks Against Reduced-Round MARS and Serpent. In B. Schneier, editor, Fast Software Encryption FSE 2000, volume 1978 of Lecture Notes in Computer Science, pages 7593. Springer-Verlag, 2000. J. Kelsey and B. Schneier. Second Preimages on n-bit Hash Functions for Much Less Than 2n Work. In R. Cramer, editor, Advances in Cryptology EUROCRYPT 2005, volume 3494 of Lecture Notes in Computer Science, pages 474490. Springer-Verlag, 2005. J. Kim, A. Biryukov, B. Preneel and S. Hong. On the Security of HMAC and NMAC Based on HAVAL, MD4, MD5, SHA-0 and SHA-1 (Extended Abstract). In R. De Prisco and M. Yung, editors, Security and Cryptography for Networks SCN 2006, volume 4116 of Lecture Notes in Computer Science, pages 242256. Springer-Verlag, 2006. V. Klima. Tunnels in Hash Functions : MD5 Collisions Within a Minute. ePrint archive, 2006. http://eprint.iacr.org/2006/105.pdf. A. Klimov and A. Shamir. A New Class of Invertible Mappings. In B. Kaliski, C. Ko and C. Paar, editors, Cryptographic Hardware and Embedded Systems CHES 2002, volume 2523 of Lecture Notes in Computer Science, pages 470483. Springer-Verlag, 2002. A. Klimov and A. Shamir. Cryptographic Applications of T-functions. In M. Matsui and R.J. Zuccherato, editors, Selected Areas in Cryptography SAC 2003, volume 3006 of Lecture Notes in Computer Science, pages 248261. Springer-Verlag, 2003. L.R. Knudsen. Truncated and Higher Order Differentials. In B. Preneel, editor, Fast Software Encryption FSE 1994, in volume 1008 of Lecture Notes in Computer Science, pages 196211. Springer-Verlag, 1995. L.R. Knudsen. SMASH - A Cryptographic Hash Function. In H. Gilbert and H. Handschuh, editors, Fast Software Encryption FSE 2005, volume 3557 of Lecture Notes in Computer Science, pages 228242. Springer-Verlag, 2005. L.R. Knudsen. Hash functions and SHA-3. Invited Talk of Fast Software Encryption FSE 2008, 2008. http://fse2008.epfl.ch/docs/slides/day_1_sess_ 2/Knudsen-FSE2008.pdf. L.R. Knudsen and X. Lai. New Attacks on All Double Block Length Hash Functions of Hash Rate 1, Including the Parallel-DM. In A. De Santis, editor, Advances in Cryptology EUROCRYPT 1994, volume 950 of Lecture Notes in Computer Science, pages 410418. Springer-Verlag, 1994. L.R. Knudsen and F. Muller. Some Attacks Against a Double Length Hash Proposal. In B. Roy, editor, Advances in Cryptology ASIACRYPT 2005, volume 3788 of Lecture Notes in Computer Science, pages 462473. Springer-Verlag, 2005. L.R. Knudsen and B. Preneel. Hash Functions Based on Block Ciphers and Quaternary Codes. In K. Kim and T. Matsumoto, editors, Advances in Cryptology ASIACRYPT 1996, volume 1163 of Lecture Notes in Computer Science, pages 7790. Springer-Verlag, 1996.

[KKS00]

[KS05]

[KBP06]

[Kli06] [KS02]

[KS04]

[Knu94]

[Knu05]

[Knu08]

[KL94]

[KM05]

[KP96]

158

[KP97]

L.R. Knudsen and B. Preneel. Fast and Secure Hashing Based on Codes. In B.S. Kaliski Jr., editor, Advances in Cryptology CRYPTO 1997, volume 1294 of Lecture Notes in Computer Science, pages 485498. Springer-Verlag, 1997. L.R. Knudsen and B. Preneel. Construction of Secure and Fast Hash Functions Using Nonbinary Error-Correcting Codes. In volume 48(9) of IEEE Transactions on Information Theory, pages 25242539, 2002. L.R. Knudsen, C. Rechberger and S.S. Thomsen. Grindahl - A family of hash functions. In A. Biryukov, editor, Fast Software Encryption FSE 2007, in volume 4593 of Lecture Notes in Computer Science, pages 119136. Springer-Verlag, 2007. D. Khovratovich. Cryptanalysis of hash functions with structures. In ECRYPT Hash Workshop, 2008. http://www.lorentzcenter.nl/lc/web/2008/ 309/presentations/Khovratovich.pdf. X. Lai and J.L. Massey. Hash Functions Based on Block Ciphers. In R. A. Rueppel, editor, Advances in Cryptology EUROCRYPT 1992, volume 658 of Lecture Notes in Computer Science, pages 5570. Springer-Verlag, 1992. X. Lai, C. Waldvogel, W. Hohl, and T. Meier. Security of Iterated Hash Functions Based on Block Ciphers. In D.R. Stinson, editor, Advances in Cryptology CRYPTO 1993, volume 773 of Lecture Notes in Computer Science, pages 379390. Springer-Verlag, 1993. A.K. Lenstra and B. de Weger. On the Possibility of Constructing Meaningful Hash Collisions for Public Keys. In C. Boyd and J.M.G. Nieto, editors, Information Security and Privacy ACISP 2005, in volume 3574 of Lecture Notes in Computer Science, pages 267279. Springer-Verlag, 2005. G. Leurent. Message Freedom in MD4 and MD5 Collisions : Application to APOP. In A. Biryukov, editor, Fast Software Encryption FSE 2007, in volume 4593 of Lecture Notes in Computer Science, pages 309328. Springer-Verlag, 2007. G. Leurent. MD4 is Not One-Way. In K. Nyberg, editor, Fast Software Encryption FSE 2008, to appear. Springer-Verlag, 2008. J. Liang and X. Lai. Improved Collision Attack on Hash Function MD5. ePrint archive, 2005. http://eprint.iacr.org/2005/425.pdf. H. Lipmaa, J. Walln and P. Dumas. On the Additive Differential Probability of Exclusive-Or. In B.K. Roy and W. Meier, editors, Fast Software Encryption FSE 2004, volume 3017 of Lecture Notes in Computer Science, pages 317331. Springer-Verlag, 2004. S. Lucks. A Failure-Friendly Design Principle for Hash Functions. In B.K. Roy, editor, Advances in Cryptology ASIACRYPT 2005, volume 3788 of Lecture Notes in Computer Science, pages 474494. Springer-Verlag, 2005. S. Manuel and T. Peyrin. Collisions on SHA-0 in one hour. In K. Nyberg, editor, Fast Software Encryption FSE 2008, to appear. Springer-Verlag, 2008. K. Matusiewicz, S. Contini and J. Pieprzyk. Weaknesses of the FORK-256 compression function. ePrint archive, 2006. http://eprint.iacr.org/2006/ 317.pdf. K. Matusiewicz, T. Peyrin, O. Billet, S. Contini and J. Pieprzyk. Cryptanalysis of FORK-256. In A. Biryukov, editor, Fast Software Encryption FSE 2007, in volume 4593 of Lecture Notes in Computer Science, pages 119136. Springer-Verlag, 2007. 159

[KP02]

[KRT07]

[Kho08]

[LM92]

[LWH93]

[LW05]

[Leu07]

[Leu08] [LL05] [LWD04]

[Luc05]

[MP08] [MCP06]

[MPB07]

Bibliographie [MRH04] U.M. Maurer, R. Renner and C. Holenstein. Indifferentiability, Impossibility Results on Reductions, and Applications to the Random Oracle Methodology. In M. Naor, editor, Theory of Cryptography TCC 2004, volume 2951 of Lecture Notes in Computer Science, pages 2139. Springer-Verlag, 2004. U.M. Maurer and S. Tessaro. Domain Extension of Public Random Functions : Beyond the Birthday Barrier. In A. Menezes, editor, Advances in Cryptology CRYPTO 2007, volume 4622 of Lecture Notes in Computer Science, pages 187204. Springer-Verlag, 2007. F. Mendel, J. Lano and B. Preneel. Cryptanalysis of Reduced Variants of the FORK-256 Hash Function. In M. Abe, editor, Topics in Cryptology CT-RSA 2007, volume 4377 of Lecture Notes in Computer Science, pages 85100. Springer-Verlag, 2007. F. Mendel, N. Pramstaller, C. Rechberger and V. Rijmen. Analysis of Step-Reduced SHA-256. In M.J.B. Robshaw, editor, Fast Software Encryption CFSE 2006, volume 4047 of Lecture Notes in Computer Science, pages 126143. Springer-Verlag, 2006. F. Mendel, C. Rechberger and V. Rijmen. Update on SHA-1. In Rump Session of Advances in Cryptology CRYPTO 2007, August 2007. F. Mendel and V. Rijmen. Cryptanalysis of the Tiger Hash Function. In C-S. Laih, editor, Advances in Cryptology ASIACRYPT 2003, volume 2894 of Lecture Notes in Computer Science, pages 536550. Springer-Verlag, 2007.

[MT07]

[MLP07]

[MPR06]

[MRR07] [MR07]

[Handbook] A.J. Menezes, S.A. Vanstone, and P.C. Van Oorschot. Handbook of Applied Cryptography. CRC Press, Inc., Boca Raton, FL, USA, 1996. [Mer89] R.C. Merkle. One Way Hash Functions and DES. In G. Brassard, editor, Advances in Cryptology CRYPTO 1989, volume 435 of Lecture Notes in Computer Science, pages 428446. Springer-Verlag, 1989. F. Muller. Personal communication, 2006. F. Muller and T. Peyrin. Linear Cryptanalysis of the TSC Family of Stream Ciphers. In B.K. Roy, editor, Advances in Cryptology ASIACRYPT 2005, volume 3788 of Lecture Notes in Computer Science, pages 373-394. Springer-Verlag, 2005. F. Muller and T. Peyrin. Cryptanalysis of T-Function-Based Hash Functions. In M.S. Rhee and B. Lee, editors, Information Security and Cryptology ICISC 2006, volume 4296 of Lecture Notes in Computer Science, pages 267285. Springer-Verlag, 2006. Y. Naito, Y. Sasaki, T. Shimoyama, J. Yajima, N. Kunihiro and K. Ohta. Improved Collision Search for SHA-0. In X. Lai and K. Chen, editors, Advances in Cryptology ASIACRYPT 2006, volume 4284 of Lecture Notes in Computer Science, pages 2136. Springer-Verlag, 2006. M. Nandi, W. Lee, K. Sakurai, and S. Lee. Security Analysis of a 2/3-rate Double Length Compression Function in Black-box Model. In H. Gilbert and H. Handschuh, editors, Fast Software Encryption FSE 2005, volume 3557 of Lecture Notes in Computer Science, pages 243254. Springer-Verlag, 2005. National Institute of Standards and Technology. FIPS 180 : Secure Hash Standard, May 1993. http://csrc.nist.gov.

[Mul06p] [MP05]

[MP06]

[NSS06]

[NLS05]

[N-sha0]

160

[N-sha1] [N-sha2] [N-sha2b] [N-sha3] [N-aes] [NB08] [OpenSLL] [PSC02]

[Pey07]

[Pey08]

[PGM06]

[PV05]

[PRR05]

[Pre93] [PBG89]

[PGV93]

National Institute of Standards and Technology. FIPS 180-1 : Secure Hash Standard, April 1995. http://csrc.nist.gov. National Institute of Standards and Technology. FIPS 180-2 : Secure Hash Standard, August 2002. http://csrc.nist.gov. National Institute of Standards and Technology. FIPS 180-2 : Secure Hash Standard - Change notice 1, February 2004. http://csrc.nist.gov. National Institute of Standards and Technology. FIPS 180-3 : Secure Hash Standard http://csrc.nist.gov. National Institute of Standards and Technology. FIPS 197 : Advanced Encryption Standard, November 2001. http://csrc.nist.gov. I. Nikolic and A. Biryukov. Collisions for step-reduced SHA-256. In K. Nyberg, editor, Fast Software Encryption FSE 2008, to appear. Springer-Verlag, 2008. O PEN SSL. The Open Source toolkit for SSL/TLS, 2007. http://www.openssl. org/source/. S. Park, S.H. Sung, S. Chee and Jongin Lim. On the Security of Reduced Versions of 3-Pass HAVAL. In L.M. Batten and J. Seberry, editors, Information Security and Privacy ACISP 2002, in volume 2384 of Lecture Notes in Computer Science, pages 406419. Springer-Verlag, 2002. T. Peyrin. Cryptanalysis of Grindahl. In K. Kurosawa, editor, Advances in Cryptology ASIACRYPT 2007, volume 4833 of Lecture Notes in Computer Science, pages 551567. Springer-Verlag, 2007. T. Peyrin. Security Analysis of Extended Sponge Functions. In ECRYPT Hash Workshop, 2008. http://www.lorentzcenter.nl/lc/web/2008/309/ presentations/Peyrin.pdf. T. Peyrin, H. Gilbert, F. Muller and M.J.B. Robshaw. Combining Compression Functions and Block Cipher-Based Hash Functions. In X. Lai and K. Chen, editors, Advances in Cryptology ASIACRYPT 2006, volume 4284 of Lecture Notes in Computer Science, pages 315331. Springer-Verlag, 2006. T. Peyrin and S. Vaudenay. The Pairing Problem with User Interaction. In R. Sasaki, S. Qing, E. Okamoto and H. Yoshiura, editors, International Conference on Information Security SEC 2005, pages 251266. Springer-Verlag, 2005. N. Pramstaller, C. Rechberger and V. Rijmen. Breaking a New Hash Function Design Strategy Called SMASH. In B. Preneel and S.E. Tavares, editors, Selected Areas in Cryptography SAC 2005, volume 3897 of Lecture Notes in Computer Science, pages 233244. Springer-Verlag, 2005. B. Preneel. Analysis and Design of Cryptographic Hash Functions. PhD thesis, Katholieke Universiteit Leuven, 1993. B. Preneel, A. Bosselaers, R. Govaerts, and J. Vandewalle. Collision-free Hash Functions Based on Block Cipher Algorithms. In Proceedings 1989 International Carnahan Conference on Security Technology, pages 203210. IEEE, 1989. IEEE catalog number 89CH2774-8. B. Preneel, R. Govaerts, and J. Vandewalle. Hash Functions Based on Block Ciphers : A Synthetic Approach. In D.R. Stinson, editor, Advances in Cryptology CRYPTO 1993, volume 773 of Lecture Notes in Computer Science, pages 368378. Springer-Verlag, 1993. 161

Bibliographie [QD89] J.J. Quisquater and J.P. Delescaille. How Easy is Collision Search. New Results and Applications to DES. In G. Brassard, editor, Advances in Cryptology CRYPTO 1989, volume 435 of Lecture Notes in Computer Science, pages 408413. Springer-Verlag, 1989. J.-J. Quisquater and M. Girault. 2n-bit Hash-functions Using n-bit Symmetric Block Cipher Algorithms. In J.-J. Quisquater and J. Vandewalle, editors, Advances in Cryptology EUROCRYPT 1989, volume 434 of Lecture Notes in Computer Science, pages 102109. Springer-Verlag, 1989. RIPE, Integrity Primitives for Secure Information Systems. Final Report of RACE Integrity Primitives Evaluation (RIPE-RACE 1040), In A. Bosselaers and B. Preneel, editors, volume 1007 of Lecture Notes in Computer Science. Springer-Verlag, 1995. Ronald L. Rivest. RFC 1320 : The MD4 Message-Digest Algorithm, April 1992. http://www.ietf.org/rfc/rfc1320.txt. Ronald L. Rivest. RFC 1321 : The MD5 Message-Digest Algorithm, April 1992. http://www.ietf.org/rfc/rfc1321.txt. P. Rogaway and T. Shrimpton. Cryptographic Hash-Function Basics : Denitions, Implications, and Separations for Preimage Resistance, Seconde-Preimage Resistance, and Collision Resistance. In B.K. Roy and W. Meier, editors, Fast Software Encryption FSE 2004, volume 3017 of Lecture Notes in Computer Science, pages 371388. Springer-Verlag, 2004. P. Rogaway. Formalizing Human Ignorance. In P.Q. Nguyen, editor, Progress in Cryptology VIETCRYPT 2006, volume 4341 of Lecture Notes in Computer Science, pages 211228. Springer-Verlag, 2006. M.J.O. Saarinen. Security of VSH in the Real World. In R. Barua and T. Lange, editors, Progress in Cryptology INDOCRYPT 2006, volume 4329 of Lecture Notes in Computer Science, pages 95103. Springer-Verlag, 2006. M.J.O. Saarinen. A Meet-in-the-Middle Collision Attack Against the New FORK256. In K. Srinathan, C.P. Rangan and M. Yung, editors, Progress in Cryptology INDOCRYPT 2007, volume 4859 of Lecture Notes in Computer Science, pages 1017. Springer-Verlag, 2007. M.J.O. Saarinen. Linearization Attacks Against Syndrome Based Hashes. In K. Srinathan, C.P. Rangan and M. Yung, editors, Progress in Cryptology INDOCRYPT 2007, volume 4859 of Lecture Notes in Computer Science, pages 19. Springer-Verlag, 2007. S.K. Sanadhya and P. Sarkar. Attacking Reduced Round SHA-256. ePrint archive, 2008. http://eprint.iacr.org/2008/142.pdf. Projet RNRT SAPHIR : Scurit et Analyse des Primitives de Hachage Innovantes et Rcentes. http://www.crypto-hash.fr. Y. Sasaki, L. Wang, K. Ohta and N. Kunihiro. New Message Difference for MD4. In A. Biryukov, editor, Fast Software Encryption FSE 2007, in volume 4593 of Lecture Notes in Computer Science, pages 329348. Springer-Verlag, 2007. Y. Sasaki, G. Yamamoto and K. Aoki. Practical Password Recovery on an MD5 Challenge and Response. ePrint archive, 2007. http://eprint.iacr.org/ 2007/101.pdf.

[QG89]

[RIPE95]

[RFCmd4] [RFCmd5] [RS04]

[Rog06]

[Saa06]

[Saa07a]

[Saa07b]

[SS08] [Saphir] [SWO07]

[SYA07]

162

[SP07]

Y. Seurin and T. Peyrin. Security Analysis of Constructions Combining FIL Random Oracles. In A. Biryukov, editor, Fast Software Encryption FSE 2007, in volume 4593 of Lecture Notes in Computer Science, pages 119136. Springer-Verlag, 2007. A. Shamir. SQUASH - a New MAC With Provable Security Properties for Highly Constrained Devices Such As RFID Tags. In K. Nyberg, editor, Fast Software Encryption FSE 2008, to appear. Springer-Verlag, 2008. C. Shannon. Communication Theory of Secrecy Systems. In volume 28(4) of Bell System Technical Journal, pages 656715, 1949. M. Stevens, A.K. Lenstra and B. de Weger. Chosen-Prex Collisions for MD5 and Colliding X.509 Certicates for Different Identities. In M. Naor, editor, Advances in Cryptology EUROCRYPT 2007, volume 4515 of Lecture Notes in Computer Science, pages 122. Springer-Verlag, 2007. M. Stevens, A.K. Lenstra and B. de Weger. Vulnerability of software integrity and code signing applications to chosen-prex collisions for MD5. http://www. win.tue.nl/hashclash/SoftIntCodeSign/. M. Sugita, M. Kawazoe, L. Perret and H. Imai. Algebraic Cryptanalysis of 58Round SHA-1. In A. Biryukov, editor, Fast Software Encryption FSE 2007, in volume 4593 of Lecture Notes in Computer Science, pages 349365. Springer-Verlag, 2007. P.C. Van Oorschot and M.J. Wiener. Parallel Collision Search with Cryptanalytic Applications. In volume 12(1) of Journal of Cryptology, pages 128. SpringerVerlag, 1999. B. Van Rompay, A. Biryukov, B. Preneel and J. Vandewalle. Cryptanalysis of 3Pass HAVAL. In C-S. Laih, editor, Advances in Cryptology ASIACRYPT 2003, volume 2894 of Lecture Notes in Computer Science, pages 228245. Springer-Verlag, 2003. D. Wagner. The Boomerang Attack. In L.R. Knudsen, editor, Fast Software Encryption FSE 1999, in volume 1636 of Lecture Notes in Computer Science, pages 156 170. Springer-Verlag, 1999. D. Wagner. A Generalized Birthday Problem. In M. Yung, editor, Advances in Cryptology CRYPTO 2002, volume 2442 of Lecture Notes in Computer Science, pages 288303. Springer-Verlag, 2002. L. Wang, K. Ohta and N. Kunihiro . New Key Recovery Attack on HMAC / NMAC-MD4 and NMAC-MD5. In N. Smart, editor, Advances in Cryptology EUROCRYPT 2008, to appear. Springer-Verlag, 2008. X. Wang, D. Feng, X. Lai and H. Yu. Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD. ePrint archive, 2004. http://eprint.iacr.org/ 2004/199.pdf. X. Wang, X. Lai, D. Feng, H. Chen and X. Yu. Cryptanalysis of the Hash Functions MD4 and RIPEMD. In R. Cramer, editor, Advances in Cryptology EUROCRYPT 2005, volume 3494 of Lecture Notes in Computer Science, pages 118. Springer-Verlag, 2005. X. Wang, A.C. Yao, and F. Yao. Cryptanalysis on SHA-1. In Proceedings of NIST Cryptographic Hash Workshop, 2005. 163

[Sha08]

[Sha49] [SLW07a]

[SLW07b]

[SKP07]

[VW99]

[VBP03]

[Wag99]

[Wag02]

[WOK08]

[WFL04]

[WLF05]

[WYY05a]

Bibliographie [WYY05b] X. Wang, Y.L. Yin, and H. Yu. Finding Collisions in the Full SHA-1. In V. Shoup, editor, Advances in Cryptology CRYPTO 2005, volume 3621 of Lecture Notes in Computer Science, pages 1736. Springer-Verlag, 2005. X. Wang, Y.L. Yin, and H. Yu. New Collision Search for SHA-1. In Rump Session of Advances in Cryptology CRYPTO 2005, August 2005. X. Wang and H. Yu. How to Break MD5 and Other Hash Functions. In R. Cramer, editor, Advances in Cryptology EUROCRYPT 2005, volume 3494 of Lecture Notes in Computer Science, pages 1935. Springer-Verlag, 2005. X. Wang, H. Yu and Y.L. Yin. Efcient Collision Search Attacks on SHA-0. In V. Shoup, editor, Advances in Cryptology CRYPTO 2005, volume 3621 of Lecture Notes in Computer Science, pages 116. Springer-Verlag, 2005. D. Watanabe. A note on the security proof of Knudsen-Preneel construction of a hash function. http://csrc.nist.gov/groups/ST/hash/documents/ WATANABE_kp_attack.pdf. R.S. Winternitz. A Secure One-Way Hash Function Built from DES. In IEEE Symposium on Security and Privacy, Lecture Notes in Computer Science, pages 8890, 1984. J. Yajima, T. Iwasaki, Y. Naito, Y. Sasaki, T. Shimoyama, N. Kunihiro and K. Ohta. A Strict Evaluation Method on the Number of Conditions for the SHA-1 Collision Search. In M. Abe and V. Gligor, editors, ACM Symposium on Information, Computer and Communications Security ASIACCS 2008, Lecture Notes in Computer Science. Springer-Verlag, 2008. J. Yajima, T. Iwasaki, Y. Naito, Y. Sasaki, T. Shimoyama, T. Peyrin, N. Kunihiro and K. Ohta. A Strict Evaluation Method on the Number of Conditions for SHA1 Collision Search. To appear in volume E92-A (1) of IEICE Trans. Fundamentals, January 2009. J. Yajima, Y. Sasaki, Y. Naito, T. Iwasaki, T. Shimoyama, N. Kunihiro and K. Ohta. A New Strategy for Finding a Differential Path of SHA-1. In J. Pieprzyk, H. Ghodosi and E. Dawson, editors, Information Security and Privacy ACISP 2007, in volume 4586 of Lecture Notes in Computer Science, pages 4558. Springer-Verlag, 2007. J. Yajima and T. Shimoyama. Wangs sufcient conditions of MD5 are not sufcient. ePrint archive, 2005. http://eprint.iacr.org/2005/263.pdf. H. Yoshida, A. Biryukov, C. De Cannire, J. Lano and B. Preneel. Non-randomness of the Full 4 and 5-Pass HAVAL. In C. Blundo and S. Cimato, editors, Security and Cryptography for Networks SCN 2004, volume 3352 of Lecture Notes in Computer Science, pages 324336. Springer-Verlag, 2004. H. Yoshida, D. Watanabe, K. Okeya, J. Kitahara, H. Wu, O. Kk and B. Preneel. MAME : A Compression Function with Reduced Hardware Requirements. In P. Paillier and I. Verbauwhede, editors, Cryptographic Hardware and Embedded Systems CHES 2007, volume 4727 of Lecture Notes in Computer Science, pages 148165. Springer-Verlag, 2007. H. Yu, X. Wang, A. Yun and S. Park. Cryptanalysis of the Full HAVAL with 4 and 5 Passes. In M.J.B. Robshaw, editor, Fast Software Encryption FSE 2006, in volume 4047 of Lecture Notes in Computer Science, pages 89110. Springer-Verlag, 2006.

[WYY05c] [WY05]

[WYY05d]

[Wat08]

[Win84] [YIN08a]

[YIN08b]

[YSN07]

[YS05] [YBC04]

[YW007]

[YWY06]

164

[Yuv79] [ZPS92]

G. Yuval. How to Swindle Rabin. In volume 3(3) of Cryptologia, pages 187189, 1979. Y. Zheng, J. Pieprzyk and J. Seberry. HAVAL - A One-Way Hashing Algorithm with Variable Length of Output. In J. Seberry and Y. Zheng, editors, Advances in Cryptology ASIACRYPT 1992, volume 718 of Lecture Notes in Computer Science, pages 83104. Springer-Verlag, 1992.

165

Bibliographie

166

Bibliographie personelle
[Indocrypt-04] G. Avoine, J. Monnerat and T. Peyrin. Advances in Alternative Nonadjacent Form Representations. In A. Canteaut and K. Viswanathan, editors, Progress in Cryptology INDOCRYPT 2004, volume 3348 of Lecture Notes in Computer Science, pages 260274. Springer-Verlag, 2004. O. Billet, M.J.B. Robshaw and T. Peyrin. On Building Hash Functions From Multivariate Quadratic Equations. In J. Pieprzyk, H. Ghodosi and E. Dawson, editors, Information Security and Privacy ACISP 2007, in volume 4586 of Lecture Notes in Computer Science, pages 8295. SpringerVerlag, 2007.

[ACISP-07]

[HashWorkshop-07a] E. Bresson, B. Chevallier-Mames, C. Clavier, B. Debraize, P.A. Fouque, L. Goubin, A. Gouget, G. Leurent, P.Q. Nguyen, P. Paillier, T. Peyrin and S. Zimmer. Revisiting Security Relations Between Signature Schemes and their Inner Hash Functions. In Proceedings of ECRYPT Hash Workshop, 2007. http://events.iaik.tugraz.at/HashWorkshop07/ program.html. [Asiacrypt-08] M. Gorski, S. Lucks and T. Peyrin. Slide Attacks on Hash Functions. To appear in J. Pieprzyk, editor, Advances in Cryptology ASIACRYPT 2008, Lecture Notes in Computer Science. Springer-Verlag, 2008. A. Joux and T. Peyrin. Hash Functions and the (Amplied) Boomerang Attack. In A. Menezes, editor, Advances in Cryptology CRYPTO 2007, volume 4622 of Lecture Notes in Computer Science, pages 244263. SpringerVerlag, 2007.

[Crypto-07]

[HashWorkshop-07b] A. Joux and T. Peyrin. Hash Functions and the (Amplied) Boomerang Attack. In Proceedings of ECRYPT Hash Workshop, 2007. http: //events.iaik.tugraz.at/HashWorkshop07/program.html. [FSE-08] S. Manuel and T. Peyrin. Collisions on SHA-0 in one hour. In K. Nyberg, editor, Fast Software Encryption FSE 2008, to appear. Springer-Verlag, 2008. K. Matusiewicz, T. Peyrin, O. Billet, S. Contini and J. Pieprzyk. Cryptanalysis of FORK-256. In A. Biryukov, editor, Fast Software Encryption FSE 2007, in volume 4593 of Lecture Notes in Computer Science, pages 119136. Springer-Verlag, 2007. F. Muller and T. Peyrin. Linear Cryptanalysis of the TSC Family of Stream Ciphers. In B.K. Roy, editor, Advances in Cryptology ASIACRYPT 2005, volume 3788 of Lecture Notes in Computer Science, pages 373-394. Springer-Verlag, 2005. 167

[FSE-07a]

[Asiacrypt-05]

Bibliographie personelle [ICISC-06] F. Muller and T. Peyrin. Cryptanalysis of T-Function-Based Hash Functions. In M.S. Rhee and B. Lee, editors, Information Security and Cryptology ICISC 2006, volume 4296 of Lecture Notes in Computer Science, pages 267285. Springer-Verlag, 2006. T. Peyrin. Cryptanalysis of Grindahl. In K. Kurosawa, editor, Advances in Cryptology ASIACRYPT 2007, volume 4833 of Lecture Notes in Computer Science, pages 551567. Springer-Verlag, 2007. T. Peyrin, H. Gilbert, F. Muller and M.J.B. Robshaw. Combining Compression Functions and Block Cipher-Based Hash Functions. In X. Lai and K. Chen, editors, Advances in Cryptology ASIACRYPT 2006, volume 4284 of Lecture Notes in Computer Science, pages 315331. Springer-Verlag, 2006. T. Peyrin and S. Vaudenay. The Pairing Problem with User Interaction. In R. Sasaki, S. Qing, E. Okamoto and H. Yoshiura, editors, International Conference on Information Security SEC 2005, pages 251266. SpringerVerlag, 2005. Y. Seurin and T. Peyrin. Security Analysis of Constructions Combining FIL Random Oracles. In A. Biryukov, editor, Fast Software Encryption FSE 2007, in volume 4593 of Lecture Notes in Computer Science, pages 119 136. Springer-Verlag, 2007. J. Yajima, T. Iwasaki, Y. Naito, Y. Sasaki, T. Shimoyama, T. Peyrin, N. Kunihiro and K. Ohta. A Strict Evaluation Method on the Number of Conditions for SHA-1 Collision Search. To appear in volume E92-A (1) of IEICE Trans. Fundamentals, January 2009.

[Asiacrypt-07]

[Asiacrypt-06]

[SEC-05]

[FSE-07b]

[IEICE-09]

168

A NNEXE A

Spcication des fonctions de compression de la famille MD-SHA


Dans cette section de lappendice, nous donnons tous les lments ncessaires la spcication complte des fonctions de compression de la famille MD-SHA. Tout dabord, pour chaque schma, nous donnons les paramtres associs la fonction de compression (dans le cas des membres de la famille RIPEMD, ces paramtres correspondent une seule branche) : n le nombre de bits de sortie, m le nombre de blocs de message traits par itration, w la taille en bits de chaque bloc, r le nombre de registres internes, t le nombre de tours, u le nombre dtapes par tour, s le nombre total dtapes. Lexpansion de message est exprime par la dnition des permutations j dans le cas dune permutation des blocs de message chaque tour, et par la formule de rcurrence dans le cas dune expansion de message rcursive. Nous donnons ensuite les valeurs dinitialisation pour le premier bloc trait lors du premier appel la fonction de compression durant le hachage itratif de Merkle-Damgrd, puis la formule de mise jour des registres cibles avec toutes les constantes ou fonctions ncessaires limplantation de la fonction. Ai+1 reprsente le registre mis jour ltape i, 0 i s 1 (dans le cas des membres de la famille RIPEMD, on distingue R les registres cibles AL i de la branche de gauche des registres cibles Ai de celle de droite). Par souci de clart pour la suite, nous introduisons maintenant certaines fonctions boolennes qui vont tre souvent utilises en tant que fonction j : XOR(x, y, z ) := x y z MAJ(x, y, z ) := xy xz yz IF(x, y, z ) := xy x z = xy xz z ONX(x, y, z ) := (x y ) z = xy y z 1

o x, y et z sont des mots de w bits, ces fonctions traitant les mots dentre bit bit. Nous donnons enn linitialisation de ltat interne par la variable de chanage dentre H = h0 , . . . , hr1 , et le calcul nal de la variable de chanage de sortie H = h0 , . . . , hr1 .

169

Annexe A. Spcication des fonctions de compression de la famille MD-SHA

A.1

MD4 [RFCmd4]

Paramtres : n = 128 m = 16 w = 32 r=4 t=3 u = 16 s = 48

Expansion de message : Wj 16+k = Mj (k) . j (k ) 0 Tour j = 0 Tour j = 1 Tour j = 2 0 0 0 1 1 4 8 2 2 8 4 3 3 12 12 4 4 1 2 k -ime tape dans le tour 5 6 7 8 9 10 11 5 5 10 6 9 6 7 13 14 8 2 1 9 6 9 10 10 5 11 14 13

12 12 3 3

13 13 7 11

14 14 11 7

15 15 15 15

Valeurs dinitialisation : A3 =0x67452301 A2 =0x10325476 A1 =0x98badcfe A0 =0xefcdab89

Transformation dtape :
< <si . Ai+1 = (Ai3 + j (Ai , Ai1 , Ai2 ) + Wi + Kj )<

Tour j 0 1 2 Tour j 0 0 1 2 Entre : A 3 = h 0 Sortie : h0 = A45 + A3 3 3 3 1 7 5 9 2 11 9 11 3 19 13 15 4 3 3 3

j (x, y, z ) IF(x, y, z ) MAJ(x, y, z ) XOR(x, y, z )

Kj 0x00000000 0x5a827999 0x6ed9eba1

5 7 5 9

6 11 9 11

S16j +k 7 8 9 19 13 15 3 3 3 7 5 9

10 11 9 11

11 19 13 15

12 3 3 3

13 7 5 9

14 11 9 11

15 19 13 15

A2 = h3

A 1 = h 2

A0 = h 1

h1 = A48 + A0

h2 = A47 + A1

h3 = A46 + A2

170

A.2. MD5 [RFCmd5]

A.2

MD5 [RFCmd5]

Paramtres : n = 128 m = 16 w = 32 r=4 t=4 u = 16 s = 64

Expansion de message : Wj 16+k = Mj (k) . j (k ) 0 Tour j = 0 Tour j = 1 Tour j = 2 Tour j = 3 0 1 5 0 1 1 6 8 7 2 2 11 11 14 3 3 0 14 5 4 4 5 1 12 k -ime tape dans le tour 5 6 7 8 9 10 11 5 10 4 3 6 15 7 10 7 4 10 1 8 9 13 8 9 14 0 15 10 3 3 6 11 8 6 13

12 12 13 9 4

13 13 2 12 11

14 14 7 15 2

15 15 12 2 9

Valeurs dinitialisation : A3 =0x67452301 A2 =0x10325476 A1 =0x98badcfe A0 =0xefcdab89

Transformation dtape :
< <si . Ai+1 = Ai + (Ai3 + j (Ai , Ai1 , Ai2 ) + Wi + Ki )<

Tour j 0 1 2 3

j (x, y, z ) 0 IF(x, y, z ) IF(z, x, y ) XOR(x, y, z ) ONX(x, z, y ) 7 5 4 6 1 12 9 11 10 2 17 14 16 15 3 22 20 23 21 4 7 5 4 6 5 12 9 11 10 6 17 14 16 15

S16j +k 7 8 9 22 20 23 21 7 5 4 6 12 9 11 10

10 17 14 16 15

11 22 20 23 21

12 7 5 4 6

13 12 9 11 10

14 17 14 16 15

15 22 20 23 21

Valeurs Ki avec i = (ligne 4) + colonne 0xd76aa478 0xf57c0faf 0x698098d8 0x6b901122 0xf61e2562 0xd62f105d 0x21e1cde6 0xa9e3e905 0xfffa3942 0xa4beea44 0x289b7ec6 0xd9d4d039 0xf4292244 0x655b59c3 0x6fa87e4f 0xf7537e82 0xe8c7b756 0x4787c62a 0x8b44f7af 0xfd987193 0xc040b340 0x02441453 0xc33707d6 0xfcefa3f8 0x8771f681 0x4bdecfa9 0xeaa127fa 0xe6db99e5 0x432aff97 0x8f0ccc92 0xfe2ce6e0 0xbd3af235 0x242070db 0xa8304613 0xffff5bb1 0xa679438e 0x265e5a51 0xd8a1e681 0xf4d50d87 0x676f02d9 0x6d9d6122 0xf6bb4b60 0xd4ef3085 0x1fa27cf8 0xab9423a7 0xffeff47d 0xa3014314 0x2ad7d2bb 0xc1bdceee 0xfd469501 0x895cd7be 0x49b40821 0xe9b6c7aa 0xe7d3fbc8 0x455a14ed 0x8d2a4c8a 0xfde5380c 0xbebfbc70 0x04881d05 0xc4ac5665 0xfc93a039 0x85845dd1 0x4e0811a1 0xeb86d391

171

Annexe A. Spcication des fonctions de compression de la famille MD-SHA Entre : A 3 = h 0 Sortie : h0 = A61 + A3 h1 = A64 + A0 h2 = A63 + A1 h3 = A62 + A2 A2 = h3 A 1 = h 2 A0 = h 1

172

A.3. RIPEMD-0 [RIPE95]

A.3

RIPEMD-0 [RIPE95]
n = 128 m = 16 w = 32 r=4 t=3 u = 16 s = 48

Paramtres par branche :

Expansion de message : Wj 16+k = Mj (k) . j (k ) 0 Tour j = 0 Tour j = 1 Tour j = 2 0 7 3 1 1 4 10 2 2 13 2 3 3 1 4 4 4 10 9 k -ime tape dans le tour 5 6 7 8 9 10 11 5 6 15 6 15 8 7 3 1 8 12 14 9 0 7 10 9 0 11 5 6

12 12 14 11

13 13 2 13

14 14 11 5

15 15 8 12

Valeurs dinitialisation :
R AL 3 = A3 =0x67452301 R AL 1 = A1 =0x98badcfe R AL 2 = A2 =0xefcdab89 R AL 0 = A0 =0x10325476

Transformation dtape :
L L L L L < < <si , AL i+1 = (Ai3 + j (Ai , Ai1 , Ai2 ) + Wi + Kj ) R R R R R < < <si AR . i+1 = (Ai3 + j (Ai , Ai1 , Ai2 ) + Wi + Kj )

Tour j 0 1 2 Tour j 0 0 1 2 Entre : AL 3 = h0 AR 3 = h0 Sortie : 11 7 11 1 14 6 13 2 15 8 14

j (x, y, z ) IF(x, y, z ) MAJ(x, y, z ) XOR(x, y, z )

L Kj

R Kj

0x00000000 0x5a827999 0x6ed9eba1 S16j +k 7 8 9 15 15 11 7 6

0x50a28be6 0x00000000 0x5c4dd124

3 12 13 7

4 5 11 14

5 8 9 9

6 7 7 13

9 13 12 8

10 14 15 13

11 15 9 6

12 6 7 12

13 7 11 5

14 9 13 7

15 8 12 5

AL 2 = h1 AR 2 = h1

AL 1 = h2 AR 1 = h2

AL 0 = h3 AR 0 = h3

R h 0 = AL 47 + A48 + A2 R h 2 = AL 45 + A46 + A0

R h1 = AL 48 + A45 + A1 R h 3 = AL 46 + A47 + A3

173

Annexe A. Spcication des fonctions de compression de la famille MD-SHA

A.4

RIPEMD-128 [DBP96]

Paramtres par branche : n = 128 m = 16 w = 32 r=4 t=4 u = 16 s = 64

Expansion de message : WL j 16+k = M L (k)


j

WjR 16+k = M R (k)


j

L (k ) j

0 Tour j = 0 Tour j = 1 Tour j = 2 Tour j = 3


R (k ) j

1 1 4 10 9

2 2 13 14 11

3 3 1 4 10

4 4 10 9 0

k -ime tape dans le tour 5 6 7 8 9 10 11 5 6 15 8 6 15 8 12 7 3 1 4 8 12 2 13 9 0 7 3 10 9 0 7 11 5 6 15

12 12 2 13 14

13 13 14 11 5

14 14 11 5 6

15 15 8 12 2

0 7 3 1

0 Tour j = 0 Tour j = 1 Tour j = 2 Tour j = 3 5 6 15 8

1 14 11 5 6

2 7 3 1 4

3 0 7 3 1

4 9 0 7 3

k -ime tape dans le tour 5 6 7 8 9 10 11 2 13 14 11 11 5 6 15 4 10 9 0 13 14 11 5 6 15 8 12 15 8 12 2 8 12 2 13

12 1 4 10 9

13 10 9 0 7

14 3 1 4 10

15 12 2 13 14

Valeurs dinitialisation :
R AL 3 = A3 =0x67452301 R AL 1 = A1 =0x98badcfe R AL 2 = A2 =0xefcdab89 R AL 0 = A0 =0x10325476

Transformation dtape :
L L L L L L L < < <si AL , i+1 = (Ai3 + j (Ai , Ai1 , Ai2 ) + Wi + Kj ) R R R R R R R < < <si AR . i+1 = (Ai3 + j (Ai , Ai1 , Ai2 ) + Wi + Kj )
R L

Tour j 0 1 2 3 174

L j (x, y, z ) XOR(x, y, z ) IF(x, y, z ) ONX(x, y, z ) IF(z, x, y )

R j (x, y, z ) IF(z, x, y ) ONX(x, y, z ) IF(x, y, z ) XOR(x, y, z )

L Kj

R Kj

0x00000000 0x5a827999 0x6ed9eba1 0x8f1bbcdc

0x50a28be6 0x5c4dd124 0x6d703ef3 0x00000000

A.4. RIPEMD-128 [DBP96] Tour j 0 0 1 2 3 Tour j 0 0 1 2 3 Entre : AL 3 = h0 AR 3 = h0 Sortie :


R h 0 = AL 63 + A64 + A2 R h 2 = AL 61 + A62 + A0 R h1 = AL 64 + A61 + A1 R h 3 = AL 62 + A63 + A3 L S16 j +k 7 8

1 14 6 13 12

2 15 8 6 14

3 12 13 7 15

4 5 11 14 14

5 8 9 9 15

6 7 7 13 9

9 13 12 8 14

10 14 15 13 5

11 15 9 6 6

12 6 11 5 8

13 7 7 12 6

14 9 13 7 5

15 8 12 5 12

11 7 11 11

9 15 15 8

11 7 14 9

1 9 13 7 5

2 9 15 15 8

3 11 7 11 11

4 13 12 8 14

5 15 8 6 14

6 15 9 6 6

R S16 j +k 7 8

9 7 7 13 9

10 8 12 5 12

11 11 7 14 9

12 14 6 13 12

13 14 15 13 5

14 12 13 7 15

15 6 11 5 8

8 9 9 15

5 11 14 14

7 7 12 6

AL 2 = h1 AR 2 = h1

AL 1 = h2 AR 1 = h2

AL 0 = h3 AR 0 = h3

175

Annexe A. Spcication des fonctions de compression de la famille MD-SHA

A.5

RIPEMD-160 [DBP96]

Paramtres par branche : n = 160 m = 16 w = 32 r=5 t=5 u = 16 s = 80

Expansion de message : WL j 16+k = M L (k)


j

WjR 16+k = M R (k)


j

L (k ) j

0 Tour j = 0 Tour j = 1 Tour j = 2 Tour j = 3 Tour j = 4


R (k ) j

1 1 4 10 9 0

2 2 13 14 11 5

3 3 1 4 10 9

4 4 10 9 0 7

k -ime tape dans le tour 5 6 7 8 9 10 11 5 6 15 8 12 6 15 8 12 2 7 3 1 4 10 8 12 2 13 14 9 0 7 3 1 10 9 0 7 3 11 5 6 15 8

12 12 2 13 14 11

13 13 14 11 5 6

14 14 11 5 6 15

15 15 8 12 2 13

0 7 3 1 4

0 Tour j = 0 Tour j = 1 Tour j = 2 Tour j = 3 Tour j = 4 5 6 15 8 12

1 14 11 5 6 15

2 7 3 1 4 10

3 0 7 3 1 4

4 9 0 7 3 1

k -ime tape dans le tour 5 6 7 8 9 10 11 2 13 14 11 5 11 5 6 15 8 4 10 9 0 7 13 14 11 5 6 6 15 8 12 2 15 8 12 2 13 8 12 2 13 14

12 1 4 10 9 0

13 10 9 0 7 3

14 3 1 4 10 9

15 12 2 13 14 11

Valeurs dinitialisation :
R AL 4 = A4 =0xc059d148 R AL 2 = A2 =0x1d840c95 R AL 3 = A3 =0x7c30f4b8 R AL 1 = A1 =0x98badcfe R AL 0 = A0 =0xefcdab89

Transformation dtape :
L < < <10 L L L < < <10 L < <si < < <10 AL + L ) + WiL + Kj )< + (AL , i+1 = ((Ai4 ) j (Ai , Ai1 , (Ai2 ) i3 ) R < < <10 R R R < < <10 R < <si < < <10 AR + R ) + WiR + Kj )< + (AR . i+1 = ((Ai4 ) j (Ai , Ai1 , (Ai2 ) i3 )
R L

Tour j 0 1 2 3 4 176

L j (x, y, z ) XOR(x, y, z ) IF(x, y, z ) ONX(x, y, z ) IF(z, x, y ) ONX(y, z, x)

R j (x, y, z ) ONX(y, z, x) IF(z, x, y ) ONX(x, y, z ) IF(x, y, z ) XOR(x, y, z )

L Kj

R Kj

0x00000000 0x5a827999 0x6ed9eba1 0x8f1bbcdc 0xa953fd4e

0x50a28be6 0x5c4dd124 0x6d703ef3 0x7a6d76e9 0x00000000

A.5. RIPEMD-160 [DBP96] Tour j 0 0 1 2 3 4 Tour j 0 0 1 2 3 4 Entre :


> > >10 AL 4 = (h0 ) > > >10 AR 4 = (h0 ) > > >10 AL 3 = (h4 ) > > >10 AR 3 = (h4 ) > > >10 AL 2 = (h3 ) > > >10 AR 2 = (h3 )

1 14 6 13 12 15

2 15 8 6 14 5

3 12 13 7 15 11

4 5 11 14 14 6

5 8 9 9 15 8

6 7 7 13 9 13

L S16 j +k 7 8

9 13 12 8 14 12

10 14 15 13 5 13

11 15 9 6 6 14

12 6 11 5 8 11

13 7 7 12 6 8

14 9 13 7 5 5

15 8 12 5 12 6

11 7 11 11 9

9 15 15 8 12

11 7 14 9 5

1 9 13 7 5 5

2 9 15 15 8 12

3 11 7 11 11 9

4 13 12 8 14 12

5 15 8 6 14 5

6 15 9 6 6 14

R S16 j +k 7 8

9 7 7 13 9 13

10 8 12 5 12 6

11 11 7 14 9 5

12 14 6 13 12 15

13 14 15 13 5 13

14 12 13 7 15 11

15 6 11 5 8 11

8 9 9 15 8

5 11 14 14 6

7 7 12 6 8

AL 1 = h2 AR 1 = h2

AL 0 = h1 AR 0 = h1

Sortie :
R < < <10 h 0 = AL + A0 79 + (A78 ) L < < <10 R < <10 < <10 h2 = (A77 ) + (A76 )< + (A2 )< R < < <10 h 4 = AL 80 + A79 + (A4 )
< < <10 < < <10 h1 = (AL + (AR + A 1 78 ) 77 ) L < < <10 R < <10 h3 = (A76 ) + A80 + (A3 )<

177

Annexe A. Spcication des fonctions de compression de la famille MD-SHA

A.6

SHA-0 [N-sha0]

Paramtres par branche : n = 160 m = 16 w = 32 r=5 t=4 u = 20 s = 80

Expansion de message : Wi = Mi , Wi3 Wi8 Wi14 Wi16 , pour 0 i 15 pour 16 i 79

Valeurs dinitialisation : A4 =0x0f4b87c3 A2 =0x62eb73fa Transformation dtape :


< <5 > >2 > >2 > >2 Ai+1 = (Ai )< + j (Ai1 , (Ai2 )> , (Ai3 )> ) + (Ai4 )> + W i + Kj .

A3 =0x40c951d8 A1 =0xefcdab89

A0 =0x67452301

Tour j 0 1 2 3 Entre :
< <2 A4 = (h4 )<

j (x, y, z ) IF(x, y, z ) XOR(x, y, z ) MAJ(x, y, z ) XOR(x, y, z )

Kj 0x5a827999 0x6ed9eba1 0x8f1bbcdc 0xca62c1d6

< <2 A3 = (h3 )<

< <2 A2 = (h2 )<

A 1 = h 1

A0 = h 0

Sortie : h0 = A80 + A0 > >2 > >2 h3 = (A77 )> + (A3 )> h1 = A79 + A1 > >2 > >2 h4 = (A76 )> + (A4 )>
> >2 > >2 h2 = (A78 )> + (A2 )>

178

A.7. SHA-1 [N-sha1]

A.7

SHA-1 [N-sha1]

Paramtres par branche : n = 160 m = 16 w = 32 r=5 t=4 u = 20 s = 80

Expansion de message : Wi = Mi , < <1 (Wi3 Wi8 Wi14 Wi16 )< , pour 0 i 15 pour 16 i 79

Valeurs dinitialisation : A4 =0x0f4b87c3 A2 =0x62eb73fa Transformation dtape :


< <5 > >2 > >2 > >2 Ai+1 = (Ai )< + j (Ai1 , (Ai2 )> , (Ai3 )> ) + (Ai4 )> + W i + Kj .

A3 =0x40c951d8 A1 =0xefcdab89

A0 =0x67452301

Tour j 0 1 2 3 Entre :
< <2 A4 = (h4 )<

j (x, y, z ) IF(x, y, z ) XOR(x, y, z ) MAJ(x, y, z ) XOR(x, y, z )

Kj 0x5a827999 0x6ed9eba1 0x8f1bbcdc 0xca62c1d6

< <2 A3 = (h3 )<

< <2 A2 = (h2 )<

A1 = h1

A0 = h 0

Sortie : h0 = A80 + A0 > >2 > >2 h3 = (A77 )> + (A3 )> h1 = A79 + A1 > >2 > >2 h4 = (A76 )> + (A4 )>
> >2 > >2 h2 = (A78 )> + (A2 )>

179

Annexe A. Spcication des fonctions de compression de la famille MD-SHA

A.8

SHA-256 [N-sha2, N-sha2b]

Paramtres par branche : n = 256 m = 16 w = 32 r=8 t=1 u = 64 s = 64

Expansion de message : Wi = Mi , 1 (Wi2 ) + Wi7 + 0 (Wi15 ) + Wi16 , avec pour 0 i 15 pour 16 i 63

> >7 > >18 >3 0 (x) = (x> ) (x> ) (x> ) > > >17 > > >19 > >10 1 (x) = (x ) (x ) (x )

Valeurs dinitialisation : A 3 A 1 B3 B1 Transformation dtape : Bi+1 = T + Ai3 Ai+1 = T + 0 (Ai ) + MAJ(Ai , Ai1 , Ai2 ) avec T = Bi3 + 1 (Bi ) + IF(Bi , Bi1 , Bi2 ) + Wi + Ki , et
> >2 > >13 >22 0 (x) = (x> ) (x> ) (x> ) > > >6 > > >11 > >25 1 (x) = (x ) (x ) (x )

=0xa54ff53a =0xbb67ae85 =0x5be0cd19 =0x62eb73fa

A 2 A0 B2 B0

=0x3c6ef372 =0x6a09e667 =0x1f83d9ab =0x510e527f

Valeurs Ki avec i = (ligne 4) + colonne 0x428a2f98 0x3956c25b 0xd807aa98 0x72be5d74 0xe49b69c1 0x2de92c6f 0x983e5152 0xc6e00bf3 0x27b70a85 0x650a7354 0xa2bfe8a1 0xd192e819 0x19a4c116 0x391c0cb3 0x748f82ee 0x90befffa 0x71374491 0x59f111f1 0x12835b01 0x80deb1fe 0xefbe4786 0x4a7484aa 0xa831c66d 0xd5a79147 0x2e1b2138 0x766a0abb 0xa81a664b 0xd6990624 0x1e376c08 0x4ed8aa4a 0x78a5636f 0xa4506ceb 0xb5c0fbcf 0x923f82a4 0x243185be 0x9bdc06a7 0x0fc19dc6 0x5cb0a9dc 0xb00327c8 0x06ca6351 0x4d2c6dfc 0x81c2c92e 0xc24b8b70 0xf40e3585 0x2748774c 0x5b9cca4f 0x84c87814 0xbef9a3f7 0xe9b5dba5 0xab1c5ed5 0x550c7dc3 0xc19bf174 0x240ca1cc 0x76f988da 0xbf597fc7 0x14292967 0x53380d13 0x92722c85 0xc76c51a3 0x106aa070 0x34b0bcb5 0x682e6ff3 0x8cc70208 0xc67178f2

180

A.8. SHA-256 [N-sha2, N-sha2b] Entre : A 3 = h 3 B3 = h7 Sortie : h0 = A64 + A0 h4 = B64 + B0 h1 = A63 + A1 h5 = B63 + B1 h2 = A62 + A2 h6 = B62 + B2 h3 = A61 + A3 h7 = B61 + B3 A 2 = h 2 B2 = h6 A 1 = h 1 B1 = h5 A0 = h 0 B0 = h4

181

Annexe A. Spcication des fonctions de compression de la famille MD-SHA

A.9

SHA-512 [N-sha2]
n = 512 m = 16 w = 64 r=8 t=1 u = 80 s = 80

Paramtres par branche :

Expansion de message : Wi = Mi , 1 (Wi2 ) + Wi7 + 0 (Wi15 ) + Wi16 , avec Valeurs dinitialisation : A 3 A 1 B3 B1 =0xa54ff53a5f1d36f1 =0xbb67ae8584caa73b =0x5be0cd19137e2179 =0x9b05688c2b3e6c1f A 2 A0 B2 B0 =0x3c6ef372fe94f82b =0x6a09e667f3bcc908 =0x1f83d9abfb41bd6b =0x510e527fade682d1 pour 0 i 15 pour 16 i 79

> >1 > >8 >7 0 (x) = (x> ) (x> ) (x> ) > > >19 > > >61 > >6 1 (x) = (x ) (x ) (x )

Transformation dtape : Bi+1 = T + Ai3 Ai+1 = T + 0 (Ai ) + MAJ(Ai , Ai1 , Ai2 ) avec T = Bi3 + 1 (Bi ) + IF(Bi , Bi1 , Bi2 ) + Wi + Ki , et
> >28 > >34 >39 0 (x) = (x> ) (x> ) (x> ) > > >14 > > >18 > >41 1 (x) = (x ) (x ) (x )

Valeurs Ki avec i = (ligne 4) + colonne 0x428a2f98d728ae22 0x3956c25bf348b538 0xd807aa98a3030242 0x72be5d74f27b896f 0xe49b69c19ef14ad2 0x2de92c6f592b0275 0x983e5152ee66dfab 0xc6e00bf33da88fc2 0x27b70a8546d22ffc 0x650a73548baf63de 0xa2bfe8a14cf10364 0xd192e819d6ef5218 0x19a4c116b8d2d0c8 0x391c0cb3c5c95a63 0x748f82ee5defb2fc 0x90befffa23631e28 0xca273eceea26619c 0x06f067aa72176fba 0x28db77f523047d84 0x4cc5d4becb3e42b6 0x7137449123ef65cd 0x59f111f1b605d019 0x12835b0145706fbe 0x80deb1fe3b1696b1 0xefbe4786384f25e3 0x4a7484aa6ea6e483 0xa831c66d2db43210 0xd5a79147930aa725 0x2e1b21385c26c926 0x766a0abb3c77b2a8 0xa81a664bbc423001 0xd69906245565a910 0x1e376c085141ab53 0x4ed8aa4ae3418acb 0x78a5636f43172f60 0xa4506cebde82bde9 0xd186b8c721c0c207 0x0a637dc5a2c898a6 0x32caab7b40c72493 0x597f299cfc657e2a 0xb5c0fbcfec4d3b2f 0x923f82a4af194f9b 0x243185be4ee4b28c 0x9bdc06a725c71235 0x0fc19dc68b8cd5b5 0x5cb0a9dcbd41fbd4 0xb00327c898fb213f 0x06ca6351e003826f 0x4d2c6dfc5ac42aed 0x81c2c92e47edaee6 0xc24b8b70d0f89791 0xf40e35855771202a 0x2748774cdf8eeb99 0x5b9cca4f7763e373 0x84c87814a1f0ab72 0xbef9a3f7b2c67915 0xeada7dd6cde0eb1e 0x113f9804bef90dae 0x3c9ebe0a15c9bebc 0x5fcb6fab3ad6faec 0xe9b5dba58189dbbc 0xab1c5ed5da6d8118 0x550c7dc3d5ffb4e2 0xc19bf174cf692694 0x240ca1cc77ac9c65 0x76f988da831153b5 0xbf597fc7beef0ee4 0x142929670a0e6e70 0x53380d139d95b3df 0x92722c851482353b 0xc76c51a30654be30 0x106aa07032bbd1b8 0x34b0bcb5e19b48a8 0x682e6ff3d6b2b8a3 0x8cc702081a6439ec 0xc67178f2e372532b 0xf57d4f7fee6ed178 0x1b710b35131c471b 0x431d67c49c100d4c 0x6c44198c4a475817

182

A.9. SHA-512 [N-sha2] Entre : A 3 = h 3 B3 = h7 Sortie : h0 = A80 + A0 h4 = B76 + B0 h1 = A79 + A1 h5 = B75 + B1 h2 = A78 + A2 h6 = B74 + B2 h3 = A77 + A3 h7 = B73 + B3 A 2 = h 2 B2 = h6 A 1 = h 1 B1 = h5 A0 = h 0 B0 = h4

183

Annexe A. Spcication des fonctions de compression de la famille MD-SHA

184

A NNEXE B

Conditions totales concernant les collisions locales pour SHA

185

Annexe B. Conditions totales concernant les collisions locales pour SHA

tape i i+1

type introduction correction corr. situation 1 (a,-,-)

propagation Aj i+1
+2 j +2 Aj i1 = Ai j +2 Ai1 = a p1 +2 Aj = a p2 i

addition = a et Wij a a =a

probabilit 1 /2 1 1/4 (1/2 si j = 31) 1 /2 1 /2

+5 Wij+1 = j +2 j Ai1 = Wi+2

i+2 IF

corr. situation 3 (a,p1 ,-) corr. situation 5 (a,-,p2 ) corr. situation 7 (a,p1 ,p2 ) corr. situation 1 (a,-,-)

p1 = p2
+2 Aj i1

Wij+2 = p2 a Wij+2 =a

1 1 /2 1 1

+2 Aj i

i+2 MAJ

corr. situation 3 (a,p1 ,-) corr. situation 5 (a,-,p2 ) corr. situation 7 (a,p1 ,p2 ) corr. situation 1 (a,-,-)

p1 = a p2 = a M AJ (a, p1 , p2 ) = Wij+2
+2 Aj i1 +2 Aj i

1 1/2 (1 si j = 31) 1 1

Wij+2

i+2 XOR

corr. situation 3 (a,p1 ,-) corr. situation 5 (a,-,p2 ) corr. situation 7 (a,p1 ,p2 ) corr. situation 2 (-,a,-)
2 Aj i+2 j Ai =

Wij+2 =1 a p1

= a p1 p2
2 Wij+3

1 1 /2 1 /2 0

=a

i+3 IF

corr. situation 3 (p1 ,a,-) corr. situation 6 (-,a,p2 ) corr. situation 7 (p1 ,a,p2 ) corr. situation 2 (-,a,-)

p2 = a
2 Aj i+2

2 Wij+3 =a 2 Wij+3

1 1 /2 1 1

Aj i

=a

i+3 MAJ

corr. situation 3 (p1 ,a,-) corr. situation 6 (-,a,p2 ) corr. situation 7 (p1 ,a,p2 ) corr. situation 2 (-,a,-)

p1 = a p2 = a
2 M AJ (p1 , a, p2 ) = Wij+3 j 2 j j 2 Ai+2 Ai = Wi+3 a

1 1/2 (1 si j = 1) 1 1

i+3 XOR

corr. situation 3 (p1 ,a,-) corr. situation 6 (-,a,p2 ) corr. situation 7 (p1 ,a,p2 )
2 Wij+3

= a p1 p2

TAB . B.1 PARTIE 1 - Conditions vrier pour la russite dune collision locale pour SHA-0 ou SHA-1, avec une perturbation introduite ltape i et la position j . Le signe de la perturbation est donne par la contraite Wij = a. La premire colonne dsigne ltape considere et la deuxime colonne prcise le type daction appliqu et la situation le cas chant. La troisime colonne (respectivement la quatrime) donne les conditions pour que la propagation (respectivement laddition) des diffrences binaires signes se comporte de faon linaire. Enn, la dernire colonne donne la probabilit de russite (entre parenthses est indique la probabilit lorsque la position considere est gale 31).

186

tape i

type introduction corr. situation 4 (-,-,a)

propagation

addition
j Aj i+1 = a et Wi = a

probabilit 1/ 2 1/ 2 1/ 2 0

i+4 IF

corr. situation 5 (p1 ,-,a) corr. situation 6 (-,p2 ,a) corr. situation 7 (p1 ,p2 ,a) corr. situation 4 (-,-,a)

2 Aj i+3 = 0 Aj i+2 = a

2 Wij+4

=a

p1
2 Wij+4 =a 2 Wij+4 =a

p2 = a
2 j Aj i+3 = Ai+2

1 1/ 2 1 1

i+4 MAJ

corr. situation 5 (p1 ,-,a) corr. situation 6 (-,p2 ,a) corr. situation 7 (p1 ,p2 ,a) corr. situation 4 (-,-,a)

p1 = a p2 = a
2 M AJ (p1 , p2 , a) = Wij+4 j 2 Ai +3

1 1/2 (1 si j = 1) 1 1

Aj i+2

2 Wij+4

i+4 XOR

corr. situation 5 (p1 ,-,a) corr. situation 6 (-,p2 ,a) corr. situation 7 (p1 ,p2 ,a)
2 Wij+4 = a p1 p2 2 Wij+5

1 1

i+5

correction

=a

TAB . B.2 PARTIE 2 - Conditions vrier pour la russite dune collision locale pour SHA-0 ou SHA-1, avec une perturbation introduite ltape i et la position j . Le signe de la perturbation est donne par la contraite Wij = a. La premire colonne dsigne ltape considere et la deuxime colonne prcise le type daction appliqu et la situation le cas chant. La troisime colonne (respectivement la quatrime) donne les conditions pour que la propagation (respectivement laddition) des diffrences binaires signes se comporte de faon linaire. Enn, la dernire colonne donne la probabilit de russite (entre parenthses est indique la probabilit lorsque la position considere est gale 31).

187

188

189

Rsum
Les fonctions de hachage se situent parmi les primitives les plus utilises en cryptographie, par exemple pour lauthentication ou lintgrit des messages. Contrairement tous les autres outils en cryptographie, ces fonctions nutilisent aucun secret, mais doivent tout de mme satisfaire des notions de scurit, telles que la rsistance la recherche de collisions ou de primages. Depuis de nombreuses annes, lalgorithme dextension de domaine de Merkle et Damgrd, coupl avec une fonction de compression ddie de la famille MD ou SHA, forme la base type dune fonction de hachage. Cependant, de rcentes avances en cryptanalyse ont fortement augment lattention que portent les chercheurs ce domaine. En rponse ces vulnrabilits, un appel soumissions organis par le NIST a rcemment t lanc. Bien que nous nous soyons aussi attachs la partie conception durant ces annes de recherche, dans ce mmoire nous nous intressons principalement la cryptanalyse des fonctions de hachage. Plus prcisment, nous nous concentrons sur la recherche de collisions pour la fonction de compression interne. Premirement, nous tudions et tendons les attaques rcentes sur les fonctions de hachage de la famille SHA, fonctions standardises et de loin les plus utilises en pratique. Les attaques considres tant trs complexes, nous avons concentr nos efforts pour expliciter tous les dtails ncessaires la comprhension totale du lecteur. Nous prsentons les deux meilleures attaques pratiques connues ce jour contre SHA-0 et SHA-1. Ensuite, nous dcrivons la premire attaque calculant des collisions pour la famille de fonctions de hachage G RINDAHL, un nouveau candidat reposant sur des principes de conception assez novateurs. Enn, nous tudions la fonction de hachage FORK-256 et montrons que ce schma ne peut tre considr comme cryptographiquement sr. Mots-cls: cryptographie symtrique, fonctions de hachage, cryptanalyse, SHA, G RINDAHL, FORK256.

Abstract
Hash functions are one of the most useful primitives in cryptography, for example in authentication or message integrity solutions. In contrast to other tools from cryptography, these functions manipulate no secret. Nonetheless, they must fulll some security properties such as collision resistance or preimage resistance. For several years, the typical building blocks of these functions have been the domain extension algorithm proposed by Merkle and Damgrd with a dedicated compression function from the MD or SHA family. However, recent cryptanalysis works raised the community attention upon this domain. In response to these vulnerabilities, a call for submissions has just been organised by the NIST. Even if we also sat ourselves in the design side during our research time, we will mostly concentrate on hash functions cryptanalysis in this thesis. More precisely, we will analyse the collision search problem for the internal compression function. Firstly, we study and extend recent attacks on the standardized hash functions from the SHA family, by far the most utilized candidate in practice. Since the attacks considered here are quite complex, we concentrated our efforts in describing all the details needed for a good understanding of the reader. We present the best known practical attacks against SHA-0 and SHA-1. Then, we describe the rst algorithm that nds collisions for the G RINDAHL family of hash functions, a new candidate based on innovative design concepts. Finally, we analyse the hash function FORK-256 and show that it cannot be considered as cryptographically strong. Keywords: Symmetric cryptography, Hash Functions, Cryptanalysis, SHA, G RINDAHL, FORK-256.

S-ar putea să vă placă și