40
Facult´ e des Sciences et des Techniques Universit´ e de Rouen Master 2 ITA Cryptographie 2004-2005 Courbes Elliptiques Impl ´ ementation de la Signature ´ Electronique Samuel GRAU <[email protected]>

Courbes Elliptiques, Implémentation de la Signature Electronique

Embed Size (px)

Citation preview

Page 1: Courbes Elliptiques, Implémentation de la Signature Electronique

Faculte des Sciences et des TechniquesUniversite de Rouen

Master 2 ITA

Cryptographie2004-2005

Courbes ElliptiquesImpl ementation de la Signature Electronique

Samuel GRAU

<[email protected]>

Page 2: Courbes Elliptiques, Implémentation de la Signature Electronique

Table des matieres

Introduction 4

1 Corps Finis 51.1 A la recherche de Corps Finis . . . . . . . . . . . . . . . . . . . . 5

1.1.1 Operations sur les corps . . . . . . . . . . . . . . . . . . 61.1.2 Existence et unicite . . . . . . . . . . . . . . . . . . . . . 61.1.3 Corps binaires . . . . . . . . . . . . . . . . . . . . . . . 6

1.2 Operations sur les corps binaires . . . . . . . . . . . . . . . . . . 8

2 Introduction aux Courbes Elliptiques 92.1 Courbes Elliptiques . . . . . . . . . . . . . . . . . . . . . . . . . 92.2 Loi de groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3 Addition et Multiplication de points . . . . . . . . . . . . . . . . 13

2.3.1 Algorithmes de base d’addition, negation et doublement . 142.3.2 Algorithmes de base de multiplication . . . . . . . . . . . 15

3 ECDSA 173.1 Elliptic Curve Discrete Logarithm Problem . . . . . . . . . . . . 173.2 Generation de clefs . . . . . . . . . . . . . . . . . . . . . . . . . 183.3 Schema de signature . . . . . . . . . . . . . . . . . . . . . . . . 203.4 ECDSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4 Impl ementation et Optimisations 234.1 Structures de donnees . . . . . . . . . . . . . . . . . . . . . . . . 23

4.1.1 Description des classes . . . . . . . . . . . . . . . . . . . 234.2 Optimisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.2.1 Coordonnees projectives . . . . . . . . . . . . . . . . . . 264.2.2 Multiplication de points inconnus . . . . . . . . . . . . . 284.2.3 Representation Non Adjacent Form (NAF) . . . . . . . . 29

2

Page 3: Courbes Elliptiques, Implémentation de la Signature Electronique

Conclusion 32

A Manuel 34A.1 Installation et compilation . . . . . . . . . . . . . . . . . . . . . 34

A.1.1 Compilation . . . . . . . . . . . . . . . . . . . . . . . . 34A.1.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . 34

A.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

B Code des en-tetes de classes utilisees 36B.1 ECDomainParameters . . . . . . . . . . . . . . . . . . . . . . . . 36B.2 ECSignature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36B.3 ECBFEquation . . . . . . . . . . . . . . . . . . . . . . . . . . . 37B.4 ECMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37B.5 ECKeyPair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38B.6 ECPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38B.7 ECDSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39B.8 ECPPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39B.9 ECNAF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3

Page 4: Courbes Elliptiques, Implémentation de la Signature Electronique

Introduction

L’etude des courbes elliptiques remonte au milieu du XIXe siecle. Apresla decouverte en 1984 d’un algorithme permettant la factorisation de cesobjets particuliers, cette decouverte poussa le chercheurs a examiner l’ap-plication des courbes elliptiques en cryptographie et theorie des nombres.

L’interet de telles courbes en cryptographie est que celles-ci permettentd’atteindre les niveaux de securite desires en utilisant des clef de plus petitetaille que celles utilisees avec RSA par exemple. Il est accepte qu’une clefde courbe elliptique de 160 bits fourni le meme niveau de securite qu’uneclef RSA de 1 024 bits. L’interet reel d’une clef de taille moindre inclue desvitesses de calculs plus importantes, de l’espace necessaire moins impor-tant et une utilisation efficace de la puissance de cryptage.

Nous serons donc nous mener a traiter un ensemble particulier decourbes elliptiques sur lequel l’utilisation d’un ordinateur offre des resultatsde performances convenables. Nous y etudierons dans un premier tempsla structure servant de support aux courbes, a savoir les corps finis. Puis,apres l’exploration des courbes et de leur representation, nous etudieronsl’application de celles-ci a la signature electronique de documents au tra-vers du schema de signature ECDSA (Elliptic Curve Digital Signature Algo-rithm). Celui-ci nous amenera a se pencher sur les gains d’implementationspouvant etre obtenus ainsi que les performances resultantes.

4

Page 5: Courbes Elliptiques, Implémentation de la Signature Electronique

CHAPITRE 1

Corps Finis

Notre etude commence donc par celle du support des courbes el-liptiques. L’implementation efficace des corps finis devient donc un pointtres important dans l’etude des courbes elliptiques car un grand nombred’operations y seront realisees. Il existe trois grands types de corps finisqui sont utilisables pour l’implementation de la cryptographie par courbeselliptiques. Il s’agit des corps premiers, des corps binaires et des corpsd’extension optimaux.

Nous porterons toute notre attention des a present au deuxieme typede corps, les corps binaires, ceux-ci offrant une representation tres prochede celle utilisee par les ordinateurs.

1.1. A la recherche de Corps Finis

Les corpssont des objets abstraits representants des systemes de nombre bienconnus (tels que les nombres rationnelsQ ou les nombre reelsR et les nombrescomplexesC).

Ils consistent en un ensembleF possedant deux operationselementaires, l’addi-tion (notee +) et la multiplication (notee·), satisfaisant les proprietes arithmetiqueshabituelles :

(i) (F , +) est un groupe abelien (avec l’addition) et l’element neutre est 0.

(ii) (F \{0}, ·) est un groupe abelien (avec la multiplication) et ou l’ elementneutre est 1.

(iii) La loi distributive est respectee :(a+b) ·c= a·c+b·c pour touta,b,c∈ F .

Si l’ensembleF est fini, alors, le corps est ditfini.

5

Page 6: Courbes Elliptiques, Implémentation de la Signature Electronique

Nous allons presenter brievement quelques proprietes et operations sur lescorps finis. Les corps premiers, bien qu’importants seront moins detailles que lescorps binaires, ceux-ci offrant comme nous l’avons deja dit, de bien meilleurs per-formances.

1.1.1 Operations sur les corps

Un corpsF est equipe de deux operations, l’addition et la multiplication. Lasoustractiondeselements du corps se definit par rapporta l’addition. Soita, b∈ F ,a− b = a+ (−b) ou b est l’uniqueelement tel queb+ (−b) = 0 (On appelle−b la negation deb). De maniere similaire, nous pouvons definir la division deselements du corps qui se definit en terme de multiplication. Soita, b ∈ F , avecb 6= 0, a/b = a · b−1 ou b−1 est l’uniqueelement deF tel queb · b−1 = 1. (Onappelleb−1 l’ inversedeb).

Nous verrons par la suite qu’il ne nous sera pas utile de mettre en oeuvre toutesles operations sur les corps. Pour cela, nous utiliserons une bibliotheque permettantde faire de la theorie des nombres, qui se nommeNTLet dont nous detaillerons lespossibilites offertes par la suite.

1.1.2 Existence et unicite

L’ ordre d’un corps fini est le nombre d’elements presents dans ce corps. Ilexiste un corps fini d’ordreq si et seulement siq est la puissance d’un nombrepremier,i.e., q= pm ou p est un nombre premier appele lacaracteristiquedeF , etou m est un entier positif. Sim= 1 alorsF est appele uncorps premier. Si m≥ 2,alorsF est appele uncorps d’extension.

Pour toute puissance premiereq, il y a essentiellement un unique corps premierd’ordreq ; informellement parlant, ceci signifie que si l’on prend deux corps pre-miers d’ordreq, ceux-ci sont structurellement identique au renommage pres desetiquettes utilisees pour representer leselements du corps. On dit que deux telscorps d’ordreq sont alorsisomorpheset on note un tel corpsFq.

1.1.3 Corps binaires

Les corps finis d’ordre 2m sont appeles descorps binaires, car ils sonta coef-ficient dans{0, 1}. Une maniere de construireF2m est d’utiliser une representationbasee sur les polynomes. De cette maniere, leselements deF2m sont des polynomesbinaires (polynomes dont les coefficients appartiennent au corpsF2 = {0, 1}) dedegre au plusm−1 :

F2m ={

am−1zm−1 +am−2zm−2 + · · ·+a2z2 +a1z1 +a0z0 | ai ∈ {0, 1}}

6

Page 7: Courbes Elliptiques, Implémentation de la Signature Electronique

