Vous êtes sur la page 1sur 34

Mthodes de Cryptographie M.

NAIMI Universit de Cergy-Pontoise


1









Mthodes de cryptographie


Par



Mohamed NAIMI

2010-2011
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
2
1. Arithmtique



1.1 Introduction
Larithmtique ou exactement la thorie des nombres a t depuis longtemps considre par
les mathmatiques pures comme un domaine la fois fascinant et sans grand intrt.
Aujourdhui, la thorie des nombres est largement utilise, notamment dans le domaine de la
communication et la transmission des informations.
La transmission des messages entres ordinateurs ncessite la confidentialit et
lauthentification do le cryptage (chiffrement) et le dcryptage (dchiffrement) des
messages transmis.
On distinguera deux types de cryptage : le cryptage clef prive et celui clef publique ces
deux modes de cryptage seront prsents dans la suite.
Dans cette partie nous rappelons des notions fondamentales de larithmtique des nombres.

1.2 Dfinitions et notations

1.2.1 Divisibilit
On note lensemble des entiers naturels par N={0, 1, 2, } et lensemble des entiers relatifs
par Z={, -1, 0, 1, }.
Dfinition : On dit quun entier a divise b et que lon note par a|b sil existe un entier k tel
que b=k.a.
On dit que b est un multiple de a et, a un diviseur de b.
Remarque : Tout entier divise 0.
On appelle diviseurs dun entier tous les entiers qui le divisent.
Exemple : Les diviseurs de 18 sont : {- 1, -2, -3, -6, -9, -18, 1, 2, 3, 6, 9, 18}

1.2.2 Proprits : si a | b alors
P1 : a | (b + a)
P2 : a | (b a)
P3 : a | (m.b + n.a) o m et n sont des entiers relatifs.

1.2.3 Division euclidienne
Soit a et b deux entiers naturels, b tant non nul.
Il existe un unique couple (q , r) dentiers tels que : 0 r b s < . a b q r = + avec 0 r b s <
On dit que a est le dividende, b est le diviseur, q est le quotient et r le reste dans la division
euclidienne de a par b.

1.2.4 Plus Grand Commun Diviseur
Dfinition : Si a et b sont deux entiers relatifs non tous les deux nuls, lensemble des
diviseurs communs a et b admet un plus grand lment. On lappelle le plus Grand Commun
Diviseur de a et b et on le note PGCD(a , b).
Exemple : PGCD (-24 , 18) = 6
Euclide est le premier donner un algorithme qui dtermine le PGCD de deux entiers a et b.
( , ) ( , ) . PGCD a b PGCD a b a b =

Proprits
Soit a et b deux entiers relatifs non tous les deux nuls :
P1 : PGCD(a , b)=PGCD(b, a mod b)
P2 : Si 0 b a < s PGCD(a,b)=PGCD(r,b) o r est le reste de la division euclidienne de a par b.
P3 : Si b est un diviseur de positif de a, alors PGCD(a , b)=b
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
3

Algorithme PGCD( a, b)
Dbut
Si (a mod b =0) Alors Retourner (b)
Sinon PGCD (b , a mod b)
Fsi
Fin

Exemple
Le calcul du pgcd des entiers 473 et 123 par lalgorithme dEuclide :
473 = 123 3 + 104
123 = 104 1 + 19
104 = 19 5 + 9
19 = 9 2 + 1


On obtient PGCD(473 , 123) = 1

P1 : Soit a et b deux entiers relatifs non nuls les deux nuls et d un entier naturel :
d=PGCD(a , b) si et seulement si a=d .a et b=d.b avec a et b entiers premiers entre eux.
P2 : Soit a et b deux entiers suprieurs ou gaux 2.
a et b sont dits premiers entre eux si PGCD(a , b) =1.

1.2.5 Plus Petit Commun Multiple
Soit a et b deux entiers relatifs non nuls. Lensemble des multiples communs strictement
positifs de a e b admet un plus petit lment m, not PPCM(a , b) appel Plus Petit Commun
Multiple de a et b.

Comment obtenir le PPCM de deux entiers a et b ?
On dcompose les entiers a et b en facteurs premiers.
On effectue le produit des nombre premier de a et b de plus grande puissance.

Exemple
Le PPCM (435 , 132)
435 = 3 * 5 * 29
132 = 2 * 2 * 3 * 11 = 2
2
* 3 * 11
PPCM(435 , 132) = 2
2
* 3 * 5 * 11 * 29

Proprit
Si a et b sont deux entiers naturels non nuls, alors ( , ) ( , ) . PGCD a b PPCM a b a b =

1.2.6 Nombres premiers entre eux
Deux entiers (a > 1) et( b > 1) sont dits premiers entre eux si leur PGCD(a , b) = 1.
Les nombres a et b ne sont pas ncessairement premiers.
Exemple 6 et 11 sont premiers entre eux


1.2.7 Congruence
Dfinition Soient a et b deux entiers.
On dit que a et b sont congrus modulo n (n > 1) si n divise (a-b), que lon note : ab (mod n).
Quel lon not par (mod n) et (c d (mod n) a b (mod n) a b
Proprits
si (mod n) et (c d (mod n) a b alors


Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
4

P1 : (mod n) a c b d + +
P2 : . . (mod n) a c b d
P3 : (mod n)
p p
a b
Exponentiation modulaire
Soit
1 0
( ,...., )
k
p p p

= une reprsentation binaire du nombre p.


int Exp(int a , int p[] , int n){
int c=1;
for(i =k-1 ; i >0 ; i --){
c=(c*c)% n ;
if (p[i ]==1) c=c*a ;
}
ret urn(c) ;
}



1.2.8 Thorme de Bezout
Soient a et b deux entiers relatifs non nuls.
Thorme a et b sont premiers entre eux, si et seulement si, il existe deux entiers x et y tels
que a.x + b.y = 1 appele aussi quation diphantienne.

Lalgorithme dEuclide permet aussi de calculer les coefficients de Bezout de a et b (on
lappelle algorithme dEuclide tendu). Rappelons que si d est le PGCD(a,b), il existe des
entiers x et y tels que a.x + b.y = 1. Il suffit de remonter les calculs, en exprimant le
PGCD(a,b) en fonction des autres nombres depuis la dernire quation jusqu la premire.

Exemple
Soit rsoudre lquation 71x + 19 y = 1
71 et 19 sont premiers entre eux, il existe, donc, lquation possde une solution.
71 19 3 14
19 14 1 5
14 5 2 4
5 4 1 1
= +
= +
= +
= +

On remonte depuis la dernire quation.
1 5 4 1
1 5 (14 5 2) 3 5 14
1 3 (19 14) 14 3 19 4 14
1 3 19 4 (71 19 3) 4 71 15 19
=
= =
= =
= = +

Par identification on obtient x = - 4 et y = 15

Algorithme dEuclide tendu

void Eucl i de_Et endue (i nt a, i nt b, i nt *x, i nt *y, i nt *d) {
int q, r , s, t , t mp;
*x = 1;
*y = 0;
s = 0;
t = 1;
while (b > 0) {
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
5
q = a / b;
r = a % b;
a = b;
b = r ;
t mp = s;
s = *x - q * s;
*x = t mp;
t mp = t ;
t = *y - q * t ;
*y = t mp;
}
*d=a;
}


1.2.9 Thorme de Gauss
Thorme Soit a et b deux entiers non nuls.
Si a divise b.c et si a est premier avec b alors a divise c.


1.2.10 Petit thorme de Fermat
Thorme Si p est entier premier et a un entier naturel non divisible par p, alors a
p-1
-1 est
divisible par p.
a
p-1
1 ( p)

Remarque :
1 2 2 1
( )( )
n n n n n n
a b a b a a b ab b

= + + + +

1.2.11 Thorme dEuler
On note par ( ) n le nombre dlments ayant un inverse modulo n (c'est--dire le nombre
dlments premiers avec n).
La fonction ( ) n est appele fonction indicatrice dEuler.
Exemple : (15) 8 = c'est--dire {1, 2, 4, 7, 8, 11, 13, 14}
Si n est premier alors ( ) n = n-1

Thorme dEuler Si a est premier avec n alors :
( )
1( )
n
a n


Remarque : le petit thorme de Fermat est une consquence (cas particulier) de ce thorme.

1.2.12 Thorme de Wilson
Si n est un entier naturel (p-1) !-1(n) si et seulement si n est premier.
Dmonstration :

Si n est premier alors (n-1) ! -1(n)
Si n est non premier, il admet au moins un diviseur d tel que 1< d <n tel que n=k.d
avec 1< k <n.
Deux cas peuvent, alors, se prsenter :
a) kd et n=k.d et on a k et d sont prsents dans la liste 1 , 2 , 3 , ., (n-1) et
(n-1) ! est divisible par n c'est--dire (n-1) ! 0(n).
b) k=d et n=k
2
si k est non premier on se ramne au cas ci-dessus.
On suppose que k est premier, k est prsent dans la liste 1, 2, 3, , (n-1) .
Montrons qlors que lon rencontre un multiple de k dans (k+1), (k+2) , , (n-1).
n-1 = k
2
-1=(k-1)(k+1) :

Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
6
Si k = 2 on a n = 4 et (n-1) = 6 2(4)
Si k > 2 on a n-1=2k et k < k+1, on est certain que le double de k se trouve
dans la liste.
En conclusion, si n nest pas premier (n-1) ! ne peut pas tre congru -1(n).


