• Aucun résultat trouvé

Quelques outils math´ematiques

Chapitre 6 Analyse de la perturbation d’un module DSA

6.2 Quelques outils math´ematiques

ron´ees suivant le mod`ele et ce, jusqu’`a ce le plus petit multiple commun des rj soit suffisamment

grand (i.e.Q rj >q). La cl´e priv´ee pourra alors ˆetre enti`erement reconstruite grˆace au th´eor`eme

des restes chinois.

Si l’on se r´ef`ere au principe g´en´eral de cette attaque, on peut remarquer que toutes les sig- natures erron´ees ne sont pas exploitables. En effet, pour pouvoir retrouver des r´esidus de cl´es par r´esolution de logarithme discret, il faut d’abord que l’attaquant puisse trouver un entier t divisant `a la fois ˆp et ˆq, mais encore que ϕ(t)| ˆq. Condition `a laquelle il faut ajouter que l’ordre multiplicatif de guˆ dans (Z/tZ)soit divisible par un entier r

j suffisamment petit pour qu’une

r´esolution de logarithme discret soit possible. Toutes ces conditions influencent largement les performances de l’attaque, notamment en termes du nombre de perturbation `a r´ealiser pour obtenir des signatures exploitables. `A partir de leur ´etude statistique, les auteurs ont estim´e que la recherche de cl´e priv´ees DSA de 160 bits n´ecessite de r´ealiser plus de 200 millions de pertur- bations. Cependant ces estimations sont relativement pessimistes en comparaison des r´esultats obtenus exp´erimentalement : dans les mˆemes conditions d’attaque, 40 millions de perturbations pourraient suffire. Malgr´e la r´eelle praticabilit´e du mod`ele de perturbation choisi, le nombre de perturbation n´ecessaire est cons´equent ce qui relativise sa faisabilit´e pratique.

D’un point de vue de l’exploitation, cette attaque semble s’inspirer de celle propos´ee par Brier et al. contre les ´el´ements publics de RSA [BCMCC06]. N´eanmoins, le nombre de fautes `a r´ealiser pour attaquer les implantations de signature RSA est bien moins important que celui propos´e pour analyser des signatures DSA erron´ees26. Comme conclu par les auteurs de l’attaque, ces

r´esultats laissent croire que la perturbation des ´el´ements publics est moins efficace dans le cas des implantations d’algorithmes de signatures type El Gamal que pour les implantations de sig- natures RSA. Suite `a cette conjecture, nous avons essayer d’attaquer les implantations de DSA sous les mˆemes hypoth`eses de perturbation que celles choisies pour exploiter les perturbations d’´el´ements publics de RSA. Le r´esultat de cette ´etude est d´etaill´e dans les sections suivantes.

6.2

Quelques outils math´ematiques

Avant de commencer `a pr´esenter l’attaque par perturbation des ´el´ements publics que nous avons ´etendue aux implantations de DSA, nous allons d´ecrire les deux algorithmes que nous avons utilis´es pour retrouver la cl´e priv´ee DSA. La seconde partie de notre analyse repose sur les attaques r´eseaux pr´ec´edemment d´ecrites contre le DSA par N.A. Howgrave-Graham et N.P. Smart [HGS01] et plus r´ecemment par P.Q. Nguyen et I.E. Shparlinski [NS02].

Dans un premier temps, nous pr´esenterons l’algorithme LLL [Ajt98] permettant de trans- former une base quelconque d’un r´eseau euclidien en une base r´eduite, et mˆeme LLL-r´eduite. Alors que les premi`eres applications de ce type d’algorithme consistaient en la production d’un algorithme de factorisation des polynˆomes `a coefficients rationnels en produits de polynˆomes irr´eductibles, nous utiliserons cet algorithme dans le but d’obtenir des bases adapt´ees `a l’utili- sation du second algorithme.

Justement, le second algorithme que nous pr´esenterons est l’algorithme de Babai [Bab86]. Cet algorithme permet de trouver, en temps polynomial, le vecteur d’un r´eseau le plus proche d’un vecteur n’appartenant pas au r´eseau, `a un facteur d’approximation pr`es. En d’autre ter- mes, cet algorithme permet de r´esoudre des instances approximatives du probl`eme du vecteur le plus proche, r´eput´e difficile. L’efficacit´e de cette algorithme d´epend de la qualit´e de la r´eduction

26. 60000 fautes dans le cas du RSA [BCMCC06] contre pr`es de 40 millions en consid´erant des tailles de cl´e similaire et un mod`ele de faute ´equivalent