Un polynome binaire irreductiblef (z) de degre m est choisi. Un tel polynomeexiste pour toutmet peut-etre efficacement trouve. L’irreductibilite de f (z) signifieen fait quef (z) ne peut pasetre factorise comme un produit de polynomes binaires,chacun de degre inferieuram. Autrement dit, contrairement aux corps premier, icice n’est pas la caracteristique mais le polynome qui joue le role de nombre premier.Son irreductibilite le placea la meme position.

L’addition deselements du corps est l’addition usuelle des polynomes, ou estutilisee l’arithmetique modulo 2 des coefficients. La multiplication deselementsdu corps est realisee modulo lepolynome de reduction f(z). Pour tout polynomebinaire a(z), a(z) mod f (z) doit representer l’unique polynome residuelr(z) dedegre inferieur ouegal a m, obtenu apres une longue division dea(z) par f (z) ;cette operation est appeleereduction modulo f(z).

Exemple 1.1.1(Corps binaireF24). Les elements deF24 sont les 16 polynomesbinaires de degre au plus 3 :

0 z2 z3 z3 +z2

1 z2 +1 z3 +1 z3 +z2 +1z z2 +z z3 +z z3 +z2 +zz+1 z2 +z+1 z3 +z+1 z3 +z2 +z+1

Ce qui suit est un ensemble d’exemple d’operations arithmetiques operees surle corps binaireF24 en utilisant le polynome f(z) = z4+z+1 comme polynome dereduction.

(i) Addition :(z3 +z2 +1)+(z2 +z+1) = z3 +z

(ii) Soustraction :(z3 +z2 +1)− (z2 +z+1) = z3 +z

On peut remarquer que puisque−1 = 1 dansF2, on a−a = a pour touta∈ F2m.

(iii) Multiplication :(z3 +z2 +1) · (z2 +z+1) = z2 +1

puisque(z3 +z2 +1) · (z2 +z+1) = z5 +z+1

et que(z5 +z+1) mod(z4 +z+1) = z2 +1

(iv) Inversion :(z3 +z2 +1)−1 = z2

puisque(z3 +z2 +1) ·z2 mod(z4 +z+1) = 1

7

Page 8: Courbes Elliptiques, Implémentation de la Signature Electronique

1.2. Operations sur les corps binaires

L’impl ementation des operations sur les corps binaires demande un grand jeude fonction, allant de la representation et des operations de base sur le corpsa desfonctions bien plus complexes.

L’int eret aurait puetre de realiser cette implementation. Cependant, nous avonsutilise pour l’implementation, une bibliotheque de multiprecision intituleeNTL.

NTLune librairieecrite enC++, portable et hautement performante, fournissantdes structures de donnee et algorithmes permettant de manipuler des entiers signesde longueur arbitraire, des vecteurs, matrices et polynomes sur les entiers et lescorps finis. Autrement dit, cette bibliotheque ne peux pas tomber mieux.

Cette bibliotheque nous offrira donc tous les outils necessaires afin de realiserdes additions, multiplications, inversions ou toute autre operation qui pourraitetreutile a l’implementation d’un programme de chiffrement de signatureelectroniquepour les courbes elliptiques.

8

Page 9: Courbes Elliptiques, Implémentation de la Signature Electronique

CHAPITRE 2

Introduction aux CourbesElliptiques

Un point important de la cryptographie par courbes elliptiques est l’uti-lisation de ces courbes. Celles-ci possedent des proprietes que nous ten-terons de mettre en evidence apres avoir apporte une description de cescourbes.

Apres une petite mise en bouche, nous verrons comment passer d’unpoint a un autre sur une courbe et les possibilites de calculs qui nous sontoffertes. Ces possibilites sont l’addition, la multiplication par un scalaire, lecalcul de l’oppose d’un point d’une courbe et le calcul du point a l’infini.

2.1. Courbes Elliptiques

Definition 2.1.1. Une courbe elliptiqueE sur un corps K est definie par uneequation de la forme :

E : y2 +a1xy+a3y = x3 +a2x2 +a4x+a6 (2.1)

Ou a1, a2, a3, a4, a5, a6∈K et∆ 6= 0, ou ∆ est ledescriminantde E et est definide la maniere suivante :

∆ = −d22d8−8d3

4−27d26 +9d2d4d6

d2 = a21 +4a2

d4 = 2a4 +a1a3

d6 = a23 +4a6

d8 = a21a6 +4a2a6−a1a3a4 +a2a2

3−a24

(2.2)

Si L est est une extension du corpsK, alors l’ensemble des pointsL-rationnelsdeE est l’ensemble suivant ou ∞ est lepoint a l’infini :

9

Page 10: Courbes Elliptiques, Implémentation de la Signature Electronique

E(L) ={

(x,y) ∈ L2 | y2 +a1xy+a3y−x3−a2x2−a4x−a6 = 0}

∪{∞}

Nous pourrions apporter les remarques suivantes. En fait, l’equation (2.1) estappelee uneequation de Weierstrass. On dit queE est defini surK pour la rai-son que les coefficientsa1, a2, a3, a4, a5, a6 qui definissent cetteequation sont deselements deK. Nous pouvons aussi ajouter que le faite que∆ 6= 0 assure que lacourbe obtenue est« lisse». Cecietant, la courbe ne possedant aucun point ayantdeux ou plus de tangentes. Le point∞ est le seul point de la courbea l’infini quisatisfait la forme projective de l’equation deWeierstrass.

1

2

−1

−2

2 x

y

0

(a)E1 : y2 = x3−x

2

4

−2

1 2−1 x

y

0

(b) E2 : y2 = x3 + 14x+ 5

4

FIG. 2.1 – Courbes Elliptiques surR.

Exemple Nous pouvons alors prendre l’exemple des courbes elliptiques surR enconsiderant les deux courbes suivantes :

E1 : y2 = x3−x

E2 : y2 = x3 +1

4x+

5

4

definies sur le corps des nombres reelsR. Les pointsE1(R)\{∞} et E2(R)\{∞}sont affiches Figure 2.1.

L’ equation deWeierstrasspossede une version simplifiee.

Definition 2.1.2. Deux courbes elliptiques E1 et E2 definies sur K et donnees parlesequations deWeierstrass:

10

Page 11: Courbes Elliptiques, Implémentation de la Signature Electronique

E1 : y2 +a1xy+a3y = x3 +a2x2 +a4x+a6

E2 : y2 +a1xy+a3y = x3 +a2x2 +a4x+a6

sont ditesisomorphes surK si il existe u, r,s, t ∈ K avec u6= 0 tel que le chan-gement de variables

(x, y) 7→(

u2x+ r, u3y+u2sx+ t)

transforme l’equation E1 en l’equation E2. Cette transformation est appelee unchangement admissible de variables.

Parmis tous les changements de variables, selon les differents cas possibles etconsideres, nous pourrons avoir des courbes ditessupersingulieresqu’il n’est pasjudicieux d’utiliser en cryptographie par courbes elliptiques. Nous ne traiteronsque le cas desequations simplifiees pour le cas ou K est de caracteristique 2 carc’est celui des corps binaires.

Si l’on considere l’equation deWeierstrass

E : y2 +a1xy+a3y = x3 +a2x2 +a4x+a6

definie surK, celle-ci peut-etre fortement simplifiee en appliquant un changementadmissible de variables. L’equation simplifiee pour notre cas, sera utilisee duranttout le reste de cetteetude. Considerons donc le cas ou le corps sous-jacentK estde caracteristique 2.

Si la caracteristique du corpsK est 2, il faut alors considerer deux cas distincts.Si a1 6= 0, alors, le changement admissible de variables

(x, y) 7→

(

a21x+

a3

a1, a3

1y+a2

1a4 +a23

a31

)

transformeE en la courbe

y2 +xy= x3 +ax2 +b

ou a,b∈ K. Une telle courbe est ditenon-supersinguliereet possede un discrimi-nant∆ = b. Si a1 = 0, alors, le changement admissible de variables

(x, y) 7→ (x+a2, y)

transformeE en la courbe

y2 +cy= x3 +ax2 +b

Une telle courbe est ditesupersinguliereet possede un discriminant∆ = a4.

11

Page 12: Courbes Elliptiques, Implémentation de la Signature Electronique

2.2. Loi de groupe

Nous venons de voir que l’equation deWeierstrasspeut-etre agreablement sim-plifi ee pour l’utilisation d’un corps binaire. Maisa quoi cela va-t-il bien pouvoirnous servir si nous ne sommes pas en mesure d’effectuer des operations sur cettecourbe ? Nous allons donc traiter la mecanique deselements des courbes ainsiconsiderees.

