• Aucun résultat trouvé

2.3 Courbes Elliptiques

2.3.2 Arithm´ etique des courbes elliptiques

L’impl´ementation cryptographique bas´ee sur les courbes elliptiques d´epend de l’arithm´etique de ces derni`eres et impacte sur l’efficacit´e du protocole cryptogra- phique. De fa¸con plus d´etaill´ee, les calculs effectu´es sur une courbe elliptique sont bas´es sur l’arithm´etique des corps finis. Nous avons vu dans la section 2.2 les algo- rithmes composant une arithm´etique en caract´eristique 2. Dans cette section, nous pr´esenterons les diff´erents op´erations clefs du calcul sur une courbe elliptique que nous devons consid´erer pour des applications cryptographiques.

Dans un protocole d’´echange de clefs tel que l’ECDH [BCR+03] ou dans un pro-

tocole de signature tel que l’ECDSA [Gal13], l’op´eration principale effectu´ee sur une courbe elliptique est la multiplication scalaire. Cette op´eration consiste `a calculer :

kP = P + ... + P | {z }

k fois

O`u k est un entier et P un point de E.

L’arithm´etique des courbes elliptiques se d´ecompose alors en une suite d’op´e- rations ´el´ementaires dans Fpd et dans la suite nous traiterons seulement le cas o`u

p = 2.

Nous avons vu dans la section 2.2 qu’il existe une hi´erarchie en termes de per- formance dans les op´erations sur F2d. En effet, l’inversion est l’op´eration la plus

coˆuteuse, car elle n´ecessite plusieurs multiplications pour ˆetre effectu´ee. La multi- plication est aussi tr`es on´ereuse en temps de calcul. En comparaison, l’addition et l’´el´evation au carr´e sont tr`es peu coˆuteuses mˆeme si pour le cas de l’´el´evation au carr´e, nous devons effectuer une r´eduction sur le r´esultat obtenu. Afin de mesurer les performances des diff´erentes impl´ementations de courbes elliptiques nous les com- parerons entre elles en termes d’op´erations ´el´ementaires sur F2d. Nous utiliserons

comme m´etrique1 qu’une inversion (I) ´equivaut `a 10 multiplications et que l’´el´eva-

tion au carr´e (S) et l’addition (A) sont n´egligeables. Ainsi, toutes les mesures seront

donn´ees en fonction de nombre de multiplications n´ecessaires. Dans certains cas, nous serons malgr´e tout amen´e `a comparer le nombre d’´el´evations au carr´e afin de d´epartager deux syst`emes de coordonn´ees ayant le mˆeme coˆut en multiplications.

Syst`emes de coordonn´ees

L’op´eration fondamentale sur une courbe elliptique E est l’addition de deux points P et Q. Cette op´eration va grandement d´ependre du syst`eme de coordonn´ees consid´er´ees pour repr´esenter un point sur E.

Le premier syst`eme de coordonn´ees que nous avons vu pr´ec´edemment est la re- pr´esentation affine des points d’une courbe de Weierstrass. En analysant les formules d’addition et de doublement de ce syst`eme de coordonn´ees nous obtenons que 12 multiplications sont n´ecessaires pour une addition (1I + 2M + 1S) qu’un double- ment.

Dans ces conditions, les performances des coordonn´ees affines obtenues, sont incompatibles pour des applications cryptographiques, dues `a l’op´eration d’inversion qui est tr`es coˆuteuse. Ainsi, un moyen d’am´eliorer les performances de l’addition et du doublement est de ne pas calculer cette inversion et de l’accumuler dans une troisi`eme coordonn´ee Z qui sera invers´ee `a la toute fin du calcul de kP . Ce syst`eme de coordonn´ees est dit projectif et repr´esente un point P par trois coordonn´ees (X : Y : Z), il peut ˆetre converti vers les coordonn´ees affines en appliquant la transformation suivante : (X : Y : Z) → X Z, Y Z 

Dans ce syst`eme projectif un point P peut avoir plusieurs repr´esentations qui correspondent `a une seule et unique repr´esentation affine : un point P = (X : Y : Z) est ´egale `a un point P0 = (λX : λY : λZ). Nous verrons qu’une telle propri´et´e a son importance dans la protection des protocoles cryptographiques sur courbes elliptiques face aux attaques par canaux auxiliaires.

Finalement, l’adoption d’une telle repr´esentation des points permet d’acc´el´erer le doublement, mais ralentit l’addition. L’addition dans ce cas n´ecessitera 14 multipli- cations (14 M + 1 S) et le doublement 7 (7M + 1S). Malgr´e tout ce syst`eme acc´el`ere le calcul de la multiplication scalaire, car cette op´eration utilise essentiellement des doublements. Les d´etails des formules d’addition et de doublement sont donn´es `a la section 13.3.1 du livre [CFA+06].

Il existe de nombreuses autres m´ethodes de repr´esentation des points qui per- mettent d’acc´el´erer d’avantage les calculs. Nous pouvons citer les coordonn´ees jaco- biennes ou les coordonn´ees de Lopez-Dahab. Nous nous attarderons sur un syst`eme particulier celui des coordonn´ees diff´erentielles qui consiste `a repr´esenter un point uniquement par sa coordonn´ee affine x. Cette forme particuli`ere de repr´esentation du point utilis´ee avec des m´ethodes de calculs de kP sp´ecifiques permet d’augmenter les performances [Sta02a]. Le doublement ne n´ecessite qu’une multiplication (1M + 3S) et l’addition 5 (5M + 3S). Les auteurs de [FLRV08a] montrent qu’un tel choix de repr´esentation des coordonn´ees peut ˆetre un vecteur d’attaque par fautes.

In fine, le tableau 2.1 compare le coˆut en multiplications des diff´erents syst`emes de coordonn´ees sur les courbes de Weierstrass d´efinie sur F2d.