1.2.13 Rsolution de congruence linaire ax
Thorme : Soit deux entiers a et n tel que PGCD(a , n)=1 et b e Z.
Lquation ( ) ax b n admet une unique solution
1 1
( ) a ax a b n

c'est--dire
1
( ) x a b n


Exemple
Rsoudre lquation 3 4(7) x
Facilement, on remarque que 5 3 5 4(7) x c'est--dire
15 20(7) x ou 6(7) x

1.2.14 Le reste chinois
Le thorme du reste chinois traite la rsolution de systmes de congruences. Ce thorme est
utilis en thorie des nombres.
Ce thorme a t publi en 1247 par le mathmaticien chinois Qin Jiushao, est un rsultat
concernant les systmes de congruences.

Thorme du reste chinois
Soient des entiers
1 2
, , ,
k
n n n deux deux premiers entre eux, alors pour tous entiers:
1 2
, , ,
k
a a a , il existe un unique entier
1
mod n
i k
i
i
x n
=
=

I
et tel que
1 1
2 2
( )
( )
...
( )
n n
x a n
x a n
x a n


Une solution de x peut dtermine comme suit :
La preuve permettant de construire une solution de ce systme, celle-ci est fournie ci-dessous
:
On dtermine
1 2
...
k
M n n n =
Posons
i
i
M
M
m
= pour i = 1, 2, ..., k. On a donc pgcd(M
i
, m
i
) = 1 et on peut ainsi trouver
d'aprs l'identit de Bezout deux entiers u
i
et v
i
tel que M
i
u
i
+ m
i
v
i
= 1.
On a alors : u
1
M
1
r
1
+ u
2
M
2
r
2
+ ... + u
k
M
k
r
k
r
i
(mod m
i
) pour i = 1, 2, ..., k
Par consquent le nombre x = u
1
M
1
r
1
+ u
2
M
2
r
2
+ ... + u
k
M
k
r
k
est solution du systme. De plus
si y est une autre solution de celui-ci, alors m
i
divise x - y pour chaque i = 1, 2, ..., k. Ainsi x -
y est divisible par M. Le systme admet donc une seule solution modulo M. Autrement dit, les
solutions du systme sont de la forme x = u
1
M
1
r
1
+ u
2
M
2
r
2
+ ... + u
k
M
k
r
k
+ nM avec n entier.
Exemple historique:
Une bande de 17 pirates s'est empare d'un butin compos de pices d'or d'gale valeur. Ils
dcident de se les partager galement et de donner le reste au cuisinier chinois. Celui-ci
recevrait trois pices. Mais les pirates se querellent et six d'entre eux sont tus. Le cuisinier
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
7
recevrait alors 4 pices. Survient alors un naufrage et seuls 6 pirates, le cuisinier et le trsor
sont sauvs et le partage laisserait 5 pices d'or ce dernier. Quelle est alors la fortune
minimale que peut esprer ce dernier s'il dcide d'empoisonner le reste des pirates ?
Solution
3 (mod 17)
s'agit de trouver x positif vrifiant le systme 4 (mod 11)
5 (mod 6)
x
Il x
x


D'aprs le thorme des restes chinois (puisque 17, 11 et 6 sont premiers entre eux deux
deux), les solutions sont de la forme : x = u
1
1163 + u
2
1764 + u
3
17115 +
n17116
ou encore x = 198u
1
+ 408u
2
+ 935 u
3
+ 1122n.
Il reste trouver les u
i
:
On a par division euclidienne :
66 = 317 + 15
17 = 115 + 2
15 = 72 + 1
On en dduit que 1 = 15 - 72 et puisque 2 = 17 - 115, on a 1 = 15 - 7(17 - 115) c'est--dire
1 = 815 - 717.
Mais 15 = 66 - 317 d'o 1 = 8(66 - 317) - 717. On obtient pour finir 1 = 866 - 3117 et
u
1
= 8.
De la mme manire, on trouve u
2
= 4 et u
3
= 1.
Donc x = 1988 + 4084 + 935 + 1122n = 4151 + 1122n.
4151 est donc une solution possible pour notre cuisinier, mais ce n'est pas la plus petite. Il
suffit d'effectuer la division de 4151 par 1122 pour trouver comme reste 785 qui est le nombre
minimal de pices que peut obtenir le cuisinier.
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
8

2. La Cryptographie


2.1 Introduction
Un algorithme de cryptographie est une fonction mathmatique utilise pour chiffrer (crypter)
et dchiffrer (dcrypter) un message.
La qualit de la fonction mathmatique de cryptage rside dans sa rsistance toute attaque
essayant de trouver la clef qui permet de dchiffrer le message.


2.2 Historique de la cryptographie
Polybe, crivain et historien Grec (env 200-125 av. J.C.) , est lorigine du premier procd
de chiffrement par substitution. Cest un systme bas sur un carr de 25 cases, chaque case
contient une lettre alphabtique. On peut ltendre pour reprsenter les chiffres.
Les algorithmes cryptographiques se divisent en deux classes : les algorithmes cl secrte
(dits symtriques) et les algorithmes cl publiques (dits asymtriques).

2.3 Algorithme cls secrtes
Dans les algorithmes cl prive, la cl de chiffrement, est identique la cl de
dchiffrement. Cette cl, unique, doit donc tre garde secrte par son propritaire.
L'inconvnient vident de ce systme, est que l'envoyeur et le destinataire du message doivent
avoir convenu de la cl avant l'envoi du message. Ils doivent donc disposer d'un canal sr,
pour s'changer des cls. Ceci pose problme sur Internet o il n'y a pas de canaux srs. Un
exemple d'un tel algorithme est le trs fameux DES (Data Encryption System).
Cest un systme symtrique qui offre une seule cl pour le chiffrement et le dchiffrement.
Cette cl doit rester secrte.
Les deux entits communicantes se mettent daccord sur la cl utiliser.
Problme pos par ce systme :
P1 : Les cls doivent tre distribues secrtement. Cest difficile de raliser cette opration par
voie de communication.
P2 : Si la cl est pirate, les messages changs ne sont plus confidentiels.



2.4 Cryptage et dcryptage affine
2.4.1 Cryptage
Pour ce cryptage on utilise une fonction affine modulaire : y = ax + b (n)
Le cryptage se fait de manire aise, en appliquant la formule avec x reprsentant le code de
linformation crypter :
Exemple 1 Soit la fonction affine y = 5x + 12 (26)
On considre les codes des caractres alphabtiques ci-dessous :
0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2
1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z

On souhaite crypter le mot ALGO avec

A a pour code 0 x=5 0 12(26) 12(26) 12 + = = A sera code en M.
L a pour code 11, x=5 11 12(26) 67(26) 15 + = = L sera code en P.
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
9
G a pour code 6, 6 5 12(26)=42(26)=16 x = + G sera code en Q.
O a pour code 14, x= 5 14 12(26) 82(26) 4 + = = , O sera code en E.
Le mot ALGO sera donc cod en MPQE.


2.4.2 Dcryptage
Le dcryptage ou dcodage se fait de la manire suivante on cherche calculer g(y) telle que
x=g(y)(26).
On pend la fonction affine ci-dessus : y = 5x + 12 (26)
On cherche rsoudre lquation 5x 26y = 1 cette quation a au moins une solution
daprs le Thorme de BEZOUT (car 5 et 26 sont premiers entre eux).
26 5 5 1
26 1 5 5 1
= +
=

On cherche rsoudre le systme dquations
5 26 1
5 5 26 1 1
x y =

