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

Documents pareils