SoitE une courbe elliptique definie surK. Il existe une reglecorde-et-tangentepour additionner deux points deE(K) pour donner un troisieme point appartenant,lui aussiaE(K). Du coup, nous« fermons» la courbe. En effet,E(K) forme alorsun groupe abelien avec∞ servant d’element neutre. C’est ce groupe que nous uti-liserons pour construire le systeme cryptographique base sur courbes elliptiques.

L’addition de deux points est mieux expliquee geometriquement. SoitP =(x1,y1) et Q = (x2,y2) deux points distincts d’une courbe elliptiqueE. Alors, lasomme RdeP et deQ est definie de la maniere suivante. On commence par dessi-ner une ligne passant par les pointsP etQ ; cette ligne intersecte la courbe elliptiqueen un troisieme point. Enfin,Rest la reflexion de ce point par rapporta l’axe desx,ce qui est explique Fig. 2.2 (a).

Le double RdeP est defini de la maniere suivante. On commence par dessinerla tangente au pointP. Cette ligne intersecte alors la courbe en un deuxieme point,dont on prend l’image par reflexion par rapporta l’axe desx, ce qui est expliqueFig. 2.2 (b).

x

y

0

Q = (x2,y2)

P = (x1,y1)

R= (x3,y3)

(a) Addition :P+Q = R

x

y

0

P = (x1,y1)

R= (x3,y3)

(b) Doublement :P+P = R

FIG. 2.2 – Addition et doublement geometrique des points d’une courbe elliptique.

12

Page 13: Courbes Elliptiques, Implémentation de la Signature Electronique

Sachant que nous savons maintenant sur quel type support vont reposer noscourbes et par consequent, tout notre systeme cryptographique, interessons-nousaux moyen de les mettre en œuvre.

2.3. Addition et Multiplication de points

Nous allons maintenant traiter les formules pour les courbes elliptiques quisont non-supersingulieresE et de la formey2 +xy= x3 +ax2 +b en coordonneesaffines surK = F2m. Voici donc, la loi de groupe correspondante :

Loi de groupe (non-supersinguliere) E/F2m : y2 +xy = x3 +ax2 +b

1. Identite. P+∞ = ∞+P = P pour toutP∈ E(F2m)

2. Negation.Si P = (x, y) ∈ E(F2m), alors(x, y)+ (x, x+y) = ∞. On note−Ple point(x, x+y) et on l’appelle lenegatif deP ; on peut remarquer que−Pest un point deE(F2m) et que−∞ = ∞.

3. Addition.Soit P = (x1, y1) ∈ E(F2m) et Q = (x2, y2) ∈ E(F2m) ou P 6= ±Q.Alors, P+Q = (x3, y3) ou

x3 = λ 2 +λ +x1 +x2 +a et y3 = λ (x1 +x3)+x3 +y1

avecλ = (y1 +y2)/(x1 +x2).

4. Doublement.Soit P = (x1, y1) ∈ E(F2m), ou P 6= −P. Alors 2P = (x3, y3),avec,

x3 = λ 2 +λ +a = x21 +

b

x21

et y3 = x21 +λx3 +x3

avecλ = x1 +y1/x1.

Exemple de courbe elliptique non-singuliere sur F24 On considere le corpsfini F24 tel que represente par le polynome de reduction f (z) = z4 + z+ 1. Unelementa3z3+a2z2+a1z+a0 ∈ F24 est represente par la chaıne de bits(a3a2a1a0)de longueur 4 ; par exemple(0101) representez2 + 1. Soita = z3, b = z3 + 1, etconsiderons la courbe elliptique non-singuliere

E : y2 +xy= x3 +z3x2 +(z3 +1)

definie surF24. Les points deE(F24) sont alors les suivants :

∞ (0011, 1100) (1000, 0001) (1100, 0000)(0000, 1011) (0011, 1111) (1000, 1001) (1100, 1100)(0001, 0000) (0101, 0000) (1001, 0110) (1111, 0100)(0001, 0001) (0101, 0101) (1001, 1111) (1111, 1011)(0010, 1101) (0111, 1011) (1011, 0010)(0010, 1111) (0111, 1100) (1011, 1001)

13

Page 14: Courbes Elliptiques, Implémentation de la Signature Electronique

2.3.1 Algorithmes de base d’addition, negation et doublement

Bien que ces algorithmes soient tres simplesa utiliser eta implementer, nousles presentons afin de montrer que lorsque nous arriverons dans la section 4.2 lesgains en temps de calculs seront plus visibles.

Le premier algorithme est celui de l’addition dont nous avons pu apercevoir lefonctionnement au travers de la definition de la courbe elliptiqueetudiee jusqu’apresent.

FIG. 2.3 : Addition basique de deux points

Entr ees: P = (x1, y1) etQ = (x2, y2) qui appartiennentaE(F2m).Sorties: R= P+Q = (x3, y3) ∈ E(F2m).debut

X← x1 +x2;

λ ←y1 +y2

X;

x3← λ 2 +λ +X +a;y3← λ (x1 +x3)+x3 +y1;retourner (x3, y3);

fin

L’algorithme suivant correspond au cas ou il est necessaire de doubler un point.Il y deux cas possibles d’apres la definition precedente. Nous utiliserons celle fai-sant intervenir le coefficienta car elle fait intervenir par la meme occasion la valeurλ . Le calcul deλ demande une inversion. Si l’on utilise la version avec le coef-ficient b, nous ajoutons une inversion supplementaire, qui, rappelons-le est uneoperation assez couteuse dans notre cas.

FIG. 2.4 : Doublement basique d’un point

Entr ees: P∈ E(F2m).Sorties: 2P∈ E(F2m).debut

λ ← x1 +y1

x1;

x3← λ 2 +λ +a;y3← λx2

1 +λx3 +x3;retourner (x3, y3);

fin

Avant de conclure par l’algorithme general d’additionevitant les cas que nousdirons, problematiques, nous voyons l’algorithme le plus simple. Il s’agit de celuide la negation d’un pointP deE(F2m).

14

Page 15: Courbes Elliptiques, Implémentation de la Signature Electronique

FIG. 2.5 : Negation d’un point

Entr ees: P(x1, y1) ∈ E(F2m).Sorties: −P∈ E(F2m).debut

x1← x1;y1← x1 +y1;retourner (x1, y1);

fin

Il ne nous reste plus qu’a combiner ces algorithmes en gerant les cas particu-liers afin de bien composer les calculs eteviter les calculs inutiles envoyant lespointsa l’infini ou hors de la courbe.

FIG. 2.6 : Addition propre de base

Entr ees: P = (x1, y1) etQ = (x2, y2) qui appartiennentaE(F2m).Sorties: R= P+Q = (x3, y3) ∈ E(F2m).debut

si (P = ∞) alorsretourner Q;

finsisi (Q = ∞) alors

retourner P;finsisi P =Negation(Q) alors

retourner ∞;finsisi P = Q alors

retourner Doublement base(P) ;sinon

retourner Addition base(P) ;finsi

fin

Il reste cependant un point important et incontournable. Il s’agit de celui dela multiplication d’un point par un entier. Les algorithmes de signature effectuentcette operation si souvent que c’esta se demander si la cryptographie ne repose pasessentiellement sur cette operation.

2.3.2 Algorithmes de base de multiplication

Nous allonsetre amene a considerer deux methodes tres proches permettant decalculerkP, ou k est un entier positif et ou P est un point de la courbe elliptiqueEsur un corpsF2m.

Ce sont donc deux algorithmes simples que nous allons voir. Ces algorithmes

15

Page 16: Courbes Elliptiques, Implémentation de la Signature Electronique

ne sont que les representations additives des algorithmes utilises pour l’exponen-tiation. L’algorithme Fig. 2.7 effectue l’operation en traitant les bits dek de gauchea droite alors que l’algorithme Fig. 2.8 les traite de droitea gauche.

L’int eret des deux methodes est certains et nous verrons les complexites resul-tantes ainsi que les resultats de performance obtenus en section 4.2.

FIG. 2.7 : Methode binaire de multiplication droite/gauche.

Entr ees: k = (kt−1, . . . , k1,k0)2 etP∈ F2m.Sorties: kP.debut

Q← ∞;pour i de0 a t−1 faire

si ki = 1 alorsQ←Q+P;

finsiP← 2P;

finpourretourner Q;

fin

FIG. 2.8 : Methode binaire de multiplication gauche/droite.

Entr ees: k = (kt−1, . . . , k1,k0)2 etP∈ F2m.Sorties: kP.debut

Q← ∞;pour i de t−1 a 0 faire

Q← 2Q;si ki = 1 alors

Q←Q+P;finsi

finpourretourner Q;

fin

16

Page 17: Courbes Elliptiques, Implémentation de la Signature Electronique

CHAPITRE 3

ECDSA