+ =

on trouve
5( 5) 26( 1) 0 ou 5( 5) 26( 1) x y x y + + = + = + 5 et 26 sont premiers entre eux daprs le
Thorme de GAUSS on : x+5 = 26k ou x = 26k-5 et y +1 = 5k ou y=5k-1
On sait que x est compris , on prend k=1 car cest la seule valeur qui vrifie x.
26 5 21 x = =
On multiplie les membres de lquation affine y=5x+12(26) on
obtient : 21 (26 21) 21 12(26) y x = + ou 21 252(26) y x =
21 18(26) ou x=21y+8(26) x y = cest la fonction de dcodage.
Supposons que lon souhaite dcrypter le message MPQE on obtient :
M a pour code 12, donc 21 12 8(26) =260(26)=0 x = + le code 0 correspond A.
P a pour code 15, donc 21 15 8(26) =223(26)=11 x = + le code 11 correspond L.
Q a pour code 12, donc 21 16 8(26) =344(26)=6 x = + le code 6 correspond G.
E a pour code 4, donc 21 4 8(26) =92(26)=14 x = + le code 14 correspond O.

Nous retrouvons le mot ALGO.


Exemple 2 On considre lquation (E) : 11x 26y = 1 o x et y dsignent deux nombres
relatifs.
1. Vrifier que le coupe (-7 ; -3) est solution de le (E).
2. Rsoudre alors lquation (E).
3. En dduire chaque lettre de lalphabet un nombre entier comme lindique le tableau
ci-dessous :
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25

On code les caractres alphabtiques par la fonction affine : y=11x + 8 (26) donc y sera
le code du caractre x.
4. Coder le caractre W
5. Le but de cette question est de dterminer la fonction de dcodage (Dcryptage) .
Montrer que tous nombres entiers relatifs x et j , on a :
11x j (26) quivalent x 19j (26)
En dduire un procd de dcodage.
Dcoder la lettre W.

Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
10
Solution :
1. On remplace dans lquation 11x 26y = 1 (x par -7 et y par -3) on obtient :
11 ( 7) 26 ( 3) 77 78 1 = + = donc le couple (-7 ; -3) est une solution de lquation (E).
2.


3.


4. Le code de lettre W est 22 donc il sera code par 11 8(26) y x = + c'est--dire par :
11 22 8(26) 250(26) 16 + = = ce qui correspond au caractre Q.
Donc W sera cod en Q.
5.
5.1 Soit x et j deux entiers tels que : 11x j (26)
En multipliant les deux membres de lquation 11x j (26) par 19 on obtient :
19 (11 ) 19 (26) x j donc 209 19 (26) x j ou 19 (26) x j .
5.2

5.3 la fonction 19( 8)(26) x y ou 19 152(26) x y ou 19 22(26) x y ou
19 4(26) x y + cest la fonction de dcodage.
La lettre W pour code 22 donc 19 22 4(26) 6 x + = ce qui correspond au
caractre G.



Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
11

2.5 Algorithme cl publique
Plusieurs algorithmes asymtriques cl publique existent. Le plus connu est lalgorithme
RSA (prsent par Rivest, Shamir et Adleman). Cet algorithme est trs utilis, par exemple
dans la navigation dans des sites scuriss et pour chiffrer les messages changs travers les
rseaux informatiques.
L'algorithme se distingue des autres par sa simplicit dimplmentation et de mise en oeuvre.
Il est bas sur les grands nombres premiers.
En effet, la factorisation des entiers de plusieurs centaines de chiffres ncessite un nombre
immensurable des annes de calculs, mme sur les ordinateurs les plus puissants et avec les
algorithmes les plus sophistiqus.





2.5.1 Algorithme RSA
Cryptage du message m
Etape 1 : Gnration de 2 nombres premiers p et q
Etape 2 : Calculer n = (p-1).(q-1)
Etape 3 : Choisir un entier e premier avec n
Etape 4 : Calculer d tel que 1= e.d mod n

Lmetteur rend publique le couple (e , n), et garde secret le couple (d , n).

Pour chiffrer un message: c = m^ e mod n
Pour dcchiffrer un message: m = c^ d mod n
m = message en clair ( dchiffr)
c = message encrypt ( chiffr)
( e,n) const it ue la cl publique
( d,n) const it ue la cl prive
n est le produit de 2 nombres premiers
^ est l' oprat ion de mise la puissance ( a^ b : a puissance b)
mod est l' oprat ion de modulo ( rest e de la division ent ire)

Crer une paire de cls
C'est trs simple, mais il ne faut pas choisir n'importe comment e,d et n. Et le calcul de ces
trois nombres est tout de mme dlicat.
Voici comment procder:
Emetteur
Rcepteur
Texte
source
Texte
source cryptage
Dcryptage
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
12
1. Prendre deux nombres premiers p et q (de taille peu prs gale). Calculer n = pq.
2. Prendre un nombre e qui n'a aucun facteur en commun avec (p-1)(q-1).
3. Calculer d tel que ed mod (p-1)(q-1) = 1
Le couple (e,n) constitue la cl publique et (d,n) est la cl prive.
Exemple
On Commence par crer deux cls:
Prenons 2 nombres premiers au hasard: p = 7, q =11
On calcule n = pq = 7 * 11 =77

On doit choisir e au hasard tel que e est premier avec(p-1)(q-1):
(p-1)(q-1) = 60
On prend un entier e premier avec 60, on choisit e = 11
On dtermine d tel que 11*d mod 77 = 1
On trouve d = 37
Lmetteur dispose de cls e et d ncessaires :
La cl publique est (e , n) = (11 , 1073)
La cl prive est (d , n) = (37 , 1073)

On utilisera le code ASCII pour coder les caractres.
Soit le message m= 'DEMAIN 9H GRANDE PLACE BRUXELLES' crypter.
Le message cod en ASCII donne :
M = 68697365737832 3948204752417868698076656769668285886976766983
Ensuite, on dcoupe le message en blocs de taille infrieure n., on va donc dcouper notre
message en blocs de 3 chiffres:
(on peut complter avec des zros)

Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
13
Ensuite on encrypte chacun de ces blocs:
(726)
71
mod 1073 = 436
(976)
71
mod 1073 = 822
(767)
71
mod 1073 = 825
(900)
71
mod 1073 = 552
Le message encrypt est 436 822 825 552. On peut le dcrypter avec d:
436
1079
mod 1073 = 726
822
1079
mod 1073 = 976
825
1079
mod 1073 = 767
552
1079
mod 1073 = 900
C'est dire la suite de chiffre 726976767900.
On retrouve notre message en clair 72 69 76 76 79 : 'HELLO'.
Dans la pratique
Dans la pratique, ce n'est pas si simple programmer:
- Il faut trouver de grands nombres premiers (a peut tre trs long calculer)
- Il faut obtenir des nombres premiers p et q rellement alatoires (ce qui est loin d'tre
vident).
- On n'utilise pas de blocs aussi petits que dans l'exemple ci-dessus: il faut tre capable
de calculer des puissances et des modulos sur de trs grands nombres.
En fait, on utilise jamais les algorithmes asymtriques pour chiffrer toutes les donnes, car ils
sont trop longs calculer : on chiffre les donnes avec un simple algorithme symt rique dont
la cl est tire au hasard, et c'est cette cl qu'on chiffre avec un algorithme asymtrique
comme le RSA.











Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
14

P.G.P.
Si vous voulez encrypter vos fichiers, je vous recommande l'excellent logiciel PGP (Pretty
Good Privacy) ou gpg (GNU Privacy Guard).
D'autres algorithmes, d'autres programmes...
Il existe d'autres algorithmes asymtriques, dont l'ECC (Elliptic Curve Cryptosystems,
Encryptage par Courbe Elliptique). Ce systme est bas sur une courbe paramtrique qui
passe par un certain nombre de points de coordonnes entires. Ce n'est pas encore trs
dvelopp, mais il est prometteur.
Il existe galement la mthode Diffie-Hellman, de plus en plus prfre RSA. (Diffie-
Hellman avait rapidement t adopt par la communaut open source quand RSA n'tait pas
encore dans le domaine public).
Problme : Alice et Bob souhaitent se mettre daccord sur une clef pour chiffrer les messages
changs. Nous sommes en prsence de canaux de communication non scuriss, c'est--dire
une autre personne peut accder aux messages crypts.
Mthode
Alice et Bob choisissent un groupe et un gnrateur g .
Alice choisit un nombre a et calcule g
a
(p) il transmet Bob a , g , et g
a
(p)
Bob choisit un nombre b et calcule g
b
(p) quil transmet Alice.
Alice calcule (g
b
(p)
a
) (p) , et Bob calcule (g
a
(p))
a
(p).
Pour les autres personnes autres que Alice et Bon cest difficile de dterminer a et b (cest le
problme du logarithme discret).
Alice Bob
a , g , p
A=g
a
(p)
g , p, A
b, g , p
B=g
b
(p)
B K=B
a
(p)
K=A
b
(p)
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
15