Doublement Addition Affines 12M 12M Projectives 7M 14M Jacobiennes 4M 14M Lopez-Dahab 3M 13M Diff´erentielles 1M 5M

Table 2.1 – Coˆut en multiplications de l’addition et du doublement de points dans diff´erents syst`emes de coordonn´ees sur les courbes de Weierstrass.

Multiplication scalaire

De l’addition de deux points sur une courbe elliptique, nous pouvons construire l’op´eration de multiplication scalaire d’un point qui est essentielle pour la construc- tion des protocoles cryptographiques sur les courbes elliptiques. Cette derni`ere consiste `

a effectuer le calcul kP . Les algorithmes de multiplications scalaires vont ˆetre res- semblant de ceux de l’exponentiation, seule l’op´eration de base change : pour la multiplication scalaire, on aura une addition de points sur les courbes elliptiques tandis que pour l’exponentiation, on aura une multiplication entre des ´el´ements d’un groupe multiplicatif.

Le premier algorithme de multiplication scalaire est celui de « double and add », algorithme 2.5.

Algorithme 2.5 Algorithme double and add de multiplication scalaire d’un point P sur une courbe elliptique E

Entr´ees k un scalaire, P un point de E Sorties: kP Q ← O n = log2(k) Pour i = n − 1 `a 0 Faire Q ← 2Q Si ki = 1 alors Q ← Q + P Fin Si Fin Pour Retourner Q = kP

Cependant, cet algorithme poss`ede deux inconv´enients majeurs.

Le premier est qu’il est tr`es peu performant, la multiplication scalaire est ef- fectu´ee en traitant le scalaire k bit `a bit. Une am´elioration consiste `a utiliser un algorithme `a fenˆetre glissante qui permettra de parcourir plus rapidement le scalaire k en contrepartie de quelques pr´e-calculs qui d´ependent de la taille de la fenˆetre (Algorithme 2.6). Il existe des variantes `a cet algorithme `a pr´e-calculs tel que l’algo- rithme w-NAF qui va parcourir diff´eremment le scalaire k. Bien que ces algorithmes am´eliorent les performances, ils ne r´esolvent pas le probl`eme li´e `a la non-uniformit´e des segments des calculs qui d´epend de la valeur de la clef.

Le second est relatif aux op´erations effectu´ees `a chaque ´etape qui d´ependent directement du scalaire k. Si k est une clef priv´ee alors cette diff´erence d’ex´ecution

Algorithme 2.6 Algorithme `a fenˆetre glissante de multiplication scalaire d’un point P sur une courbe elliptique E

Entr´ees k un scalaire, P un point de E, t une taille de fenˆetre Sorties: kP T un tableau de 2t−1 points. Pour i = 0 `a 2t−1 Faire T [i] ← iP Fin Pour Q ← O n = log2(k) Pour i = n − 1 `a 0 Faire Si ki = 0 alors Q ← 2Q Sinon Si i >= t alors

w ← extraire les t prochains bits de k Pour j = 0 `a t Faire

Q ← 2Q Fin Pour Q ← Q + T [w] Sinon

Appliquer l’algorithme 2.5 sur les bits de k restant Fin Si

Fin Si Fin Pour

pourra ˆetre exploit´ee au travers d’attaques par canaux auxiliaires afin d’extraire de l’information sur la clef. Par exemple, si le bit courant est un 1 alors une op´eration suppl´ementaire d’addition de point est r´ealis´ee, ce qui va modifier la trace de la consommation de courant ou du rayonnement ´electromagn´etique acquise `a l’issue du calcul. Nous verrons plus en d´etails cet aspect de la cryptographie sur les courbes elliptiques dans le chapitre 3. Une premi`ere possibilit´e pour unifier l’algorithme 2.5, de mani`ere `a avoir les mˆemes op´erations pour un bit 0 ou 1, est d’effectuer une addition fictive lorsque le bit courant est 0. Nous obtenons alors l’algorithme de double and add always (Algorithme 2.7). Le probl`eme de cette approche est qu’elle impacte le probl`eme de performance de l’algorithme 2.5. De plus, la protection apport´ee est d’une utilit´e limit´ee car dans ce cas l’algorithme 2.7 est sensible aux attaques par fautes mais aussi aux attaques par canaux auxiliaires qui permettent de distinguer les acc`es au point T . Si une faute est effectu´ee durant l’addition fictive un attaquant peut alors inf´erer que le bit courant est nul, car le r´esultat final n’aura pas ´et´e modifi´e.

Algorithme 2.7 Algorithme double and add always de multiplication scalaire d’un point P sur une courbe elliptique E

Entr´ees k un scalaire, P un point de E Sorties: kP Q ← O n = log2(k) Pour i = n − 1 `a 0 Faire Si ki = 1 alors Q ← 2Q Q ← Q + P Sinon Q ← 2Q T ← Q + P Fin Si Fin Pour Retourner Q = kP

Ainsi, nous devons consid´erer un algorithme de multiplication scalaire sur les courbes elliptiques qui devra ˆetre efficace et effectuant les mˆemes op´erations quel que soit l’´etat du bit courant. L’algorithme de l’´Echelle de Montgomery [JY02], algorithme 2.8, est une m´ethode de multiplication scalaire qui va effectuer les mˆemes op´erations ind´ependamment de la valeur de la clef trait´ee. Contenu des crit`eres de performance et de s´ecurit´e, notre choix s’est port´e sur cet algorithme pour la suite de nos travaux.