Definir un support mathematique base sur les corps fini est une chose,mais definir l’objet qui reposera sur ce support en est une bien plus im-portante. C’est donc dans ce chapitre que nous introduirons de nouvellesnotions qui permettrons de finaliser la mise en place de ce systeme cryp-tographique base sur les courbes elliptiques.

Un tel systeme est-il sur, cryptographiquement parlant ? Au traversdu probleme du logarithme discret etendu aux courbes elliptiques, noustenterons de demontrer cette securite. Seront ensuite presentes tous leselements et algorithmes permettant d’implementer un tel systeme. Enfin,seront exposes les algorithmes, en pseudo-code, du schema de signatureelectronique utilise, a savoir, ECDSA.

3.1. Elliptic Curve Discrete Logarithm Problem

L’intracabilite de la solution au probleme du logarithme discretetendu auxcourbes elliptiques est necessaire pour tous les schemas cryptographiques utilisantdes courbes elliptique.

Le probleme du logarithme discret pour les courbes elliptiques est le suivant.

Definition 3.1.1 (ECDLP). Etant donne une courbe elliptique E definie sur lecorps fini Fq, un point P∈ E(Fq) d’ordre n et un point Q∈ 〈P〉, trouver l’en-tier l ∈ [0, n−1] tel que Q= lP. L’entier l est appele le logarithme discretde Qen base P, note l = logPQ.

Le fait que ce probleme soit si difficile nous assure la securite attendue. Il fautpour cela que les parametres des courbes elliptiques pour les schemas cryptogra-phiques soient judicieusement choisis afin de resistera toutes les attaques connuessur l’ECDLP.

17

Page 18: Courbes Elliptiques, Implémentation de la Signature Electronique

L’algorithme le plus naıf est une recherche exhaustive deQ en calculant les va-leurs successivesP, 2P, 3P, 4P. . . jusqu’a ce qu’il soit rencontre. Avec la puissancede calcul des ordinateurs actuels, le probleme reste cependant infaisable dans letemps.

Le probleme est que grand nombre d’etudes ont eu lieu et certaines ont donnede bons resultats. C’est pourquoi, nous devons absolument choisir des parametrespour la courbe qui puissent resistera toutes ces attaques. Nous allons voir dansce qui suit comment choisir ces parametres. Pour un gain de temps, nous utilise-rons des parametres recommandes par leNIST(National Institute of Standards andTechnology).

Cette utilisation nous permet d’eviter d’avoir a generer par nous meme desparametres de domaines ainsi que les algorithmes permettant leur validation. Nousallons tout de meme nous interesser aux parametres de domaine en donnant ladefinition qui nous sera utile par la suite. Cette definition est des plus formelle etnous n’utiliserons pas la totalite de ce qu’elle definie dans notre implementation dusysteme cryptographique.

Definition 3.1.2(Parametres de domaines). Les parametres de domaine D tels queD = (q, FR, S, a, b, P, n, h) sont composes de :

1. L’ordre du corpsq.

2. Une indication FR (representation du corps) sur la representation utiliseepour leselements deFq.

3. UnegraineS si la courbe elliptique aete generee aleatoirement.

4. Deuxcoefficientsa, b∈ Fq qui definissent l’equation de la courbe elliptiqueE surFq (i.e.,y2 = x3+ax+b dans le cas d’un corps premier ou d’extensionoptimal, et y2 +xy= x3 +ax3 +b dans le cas d’un corps binaire).

5. Deuxelements du corps xP et yP dansFq qui definissent un point fini P=(xP, yP) ∈ E(Fq) en coordonnees affines. P a un ordre premier et est appelele point de base.

6. L’ordre n de P.

7. Lecofacteurh = card(E(Fq))/n.

3.2. Generation de clefs

La generation des clefs aussi bien publique que privees est un l’outil qui vanous permettre« d’ouvrir et de fermer les verrous» du systeme cryptographique.

On associe un couple de clefs pour une courbe elliptiquea des parametres dedomaine particuliersD = (q, FR, S, a, b, P, n, h). La clef publique est un pointQde la courbe elliptique choisi aleatoirement dans le groupe〈P〉 genere parP. La

18

Page 19: Courbes Elliptiques, Implémentation de la Signature Electronique

clef privee correspondante estd = logPQ. L’entite A qui genere le couple de clefsdoit etre assure que les parametres de domaine sont valides. De plus, l’associationde parametres de domaines et d’une clef publique doitetre verifiable par toutes lesentites qui pourraient, plus tard,etre amenera utiliser la clef publique de l’entiteA. En pratique, cette association peutetre obtenuea l’aide de moyens cryptogra-phiques (e.g.,l’autorite de certification genere un certificat qui atteste cette asso-ciation) ou selon le contexte (e.g.,toutes les entites utilisent les memes parametresde domaine).

FIG. 3.1 : Generation d’un couple de clefs.

Entr ees: Parametres de domaineD = (q, FR, S, a, b, P, n, h).Sorties: Clef publiqueQ, clef priveed.debut

Choisir aleatoirementd ∈ [1, n−1];CalculerQ = dP;retourner (Q, d);

fin

Desormais, nous possedons un outil permettant de generer un couple (Clef pu-blique, Clef privee) que nous utiliserons lors de la signature de messages. Maiscommentetre assure de la validite de ces clefs conformement aux parametres dedomaines utilises. L’algorithme Fig. 3.2 permet d’assurer cette validite en accep-tant ou rejetant une paire de clef en fonction des parametres de domaine proposes.

FIG. 3.2 : Validation de clef publique.

Entr ees: Parametres de domaineD = (q, FR, S, a, b, P, n, h), ClefpubliqueQ.

Sorties: Acceptation ou rejet de la validite de la clef publiqueQ.debut

Verifier queQ 6= ∞;Verifier quexQ etyQ sont bien representes comme deselements deF2m

(i.e.,ce sont des chaınes de bits de longueurm);Verifier queQ satisfait l’equation de la courbe elliptique definie para etb;Verifier quenQ= ∞;si echec de l’une des verificationalors

retourner Clef non valide;finsisinon

retourner Clef valide;finsi

fin

19

Page 20: Courbes Elliptiques, Implémentation de la Signature Electronique

3.3. Schema de signature

Les schemas de signature ne sont rien d’autre que l’equivalentelectronique dela signature manuscrite. Il est possible d’en faire usage afin d’authentifier l’origineou l’integrite des donnees. Les schemas de signature sont communement utiliseespar des autorites de confiance afin de signer des certificats qui relient entre eux,une entite et sa clef public.

Definition 3.3.1 (Schema de signature). Un schema de signaturese resumeaquatre algorithmes.

1. Un algorithme de generation de parametres de domaines, qui genere unensemble D de parametres de domaines.

2. Unalgorithme de generation de clefsqui prend en entree un ensemble D deparametres de domaine et genere un couple de clefs(Q, d)

3. Unalgorithme de generation de signaturequi prend en entree un ensembleD de parametres de domaine, une clef privee d, et un message m, produisanten sortie, une signatureΣ.

4. Unalgorithme de verification de signaturequi prend en entree un ensembleD de parametres de domaine, une clef publique Q, et un message m, ainsiqu’une signatureΣ pretendue valable. Cet algorithme accepte ou rejettealors la signature proposee.

Les parametres de domaine D sont presumes valides et que la clef publique Qest valide et associeea D. L’algorithme de verification de signature accepte tou-jours l’entree(D, Q, m, Σ) a condition bien sur queΣ a ete genere par l’algorithmede generation de signature avec(D, d, m) comme entree.

Cependant, meme s’il est possible de chiffrer le message et de lui attribuerune signature, qu’en est-il de la securite ? La notion suivante de securite pour unschema de signature est duea Goldwasser, Micali et Rivest (GMR).

Definition 3.3.2. Un schema de signature est ditsecurise (ou GMR-securise) sicelui-ci est existenciellement non forgeable par un adversairea la capacite decalcul limite qui pourrait monter une attaque adaptable pour des messages choisis.En d’autres mots, un adversaire qui est en mesure d’obtenir des signatures pourtout message de son choix de la part du l’entite signataire legitime est incapable dereproduire par elle-meme une nouvelle signature pour tout autre nouveau message(pour lequel il n’a pas deja demande ou obtenu une signature).

Nous sommes maintenant rassures de savoir que le schema utilise est on nepeut plus sur. D’autant que la definition de securite est tres forte.

20

Page 21: Courbes Elliptiques, Implémentation de la Signature Electronique

3.4. ECDSA

Nous venons de definir tout ce quietait necessairea la realisation de base d’unsysteme de signatureelectronique, le systeme meme misa part. C’est donc ici, quenous allons commencer reellementa nous amuser.

