Cours6PL Newhachage
Cours6PL Newhachage
Cours6PL Newhachage
Pierre-Louis CAYREL
<pierre.louis.cayrel@univ-st-etienne.fr>
d’après un cours de
Florent BERNARD
<florent.bernard@univ-st-etienne.fr>
21 mars 2013
I But :
I prouver l’identité de leur auteur et/ou
I l’accord du signataire avec le contenu du document
Alice veut être certaine qu’elle est bien en relation avec Bob et pas
avec Eve.
I Si Alice et Bob partagent une clé secrète K
I Principe
1. Alice choisit un message M quelconque et le chiffre avec K .
2. Bob le déchiffre et renvoie M à Alice qui vérifie que Bob a bien pû
déchiffrer
(Eve n’apprend rien sur la clé K )
I Attention : ce protocole ne convient pas pour l’accès par mot de
passe à un ordinateur (stockage de K déconseillé et stockage de
f (K ), où f est une fonction à sens unique, sensible aux attaques
par dictionnaire).
I Solution possible : salage des mots de passe.
Définition
Une fonction de hachage H : {0, 1}∗ −→ {0, 1}n
I Facilement calculable
I transforme une chaîne de bits de longueur arbitraire en une
chaîne de bits de longueur fixe n
La chaîne ainsi obtenue (y = H(x)) est appelée empreinte de
Hachage
Définition
On parle de collision entre x et x 0 lorsque :
x 6= x 0
H(x) = H(x 0 )
Question
Combien faut il réunir de personnes pour avoir une chance sur deux
qu’au moins deux d’entre elles aient leur anniversaire le même jour
(pas forcément la même année) ?
Réponse
???
+∞
X xi
e−x = 1 − x + (−1)i
i!
i=2
∀x ∈ R, e−x ≥ 1 − x
i i
⇒ ∀i ∈ [1, k − 1], e− m ≥ 1 − m
−1
kY −1
kY
i
i (k −1)k
e− m ≥ 1− ⇔ e− 2m ≥ pk
m
i=1 i=1
(k −1)k
⇔ 1 − pk ≥ 1 − e− 2m
(k −1)k
Bilan : Pour avoir 1 − pk > α, il suffit d’avoir 1 − e− 2m >α
Question
Combien faut il réunir de personnes pour avoir une chance sur deux
qu’au moins deux d’entre elles aient leur anniversaire le même jour
(pas forcément la même année) ?
Réponse
23 !
Attaque de Yuval
∗ n
Soit H : {0, 1} −→ {0, 1} une fonction de hachage
I Entrée : M message initial ; M
e message corrompu
I Sortie : M 0 ≈ M et M
e 0 tels que H(M 0 ) = H(M
e 0 ).
n
1. générer 2 2 modifications mineures de M notées M 0
I pour chacune, calculer H(M 0 ) et les stocker dans une table T
2. générer des Me 0 , modifications mineures de M
e jusqu’à ce qu’un
0
H(M
e ) soit dans T (collision).
I Application : Répudiation
I Envoyer M et soutenir avoir envoyé M.
e
n bits
hi−1 h hi
IV de taille n h h h h H(M)
Théorème de Merkle-Damgård
Si h est résistante aux collisions, alors H l’est aussi.
hi = EM (hi−1 ) ⊕ hi−1
h i
x EK (x)
n bits
n bits
hi−1 E hi
Construction de Matyas-Meyer-Oseas
b bits
hi = Eg(h (Mi ) ⊕ Mi
h i−1 )
g
K
x EK (x)
n bits
n bits
hi−1 E hi
Construction de Miyaguchi-Preneel
b bits
g
K
x EK (x)
n bits
n bits
hi−1 E hi
1991 MD5
1993 SHA
1994 SHA-1
1999 Whirlpool-0
2003 SHA-224
2004 Whirlpool
fonction
de H(M) Canal sécurisé
hachage 01011010 . . . 110101 H(M) = H(M 0 ) ?
Message M Message M’
blablablablablabla blablablablablabla
blablablablablabla blablablablablabla
blablablablablabla blablablablablabla
blablablablablabla Canal non sécurisé blablablablablabla
blablablablablabla blablablablablabla fonction
blablablablablabla blablablablablabla de
blablablablablabla blablablablablabla hachage H(M 0 )
blablablablablabla blablablablablabla 01011010 . . . 110101
H(M) = H(M 0 ) ?
fonction
de H(M) H(M)
hachage 01011010 . . . 110101 01011010 . . . 110101
Message M Message M’
H(M 0 )
blablablablablabla E D blablablablablabla 01011010 . . . 110101
blablablablablabla blablablablablabla
blablablablablabla blablablablablabla
blablablablablabla blablablablablabla
blablablablablabla blablablablablabla fonction
blablablablablabla blablablablablabla de
blablablablablabla blablablablablabla hachage
blablablablablabla blablablablablabla
Définition
I Fonction de hachage à sens unique paramétrée par une clé K
(x1 , HK (x1 ))
(x2 , HK (x2 ))
I ∀K inconnu et .. , il est impossible de calculer une
.
(xi , HK (xi ))
paire (x, HK (x)) avec x 6∈ {x1 , . . . , xi }
On note HK (x) l’empreinte de x.
HK (M) = HK (M 0 ) ?
M1 M2 Mn