Chapitre 6. Analyse de la perturbation d’un module DSA op´er´ee par l’algorithme LLL.

Comme nous le verrons dans la Section 6.3.2, l’utilisation combin´ee de ces deux algorithmes permettra d’exploiter directement les informations recueillies par le biais des perturbations.

6.2.1 Algorithme de r´eduction de r´eseau

Le principe de la r´eduction de r´eseau consiste `a trouver une base engendrant le r´eseau de telle sorte que les vecteurs aient des normes assez petites et soient en mˆeme temps presque orthogonaux les uns aux autres. L’un des probl`emes algorithmiques majeurs li´es aux r´eseaux est la recherche du vecteur le plus court. Bien que ce probl`eme soit prouv´e NP-difficile [Ajt98], la notion de r´eduction introduite par A.K. Lenstra, H.W. Lenstra & L. Lov´asz [LLL86] apporte, en pratique, une r´eponse satisfaisante au probl`eme de la recherche de vecteurs courts dans un r´eseau. Notonsh., .i, le produit scalaire, (bi∗)16i6n les orthogonalis´es de Gram-Schmidt correspondant `a

une base (bi)16i6n et µi,j =hbi, bj∗i/k bj∗ k2. La notion de LLL-r´eduction est rappel´ee dans la

d´efinition suivante.

D´efinition 6.2.1.1. (Base LLL-r´eduite) Une base (bi)16i6n d’un r´eseauL est LLL-r´eduite avec

un facteur δ ∈]1/4, 1] si les deux propri´et´es suivantes sont v´erifi´ees : 1. | µi,j |6 12 pour 1 6 j < i 6 n

2. k bi∗+ µi,i−1b∗i−1k2 ≥ δk b∗i−1k2 pour 1 < i≤ n

La premi`ere condition est appel´e condition de r´eduction. Elle permet de s’assurer qu’`a chaque ´etape i, le vecteur bi est bien r´eduit par rapport aux orthogonalis´es pr´ec´edents bj∗. La deuxi`eme

condition est la condition de Lov´asz qui garantit que la taille des vecteurs orthogonalis´es bi∗ ne

croissent pas trop vite. En g´en´eral, on fixe le param`etre δ ´egale `a 3/4. `

A partir de cette d´efinition de la LLL-r´eduction d’une base d’un r´eseau, on peut d´ecliner l’algorithme de r´eduction de base, o`u algorithme LLL, permettant de transformer une base quelconque en une base LLL-r´eduite. Comme d´ecrit dans [Bau08], cet algorithme repose sur l’utilisation des deux fonctions RED et SWAP suivantes :

1. RED(i, j). Cette fonction commence par v´erifier la condition de r´eduction : | µi,j |6 12.

Ensuite, si le vecteur bi est d´ej`a r´eduit par rapport `a bj, cette fonction ne fait rien. Sinon,

bi est remplac´e par bi ← bi− ⌊µi,j⌉bj , o`u⌊·⌉ d´enote l’entier le plus proche.

2. SWAP(i, δ). Cette fonction, quand `a elle v´erifie la condition de Lov´asz :k bi∗+ µi,i−1b∗i−1k2 ≥

δk b

i−1k2. Lorsque la condition est r´ealis´ee, la fonction ne fait rien. Sinon, elle ´echange les

vecteurs bi et bi−1

`

A partir de ces deux fonctions, le principe de la r´eduction de base LLL peut ˆetre d´ecrit en pseudo-langage comme dans l’algorithme 8. La figure 6.1 illustre une r´eduction de base LLL appliqu´ee `a une base d’un r´eseau `a deux dimensions.

L’avantage de cet algorithme est qu’il permet de trouver une base r´eduite en un temps poly- nomial. D’autres m´ethodes de r´eduction permettent de trouver des bases de meilleure qualit´e. Par exemple la r´eduction de Hermite-Korkine-Zolotarev garantit que le premier vecteur de base atteint le premier minimum du r´eseau. Cependant, les r´eductions fournissant des bases de grande qualit´e sont tr`es difficiles `a obtenir en pratique puisque les calculer est un probl`eme au minimum NP-difficile pour les r´eductions randomis´ees. Une description plus compl`ete de l’algorithme LLL peut ˆetre trouv´ee dans [Coh93] avec de nombreuses variantes. Dans le cadre de l’implantation de notre attaque par perturbation contre les ´el´ements publics de DSA, nous avons choisi d’utiliser la m´ethode Block Korkine-Zolotarev (BKZ) disponible dans la librairie NTL de V. Shoup [Sho].

6.2. Quelques outils math´ematiques Algorithme 8 Algorithme LLL de r´eduction de r´eseau

ENTR´EES : Une base (bi)16i6n d’un r´eseau L et δ∈ (14, 1)

SORTIE : une base LLL-r´eduite (bi)16i6n

1: i← 2

2: Tant que i 6 n faire

3: RED(i, i− 1)

4: SWAP(i, δ)

5: Si Condition de Lov´asz v´erifi´ee alors

6: RED(i, i− 2), . . . ,RED(i, 1)

7: i← i + 1

8: sinon

9: i← max(2, i − 1) 10: Fin Si

11: Fin Tant que

12: Retourner A

b0

b1

(a) Exemple de r´eseau de 2 dimensions

b∗0

b∗1

(b) Base r´eduite retourn´ee par l’algorithme LLL

Figure6.1 – Illustration de l’application de l’algorithme LLL

6.2.2 Probl`eme du vecteur le plus proche (CVP)