L’algorithme de signature numerique par courbe elliptique (ECDSA) est l’algo-rithme analoguea celui de la signature numerique (DSA). Il s’agit de l’algorithmele plus sauvagement standardise des schemas de signature bases sur courbes ellip-tique. Il apparaıt dans les standards ANSI X9.62, FIPS 186-2, IEEE 1363-2000 etISO/IEC 15946-2 ainsi que dans d’autres standards encorea l’etat de brouillon.

Dans tout ce qui va suivre,H represente une fonction de hachage cryptogra-phique dont la sortie possede une longueur de bits pas plus grande que celle den. Cette condition dans notre cas, nous le verrons n’est pas satisfaite. Eneffet, lafonction de hashage que nous utiliserons est SHA-512 dont la sortie fait512 bitsalors que le nombre de bits den sera surement plus petite. Nous tronquerons doncla taille de la sortie de la fonction de hachagea celle den en ne conservant que lesbits les plusa droite.

Nous allons maintenant presenter les deux algorithmes essentielsa l’utilisationde notre systeme. Le premier algorithme est un algorithme de generation de signa-ture pour un message donne et le second est celui qui va servir de verificateur designature pour un message donne.

FIG. 3.3 : Generation de signature ECDSA.

Entr ees: Parametres de domaineD = (q, FR, S, a, b, P, n, h), une clefpriveed, un messagem.

Sorties: Signature(r, s).debut

r epeterr epeter

Choisir aleatoirementk∈ [1, n−1];CalculerkP= (x1,y1);Convertirx1 en un entierx1;Calculerr = x1 modn;

jusqu’ a r 6= 0;Calculere= H(m);Calculers= k−1(e+dr) modn;

jusqu’ a s 6= 0;retourner (r, s);

fin

Nous pouvonsetre assure que la verification de la signature fonctionne bel etbien.

21

Page 22: Courbes Elliptiques, Implémentation de la Signature Electronique

FIG. 3.4 : Verification de signature ECDSA.

Entr ees: Parametres de domaineD = (q, FR, S, a, b, P, n, h), une clefpubliqueQ, un messagem, une signature(r, s).

Sorties: Acceptation ou rejet de la signature.debut

si (r 6∈ [1, n−1]) ou (s 6∈ [1, n−1]) alorsretourner « Rejet de la signature»;

finsiCalculere= H(m);Calculerw = s−1 modn;Calculeru1 = ewmodn;Calculeru2 = rw modn;CalculerX = u1P+u2Q;si X = ∞ alors

retourner « Rejet de la signature»;finsiConvertir la coordonneex1 deX en un entierx1;Calculerv = x1 modn;si v = r alors

retourner « Acceptation de la signature»;sinon

retourner « Rejet de la signature»;finsi

fin

Preuve du fonctionnement de la verification de signature.Si l’on considere que lasignature(r, s) d’un messagem fut bel et bien generee par le signataire legitime,alors,

s≡ k−1(e+dr) modn

dont le rearrangement nous donne

k≡ s−1(e+dr)≡ s−1e+s−1rd ≡ we+wrd≡ u1 +u2d modn.

Par consequent, nous avons

X = u1P+u2Q = (u1 +u2d)P = kP

et donc,v = r comme voulu.

En ce qui concerne la securite de ECDSA, le choix de la fonction de hachagejoue un role primordial car si celle-ci peut-etre cassee, alors, la signature suivrasans procedures.

Nous allons maintenant expliquer dans le chapitre suivant comment toutes cesnotions ont puetre mise en œuvre afin de realiser l’implementation du schema designature ECDSA.

22

Page 23: Courbes Elliptiques, Implémentation de la Signature Electronique

CHAPITRE 4

Impl ementation et Optimisations

Nous y voila enfin. Que peuvent bien donner, une fois implementees,toutes ces notions que nous venons d’etaler. Nous allons presenter dansce chapitre les choix que nous avons faits concernant les structures dedonnees utilisees pour l’implementation. Ensuite, nous traiterons du choixde la ou les courbes utilisees. Comme nous l’avons vu precedemment,le choix d’une fonction de hachage fut faite de maniere a ce qu’elle nesoient pas faible face aux attaques. Enfin, nous etudierons les gains deperformances que nous avons pu obtenir durant toute l’implementation autravers de l’utilisation de coordonnees projectives ou de representationsparticulieres.

Tout aussi etonnant que l’assimilation de ces nouvelles notions, vientl’apprentissage d’un nouveau langage de programmation, le C++. Ce lan-gage oriente objet est celui choisi pour l’implementation.

4.1. Structures de donnees

Globalement, facea toutes ces notions, le nombre de classes utilisees pourl’impl ementation est loin d’etre exhaustif. C’est pourquoi nous prendrons le tempsde les presenter brievement dans cette section. Nous allons par consequent donnerles explications necessaires au fonctionnement de cette implementation.

4.1.1 Description des classes

ECDomainParameters

Nous savons tout d’abord que nous aurons besoin de parametres de domaine.Cela aete englobe dans une classe,ECDomainParameters, qui va generer les pa-rametres de domaines. Le probleme se posait sur la generations. En realite, commenous utilisons uniquement les parametres fournis par leNIST, cette classe ne fait

23

Page 24: Courbes Elliptiques, Implémentation de la Signature Electronique

que fixer les parametres de domaine de la courbe elliptique de Koblitz K-163. Lesparametres que nous fixons pour l’utilisation de la courbe K-163 sont presentesFig. 4.1.

m = 163f (z) = z163+z7 +z6 +z3 +1a = 1b = 1h = 2n = 0x 00000004 00000000 00000000 00020108 A2E0CC0D 99F8A5EF

x = 0x 00000002 FE13C053 7BBC11AC AA07D793 DE4E6D5E 5C94EEE8

y = 0x 00000002 89070FB0 5D38FF58 321F2E80 0536D538 CCDAA3D9

FIG. 4.1 – Parametres de domaines pour K-163

Nous pouvons aussi jeter un oeila la courbe K-233 dont les parametres sontaussi fournis. A terme, cette classe devraitetre dans la mesure de generer les pa-rametres pour toutes les courbes recommandees par leNISTainsi que de les genererpar elle meme.

m = 233f (z) = z233+z74+1a = 0b = 1h = 4n = 0x 00000080 00000000 00000000 00000000 00069D5B B915BCD4 6EFB1AD5 F173ABDF

x = 0x 00000172 32BA853A 7E731AF1 29F22FF4 149563A4 19C26BF5 0A4C9D6E EFAD6126

y = 0x 000001DB 537DECE8 19B7F70F 555A67C4 27A8CD9B F18AEB9B 56E0C110 56FAE6A3

FIG. 4.2 – Parametres de domaines pour K-233

ECSignature

Ensuite, nous avons la classe qui s’occupe de maintenir les informations con-cernant la signature d’un messagem par les valeursr et s. Cette classe n’est autrequ’une classe de stockage permettant l’echange de donnees entre les fonctions degeneration et de verification de signature de ECDSA.

ECBFEquation

Une autre classe tres simple est la classeECBFEquationqui va maintenir lesinformations concernant les coefficientsa et b de la courbe elliptique. Ces coeffi-cients sont tres souvent sollicites tout au long de la generation ou de la verification

24

Page 25: Courbes Elliptiques, Implémentation de la Signature Electronique

de signature car elle intervient dans chaque multiplication et par consequent, danschaque addition de points dansF2m. C’est pourquoi les methodes sontinline afinde gagner quelques petits temps de calcul.

ECMessage

Toujours dans le meme genre de classes, petites mais tres utiles, voici la classeECMessage. Celle-ci aura pour role la gestion des messages,a savoir, pointer aussibien sur des chaınes de caracteres que sur des fichiers. De plus c’est elle qui auracomme charge le hachage du message.

Nous l’avons vu precedemment, nous utilisons la fonction de hachage SHA-512 dans les algorithmes de generation et de verification de signature ECDSA.L’algorithme utilise fait appela la librairiemhashqui gere un certain nombre d’al-gorithmes de hachage dont SHA-512. Bienevidemment, ce n’est surement pas lalibrairie la plus rapide connue pour ce genre d’operation mais ce fut cependant laplus simplea utiliser et mettre en œuvre dans cette implementation.

Cette librairie est disponible sur le site deSourceforgea l’adresse suivante :http ://mhash.sourceforge.net.

Nous pouvons ajouter la chose suivante concernant la classeECMessage. Soite= H(m) le hash du messagempar l’algorithme SHA-512, et tel que

e= e511e510. . .e3e2e1e0

alors la methodeZZ hashMeTruncated(unsigned int nbbits) retourne le hashe′ telque

e′ = enbbits−1enbbits−1 . . .e3e2e1e0

ECKeyPair

