Hachage et multicollisions
Transcription
Hachage et multicollisions
Hachage et multicollisions Antoine Joux Séminaire Crypto ENS, 12 novembre 2009 Antoine Joux Hachage et multicollisions Securité des fonctions de hachage I Propriétés attendues : I I I I I Sens Unique Résistance aux préimages Résistance aux secondes préimages Sans collisions Occasionnellement : I Sans Multicollisions Antoine Joux Hachage et multicollisions Résistance aux collisions Soit H une fonction de hachage sur n bits. I Soit un ensemble S Il doit être dur de trouver M et M 0 distincts tel que H(M) = H(M 0 ). I Attaque générique par paradoxe des anniversaires I Temps de l’attaque proportionnel à 2n/2 Antoine Joux Hachage et multicollisions Collisions: un problème de définition Tentative de définition. I On dit que H résiste aux collisions si aucun adversaire efficace ne peut réussir le jeu suivant: I I Trouver M et M 0 tel que H(M) = H(M 0 ) Bien sûr des collisions existent (H(M0 ) = H(M1 )). Antoine Joux Hachage et multicollisions Collisions: un problème de définition Tentative de définition. I On dit que H résiste aux collisions si aucun adversaire efficace ne peut réussir le jeu suivant: I Trouver M et M 0 tel que H(M) = H(M 0 ) I Bien sûr des collisions existent (H(M0 ) = H(M1 )). I Soit le programme: I I Imprimer M0 , M1 Ce programme existe et est efficace Antoine Joux Hachage et multicollisions Résistance aux Multi-Collisions I Soit un ensemble S I Soit un entier k Il doit être dur de trouver M1 , . . . , Mk tels que H(M1 ) = · · · = H(Mk ). I Attaque générique par paradoxe des anniversaires généralisé I Temps de l’attaque proportionnel à 2n·(k−1)/k I Même difficulté de définition que les collisions Antoine Joux Hachage et multicollisions Construction usuelle: Hachage itéré (Merkle-Damgård) I Autorise le hachage “à la volée”. I Impact sur la sécurité ? Antoine Joux Hachage et multicollisions Fonction de compression I La fonction de compression est très souvent de la forme : f (h, B) = πB (h) + h I I Où, πb est une famille de permutations, et + une loi de groupe assez simple Pourquoi : I I L’utilisation de permutations évite les collisions internes L’addition finale empêche les calculs arrières Antoine Joux Hachage et multicollisions Multicollisions sur les fonctions de hachage itérées Les fonctions de hachage itérées ont des multicollisions I Trouver des k-collisions pour k > 2 est plus facile que prévu I Même pour k très grand, cela reste facile I On peut trouver des 2t -collisions en temps t · 2n/2 Antoine Joux Hachage et multicollisions Multicollisions sur les fonctions de hachage itérées Supposons les blocs plus grands que les états internes : I Collision sur un bloc partant de x coûte 2n/2 . I Graphiquement : B x r - ry B0 Antoine Joux Hachage et multicollisions 4-collisions I Avec deux appels, on a : C B x r - ry r - rz C0 B0 I Cela donne la 4-collision suivante : rz C * rH y H r B j H r 0 * z C r ⇒ 4-collision x H HH r z C * B 0j r y rH HH j r 0 C z Antoine Joux Hachage et multicollisions 2t -collisions I De la même façon, avec t appels : B B B B -1 -2 -3 -t r r r r r r r . . . ht−1 - r ht h0 h3 h1 h2 0 0 0 B3 B1 B2 Bt0 On obtient une 2t -collision Antoine Joux Hachage et multicollisions Exemple d’application des Multicollisions Antoine Joux Hachage et multicollisions Composition de deux fonctions de hachage I I Le but est d’accroı̂tre la sécurité Construction naturelle : I A partir de H et G former : (H(M)kG(M)). I Permet de construire une fonction sur 256 bits à partir de deux fonctions sur 128 bits. Antoine Joux Hachage et multicollisions Sécurité I Avec des fonctions de hachage idéales, la construction est sûre. I Avec des fonctions réelles ? L’idée usuelle est: I I I Avec deux fonctions similaires, cela semble risqué Avec deux fonctions “indépendantes”, cela parait raisonnable Antoine Joux Hachage et multicollisions Sécurité I Avec des fonctions de hachage idéales, la construction est sûre. I Avec des fonctions réelles ? L’idée usuelle est: I I I Avec deux fonctions similaires, cela semble risqué Avec deux fonctions “indépendantes”, cela parait raisonnable L’utilisation des multicollisions permet une attaque sur la concaténation de fonctions itérées Antoine Joux Hachage et multicollisions Illustration I Soit G et H, deux fonctions de hachage itérées sur n bits I Trouver une 2n/2 -collision sur G I Avec bonne probabilité, on trouve M et M 0 tels que H(M) = H(M 0 ) I Comme M et M 0 collisionnent aussi sur G, on a : (H(M)kG(M)) = (H(M 0 )kG(M 0 )) I Le temps de calcul est O(n · 2n/2 ). Antoine Joux Hachage et multicollisions Quelques autres applications I Kelsey et Schneier (Eurocrypt 2005) I I Kelsey, Kohno (Eurocrypt 2008) I I Attaque de seconde préimage sur les messages longs Attaque de Nostradamus Généralisations: I I Nandi, Stinson Hoch, Shamir Antoine Joux Hachage et multicollisions Algorithmique des (multi-)collisions Antoine Joux Hachage et multicollisions Cas des (2-)collisions I I Possible de supprimer la mémoire Algorithme de recherche de cycles de Xn+1 = F (Xn ) I I I Brent Floyd Nivasch X0 Queue Cycle Antoine Joux Hachage et multicollisions Méthode de Nivasch I Calculer la suite Xn+1 = F (Xn ) I Garder une liste de plus petites valeurs rencontrées: L0 < L1 < · · · < Lk I On stocke des couples (Li , Ni ) I Si Li < Xn < Li+1 , faire (Li+1 , Ni+1 ) ←− (Xn , n) et effacer la fin de L I Si Li = Xn , cycle de longueur n − ni Entrée du cycle ⇒ Collision Antoine Joux Hachage et multicollisions Multicollisions: analyse bien connue I Une k -collision pour F est un k -uplet tel que: F (a1 ) = F (a2 ) = · · · = F (ak ) I En général, dure à trouver, nécessite: k! N (k−1)/k évaluations de F . Antoine Joux Hachage et multicollisions Algorithme simple pour les k-collisions I Évaluer F en k! N (k−1)/k points aléatoires I Trier I Recherche k égalité successives (non-triviales) Très coûteux en termes de mémoire. Pas vraiment parallélisable. Antoine Joux Hachage et multicollisions Cas des 3-collisions I Algorithme simple ⇒ temps: N 2/3 , mémoire: N 2/3 I De plus, parallélisme quasi-inutile. Peut on faire mieux ? Antoine Joux Hachage et multicollisions Une première approche I Utiliser l’algo de Nivasch sur F ◦ π I Pour construire N 1/4 collisions distinctes. I Puis évaluer F en N 3/4 valeurs aléatoires. Valeur commune ⇒ 3-Collision. I Temps: N 3/4 , mémoire: N 1/4 I Parallélisme possible, mais nécessite N 1/4 mem/proc Antoine Joux Hachage et multicollisions Pour aller plus loin I Objectif: construire N 1/3 collisions en temps N 2/3 I Puis évaluer F en N 2/3 valeurs aléatoires. Valeur commune ⇒ 3-Collision. I Temps: N 2/3 , mémoire: N 1/3 I Parallélisme possible, mais nécessite N 1/3 mem/proc Comment atteindre l’objectif ? Antoine Joux Hachage et multicollisions Collisions moins chères I Phase 1: I I I 1/3 ) Phase 2: I I I Construire N 1/3 chaı̂nes aléatoires (s, f ) avec f = F (N Trier par valeurs de f Contruire des chaı̂nes aléatoires Lorsque F (i) (x) est une valeur stockée, aller en phase 3 Phase 3: I I I 1/3 On a F (N ) (s) = F (i) (x) 1/3 Donc F (i) (F (N −i) (s)) = F (i) (x) En général ⇒ Collision N 1/3 collisions en temps N 2/3 avec mémoire N 1/3 Antoine Joux Hachage et multicollisions (s) Approche parallélisable I Utilisation de Points distingués I Un point x est distingué si x < M (M ≈ N 2/3 ) I Hypothèse: Np ≈ N 1/3 processeurs Phase 1: chaque processeur fait: I I I I I I Choisir x0 aléatoire Calcul itéré de xi+1 = F (xi ) Stop quand xi < M (ou i > 20 N 1/3 ) Envoi de (xi , x0 , i) au processeur numéro xi (mod Np ) Phase 2: chaque processeur fait: I I I Collecter les triplets (D, X , `) avec D commun Recalculer les chaı̂nes (synchronisées) Gagné si collision simultanée de 3 chaı̂nes 3-collisions en temps N 1/3 avec N 1/3 processeurs (mémoire/processeur constante) Antoine Joux Hachage et multicollisions Avec moins de processeurs 3-collisions en temps N 2/3−θ avec N θ processeurs (mémoire/processeur N 1/3−θ ) Antoine Joux Hachage et multicollisions Exemple I Fonction basée sur le DES: F (x) = DESK1 (x) ⊕ DESK2 (x), avec K1 = (3322110077665544)16 et K2 = (3b2a19087f 6e5d4c)16 . I Calcul réalisé avec une combinaison Processeurs et Cartes graphiques1 I On trouve par exemple: F (d332b9ba5e5a7d4e) = F (51b8095db532afcc) = F (b084dc15dce042ab) 1 Merci au CEA/DAM pour le prêt du temps de calcul. Antoine Joux Hachage et multicollisions Détails de l’exemple I Choix des paramètres: I I I M = 244 ⇒ chaines de longueur moyenne 220 Calcul de 35 447 322 chaines ⇒ 3 078 699 groupes de 3 chaines ou plus (max. 36) Première phase du calcul: I Mélange de CPUs et de cartes graphiques I I I Temps de calcul équivalent à: I I I 94 jours sur 1 Xeon ou 11.5 sur 1 Tesla Deuxième phase du calcul: I I Xeon seulement, pour simplifier la programmation Temps de calcul équivalent à: I I 32 Intel Xeon à 2.8 GHz 8 Cartes Nvidia CUDA (Tesla) 18 jours sur 1 Xeon Au total, 3 triple collisions trouvées Antoine Joux Hachage et multicollisions Cas des k-collisions I Algorithme simple ⇒ temps: N (k−1)/k , mémoire: N (k−1)/k Antoine Joux Hachage et multicollisions Cas des k-collisions I Algorithme simple ⇒ temps: N (k−1)/k , mémoire: N (k−1)/k I Généralisation de la méthode des points distingués (θ ≤ (k − 2)/k) k -collisions en temps N (k −1)/k −θ avec N θ processeurs (mémoire/processeur N (k−2)/k−θ ) Antoine Joux Hachage et multicollisions Une application possible I Amélioration de l’attaque de Ferguson et Lucks sur AURORA (eprint 2009/113) I Malgré tout, l’attaque reste irréaliste Antoine Joux Hachage et multicollisions Conclusion