Sécurité et preuves de sécurité des fonctions de hachage

publicité
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
Téléchargement