Au chapitre 3, nous avons vu comment iletait possible de generer un couplede clefs, publique et prive (Q,d). Cette classe s’occupe de realiser ces operationsal’aide de deux methodes principales qui prennent comme parametre, he bien. . . desparametre de domaineD representes par la classeECDomainParameters:

• void ECKeyPair::generateKeyPair(ECDomainParameters∗ D);• bool ECKeyPair::validatePublicKey(ECDomainParameters∗ D);

Nous arrivons desormais aux deux classes les plus importantes de ce pro-gramme. Il s’agit des classesECDSAet ECPointque nous allons presenter d’icipeu.

Remarque 4.1.1.Il reste tout de meme deux classes qui ne sont pas presentees ici.Elles le seront dans la partie reservee aux optimisations car celles-ci apporte desameliorations notables de performance au programme et au calculs effectues surles courbes elliptiques E(F2m).

25

Page 26: Courbes Elliptiques, Implémentation de la Signature Electronique

ECPoint

La classeECPoint a pour role la representation d’un pointP = (x,y) de lacourbe elliptiqueE(F2m) en coordonnees affines. En utilisant de maniere habile lasurcharge des operateurs du langageC++, nous offrons ainsi un code source facileet agreablea lire.

ECDSA

La classeECDSAquanda elle est tres succincte. Elle s’occupe uniquement derealiser les operations de generation et de verification de signature ECDSA. Elleimplemente en fait l’ensemble de tout ce que nous avons puetayer depuis le debutde ce papier. Du coup, elle devient tres simple d’utilisation. Il suffit de donner auconstructeur, un domaineD de parametres pour la courbea utiliser, la clef priveed et le messagem a signer et elle s’occupe alors de calculer le tout pour nousredonner en sortie la jolie signature de 163 bits (dans notre cas). Il nousest alorsenfin possible de verifier l’authenticite de la signature.

4.2. Optimisations

Maintenant que nous sommes en presence d’un programme fonctionnel quenous dirons naıf, implementant le schema de signatureelectronique ECDSA, nouspouvons desormais porter notre attention sur les optimisations possibles, si ellesexistent, des calculs effectuer. Il en existe bel et bien et nous allons exposer lesdeux principales optimisations obtenues pour ces calculs.

La premiere optimisation est obtenue en utilisant des coordonnees projectivesplutot que des coordonnees affines. Pouretre plus precis, l’optimisation est en faitune combinaison des deux types de coordonnees.

La seconde optimisation importante est obtenue en utilisant une autre repre-sentation des entiers utilises par les calculs de points de la courbe. En utilisant larepresentationNAF il devient alors possible d’eviter certains calculs qui deviennentpar consequent, superflus.

4.2.1 Coordonnees projectives

L’arithmetique des courbes elliptiques va se voir ameliorer par l’utilisation decoordonnees projectives plutot qu’essentiellement de coordonnees affines. Les for-mules qui permettaient d’additionner des points ont deja ete presentee. Celles-cinecessitaient une inversion dans le corps considere ainsi que plusieurs multiplica-tions dans le corps. Si l’inversion dans le corpsK est significativement beaucoupplus couteuse que celle de la multiplication, alors il peut-etre beaucoup plus avan-tageux de representer ces points en utilisant des coordonnees projectives.

26

Page 27: Courbes Elliptiques, Implémentation de la Signature Electronique

Les courbes que nousetudions depuis le debut de ce papier sont de la formey2+xy= x3+ax2+b. Il existe differents systemes de coordonnees permettant unerepresentation projective des points pour les courbes non supersingulieres de laforme

E : y2 +xy= x3 +ax2 +b

definies sur la corps binaireK. Parmis ces differents types de coordonnees projec-tives qui ontete proposees, nous pouvons retrouver les systemes suivants :

• Coordonnees projectives Standards,• Coordonnees projectives Jacobiennes,• Coordonnees projectives LD (Lopez-Dahab).

C’est ce dernier systeme de coordonnees qui va attirer notre attention.

Definition 4.2.1. Soit K un corps et soient c et d deux entier positifs. On peutdefinir une relation d’equivalence∼ sur l’ensemble K3\{(0, 0, 0)} des triplets nonnuls de K par

(X1,Y1,Z1)∼ (X2,Y2,Z2) si X1 = λ cX2, Y1 = λ dY2, Z1 = λZ2 avec λ ∈ K∗

La classe d’equivalence contenant(X, Y, Z) ∈ K3\{(0, 0, 0)} est

(X : Y : Z) ={(

λ cX, λ dY, λZ)

| λ ∈ K∗}

(X : Y : Z) est appele unpoint projectifet (X, Y, Z) est appele lerepresentantde(X : Y : Z).

Le systeme de coordonnees considere dans notre cas est donc celui de Lopez-Dahab (LD). Dans ce cas,c = 1 et d = 2. Le point projectif(X : Y : Z) avecZ 6= 0 correspond au point affine(X/Z, Y/Z2). L’ equation projective de la courbeelliptique est

Y2 +XYZ= X3Z+aX2Z2 +bZ4.

Le point infini∞ correspond au point(1 : 0 : 0), alors que le negatif de(X : Y : Z)est(X : X +Y : Z). Les formules permettant de calculer le double(X3 : Y3 : Z3)du point(X1 : Y1 : Z1) sont :

Z3 ← X21 ·Z

21

X3 ← X41 ·bZ4

1

Y3 ← bZ41 ·Z3 +X3 ·

(

aZ3 +Y21 +bZ4

1

)

27

Page 28: Courbes Elliptiques, Implémentation de la Signature Electronique

Les formules permettant de calculer la somme(X3 : Y3 : Z3) des points(X1 : Y1 :Z1) et (X2 : Y2 : 1) sont :

A ← Y2 ·Z21 +Y1

B ← X2 ·Z1 +X1

C ← Z1 ·B

D ← B2 ·(

C+aZ21

)

Z3 ← C2

E ← A·C

X3 ← A2 +D+E

F ← X3 +X2 ·Z3

G ← (X2 +Y2) ·Z23

Y3 ← (E +Z3) ·F +G

L’inconvenient majeur de ces deux algorithmes est que ceux-ci ne sont valablesque dans le cas ou le coefficienta de l’equation appartienta {0, 1}. Les deux al-gorithmes ne sont pas presentes car ils representent approximativement les memesinstructions au test pres des retours du point∞, que les formules que nous venonsde presenter.

Le tableau suivant va nous montrer l’interet d’utiliser de tels algorithmes plutotque les algorithmes initiaux.

Systeme de coordonnees Addition generale Addition generale DoublementCoordonnees mixed

Affine D+M - D+MProjectif Standard 13M 12M 7MProjectif Jacobien 14M 10M 5M

Projectif (LD) 14M 8M 4M

FIG. 4.3 – Couts pour l’addition et le doublement sury2 +xy= x3 +ax2 +b. D =division,M = multiplication.

Si l’on souhaite, revenira une representation en coordonnees affine il suffitde convertir le point en coordonnees projective en sonequivalent en coordonneesaffine. Ce resultata toute son importance dans la multiplication, comme nous allonsle voir.

4.2.2 Multiplication de points inconnus

Nous avons vu precedemment que nousetions en possession de deux algo-rithmes permettant la multiplication d’un pointP par un entier positifk. Le pre-mier algorithme utilisait une methode droite/gauche alors que le second utilisait

28

Page 29: Courbes Elliptiques, Implémentation de la Signature Electronique

une methode gauche/droite. Nous utiliserons le deuxieme algorithme pour une rai-son tres simple mais qui a toute son importance.

En utilisant des coordonnees projectives, la seule operation d’addition que noussavons realiser fait intervenira la fois un point en coordonnees projectives LD etun point en coordonnees affines. L’algorithme Fig. 2.7 oblige le pointQ a etrerepresente en coordonnees projectives et le doublement ne peutetre obtenu demaniere performante qu’en utilisant des coordonnees projectives. Il faut doncachaque fois que l’additionQ← Q+ P a lieu, convertir le pointP vers des coor-donnees affines. Nous perdons alors tout l’interet de l’utilisation des coordonneesprojective permettant d’eviter des inversions inutiles dans le corps considere.

En contre partie, l’algorithme Fig. 2.8 quanda lui en traitan les bits, de ladroite vers la gauche nous offre la possibilite d’utiliser le pointQ en coordonneesprojectives afin d’effectuer tous les doublement necessaires. Et pour ce qui est dupointP, une seule conversion est necessaire.

Les resultats obtenus en utilisant l’algorithme Fig. 2.7 sont de 4,8msalors queceux obtenus avec Fig. 2.8 descendent alorsa 3,615msen moyenne. C’est un gainnon negligeable et nous allons voir qu’il est encore possible de diminuer les va-leur de l’addition de point avec l’utilisation d’une representation particuliere desentiers.

4.2.3 Representation Non Adjacent Form (NAF)