L’algorithme de Babai, aussi connu sous le nom de ”Nearest Plane Algorithm”, est un al- gorithme d´evelopp´e par L. Babai en 1986 pour r´esoudre des approximations d’instances du probl`eme du vecteur le plus proche [Bab86]. Plus pr´ecis´ement, le but de l’algorithme est de trou- ver, ´etant donn´e un r´eseau L engendr´e par une base (bi)16i6n et un vecteur u /∈ L, le vecteur

v∈ L le plus proche possible de u. C’est `a dire que :

∀w ∈ L, k v − w k< γ k u − w k (6.3)

o`u, γ > 1 est appel´e le facteur d’approximation. Lorsque γ = 1 alors on retrouve une solution exacte pour CVP. L’algorithme de Babai permet de r´esoudre, en un temps polynomial, une approximation d’instance CVP pour un facteur d’approximation γ = 2 2√

3 n

o`u n d´enote la dimension du r´eseau. Dans la suite, nous pr´esenterons la version de l’algorithme permettant de r´esoudre les approximations d’instances de CVP pour γ = 2n2. L’autre facteur d’approximation peut ˆetre atteint en r´ealisant quelques modifications.

On suppose que la base en entr´ee de l’algorithme est une base r´eduite (e.g. par l’algorithme LLL avec un facteur δ = 3/4). Ensuite, le principe de l’algorithme de Babai peut se d´ecomposer

Chapitre 6. Analyse de la perturbation d’un module DSA

en deux grandes ´etapes. La premi`ere consiste `a orthogonaliser la base r´eduite par la m´ethode d’orthogonalisation de Gramm-Schmidt. Tr`es bri`evement, la seconde phase consiste `a chercher it´erativement les diff´erents hyperplans les plus proches du vecteur u, projet´e dans la base r´eduite. Ce principe est d´ecrit dans l’algorithme 9 et le r´esultat de la recherche du vecteur le plus proche est illustr´e par la figure 6.2. Nous laisserons le lecteur int´eress´e se r´ef´erer `a [Bab86] pour plus de d´etails sur l’algorithme.

Pour l’implantation de notre attaque, nous avons de choisi d’utiliser la routine NearVector Algorithme 9 Algorithme de Babai

ENTR´EES : Une base (bi)16i6n LLL-r´eduite d’un r´eseau L et un vecteur u /∈ L.

SORTIE : v∈ L tel que ∀w ∈ L k v − w k< 2n2 k u − w k

1: {Orthogonalisation de Gramm-Schmidt de la base} 2: (b1∗, . . . , bn∗)← GS Orthogonalisation(b1, . . . bn, 3/4) 3: b← u 4: Pour i = n `a 1 faire 5: ci ← hb, bi∗i/k bi∗ k2 6: b← b − ⌊ci⌉bi 7: Fin Pour 8: Retourner v = u− b

fournie par la librairie NTL de V. Shoup [Sho]. Par ce biais, nous avons ´et´e en mesure de retrouver, dans la majorit´e des cas, les cl´es priv´ees DSA utilis´ees pour r´ealiser les signatures perturb´ees.

b∗0

b∗1

b

(a) Exemple de vecteur n’appartenant pas `a un r´eseau `a deux dimensions

b∗0

b∗1

CV(b)

(b) Vecteur le plus proche retourn´e par l’al- gorithme de Babai

Figure 6.2 – Illustration de l’application de l’algorithme de Babai