2.5.2 Application du thorme du reste chinois la cryptographie RSA
Gnration des cls
1) Choisir deux nombres premiers trs grands p et q.
2) Calculer ( ) ( 1) ( 1) N p q =
3) Choisir deux entiers d
p
et d
q
tels que PGCD(d
p
, p-1 )=1 et PGCD(d
q
, q-1)=1
4) Calculer d d
p
( p-1) et d d
q
( q-1)
5) Calculer ed
-1
( ( ) N )
La cl publique est (N , e) et la cl prive est (d
p
, d
q
)
Exemple : Calculer les cls publique et prive des nombres premiers 7 et 11.
On effectue les tapes ci-dessous :
1) Calculer 7 11 77 N = = et ( ) ( 1) ( 1) 60 N p q = =
2) On choisit : d
p
= 5 (PGCD(d
p
, p-1)=PGCD(5 , 6)=1 et
d
q
= 3 (PGCD(d
q
, q-1)=PGCD(3 , 10)=1.
3) On ne peut pas appliquer le thorme chinois car PGCD(6 , 10) 1 . Mais on peut
effectuer des transformation afin dobtenir un systme de congruences.
1
2
1
6
2( )
5(6) 1 4(6) 2(3)
2 2
3(10) 1 2(10) 1(5) 1
10
1( )
2 2
p
p p
q q q
d
d d x
d d x d


1
2
2(3)

1(5)
x
on le rsout par le Thorme chinois
x


3 5 15 M = =
1
15
5
3
M = = et
2
15
3
5
M = =
1 1
2 2
5 1(3) 2
3 1(5) 2
y y
y y
=


Donc, on obtient 2 5 2 1 3 2 26(15) 11(15) x = + = = et 2 1 23 d x = + =
4) On dtermine e tel que 1( ( )) 1(60) on trouve e=47 e d N = =
Exemple Soit M=5 est le message transmettre
Cryptage : C=M
e
(N) = 5
5
(77)=3
Dcryptage: M=M
p
(p) =C
d
(p) et M=M
q
(q) =C
d
(q)

Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
16


2.5.3 Rsidus et non rsidus quadratiques

La notion du rsidu qudratique apparat dans un mmoire d'Euler de 1754-1755
Dfinition un entier a est dit rsidus quadratique modulo n si et seulemnt si a est un carr
dans / n , sinon il est dit non rsidu quadratique.
Notation
0 si q divise q
1 si p est un rsidu quadratique de q
1 si p n'est pas un rsidu quadratique de q
p
q

| |
=
|
\ .


Exemple Les entiers qui sont rsidus quadratiques modulo 17 sont :
2 2
1 (16) 1(17) =
2 2
2 (15) 4(17) =
2 2
3 (14) 9(17) =
2 2
4 (13) 1(17) =
2 2
5 (12) 8(17) =
2 2
6 (11) 2(17) =
2 2
7 (10) 15(17) =
2 2
8 (9) 13(17) =
Ainsi, les nombres {0 , 1 , 2 , 4 , 8 , 9 , 13 , 15 } sont des rsidus quadratiques modulo 17 et
les nombres {3 , 5 , 6 , 7 , 10 , 11 , 12 , 14 , 16 } ne le sont pas.
Le calcul des rsidus quadratiques utilisant une table est trs simple ; mais il devient
fastidieux lorsque n devient trs grand.
Legendre propose une mthode simple base sur la loi de la rciprocit quadratique initie
par Euler en 1783 et par Legendre en 1785 et dont la dmonstration fut acheve par Gauss en
1801. Depuis plusieurs dmonstrations ont t tablies.

Proposition 1 soit p et q deux nombres premiers impairs et distincts, alors
1 1)
( )( )
2 2
( 1)
p q
p q
q p

| || |
=
| |
\ .\ .
do la loi de rciprocit quadratique
( 1)( 1)
(
4
( 1)
p q
q p
p q

| | | |
=
| |
\ . \ .


Proposition 2 (forme alternative) soit p et q deux nombres premiers distincts et impairs, alors
( ) si p 1(4) ou q 1(4)
( ) si p q 3(4)
p
q p
p q
q

| |
=

|
\ .

=



2
1
8
2
( 1)
p
p

| |
=
|
\ .
=
1 si 1(8) ou 7(8)
1 si 3(8) ou 5(8)
p p
p p



.
.
a b a b
n n n
| | | | | |
=
| | |
\ . \ . \ .

Remarque
1 0
1 et 0
p p
| | | |
= =
| |
\ . \ .

Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
17

Exemple 1
29 24 6 2 3 3 29 2
( 1) ( 1) ( 1) 1
53 29 29 29 29 29 3 3
| | | | | | | | | | | | | | | |
= = = = = = =
| | | | | | | |
\ . \ . \ . \ . \ . \ . \ . \ .
29
( )
53

On sait que 29 1(4) et nous avons
29 53
53 29
| | | |
=
| |
\ . \ .
et 53 24(29) or
2
24 2 6 = .
Nous avons
29 24 6 2 3 3 29 2
( 1) ( 1) ( 1) 1
53 29 29 29 29 29 3 3
| | | | | | | || | | | | | | |
= = = = = = =
| | | | | | | |
\ . \ . \ . \ .\ . \ . \ . \ .


Exemple 2
2
59(101) x
59
101
| |
|
\ .

100 58
( )
4
59 101 101 42 2 3 7
( 1) . .
101 59 59 59 59 59 59

| | | | | | | | | | | | | |
= = = =
| | | | | | |
\ . \ . \ . \ . \ . \ . \ .

2
59 1
8
2
( 1) ( 1)
59

| |
= =
|
\ .

2 58
4
3 59 2 1
( 1) ( 1) 1
59 3 3 3

| | | | | | | |
= = = =
| | | |
\ . \ . \ . \ .

6 58
4
7 59 3 4 2 2
( 1) ( 1) . 1
59 7 7 7 7 7

| | | | | | | | | | | |
= = = = =
| | | | | |
\ . \ . \ . \ . \ . \ .

Finalement, on obtient
59
1
101
| |
=
|
\ .
donc 59 nest pas un rsidus qudratique modulo 101.
Autrement dit on ne peut pas trouver un entier x tel que
2
59(101) x .

Fonction pour dterminer si un nombre p est un rsidu quadratique dun nombre n
p
n
| |
|
\ .
.
int Legendre(int p , int n){
int a, m , t , k , x , y;
a=p%n;
m=n;
t=1;
while (a != 0) {
k = m % 8;
int zyva = k == 3 || k == 5;

while (a % 2 == 0) {
a /= 2;
if (zyva)
t = -t;
}
int temp = a; a = m; m = temp;
x = a % 4, y = m % 4;
if (x == 3 && x == y)
t = -t;
a = a % m;
}
if (m == 1)
return t;
else
return 0;
}
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
18

2.5.4 Logarithme discret
Soit G un groupe cyclique de cardinal n que lon note multiplicativement. On appelle g un
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
19
Le systme de signature El Gamal
El Gamal a propos un systme de signature o Alice souhaite signer un document, de telle
sorte que Bob puisse vrifier sa signature. Ils se mettenet daccord sur le groupe G et g, ainsi
quune fonction m de G dans / n . Soit M le message transmettre que lon prend comme
un lment de [0n-1]. Alice dispose dune cl secrte x et publie sa cl publique ces y=g
x
.
La signature de M qulle produit est un couple (a , b), o et b a G e e, tels que:
( ) m a b
g y a

= .
Pour calculer a et b, Alice commence par choisir un entier k premier avec n, et calcule a=g
k
.
Elle doit ensuite trouver b tel que :
( ) m a b
g y a

=
1
( ) ( )
( ( ))( )
kb x a m n
b k m x a n


La vrification de la signature est simple. Bob doit simplement sassurer que
( ) m a b
g y a

= .
( ) m a b
g y a

= et b a G e e

2.5.4.2 Algorithme de Pohlig-Hellman pour le calcul du Logarithme discret

Exemple Soit un nombre premier p=8101, un gnrateur de groupe
8101
est a=6
Dterminer x telle que : 7531(8101)
x
a
p=8101 et p-1=8100=2
2
3
4
5
2
.
On devra rsoudre le systme
2
2
4
3
2
5
(2 )
(3 )
(5 )
x x
x x
x x


Calcul de x
2
.
x
2
est entier modulo 4, nous avons x
2
=C
0
+ C
1
(2). On dtermine les coefficients comme suit.
2 0 1
(2) 1 0(2) 1 x C C = + = + =
0
1 1)
(
4050
2 2
0
7531 7531 1 donc C =1
p p
C
a

= = =
On divise 7531 par
0
C
a pour obtenir :
1
7531( ) 7531(6751) 8006( ) a p

=
1
1 1
( ) ( )
2025
4 4
1
8006 8006 1 donc C =0
p p
C
a

= =
Donc
2 0 1
(2) 1 0(2) 1 x C C = + = + =
Calcul de x
3
.
x
3
est entier modulo 81, nous avons x
3
=C
0
+ C
1
(3)+ C
2
(9)+ C
3
(27), on dtermine les
coefficients comme suit.
( 1)
3
2217
p
a

= , donc C
0
=2.
On divise 7531 par
0
c
a pour obtenir
2
7531( ) 6735( ) a p

,
1
1 1
1
2 2
1
3 3
(4) 1
(81) 64
(25) 24
y M
y M
y M

=
=
=
( 1)
9
6735 1
p
= ,
donc C
1
=0.
On divise 6735 par
1
3c
a , on obtient
0
6735( ) 6735( ) a p ,
( 1)
27
6735 2217
p
, donc C
2
=2.
On divise 6735 par
2
9c
a , on obtient
18
6735( ) 6992( ) a p

,
( 1)
81
6992 5883
p
, donc C
3
=1.
Finalement, x
3
=2+0(3)+2(9)+1(27)= 47
Calcul de x
5

x
5
est entier modulo 25, nous avons x
5
=C
0
+ C
1
(5) on dtermine les coefficients comme suit.
Nous calculons :
( 1) 2( 1) 3( 1) 4( 1)
5 5 5 5
3547, 356, 7077 5221
p p p p
a a a et a

.
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
20
1
5
7531 5221
p
, donc C
0
= 4.
On divise 7531 par
0
c
a pour obtenir :
4
7531( ) 7613( ) a p

,
( 1)
25
7613 356
p
, donc C
1
=2.
Finalement, x
5
=4 + 2(5))= 14.

