Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Sécurité et preuves de sécurité des fonctions de hachage Charles Bouillaguet Département d’Informatique Ecole Normale Supérieure de Paris Septembre 2007 Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Les fonctions de hachage Qu’est-ce qu’une fonction de hachage et à quoi ça sert ? Quoi C’est simplement une fonction (déterministe) H : {0, 1}∗ → {0, 1}n n est “petit” (entre 100 et 200). Pourquoi très informellement Calculer des empreintes informellement Ressembler à une fonction aléatoire Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Les fonctions de hachage Propriétés indispensables Ce qui caractérise une fonction de hachage cryptographique F doit résister aux : 1 Pré-images 2 Secondes pré-images 3 Collisions Entrée y ∈ {0, 1}n (un haché) Sortie M tel que H(M) = y Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Les fonctions de hachage Propriétés indispensables Ce qui caractérise une fonction de hachage cryptographique F doit résister aux : 1 Pré-images 2 Secondes pré-images 3 Collisions Entrée M ∈ {0, 1}∗ (un message) Sortie M 0 6= M tel que H(M) = H(M 0 ) Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Les fonctions de hachage Propriétés indispensables Ce qui caractérise une fonction de hachage cryptographique F doit résister aux : 1 Pré-images 2 Secondes pré-images 3 Collisions Entrée ∅ Sortie M 6= M 0 tels que H(M) = H(M 0 ) Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Les fonctions de hachage Propriétés indispensables Ce qui caractérise une fonction de hachage cryptographique Difficulté relative Réductions entre les 3 notions F doit résister aux : 1 Pré-images 2 Secondes pré-images 3 Collisions Collision Coût pour une fonction aléatoire ≤ seconde pré-image ≤ pré-image Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Les fonctions de hachage Propriétés indispensables Ce qui caractérise une fonction de hachage cryptographique Difficulté relative Réductions entre les 3 notions F doit résister aux : 1 Pré-images 2 Secondes pré-images 3 Collisions Collision 2n/2 Coût pour une fonction aléatoire ≤ seconde pré-image 2n ≤ pré-image 2n Présentation du problème Une Nouvelle Attaque en seconde pré-image Exemples réalistes d’utilisation des fonctions de hachage Exemple 1 : vérification de mot de passe Si on envoie le mot de passe en clair... Charlie peut s’en emparer ! Preuve de sécurité Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Exemples réalistes d’utilisation des fonctions de hachage Exemple 1 : vérification de mot de passe Si on envoie le mot de passe en clair... Charlie peut s’en emparer ! Preuve de sécurité Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Exemples réalistes d’utilisation des fonctions de hachage Exemple 1 : vérification de mot de passe A la place, on envoie le haché du mot de passe Charlie peut s’emparer du haché... mais comment retrouver le mot de passe ? Il faut trouver une pré-image de H Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Exemples réalistes d’utilisation des fonctions de hachage Exemple 1 : vérification de mot de passe A la place, on envoie le haché du mot de passe Charlie peut s’emparer du haché... mais comment retrouver le mot de passe ? Il faut trouver une pré-image de H Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Exemples réalistes d’utilisation des fonctions de hachage Exemple 1 : vérification de mot de passe A la place, on envoie le haché du mot de passe Charlie peut s’emparer du haché... mais comment retrouver le mot de passe ? Il faut trouver une pré-image de H Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Exemples réalistes d’utilisation des fonctions de hachage Exemple 1 : vérification de mot de passe A la place, on envoie le haché du mot de passe Charlie peut s’emparer du haché... mais comment retrouver le mot de passe ? Il faut trouver une pré-image de H Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Exemples réalistes d’utilisation des fonctions de hachage Exemple 2 : schéma de signature Taille signature = taille M Signatures trop grosses, pas pratique. Preuve de sécurité Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Exemples réalistes d’utilisation des fonctions de hachage Exemple 2 : schéma de signature paradigme “Hash-and-Sign” produit de petites signatures la sécurité dépend alors aussi de H Preuve de sécurité Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Exemples réalistes d’utilisation des fonctions de hachage Exemple 2 (suite) : attaque contre le schéma de signature Si Alice peut calculer la collision (M, M 0 )... Alors elle peut signer M et prétendre avoir signé M 0 ! Heureusement, on contrôle généralement peu M et M 0 Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Exemples réalistes d’utilisation des fonctions de hachage Exemple 2 (suite) : attaque contre le schéma de signature M = “Alice doit $$100,000,000 à Charlie” Si Alice peut maintenant calculer des secondes pré-images Alice peut signer un gros chèque M Et prétendre avoir signé M 0 , un message inoffensif ! Ou bien faire signer M 0 à Charlie... Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion La principale construction et ses défauts La construction de Merkle-Damgård (1989) Une méthode populaire et répandue pour fabriquer des fonctions de hachage découper M en blocs de m bits : M = x1 , x2 , . . . , xr appliquer un padding spécial sur le dernier bloc itérer une fonction de compression F sur les xi F : {0, 1}n+m → {0, 1}n on obtient H F : {0, 1}∗ → {0, 1}n Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité La principale construction et ses défauts Attaques en seconde pré-image sur Merkle-Damgård Une attaque naïve qui ne marche pas trouver un bloc B qui connecte l’IV à hi0 . Coût : 2n /M M 0 = B.xi0 . . . xr est une seconde pré-image 0 M > M ! Le padding fait échouer l’attaque. Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion La principale construction et ses défauts Attaques en seconde pré-image sur Merkle-Damgård (suite) L’attaque de Kelsey et Schneier (2005) Problème : M 6= M 0 + padding Solution : messages expandables. Famille de messages... de différentes tailles de même haché (avant padding) Collisions entre messages de longueurs différentes assemblage : (M1 |M10 ).(M2 |M20 ). . . . .(Mk |Mk0 ) haché final : hk Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion La principale construction et ses défauts Attaques en seconde pré-image sur Merkle-Damgård (suite) L’attaque de Kelsey et Schneier (2005) Problème : M 6= M 0 + padding Solution : messages expandables. Famille de messages... de différentes tailles de même haché (avant padding) Collisions entre messages de longueurs différentes assemblage : (M1 |M10 ).(M2 |M20 ). . . . .(Mk |Mk0 ) haché final : hk Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité La principale construction et ses défauts Bilan Avec M ≤ 2k , coût de l’attaque de Kelsey et Schneier : n k · 2 2 +1 + 2n−k +1 MD5 : n = 128, k = 55 274 opérations pour une seconde pré-image Améliorer Les fonctions de compression Ici : La façon dont on les utilise Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Nouvelles propositions Nouvelles propositions récentes de mode opératoire On en étudie deux : HAIFA et Rivest Point commun : ajout d’une perturbation à l’entrée de F HAIFA : un compteur sur 64 bits Rivest : un élément d’une suite apériodique codé sur 2 bits HAIFA Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Nouvelles propositions Le “dithering” Analogie avec les techniques de traitement d’image Introduction d’une perturbation aléatoire noir et blanc (majorité simple) original (niveaux de gris) noir et blanc (dithering) Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Nouvelles propositions Proposition de Rivest : dithering sans carré Rivest : séquence de dithering infinie z sans carré répétitions ⇒ variante de Kelsey et Schneier carré : banane séquence infinie sans carré : Thue-Morse (1906) Séquence de Keränen (1992) abcacdcbcdcadcdbdabacabadbabcbdbcbacbcdcacbabdabacadcbcdcacdbcbacbcdcacdcbdcdadb... Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Nouvelles propositions Le dithering empêche l’attaque de Kelsey et Schneier 2 bits de perturbations sont suffisants Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Nouvelles propositions Le dithering empêche l’attaque de Kelsey et Schneier 2 bits de perturbations sont suffisants Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Nouvelles propositions Problème Quelle est la sécurité de ces deux schéma ? Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Principaux résultats Objectifs du stage 1 Essayer de trouver une attaque sur Rivest ... 2 Essayer de prouver des garanties de sécurité pour ces deux constructions Le reste de cet exposé : 1 Une nouvelle attaque générique en seconde pré-image La proposition de Rivest est cassée 2 Une preuve de sécurité sur la seconde pré-image L’attaque de Kelsey et Schneier est optimale HAIFA est résistant aux attaques génériques Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Principaux résultats Objectifs du stage 1 Essayer de trouver une attaque sur Rivest ... 2 Essayer de prouver des garanties de sécurité pour ces deux constructions Le reste de cet exposé : 1 Une nouvelle attaque générique en seconde pré-image La proposition de Rivest est cassée 2 Une preuve de sécurité sur la seconde pré-image L’attaque de Kelsey et Schneier est optimale HAIFA est résistant aux attaques génériques Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Contourner le dithering : une nouvelle technique Gérer le dithering Le dithering perturbe la construction des messages expandables leur “connexion” au message M =⇒ nouvelle technique pour construire des M.E. plus souple : supporte la perturbation plus coûteuse... Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Contourner le dithering : une nouvelle technique Nouvelle technique pour les messages expandables inspirée par la “structure en diamant” de Kelsey et Kohno (2006) Grosse multicollision en forme d’arbre binaire complet Permet d’atteindre un haché (la racine) à partir de 2hauteur hachés. Construction : n naïvement 2 2 +`+1 plus malin 2 2 + 2 +2 (` = hauteur) n ` Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Contourner le dithering : une nouvelle technique Application aux secondes pré-images n ` 1 construire la multicollision 2 2 + 2 +2 2 connecter hM et le message M 2n−k +1 3 choisir un préfixe P arbitraire avantage ! 4 connecter P et la multicollision 2n−`+1 5 assembler les morceaux gratuit Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Contourner le dithering : une nouvelle technique Coût de l’attaque s’il n’y a pas le dithering En fonction de ` : n ` 2 2 + 2 +2 + 2n−`+1 + 2n−k +1 Minimal pour l = n 3 2n 2 3 +2 + 2n−k +1 Kelsey et Schneier Général MD5 (n = 128, k = 55) SHA-1 (n = 160, k = 55) k ·2 n +1 2 2n−k +1 + 274 2106 Ici 2 2n +2 3 + 2n−k +1 286 2109 Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Et avec le dithering... Dans le cas du dithering de Rivest Chaque fois qu’on connecte la racine à M, il faut vérifier que les lettres correspondent. Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Et avec le dithering... Analyse du coût sans dithering arbre de collision utile partout avec dithering utile à certaines positions seulement Question Est-ce que le mot utilisé pour construire l’arbre est fréquent dans z ? ? ? Dans le pire des cas : fréquence ' 1/[ # facteurs de taille ` de z] Automatiquement : # facteurs de taille ` de z ? ? ? Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Et avec le dithering... Analyse du coût (suite) De la cryptologie aux langages formels Lemme Si ` ≤ 85, Factz (`) ≤ 8 · ` + 332 Number of factors of length k in the Keranen sequence 800 |Factz(k)| 8*k+332 700 600 + beaucoup d’autres résultats plus ou moins généraux |factz(k)| 500 400 300 200 100 0 10 20 30 40 50 Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Et avec le dithering... Analyse du coût (fin) Coût de l’attaque : n ` 2 2 + 2 +2 + Factz (`) · 2n−k +1 + 2n−`+1 avec la séquence de Keränen et n ≥ 3k : (k + 39) · 2n−k +4 Pour SHA-1 (n = 160, k = 55) : 2115.5 une seconde pré-image devrait coûter 2160 =⇒ Cassé Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité l’autre côté de la sécurité Obtenir des garanties Les attaques donnent une borne supérieure sur la sécurité. quid d’une borne inférieure ? Peut-on prouver que HAIFA est résistant à ce genre d’attaques ? OUI ! Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Les idées de Merkle-Damgård dans le modèle de l’Oracle Aléatoire Résultat de sécurité Théorème Si F est une fonction aléatoire, alors avec Q évaluations de F , la probabilité qu’un adversaire (non borné) trouve une pré-image de M sur HAIFA est : Q P A réussit ≤ n 2 Conséquence Pour obtenir une seconde pré-image, il faut évaluer F 2n fois ! HAIFA est résistant aux attaques (génériques) en seconde pré-image. Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Les idées de Merkle-Damgård dans le modèle de l’Oracle Aléatoire Résultat similaire sur Merkle-Damgård Théorème (variante) Si F est une fonction aléatoire, alors avec Q évaluations de F , la probabilité qu’un adversaire (non borné) trouve une pré-image de M sur Merkle-Damgård normal est : Q · M P A réussit ≤ 2n Conséquence Pour obtenir une seconde pré-image, il faut évaluer F 2n /M fois ! L’attaque de Kelsey et Schneier est optimale (parmi les attaques génériques). Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Autres résultats Nous avons étudié des variantes de la proposition de Rivest autres séquences sans carré mélange compteur/séquence sans carré séquence pseudo-aléatoire =⇒ toutes cassées L’attaque marche aussi contre une fonction de Shoup pas Merkle-Damgård Première attaque connue Il y a une preuve de sécurité : l’attaque est optimale Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Résumé Une nouvelle attaque générique efficace contre la proposition de Rivest Tellement générique qu’elle s’applique aussi à d’autres constructions Condamne certaines manières de réparer le schéma de Merkle-Damgård HAIFA est résistant aux attaques génériques Perspectives Trouver d’autres solutions aussi simples que HAIFA mais plus rapides Participer à la réflection sur les candidats pour la compétition du NIST Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion La construction de Merkle-Damgård (1989) Propriété principale Théorème [Merkle et Damgård, 1989] Si le padding contient l’encodage en binaire de M , alors une collision sur H F induit une collision sur F . “transmet” la résistance aux collisions de F à H F Utilisé dans MD5, SHA-1, SHA-2, Whirpool, Tiger, Snefru rien concernant la résistance aux (secondes) pré-images Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Schéma de l’attaque de Kelsey et Schneier 1 (M, hM ) ← Précalcul() 2 (x, i0 ) ← Connection (M, hM ) 3 P ← Instanciation (M, i0 − 1) 4 M 0 ← Assemblage(P, x, i0 , M) = P || x || xi0 . . . xr Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Comment empêcher l’attaque ? Pour empêcher l’attaque Pour empêcher l’attaque, il faut un nombre de facteur exponentiel. ⇒ dithering avec un compteur sur k bits (HAIFA) simple, efficace, k bits perdus pour le message... ⇒ dithering pseudo-aléatoire (répétitions ?) moins de bits perdus, plus compliqué, analyse délicate Conclusion Présentation du problème Une Nouvelle Attaque en seconde pré-image Preuve de sécurité Conclusion Comment empêcher l’attaque ? Idées de la preuve Cas de Merkle-Damgård on part de [Merkle-Damgård] : seconde pré-image ⇒ collision sur F L’adversaire a trouvé x, m et m0 t.q. m hi−1 − → hi x F m − → hi F Cependant, cette collision est contrainte hi−1 vit dans un ensemble de taille M plus dure à trouver qu’une collision libre F aléatoire paradoxe des anniversaires il faut environ 2n /M évaluations de F