Si le pointP= (x, y)∈E(Fq) alors le point−P= (x, x+y) dans le cas ouFq estun corps binaire. Par consequent, la soustraction des points d’une courbe elliptiqueest aussi efficace que l’addition de ceux-ci. Ceci va nous donner l’envie d’utiliserunerepr esentation signee des bitsde l’entierk = ∑i=0 l −1ki2i , ou ki ∈ {0,±1}.Une representation signee des bits particulierement interessante est laforme non-adjacente(NAF).

Definition 4.2.2(NAF). Une forme non-adjacente(NAF) d’un entier positif k estune expression

k = ∑i=0

l −1ki2i

ou ki ∈ {0,±1}, kl−1 6= 0 et deux bits consecutifs ki ne sont pas tous deux non nuls.La longueurde NAF est l.

L’avantage de cette representation est deja que celle-ci est unique pour un entierpositif donne. Mais le plus important est que l’on sait que l’algorithme de multi-plication utilise effectue une addition chaque fois qu’un bit de la representationde l’entier vaut 1. Il se trouve que la representation NAF possede en general, pardefinition un nombre inferieur de zeros. Nous pouvons donc nous attendrea ceque les temps de calculs dekP en soient reduits. Voyons tout d’abord quelquesproprietes concernant les NAFs afin de justifier nos dires.

29

Page 30: Courbes Elliptiques, Implémentation de la Signature Electronique

Theoreme 4.2.1(Proprietes des NAFs). Soit k un entier positif.

(i) k possede un NAF unique note NAF(k).

(ii) NAF(k) possede le moins de bits non nuls parmis toutes les representationssignees de bits de l’entier k.

(iii) La longueur de NAF(k) est au plus celle de la representation binaire de kplus un.

(iv) Si la longueur de NAF(k) est l, alors

2l

3< k <

2l+1

3

(v) La densite moyenne des bits non-nuls sur l’ensemble de toutes les NAFs delongueur l est approximativement1/3.

NAF(k) peut-etre calculer efficacement gracea l’algorithme Fig. 4.4. Les bitsde NAF(k) sont generes en divisantk successivement par 2, permettant des restesde 0 ou±1. Sik est impair, alors, le rester ∈ {−1, 1} est choisi de telle sorte quele quotient(k− r)/2 soit pair. Ceci assure que le prochain bit de la representationNAF sera un 0.

FIG. 4.4 : Calcul du NAF d’un entier positif.Entr ees: Un entier positifk.Sorties: NAF(k).debut

i← 0;tant que k≥ 1 faire

si k est impairalorski ← 2− (k mod 4);k← k−ki ;

sinonki ← 0;

finsik← k/2;i← i +1;

fintqretourner (ki−1, ki−2, . . . , k1, k0);

fin

Enfin, l’algorithme Fig. 4.5 modifie l’algorithme de multiplication de pointutilisant la methode binaire gauche/droite (Fig. 2.8) en utilisant NAF(k) plutot quela representation binaire dek. Il en decoule que la complexite de calcul de cetalgorithme sera reduit par rapporta Fig. 2.8.

Cette derniere optimisation nous fait diminuer les temps de calculs, en les fai-sant passer de 3,615msa 3,3ms.

30

Page 31: Courbes Elliptiques, Implémentation de la Signature Electronique

FIG. 4.5 : Methode binaire NAF pour la multiplication de points.

Entr ees: Un entier positifk, P∈ E(Fq).Sorties: kP.debut

Calculer NAF(k) = ∑l−1i=0 ki2i ;

Q← ∞;pour i allant de l−1 a 0 par pas de−1 faire

Q← 2Q;si ki = 1 alors

Q←Q+P;finsisi ki =−1 alors

Q←Q−P;finsi

finpourretourner Q;

fin

Il existe encore grand nombre d’optimisation qu’il aurait puetre possible demettre en œuvre si le temps ne nous pressait pas. Cependant, le programme imple-mentant l’algorithme fonctionne et c’est la l’essentiel.

31

Page 32: Courbes Elliptiques, Implémentation de la Signature Electronique

Conclusion

Un mois d’ecoule et un projet qui fonctionne. Apres l’etude des courbeselliptiques et de leur application en cryptographie ce semestre, la mise aupoint de l’implementation est terminee. Le schema de signature electro-nique applique aux courbes elliptiques ECDSA est alors implemente. Sontensuite apportes quelques optimisations, le rendant ainsi plus rapide etplus efficace.

Cependant, regrets et idees emergent subitement. Des regrets car letemps restants intrinsequement incompressible, toutes les optimisationsprevues n’ont pas pu etre mises au point. Des idees car ce fameux temps,je le cherche afin de proposer dans un futur proche, je l’espere, un pro-gramme complet ou une librairie permettant l’utilisation de nombreux algo-rithmes utilisant les courbes elliptiques en ne se restreignant pas unique-ment a la signature electronique mais aussi a d’autres protocoles a clefpartage, etc.

De plus, l’apprentissage d’un nouveau langage de programmation telque le C++ durant toutes ces heures augmente par la meme occasion lepanel des langages qui m’etaient connus.

32

Page 33: Courbes Elliptiques, Implémentation de la Signature Electronique

Table des figures

2.1 Courbes Elliptiques surR. . . . . . . . . . . . . . . . . . . . . . 102.2 Addition et doublement geometrique des points d’une courbe el-

liptique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3 Addition basique de deux points . . . . . . . . . . . . . . . . . . 142.4 Doublement basique d’un point . . . . . . . . . . . . . . . . . . 142.5 Negation d’un point . . . . . . . . . . . . . . . . . . . . . . . . 152.6 Addition propre de base . . . . . . . . . . . . . . . . . . . . . . 152.7 Methode binaire de multiplication droite/gauche. . . . . . . . . . 162.8 Methode binaire de multiplication gauche/droite. . . . . . . . . . 16

3.1 Generation d’un couple de clefs. . . . . . . . . . . . . . . . . . . 193.2 Validation de clef publique. . . . . . . . . . . . . . . . . . . . . 193.3 Generation de signature ECDSA. . . . . . . . . . . . . . . . . . 213.4 Verification de signature ECDSA. . . . . . . . . . . . . . . . . . 22

4.1 Parametres de domaines pour K-163 . . . . . . . . . . . . . . . . 244.2 Parametres de domaines pour K-233 . . . . . . . . . . . . . . . . 244.3 Couts pour l’addition et le doublement sury2 +xy= x3 +ax2 +b.

D = division,M = multiplication. . . . . . . . . . . . . . . . . . 284.4 Calcul du NAF d’un entier positif. . . . . . . . . . . . . . . . . . 304.5 Methode binaire NAF pour la multiplication de points. . . . . . . 31

33

Page 34: Courbes Elliptiques, Implémentation de la Signature Electronique

ANNEXE A

Manuel

Nous allons brievement detailler comment compiler, installer et exe-cuter le programme implemente.

A.1. Installation et compilation

Je pense qu’il ne devrait pasetre trop difficile d’effectuer la compilation etl’installation du programme sur une machine. Mais, il est important d’apporterquelques petites informations qui pourraient aider.

A.1.1 Compilation

Pour compiler le programme il suffit de lancer la commande./configure.Celle-ci generera les parametres necessairesa la compilation. Un pre requis utileest de savoir que les deux bibliotheques utiliseesNTL et mhashse situent dans lerepertoire/usr/lib. Le casecheant, une modification du fichierMakefile durepertoiresrc du projet sera sans doute necessairea une compilation sans erreur.

Il ne reste plus alors qu’a taper la commande miracle, dans le repertoire racinedu projet. Il suffit de tapermake dans le shell. La compilation devrait se passer sanstorp de problemes.

A.1.2 Installation

Une fois le programme compile, il est alors possible de l’installera l’aide de lacommandemake install. Cependant, sachant que cette version est encore tressimple, une simple execution du programmeecci dans le repertoiresrc du projetest surement bien plus judicieuse.

34

Page 35: Courbes Elliptiques, Implémentation de la Signature Electronique

A.2. Utilisation

L’utilisation aussi ne demande pas de grandes connaissances. Pour signer unfichier et obtenir la verification de sa signature, il suffit dans le cas du fichierfoo.bar a signer, de taper la commande suivante :./ecci -f foo.bar.

Le programme est assez rudimentaire, il est vrai, mais dans le cadre actueldeschoses, realise les operations.

35

Page 36: Courbes Elliptiques, Implémentation de la Signature Electronique

ANNEXE B

Code des en-tetes de classesutilis ees

B.1. ECDomainParameters

