Ecole normale sup´ ´ erieure 2018-2019 D´ epartement d’informatique
Introduction ` a la cryptologie TD n ◦ 7 : Correction.
Exercice 1 ( ´ Echauffement).
1. Si les deux propri´ et´ es sont vraies pour tout g´ en´ erateur, trivialement il existe un g´ en´ erateur tel qu’elles sont vraies (on suppose G non vide). R´ eciproquement, supposons qu’il existe un g´ en´ erateur g tel que les deux propri´ et´ es sont vraies. Soit h = g x un g´ en´ erateur de G . On a :
• e(h, h) = e(g, g) x2 6= 1 ; en effet e(g, g) 6= 1, donc comme G T est cyclique, e(g, g) est g´ en´ erateur, et d’autre part x 6= 0 puisque g x est g´ en´ erateur, donc e(g, g) x2 6= 1.
6= 1.
• e(h a , h b ) = e(g, g ) x2ab = e(h, h) ab .
2. Soit un triplet (g a , g b , g c ). On veut v´ erifier si c = ab (modulo p). Pour cela, il suffit de v´ erifier : e(g a , g b ) = ? e(g c , g).
En effet, l’´ egalit´ e est vraie ssi e(g, g) ab = e(g, g) c , ssi ab = c mod p parce que e(g, g) 6= 1 et le groupe est cyclique, ce qui implique que e(g, g) est g´ en´ erateur donc l’´ egalit´ e e(g, g) ab = e(g, g) c ne peut avoir lieu que si les exposants sont ´ egaux mod p.
Exercice 2 ( ´ Echange de clef sans interaction ` a trois participants).
1. A, B, C tirent respectivement une valeur uniform´ ement al´ eatoire a, b, c, et publient respecti- vement g a , g b , g c . Pour trouver le secret commun A, B, C calculent respectivement e(g b , g c ) a , e(g a , g c ) b , e(g a , g b ) c . Les propri´ et´ es du couplage e garantissent que ces trois valeurs sont ´ egales
`
a e(g, g) abc , les trois parties obtiennent donc bien une valeur commune. D’autre part, un adver- saire qui observe les communications obtient g a , g b , g c . Retrouver le secret commun e(g, g) abc est difficile pour lui, puisqu’il s’agit exactement d’une instance du probl` eme de Diffie-Hellman bilin´ eaire.
2. Supposons qu’on a n + 1 participants A 1 , . . . , A n+1 . Le participant A k tire a k uniform´ ement al´ eatoirement et publie g ak. Apr` es avoir re¸ cu g ai pour i 6= k des autres participants, il calcule le secret commun :
pour i 6= k des autres participants, il calcule le secret commun :
e n (g 1 a , . . . , g ak−1, g ak+1, . . . , g an+1) ak = e n (g, . . . , g) a1···a
n+1.
, . . . , g an+1) ak = e n (g, . . . , g) a1···a
n+1.
= e n (g, . . . , g) a1···a
n+1.
La s´ ecurit´ e de ce protocole repose sur une variante
multilin´ eaire
du probl` eme de Diffie- Hellman : calculer e(g, . . . , g) a1···a
n+1 ` a partir de g a1, . . ., g an+1.
, . . ., g an+1.
Exercice 3 (Poign´ ees de main secr` etes).
1. Soient a, b tels que id A = g a , id B = g b . Alors e(id s A , id B ) = e(g, g) abs = e(id A , id s B ), donc les deux participants peuvent calculer cette valeur, ce qui leur permet de v´ erifier ce qu’a envoy´ e l’autre.
2. Sans les nonces, on suppˆ ot de l’´ etat qui ´ ecoute la conversation peut retenir par exemple tout ce que A envoie ` a B, et le r´ ep´ eter plus tard pour se faire passer pour A aupr` es de B, et en particulier lui faire croire qu’il fait partie de la soci´ et´ e secr` ete. C’est une attaque dont l’application est tr` es g´ en´ erale en s´ ecurit´ e informatique, appel´ ee attaque par rejeu.
3. Les deux participants peuvent calculer H(e(id A , id s B ) k n A k n B k 2) et l’utiliser comme secret commun. Le vil attaquant qui ´ ecoute la conversation ne peut pas plus calculer cette valeur que les pr´ ec´ edentes.
1
Exercice 4 (S´ ecurit´ e des signatures de Boneh-Boyen).
1. Pour une signature l´ egitime on a :
e(σ, ug m ) = e(g (x+m)−1, g x+m ) = e(g, g) = g T . La signature est donc accept´ ee.
2. Soit (h 0 , . . . , h q ) ∈ G q+1 . Pour v´ erifier qu’il s’agit d’une instance de q-SDH, on proc` ede par r´ ecurrence. Si q = 0, il suffit de v´ erifier que h 0 est g´ en´ erateur, donc simplement v´ erifier h 0 6= 1 puisqu’on est dans un groupe cyclique. Pour q > 0, supposons qu’on a v´ erifi´ e par r´ ecurrence que (h 0 , . . . , h q−1 ) est une instance de (q − 1)-SDH. Alors il suffit de v´ erifier e(h 0 , h q ) = e(h 1 , h q−1 ).
En effet, posons h 0 = g, h 1 = g x , h q−1 = g y , h q = g z . Alors l’´ egalit´ e pr´ ec´ edente est vraie ssi z = xy mod p. Or par r´ ecurrence on sait que y = x q−1 . On d´ eduit z = g x , CQFD.
Supposons maintenant qu’on a une solution pr´ etendue ` a une instance q-SDH (g, g x , g x2, . . . , g xq).
).
On a donc une paire (m, h) et on souhaite v´ erifier h = g (x+m)−1. Pour cela, il suffit de v´ erifier e(h, g x g m ) = e(g, g ). Noter que h, g x , g, m sont connus.
3. (a) En tirant plein parti de notre connaissance magique de x, lorsque l’adversaire demande la signature de m k , nous pouvons lui renvoyer :
σ i = h (x+mk)
−1 = g
Q
i6=k
(x+m
i) .
En fin de compte, l’adversaire forge une signature (m ∗ , σ ∗ ) pour m ∗ 6∈ {m i }. On a σ ∗ = h (x+m∗)
−1. Pour r´ epondre ` a l’instance q-SDH, on voudrait connaˆıtre g (x+m∗)
−1 plutˆ ot que h (x+m∗)
−1. Pour cela, il suffit d’observer :
)
−1plutˆ ot que h (x+m∗)
−1. Pour cela, il suffit d’observer :
g (x+m∗)
−1 = h (x+m∗)
−1 Q (x+mi)
−1
)
−1 Q (x+mi)
−1
. La r´ eponse ` a l’instance q-SDH est (m ∗ , g (x+m∗)
−1).
Remarque. Bien sˆ ur avec notre connaissance magique de x on aurait pu calculer cela di- rectement. Mais on souhaite quand mˆ eme utiliser la sortie de l’adversaire, pour mieux se pr´ eparer au raisonnement qui suit, o` u on ne connaˆıt plus x.
(b) Une observation critique est la suivante : l’instance q-SDH (g, g x , g x2, . . . , g xq) nous permet de calculer g P(x) pour n’importe quel polynˆ ome P de degr´ e au plus q ` a coefficients connus.
) nous permet de calculer g P(x) pour n’importe quel polynˆ ome P de degr´ e au plus q ` a coefficients connus.
En effet, si P(X) = P
i≤q a i X i , alors
g P(x) = Y
i≤q
(g xi) ai.
.
En particulier, mˆ eme sans connaˆıtre x, l’instance q-SDH nous permet de calculer h = g Q (x+mi) : en effet, en d´ eveloppant Q
(X + m i ) on obtient un polynˆ ome de degr´ e q, dont on peut calculer les coefficients explicitement (puisque les m i sont connus).
(c) Avec la question pr´ ec´ edente, on sait fournir ` a l’adversaire une signature valide des messages m i . L’adversaire nous renvoie alors une signature σ ∗ = h (x+m∗)
−1 d’un message m ∗ 6∈ {m i }.
Comme plus haut, il nous reste ` a d´ eduire g (x+m∗)
−1 pour avoir une solution (m ∗ , g (x+m∗)
−1)
)
−1)
`
a l’instance q-SDH. Pour calculer cette valeur, l’id´ ee g´ en´ erale est la mˆ eme que dans la question pr´ ec´ edente, mais avec quelques ´ etapes suppl´ ementaires. On a
h (x+m∗)
−1 = g
Q(x+mi) x+m∗
= g
P1(x+m∗)
x+m∗