Le calcul de x peut se faire par la mthode du reste Chinois.
1(4)
47(81)
14(25)
x
x
x



4 81 25 8100 M = =
1
2
3
8100
2025
4
8100
100
81
8100
324
25
M
M
M
= =
= =
= =

On dtermine
1 2 3
, et y y y
1
1 1
1
2 2
1
3 3
(4) 1
(81) 64
(25) 24
y M
y M
y M

=
=
=

Donc x=1(2025) + 47(100)(64) + 14(324)(24) 6689(8100)
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
21
2.5.4.3 Rsolution du logarithme discret par lalgorithme de bb pas de gant
Le problme du logarithme discret peut tre dcrit comme suit :
Soit trouver le plus petit entier x (sil existe) telle que ( )
x
a b n o , , a b neN .

Shank a propos un algorithme appel pas de bb pas de gant qui consiste trouver la
valeur de x en deux tapes.

1) La premire tape dite pas de bb consiste construite une liste S forme des couples :
1
{( , 0), ( ,1),..., ( , 1)( )}
s
S b ba ba s n

= avec n s =
2) La deuxime tape dite pas de gant construit une liste T forme des couples :
2
2 3
{( ,1), ( , 2), ( , 3)..., ( , )( )}
s s s s
T a a a a s n =
3) Les deux listes S et T sont tries par ordre croissant sur la premire composante.
On cherche les deux premiers lments gaux sur les deux listes.
Soit
r ts
ya a = ces deux lments, la solution est dfinie par x = ts-r.
Exemple Soit rsoudre 7 14(23)
x

On a 23 4 s = = , on dtermine les deux listes S et T.
S={(14 , 0) , (6 , 1) , (19, 2) , (18 , 3)} on trie la liste S selon la premire composante :
S={(6 , 1) , (14 , 0) , (18,3) , (19 , 2)}
T={(9 , 1) , (12 , 2) , (16 , 3) , (6 , 4)} on trie la liste T selon la premire composante :
T={(6 , 4) , (9 , 1) , (12 , 2) , (16 , 3)}
Les deux composantes gales sont : (6 , 1) et (6 , 4)
Donc, la solution est : 4 4 1 15 x = =

Remarque : lorsque n est grand, le stockage des valeurs des listes S et T prend beaucoup de
place mmoire.

Algorithme de Shank /* Programme en C de Rsolution de a^x=y(n) */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <time.h>
#define N 1000
typedef __int64 Tab[N][4];
__int64 PuissanceModulaire(__int64 a, unsigned __int64 x, __int64 n){
__int64 pm=1, r = 1;
while(x > 0){
if((x % 2) == 1){
r=(r*a)%n; }
a=(a*a)%n;
x=x/2; pm=r;
printf("%I64u ",r);
}
printf("\n");
return (pm);
}

void Sort(Tab A, int inf , __int64 n){
int i,j,k;
__int64 x;
for(i=inf; i<n-1; i++){
k=i;
for (j=i+1; j<n; j++)
if (A[j][0]<A[k][0]) k=j;
x=A[i][0];A[i][0]=A[k][0];A[k][0]=x;
x=A[i][1];A[i][1]=A[k][1];A[k][1]=x;
}}
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
22

void Shank(Tab S , Tab T , __int64 a , __int64 y , __int64 n){
__int64 s=int(sqrt(n));
__int64 x,p=1;
int Trouve=0;
/* Baby steps */
for (int r=0; r<s ; r++){
S[r][0]=(y*p)%n;
S[r][1]=r;
p=(p%n)*a;
}

/* Pas gants */
__int64 s1=s;
for (int i=1; i<=s;i++){
T[i][0]=PuissanceModulaire(a,(s*i),n);
T[i][1]=i;
}

for (int i=0; i<s; i++)
printf("(%I64u %I64u) ",S[i][0],S[i][1]);
printf("\n");
for (int i=1; i<=s; i++)
printf("(%I64u %I64u) ",T[i][0],T[i][1]);
printf("\n");
Sort(S,0,s);
Sort(T,1,s+1);
int i=0;
int j;
while ((i<s) &&(Trouve==0)){
j=0;
while ((j<=s) && (Trouve==0)){
if (S[i][0]==T[j][0]) {Trouve=1;x=T[j][1]*s-S[i][1];}
else j++;
}
if (Trouve==0) i++;
}
if (Trouve==1)
printf("\n x=%d\n",x);
else printf("\n Pas de solutions\n");
for (int i=0; i<s; i++)
printf("(%I64u %I64u) ",S[i][0],S[i][1]);
printf("\n");
for (int i=1; i<=s; i++)
printf("(%I64u %I64u) ",T[i][0],T[i][1]);
printf("\n");

}

int main(){
__int64 a,y,n;
Tab S , T;
printf("Introduire a , y , n");
scanf("%I64u %I64u %I64u",&a, &y, &n);
Shank(S,T,a,y,n);
system("pause");
return(0);
}

Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
23
2.5.4.3 Rsolution de lquation quadratique modulaire
Dans cette partie, nous nous intressons la rsolution de lquation quadratique par la
mthode de Shank.
Considrons lquation quadratique modulaire :
2
0( ) ax bx c p + + o p est un nombre
premier impair et a et p sont premiers entre eux.
2
0( ) ax bx c p + +
2
4 ( ) 0( ) a ax bx c p + +
2 2
4 4 4 0( ) a x abx ac p + +
2 2 2 2
4 4 4 ( 4 ) ( 4 )( ) a x abx ac b ac b ac p + + +
2 2 2 2
4 4 4 4 ( 4 )( ) a x abx b ac ac b ac p + + +
2 2 2 2
4 4 ( 4 )( ) a x abx b b ac p + + est quivalente
2 2
(2 ) ( 4 )( ) ax b b ac p +
On pose (2 ) et d=(b-4ac) y ax b = + do
2
( ) y d p