c l a s s ECDomainParameters{

pub l i c :ECDomainParameters ( ) ;

i n l i n e ZZ g e t q ( ) { re turn t h i s −>q ;}i n l i n e ZZ g e t n ( ) { re turn t h i s −>n ;}i n l i n e ZZ g e t s ( ) { re turn t h i s −>s ;}i n l i n e ZZ g e t h ( ) { re turn t h i s −>h ;}i n l i n e ZZ get m ( ) { re turn t h i s −>m;}i n l i n e ECBFEquation g e t e ( ) { re turn t h i s −>e ;}i n l i n e ECPoint g e t P ( ) { re turn t h i s −>P ;}

p r i v a t e :GF2X f z ;ECPoint P ;ZZ q ;ZZ s ;ZZ h ;ZZ m;ZZ n ;ECBFEquation e ;

ZZ ECDomainParameters: : hash2ZZ (unsigned char ∗ h , ZZ v ) ;vo id se tCurveK163Kob l i t z ( ) ;

} ;

B.2. ECSignature

c l a s s ECSignature{

pub l i c :ECSignature ( ) {}ECSignature (ZZ r , ZZ s ) ;i n l i n e vo id se tR (ZZ r ) { t h i s−>r = r ; }i n l i n e vo id s e t S (ZZ s ) { t h i s−>s = s ; }i n l i n e ZZ getR ( ) { re turn t h i s −>r ; }i n l i n e ZZ getS ( ) { re turn t h i s −>s ; }

p r i v a t e :ZZ r ;

36

Page 37: Courbes Elliptiques, Implémentation de la Signature Electronique

ZZ s ;} ;

B.3. ECBFEquation

c l a s s ECBFEquation{

pub l i c :ECBFEquation ( ) ;ECBFEquation (GF2E a , GF2E b ) ;

i n l i n e vo id s e t C o e f f a (GF2E a ) { t h i s−>a = a ;}i n l i n e vo id s e t C o e f f b (GF2E b ) { t h i s−>b = b ;}

i n l i n e GF2E g e t C o e f f a ( ) { re turn t h i s −> a ; }i n l i n e GF2E g e t C o e f f b ( ) { re turn t h i s −> b ; }

p r i v a t e :GF2E a ;GF2E b ;

} ;

B.4. ECMessage

c l a s s ECMessage{

pub l i c :s t a t i c cons t unsigned i n t SELECTION TYPE FILE = 1 ;s t a t i c cons t unsigned i n t SELECTION TYPE STRING = 2 ;

ECMessage( ) ;

vo id s e l e c t I n p u t (char ∗ f i l ename , unsigned i n t i n p u t t y p e ) ;vo id s e l e c t O u t p u t (char ∗ f i l ename , unsigned i n t o u t p u t t y p e ) ;

bool hashMe ( ) ;ZZ hashMeTruncated (unsigned i n t n b b i t s ) ;

i n l i n e unsigned char ∗ getHash ( ) { re turn t h i s −>hash ; }vo id showHash ( ) ;

˜ ECMessage( ) ;p r i v a t e :

s t a t i c cons t unsigned i n t SELECTION TYPE NO SELECTION = 0 ;

char ∗ o u t p u t ;char ∗ i n p u t ;

bool i n p u t s e l e c t e d ;bool o u t p u t s e l e c t e d ;

unsigned char ∗hash ;

unsigned i n t i n p u t s e l e c t e d t y p e ;unsigned i n t o u t p u t s e l e c t e d t y p e ;

37

Page 38: Courbes Elliptiques, Implémentation de la Signature Electronique

bool h a s h F r o m I n p u t F i l e ( ) ;bool h a s h F r o m I n p u t S t r i n g ( ) ;

} ;

B.5. ECKeyPair

c l a s s ECKeyPair{

pub l i c :ECKeyPair ( ) ;ECKeyPair ( ECDomainParameters ∗ D) ;vo id g e n e r a t e K e y P a i r (ECDomainParameters ∗ D) ;

i n l i n e ECPoint get Q ( ) { re turn t h i s −>Q; }i n l i n e ZZ g e t d ( ) { re turn t h i s −>d ; }

bool v a l i d a t e P u b l i c K e y (ECDomainParameters ∗ D) ;

p r i v a t e :ECPoint Q;ZZ d ;

} ;

B.6. ECPoint

c l a s s ECPoint{

pub l i c :ECPoint ( ) ;

ECPoint (GF2E x , GF2E y ) ;

i n l i n e vo id setX (GF2E x ) { t h i s−>x = x ; }i n l i n e vo id setY (GF2E y ) { t h i s−>y = y ; }

i n l i n e GF2E getX ( ) { re turn t h i s −>x ; }i n l i n e GF2E getY ( ) { re turn t h i s −>y ; }

i n l i n e ECPoint operator −(){

re turn ECPoint ( t h i s−>x , t h i s−>x+ t h i s−>y ) ;}ECPoint opera tor ∗ (ZZ n ) ;ECPoint opera tor ∗ (ECNAF k ) ;ECPoint opera tor +( ECPoint Q) ;

i n l i n e vo id s e t I n f i n i t y ( ) { t h i s−> i n f i n i t y p o i n t = t rue ; }i n l i n e bool i s I n f i n i t y ( ) { re turn t h i s −> i n f i n i t y p o i n t ; }

vo id show ( ) ;p r i v a t e :bool i n f i n i t y p o i n t ;

GF2E x ;GF2E y ;

} ;

38

Page 39: Courbes Elliptiques, Implémentation de la Signature Electronique

B.7. ECDSA

c l a s s ECDSA{

pub l i c :ECDSA(ECDomainParameters D) ;ECSignature g e n e r a t e S i g n a t u r e (ZZ d , ECMessage ∗m) ;bool v e r i f y S i g n a t u r e (ECPoint Q, ECMessage ∗m, ECSignature s i g n a t u r e ) ;

p r i v a t e :ECDomainParameters D;

ZZ coord ina teToZZ (cons t GF2E& a ) ;} ;

B.8. ECPPoint

c l a s s ECPPoint{

pub l i c :ECPPoint ( cons t GF2E& x , cons t GF2E& y , cons t GF2E& z ) ;ECPPoint ( vo id ) ;ECPPoint ( ECPoint P ) ;ECPPoint ( cons t ECPPoint& P ) ;

i n l i n e vo id setX (GF2E x ) { t h i s−>x = x ; }i n l i n e vo id setY (GF2E y ) { t h i s−>y = y ; }i n l i n e vo id se tZ (GF2E z ) { t h i s−>z = z ; }

i n l i n e GF2E getX ( ) { re turn t h i s −>x ; }i n l i n e GF2E getY ( ) { re turn t h i s −>y ; }i n l i n e GF2E getZ ( ) { re turn t h i s −>z ; }

/ / ECPPoint o p e r a t o r +( c o n s t ECPPoint& Q) ;i n l i n e ECPPoint operator −(){

re turn ECPPoint ( t h i s−>x , t h i s−>x + t h i s−>y , t h i s−>z ) ;}ECPPoint operator− ( ECPoint Q) ;ECPPoint opera tor ∗ (ZZ n ) ;ECPPoint opera tor ∗ (ECNAF k ) ;ECPPoint opera tor +( ECPoint Q) ;

ECPoint c o n v e r t ( ) ;i n l i n e bool i s I n f i n i t y ( ){

re turn ( IsOne (t h i s−>x ) && I s Z e r o ( t h i s−>y ) && I s Z e r o ( t h i s−>z ) ) ;}

i n l i n e vo id s e t I n f i n i t y ( ) {conv ( t h i s−>x , GF2X ( 0 , 1 ) ) ;conv ( t h i s−>y , GF2X ( 0 , 0 ) ) ;conv ( t h i s−>z , GF2X ( 0 , 0 ) ) ;

}

vo id show ( ) ;

p r i v a t e :

39

Page 40: Courbes Elliptiques, Implémentation de la Signature Electronique

GF2E x ;GF2E y ;

GF2E z ;i n t c ;i n t d ;

ECPPoint p o i n t D o u b l i n g (ECBFEquation e ) ;ECPPoint doub le mo i ( ) ;ECPPoint add (ECPoint Q, ECBFEquation e ) ;ECPPoint mul (ZZ k ) ;ECPPoint mul na f (ECNAF k ) ;

} ;

B.9. ECNAF

c l a s s ECNAF{

pub l i c :ECNAF( cons t ZZ& k ) ;

/ / ˜ECNAF ( ) ;

i n l i n e i n t ge tLeng th ( ) { re turn t h i s −>l e n g t h ; }i n l i n e i n t ge tVa l ( i n t i ) { re turn t h i s −>na f [ i ] ; }

vo id show ( ) ;p r i v a t e :

i n t w;i n t s i z e ;i n t l e n g t h ;i n t na f [ 5 1 2 ] ;/ / char ∗ na f ;

bool ZZ to NAF ( cons t ZZ& k ) ;

} ;

40