La rsolution de cette quation peut se faire en utilisant la loi de rciprocit quadratique.

Proposition (Shank) Soit y une solution de lquation
2
( ) y d p soit n et k deux entiers
tels que 1 2 .
n
p k = o n 1 et k un entier impair, q un non rsidu quadratique modulo p,
alors y peut tre dtermine par la mthode ci-dessous :
1) Etape 1
1.1
2 2 1
3(2 )
2 ( ) u p

=
1.2 ( )
k
r d p
1.3 Chercher i tel que
2
1( )
i
r p
2) Etape 2
Si i=0 Alors les solutions sont : ( ) x t p
Sinon
1
(2 )
( )
n i
k
u q p


( ) t t u p

2
( ) r r u p
Aller Etape 1.
Fsi

Exemple 1 Soit rsoudre
2
7(13) y on a d=7 et p=13

2
1 12 2 3 p = = on obtient n=2 et k=3
On calcule les rsidus quadratiques :
2 2
1 12 1(13) =
2 2
2 11 4(13) =
2 2
3 10 9(13) =
2 2
4 9 3(13) =
2 2
5 8 12(13) =
2 2
6 7 10(13) =
Les rsidus quadratique sont {1, 3 , 4 , 9 , 10 , 12} et les non rsidus quadratiques sont {2, 5,
6 , 7, 8, 11}
On prend q=2.



Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
24

( 1)
2
( )
k
t d p
+
=
( )
k
r d p =
i
1
(2 )
( )
n i
k
u q p

=
1
2
7 (13) 10 =
3
7 (13) 5 =
i=0 5(13)
i=1 12(13)
i=2 1 (13)
u=2
2


Plusieurs auteurs ont amlior lalgorithme de Shank afin de rduire le nombre de
multiplications.

2.5.4.4 Algorithmes de Primalit


Algorithme de factorisation Rho de Pollard
Introduction
Le but dun algorithme de factorisation est de trouver un facteur (premier) en un minimum de
temps. Appelons n un nombre compos que nous souhaitons factoriser. Le plus simple des
algorithmes consiste simplement essayer de diviser n par tous les premiers en commenant
par 2, jusqu`a ce que lon obtienne la factorisation complte. Cette solution trial division
nest pas trs efficace, notamment si n possde uniquement de grands facteurs premiers.
Cette mthode est facilement implmentable mais nest pas utilisable pour de grands entiers n,
sa complexit tant exponentielle. Nous nallons donc pas nous intresser la thorie de cette
mthode. Par contre elle sera implmente afin de comparer les rsultats ceux obtenus avec
la mthode Rho de Pollard prsente en 1975.
Cest un algorithme heuristique, cest--dire que nous avons une grande probabilit de trouver
un facteur, mais mme si nous savons que n nest pas premier, il y a aussi une chance pour
que lalgorithme choue, cest--dire que lalgorithme ne se termine jamais.
Nous allons exposer brivement chacune des tapes de lalgorithme, avant de revenir plus en
dtails sur leurs proprits algbriques et la complexit de cet algorithme.

Algorithme
Soit x
0
= 0
1. Dterminer x
k
partir de x
k-1
o :

2
1
( 1) mod n
k k
x x

= +
2. Dterminer x
2k
partir de x
2k-2
o :

2 2
2 2 2
((( 1) mod n) 1) mod n
k k
x x

= + +
3. Dterminer d=PGCD(x
2k
- x
k
, n)
Si d= 1 Alors d est un facteur premier
Sinon k=k+1
Fsi

Implmentation en C
#include <stdio.h>

long PGCD(long a, long b){
if (a % b == 0) return(b);
else return PGCD(b , a%b);
}

long RhoPollard(long n){
long a=2 , b=2;
long d;
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
25
do
{
a=(((a*a) + 1) % n);
b=(((b*b) + 1) % n);
b=((b*b) + 1) % n;
d=PGCD(a-b,n);
printf("d= %d \n",d);
if ((d > 1) && (d<n)) return(d);
}
while (d!=n);
if (d==n) printf("Echec \n");
return(0);
}

int main(){
long n;
long d;
printf("Introduire n:");
scanf("%d",&n);
d=RhoPollard(n);
if (d!=0) printf("Facteur %d\n",d);
else printf("Echec \n");
printf("Introduire n:");
scanf("%d",&n);
return(0);
}

Exemple soit factoriser n=527

k x
k
x
2k
PGCD(x
k
x
2k
, n)
0 0 0 527
1 1 2 1
2 2 26 1
3 5 367 1
4 26 274 31

Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
26
2.6 Les courbes elliptiques



Introduction
En cryptographie, les courbes elliptiques, des objets mathmatiques, peuvent tre utilises
pour des oprations asymtriques comme des changes de cls sur un canal non scuris ou
un chiffrement asymtrique, on parle alors de cryptographie sur les courbes elliptiques ou
ECC (de l'acronyme anglais Elliptic curve cryptography). L'usage des courbes elliptiques en
cryptographie a t suggr, de manire indpendante, par Neal Koblitz et Victor Miller en
1985.
La rsistance d'un systme fond sur les courbes elliptiques repose sur la difficult de la
rsolution du logarithme discret, en un temps raisonnable, dans le groupe correspondant la
courbe elliptique. Les dveloppements thoriques sur les courbes tant relativement rcents,
la cryptographie sur courbe elliptique n'est pas trs connue et souffre d'un grand nombre de
brevets qui empchent son dveloppement.
Alice et Bob se mettent d'accord (publiquement) sur une courbe elliptique E(a,b,p), c'est--
dire qu'ils choisissent une courbe elliptique
2 3
( ) ( )( ) y p x ax b p = + + . Ils se mettent aussi
d'accord, publiquement, sur un point P situ sur la courbe.
Secrtement, Alice choisit un entier d
A
, et Bob un entier d . Alice envoie Bob le point
d
A
P, et Bob envoie Alice d
B
P. Chacun de leur ct, ils sont capables de calculer
d
A
.(d
B
P) = (d
A
.d
B
)P qui est un point de la courbe, et constitue leur clef secrte commune.
Si Eve a espionn leurs changes, elle connat E(a, b, p), P, d
A
P , d
B
P. Pour pouvoir calculer
d
A
.d
B
P, il faut pouvoir calculer d
A
connaissant P et d
A
P. C'est ce que l'on appelle rsoudre le
logarithme discret sur une courbe elliptique. Or, actuellement, si les nombres sont
suffisamment grands, on ne connat pas de mthode efficace pour rsoudre ce problme en un
temps raisonnable.
On appelle courbe elliptique sur R, toute courbe plane dquation
2 3
y x ax b = + + o
lexpression
3 2
(4 27 ) a b A = + appele discriminant est non nul. On ajoute la courbe un
point linfini qui sera reprsent par O.




P
Q
P+Q
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
27
Prenons deux points deux points distincts de la courbe elliptique, on trace une droite passant
les deux points, deux cas peuvent se produire :
1) la droite coupe la courbe en un troisime point, le symtrique de ce point par rapport
laxe des abscisses est P+Q.
2) la droite ne coupe la courbe elliptique quen points P et Q ceci nest possible que si la
droite (PQ) est parallle laxe des ordonnes. On dfinit alors P+Q=O (point
linfini)

Les coordonnes du point P+Q sont dfinies partir des coordonnes des points P et Q
(PQ) comme suit :
2
2 1
3 1 2
2 1
2
2 1
3 1 1 3
2 1
( )
( )
y y
x x x
x x
y y
y y x x
x x

| |
= +
|

\ .

| |
= +
|

\ .


Rgles daddition

1. O + O = O
2.
1 1 1 1
( , ) O ( , ) x y x y + =
3.
1 1 1 1
( , ) ( , ) x y x y + = O
4.
1 2 1 1 2 2 3 3
2
3 1 2
3 1 3 1
1
2 1 2 1
( , ) + ( , )=( , )
( )( )
( ( ) )( )
k=( - ).( ) (p)
Si x x x y x y x y
x k x x p
y k x x y p
y y x x

=
=
=


5. si x
1
= x
2
1 1 1 2 2 1 1 3 3
2
3 1
3 1 3 1
2
1
1
0 ( , ) + ( , )=2( , ) =( , )
( 2 )( )
( ( ) )( )
(3 +a)
k= (p)
2
Si y x y x y x y x y
x k x p
y k x x y p
x
y
=
=
=

Exemple Soit la courbe elliptique dquation
2 3
15 9 y x x = + + et un point de la courbe
P = (1 , 5), calculer 2P.
La tangente au point P est :
2 2
3 1 15 16
1,16
2 2(5) 10
x a
s
y
+ +
= = = =

2 2
' 2 (1,16) 2(1) 0, 56 x s x = = =
' ( ') 5 1, 6(1 0, 56) 4, 3 y y s x x = + = + =
Donc, 2P = (0,56 , -4,3).






Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
28

Exercice Soit la courbe elliptique dquation
2 3
17
7 sur F y x x = + +
2 3
17
7 sur F y x x = + +
Calculer P+Q si P=(2 , 0) et Q=(1 , 3)
Calculer 2P si P=(1 , 3)

Multiplication d'un point par un nombre entier
On remplace la multiplication par une srie d'additions. Prenons un exemple. Soit la courbe
y
2
mod 11 = (x
3
+ x + 2) mod 11.
Calculons dP, avec d=3 et P=(4, 2). On peut vrifier que le point P appartient bien la courbe
elliptique.
On peut remplacer 3P par P + P + P. Calculons d'abord P + P.
D'aprs la rgle 5, P + P = (4, 2) + (4, 2) = (8, 4) = 2P.
D'aprs la rgle 4, 2P + P = (8, 4) + (4, 2) = (2, 10) = 3P.


Algorithme de calcul de kP sur une courbe elliptique
1- Ecrire k sous forme binaire :
1 2 1 0
...
m m
k b b b b

=
2- c0
3- Pour im-1 0 Faire
c2c
Si b
i
=1 Alors cc+P Fsi
Fait

Exemple : Soit calculer 79P
K=79=1001111
c0
b
6
=1 c2c+P {c=P}
b
5
=0 c2c {c=2P}
b
4
=0 c2c {c=2(2P)= 4P}
b
3
=1 c2c+P {c= P+2(2(2P))=9P}
b
2
=1 c2c+P {c= P+2(P+2(2(2P)))=19P}
b
1
=1 c2c+P {c=P+2( P+2(P+2(2(2P))))=39P}
b
0
=1 c2c+P {c=P+2(2( P+2(P+2(2(2P)))))=79P}


Thorme de Hasse
Si E est une courbe elliptique dfinie sur un corps finie F
p
alors
p+1- 2 #E(F
p
) p+1+2 o #E(F
p
) indique le nombre de points dans E(F
p
)

Exemple 1 : On considre la courbe elleptique E :
2 3
1 y x x = + + sur le corps F
5
.
Les points de la courbe sont :
{ (0 , 1) , (0 , 4) , (2, 1) , (2 , 4) , (3 , 1) , (3 , 4) , (4 , 2) , (4 , 3) , O}

Exemple 2 : Soit la courbe elliptique
2 3
: 3 8(13) E y x x = + + , et deux points P=(9,7) et
Q(1,8).
Pour calculer P+Q, on dtermine :
2 1
2 1
8 7 1 1
8
1 9 8 5
y y
x x


= = = = =


1 1
7 8.9 65 0 y x = = = =
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
29
2
3 1 2
3 3
64 9 1 54 2
( ) 8.2 16 10
x x x
y x


= = = =
= + = = =

P+Q=(9 , 7) + (1 , 8) = (2,10)

Pour calculer P+P = 2P, on dtermine :
2 2
1
1
3 3.9 3 246
1
2 2.7 14
x a
y

+ +
= = = =
1 1
7 1.9 2 11 y x = = = =
2
3 1 2
3 3
1 9 9 17 9
( ) 1.9 11 20 6
x x x
y x


= = = =
= + = = =

+ O (1,5) (1,8) (2,3) (2,10) (9,6) (9,7) (12,2) (12,11)
O O (1,5) (1,8) (2,3) (2,10) (9,6) (9,7) (12,2) (12,11)
(1, 5) (1,5) (2,10) O (1,8) (9,7) (2,3) (12,12) (12,11) (9,6)
(1, 8) (1,8) O (2,3) (9,6) (1,5) (12,11) (2,10) (9,7) (12,2)
(2,3) (2,3) (1,8) (9,6) (12,11) O (12,2) (1,5) (2,10) (9,7)
(2,10) (2,10) (9,7) (1,5) O (12,2) (1,8) (12,11) (9,6) (2,3)
(9, 6) (9,6) (2,3) (12,11) (12,2) (1,8) (9,7) O (1,5) (2,10)
(9, 7) (9,7) (12,2) (2,10) (1,5) (12,11) O (9,6) (2,3) (1,8)
(12, 2) (12,2) (12,11) (9,7) (2,10) (9,6) (1,5) (2,3) (1,8) O
(12,11) (12,11) (9,6) (12,2) (9,7) (2,3) (2,10) (1,8) O (1,5)

E(F
13
)={(1,5),(1,8) , (2 , 3) , (2 ,10) , (9, 6) , (9 , 7), (12,12), (12, 11) , O}

Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
30

2.5.2 Protocoles dchange de cls de Diffie-Hellmann
Alice et Bob souhaitent avoir une cl secrte et, qui sont les seuls la connatre. On suppose
que les canaux de communication ne garantissent aucune scurit de confidentialit.
Le protocole de Diffie-Hellmann permet deffectuer cet change dans ces conditions.
1- Alice et Bob choisissent une courbe elliptique dfinie sur un corps fini Fq tel que le
logarithme discret soit difficile rsoudre, et un point P de cette courbe.
2- Alice choisit un entier secret a, calcule Ca=aP et lenvoie Bob.
3- Bob choisit un entier secret b et calcule Cp=bP et lenvoie Alice.
4- Alice calcule aCp=abP
5- Bob calcule bCa=baP


2.5.3 Factorisation par courbes elliptiques
L'ide de cet algorithme est due Lenstra. On suppose que l'on doit factoriser un entier n
(donn). On note p un diviseur premier de n (que l'on ne connat pas!).
- Etape 1 : choix d'une courbe elliptique. On choisit a et b tel que 4a
3
+27b
2
soit
premier avec n. Si en les prenant au hasard ce n'est pas le cas, c'est encore mieux car
pgcd(4a
3
+27b
2
,n) donne un diviseur strict de n. Remarquons que, puisque 4a
3
+27b
2
est
premier avec n, il est premier avec p et est inversible dans Z/pZ. L'quation
y
2
=x
3
+ax+b dfinit une courbe elliptique sur Z/pZ, que nous noterons E(a,b,p)
(signalons que, puisqu'on ne connat pas p, on ne connat pas cette courbe elliptique).
- Etape 2 : choix d'un point sur la courbe elliptique. On trouve deux entiers x et y
tels que y
2
=x
3
+ax+b. En particulier, P(x,y) est un point de la courbe elliptique
E(a,b,p).
- Etape 3 : choix d'un entier auxiliaire. On choisit k un entier pas trs grand, mais qui
est produit de petits facteurs premiers des exposants dj levs.
- Etape 4 : calcul sur les courbes elliptiques. On calcule les coordonnes du point kP,
en utilisant les formules classiques, les calculs s'effectuant modulo n. Ces calculs font
intervenir des divisions, et ceci n'est pas toujours possible modulo n : il faut que le
dnominateur d soit premier avec n. Mais ce qu'on espre, c'est que ce n'est pas le cas!
En effet, si d n'est pas premier avec n, pgcd(d,n) donne un diviseur premier de n. Si on
a pu mener les calculs jusqu'au bout, on recommence l'tape 1, en changeant de
courbe elliptique.
Exemple
Soit factoriser le nombre N=4453. La courbe elliptique choisie est :
2 3
3 (4453) y x x = + et
un point P=(1, 2) sur cette courbe.
Essayons de calculer 6P.
On commence par calculer 2P.
La tangente la courbe elliptique au point P=(1 , 2) est
2
(3 3) 3
2228(4453)
2 2
x
y
+
=
Le pgcd(2,4453)=1, donc 2 est inversible modulo 4453 et
1
2 2227(4453)




On calcule les coordonnes de 2P=(x , y) o
2
' 2 3340(4453)
y'=s(x-x')-y 1669(4453)
x s x =



Calculons 3P = P + 2P. La pente de la tangente est :
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
31
1669 2 1667
746(4453)
3340 1 3339



En effet, le pgcd(3339 , 4453)=1, donc 3339 est inversible modulo 4453.
1
3339 1483(4453)



2
'' 2 ' 1003(4453)
y''=s(x'-x'')-y' 610(4453)
x s x =



Enfin, calculons 6P=3P+3P. Nous remarquons que le dnominateur de la pente est 1220, or le
pgcd (1220 , 4453) = 61, donc 1220 nest pas inversible modulo 4453.
Cest ce que nous recherchons, donc nous avons trouv un facteur 61 de 4453.
En effet, on a : 4453 61 73 = .


Application au protocole dchange de Diffie-Hellman.

On choisit un groupe E(F
p
) et un point P dordre n.

Fonction qui calcule linverse de a modulo n.

int modInverse(int a, int n) {
int i = n, v = 0, d = 1;
int t,x;
while (a>0) {
t = i/a;
x = a;
a = i % x;
i = x;
x = d;
d = v - t*x;
v = x;
}
v =v%n;
if (v<0) v = (v+n)%n;
return v;
}


BOB
ALICE
Choisir un nombre secret 0 < a < n
Calcule Q
a
= aP
Envoie



Calcule aQ
b
Choisir un nombre secret 0 < b < n
Calcule Q
b
= bP
Envoie



Calcule bQ
a

Q
a
Q
b
Maintenant ALICE et BOB partagent la cl secrte :
aQ
b
= abP = bQ
a
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
32

Formules mathmatiques

1
0
1
1
n i n
i
i
x
x
x
+ =
=


1
( 1)
2
i n
i
n n
i
=
=
+
=


1
1
( 1) 1
i n
i
n
i i n
=
=
=
+ +



2
1
( 1)(2 1)
6
i n
i
n n n
i
=
=
+ +
=


2 2
3
1
( 1)
4
i n
i
n n
i
=
=
+
=


2
0
(1 )
i
i
x
ix
x

=
=


1
2
1
(1 ( ( 1) 1))
pour q 1
(1 )
n i n
i
i
x n x
i x
q
=

=
+ +
= =


1
( 2)
2
2 2
i n
i n
i
i n
=
=
+
=


!
lim 1
2 ( )
n
n
n
n
n
e

+
= formule de Stirling que lon peut crire ! 2 ( )
n
n
n n
e

ln( !) .ln( ) n n n n ln( !) .ln( ) n n n n
( )
log
( )
b
Ln a
a
Ln b
= o Ln est le logarithme nprien.
lim 0 a > 0
!
n
n
a
n
+
=



Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
33


REFERENCES




Lewis and Denenberg , Data Structures and Their Algorithms, , Harper Collins, 1991, pp 243-251.
Sleator and Tarjan , "Self-adjusting Binary Search Trees", , JACM Volume 32, No 3, July 1985, pp
652-686.
Mark Weiss , Data Structure and Algorithm Analysis, , Benjamin Cummins, 1992, pp 119-130.
Derick Wood , Data Structures, Algorithms, and Performance, , Addison-Wesley, 1993, pp 367-375
A. V. Aho, J. E. Hopcroft, and J. D. Ullman. Data Structures and Algorithms. Addison-Wesley,
1983.
R. Bellman. , On a routing problem , Quarterly of Applied Mathematics, 16(1):87-90, 1958.
G. Brassard. , P. Bratley, Algorithmique: conception et analyse, Masson 1987.
T. Cormen, C. Leiserson, and R. Rivest. Introduction to Algorithms. McGraw-Hill, 1990.
E. Dijkstra. A note on two problems in connexion with graphs. , Numerische Mathematik,1:269-271,
1959.
L. R. Ford and D. R. Fulkerson., Flows in networks. , Princeton University Press, 1962.
R. Graham and P. Hell. On the history of the minimum spanning tree problem. Annals of the History
of Computing, 7(1):43-57, 1985.
L.S. Hill, Cryptography in an Algebraic Alphabet, The American Mathematical Monthly, Vol. 36
N6 (1929) pp. 306-312.
J. B. Kruskal. , On the shortest spanning subtree of a graph and the traveling salesman problem. In
Proceedings of the American Mathematical Sofiety, volume 7, pages 48-50, 1956.
D. Khl, Design patterns for the implementation of graph algorithms. Master's thesis, Technische
Universitt Berlin, July 1996.
V. Kumar, A. Grama, A. Gupta and G. Karypis, Introduction to Parallel Computing, Design and
Analysis of Algorithms, The B.C. Publishing Compagny, Inc, (1994).
R. Prim, Shortest connection networks and some generalizations. Bell System Technical Journal,
36:1389-1401, 1957.
Y. Saad, Iterative Methods for Sparse Minear System. PWS Publishing Company, 1996.
R. E. Tarjan, Data Structures and Network Algorithms. Society for Industrial and Applied
Mathematics, 1983.
Seymour Parter, The use of linear graphs in Gauss elimination. SIAM Review, 1961 3:119-130.
D. Matula, G. Marble, and J. Isaacson , Graph coloring algorithms in Graph Theory and Computing,
Academic Press, pp.104-122, 1972.
L. R. Ford and D. R. Fulkerson, Maximal flow through a network, Can. Journal of Mathematics
1956 pp.399-404
A. V. Karzanov, Determining the maximal flow in a network by the method of preflows. Sov. Math.
Dokl. 1974
Ravindra K. Ahuja and Thomas L. Magnanti and James B. Orlin, Network Flows: Theory,
Algorithms, and Applications, Prentice Hall, 1993.
Robert E. Tarjan, Depth first search and linear graph algorithms, SIAM Journal on Computing,
1(2):146-160, 1972
Scott Fortin, The Graph Isomorphism Problem, TR 96-20, Dept. of Computer Science, University of
Alberta (1996)
Edward Moore, The shortest path through a maze, International Symposium on the Theory of
Switching (1959), Harvard University Press
E. Nuutila, Efficient transitive closure computation in large digraphs, PhD Thesis, Helsinki University
of Technology, 1995. Acta Polytechnica Scandinavica, Mathematics and Computing in Engineering
Series, No. 74.
A. Goralcikova and V. Koubek, A reduct and closure algorithm for graphs, In Mathematical
Foundations of Computer Science, volume 74 of Lecture Notes in Computer Science, pages 301-307.
Springer-Verlag, 1979
Mthodes de Cryptographie M. NAIMI Universit de Cergy-Pontoise
34
Klaus Simon, An Improved Algorithm for Transitive Closure on Acyclic Digraphs, Theoretical
Computer Science 58 Automata, Languages and Programming, 376-386, 1986
P. Purdom A Transitive Closure Algorithm BIT, 10, 1970, pp. 76-94.
E. Horowitz, S. Shani Fundamentals of Data Structures, Pittman, 1977.
D.E. Knuth The Art of Computer Programming, Vols. 1 to 3, Addison-Wesley, Massachusetts, 1973.
R.L. Kruse Data Structures and Program Design, Prentice-Hall, Englewood Cliffs, 1984.
J.P. Tremblay, P.G. Sorenson, An Introduction to Data Structures with Applications, Second
Edition, McGraw-Hill, 1984.
G. Brassard and P. Bratley Fundamentals of Algorithms, Prentice Hall, 1996.
M. A. Weiss Data Structure and Algorithm Analysis in C, Addison Wesley, 1997.
L. Miller, Riemmanns hypothesis and tests for primality, Journal of Computer and System Sciences,
Vol.13, n3, (1976), pp.300-317.
M.O. Rabin, Probabilistic algorithm for testing primality, Journal of Number Theory, Vol.2, (1980),
pp. 128-138.
H.W. Lenstra, Factoring integers with elliptic curves. Annals of Mathematics, Vol.126, (1987),
pp.649-673.
J.M. Pollard, A Monte Carlo method for factorization, BIT, Vol. 15, (1975), pp.331-334.
J.W.J. Williams, Algorithm 232 (Heapsort), Communication of the ACM, Vol.7, (1964), pp.347-348.
M. Naimi , Introduction la Programmation, Edition Herms (1994) pages 244
G.R. Perrin, Structures de Donnes, Polycopi Universit de Franche-Comt, (1979).
C. 350 B.C.E. Euclid author of the most successful mathematics book Elements and proposed his
GCD (Greatest Common Divisor) algorithm
C. 780-C. 850 Abu Jafar Mohammed ibn Musa al-Khwarizmi composed the oldest works on
arithmetic and algebra, the very name algorism derived from his surname.
S. Pohlig and M. Hellman, ``An Improved Algorithm for Computing Logarithms over GF(p) and its
Cryptographic Significance,'' IEEE Trans. Info. Th., 24(1978), 106-110.

Vous aimerez peut-être aussi