2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83

publicité
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127
TPE réalisé par les élèves Maxime Juramy, Mathieu LanFranco, Timo Jolivet et Michel Pham.
Suivi par les professeurs M. Ghilini et M. Strozza.
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127
Un nombre premier est un entier supérieur ou égal à 2 dont les seuls diviseurs
positifs sont 1 et lui-même.
Depuis des siècles des mathématiciens se sont intéressés aux nombres premiers et ont
essayé, par tous les moyens, de percer le mystère qui se cache derrière eux.
Jusqu’à il y a quelques décennies, trouver une fonction qui fabriquerait des nombres
premiers était juste un grand défi mathématique, mais l’enjeu est maintenant beaucoup
plus important.
La raison pour laquelle tant d’énergie est investie dans la recherche de ces nombres est
qu’ils ont aujourd’hui une très grande utilité dans le domaine de la cryptographie et de la
protection de données en général.
Nous répondrons à la problématique en étudiant deux différents aspects du sujet :
La recherche des nombres premiers : nous nous sommes confrontés nousmêmes à ce problème et avons essayé d’élaborer des méthodes afin de trouver
des nombres premiers. Nous exposerons donc nos propres travaux ainsi que
ceux effectués par les "grands" mathématiciens au fil des siècles.
L’application des nombres premiers : nous verrons ici à quoi les nombres
premiers sont utiles en nous basant sur un exemple : le système de cryptage RSA
sur lequel nous avons fait des expériences et des tests afin de voir quel rôle ont
les nombres premiers dans son utilisation.
-
2
Voyons de quelle manière les mathématiciens recherchent ces nombres,
avec des moyens variés, de la théorie sur papier datant de plusieurs siècles
ou encore de l’algorithme intelligent traité par un ordinateur
supercalculateur…
A) Les recherches avant l’ordinateur
Nous exposons ici tout ce qui a été utile pour nos recherches (et pour les
recherches en général). Ce sont des résultats théoriques qui pourront être
exploités par un ordinateur par la suite.

Il existe une infinité de nombres premiers :
La quête d’un plus grand nombre premier ne sera jamais terminée : il existe une
infinité de nombres premiers. Ce résultat fut démontré par Euclide.
La preuve est simple : (par l’absurde)
Supposons que lP, l’ensemble des nombres premiers, soit fini.
Soit alors
p1 =2 ; p 2 =3 ; … ; p n
les x nombres premiers.
N  p1  p2  ...  pn  1
Ce nombre n’est ni divisible par
Et pourtant
p1 , p 2 ni par p n .
N (comme tout nombre) admet un diviseur premier p.
Donc p est premier et
p  p1 ; p2 ;...; pn 
 p1 ; p2 ;...; pn   lP , contraire à l’hypothèse.

Les Cribles :
Une des méthodes les plus courantes pour trouver des nombres premiers est la
méthode des "cribles" (dont le plus connu est celui d’Eratosthène).
Le principe est simple ; on dresse la liste de tous les nombres compris entre 1 et
un entier n choisi. On procèdera ensuite à l’élimination de tous les nombres qui ne sont
pas premiers dans le tableau (on enlève d’abord tous les nombres pairs et > 2).
3
Exemple : Le crible d’ Eratosthène :
On désire trouver la liste des nombres premiers inférieurs à 100.
On dresse donc la liste.
11
21
31
41
51
61
71
81
91
2
12
22
32
42
52
62
72
82
92
3
13
23
33
43
53
63
73
83
93
4
14
24
34
44
54
64
74
84
94
5
15
25
35
45
55
65
75
85
95
6
16
26
36
46
56
66
76
86
96
7
17
27
37
47
57
67
77
87
97
8
18
28
38
48
58
68
78
88
98
9
19
29
39
49
59
69
79
89
99
10
20
30
40
50
60
70
80
90
100
On raye tous les multiples de 2 supérieurs à 2.
On procède ensuite de la même manière pour 3.
Pas pour 4 car cela a déjà été fait avec 2. Donc on ne vérifiera
plus avec aucun entier pair.
On continue donc avec 5, 7 et cela jusqu’à
n (10 dans ce cas).
Les nombres restants et non rayés sont donc des nombres
premiers.

Les nombres de Fermat et de Mersenne :
Il existe des nombres que l’on appelle nombres de Fermat et nombres de
Mersenne (nom de leurs inventeurs).
Fn  2 2  1
n
Fermat :
Mersenne :
M p  2 p  1 , avec p premier
Ces nombres qui ne sont pas toujours premiers constituent un moyen efficace de
noter les nombres premiers et aussi de les rechercher sans être encombré par la taille
d’un nombre de l’ordre de
21000000 par exemple.
Fermat pensait que sa formule ne donnait que des nombres premiers. Cependant
ils ne sont tous premiers que jusqu’au cinquième.
4

Le "petit" théorème de Fermat :
Le théorème dit :
Soit p un nombre premier et a un entier non divisible par p.
Alors
a p1  1  0 p
On peut donc utiliser ce résultat et dire que si p est premier, alors
a p 1  1  0 p .
Cela nous permettra donc de vérifier si p est premier ou non.

La densité des nombres premiers :
Densité de nombres premiers autour de
n:
1
ln( n)
Le nième premier est environ égal à
n. ln( n)
Quantité de premiers inférieurs à n :
n
ln(n)  1
Ecart moyen entre deux premiers
consécutifs :
ln( n)
Ces formules, qui donnent des résultats imprécis permettent de donner
une approximation du comportement des nombres premiers.
Ces formules permettent d’étudier, entre autres, la répartition et la densité des nombres
premiers. Le couplage de ces formules et d’un ordinateur puissant peu donner des
résultats intéressants.
B) Nos propres recherches
Nous avons utilisé les outils exposés dans la partie A) afin d’effectuer des
tests probabilistes, d’étudier le comportement des nombres premiers et
d’essayer de trouver une fonction génératrice de nombres premiers.

Approche d’une fonction des nombres premiers (EXCEL) :
Nous allons chercher une fonction qui nous donnerait tous les nombres premiers,
ou du moins, une fonction qui nous en donnerait le plus possible ou qui nous
rapprocherait de ceux-ci, car il n’a été trouvée pour l’instant aucune fonction qui à
chaque « x » associe une valeur « y » qui correspond à un nombre premier.
5
Entrée des données dans EXCEL (tableau) et traçage de courbe :
Entrons dans un tableau les nombres premiers jusqu’à 2000.
N°
1
2
3
…
300
Nombre 1er correspondant
2
3
5
…
1999
Traçons une courbe en nuages de points avec :
 X : le n° du nombre premier
 Y : la valeur du nombre premier
Ainsi, nous avons eu une courbe représentant la valeur de chaque nombre premier (Y) en
fonction de son n° (X). C’est la courbe qui a x associe y , le
x = 300.
x ième nombre premier jusqu’à
Courbe des nom bres prem iers
2500
2000
1500
Nombres Premiers
1000
500
0
0
100
200
300
Méthode d’approximation de la courbe :
C’est ici qu’EXCEL va devenir très utile grâce à la fonction " Ajouter une courbe de
tendance ". Nous allons pouvoir tester successivement plusieurs courbes de types
différents (polynomiale, exponentielle, logarithme, …) et les comparer afin de voir
laquelle se rapproche le plus de la "vraie" fonction qu’on appellera "C".
6
La courbe exponentielle :
En voyant les valeurs des nombres premiers, et en remarquant
que les nombres premiers croissent rapidement, on peut penser, à vue
d’œil, que la fonction exponentielle serait la plus adaptée.
Approche d'une fonction par une fonction
Exponentielle
2500
y = 97,823e 0,012x
2000
Nombres premiers
1500
1000
Exponentiel
(Nombres premiers)
500
0
0
100
200
300
On remarque alors que la courbe exponentielle prend des valeurs
beaucoup trop élevées pour être considérée comme la fonction qui se
rapprocherait le plus de la fonction des nombres premiers.
La courbe logarithme :
On peut aussi tenter de voir, si une fonction logarithme se
rapproche plus de la courbe C.
Approche d'une fonction par une fonction logarithme
2500
y = 526,71Ln(x) - 1575
2000
Nombres Premiers
1500
Logarithmique
(Nombres Premiers)
1000
500
0
0
100
200
300
La courbe logarithme croit trop lentement pour être la courbe donnant
les nombres premiers.
7
La courbe puissance :
La fonction puissance peut-être assez intéressante, elle ajoute un
exposant adapté à la courbe des nombres premiers, la forme f(x)=x a,
voyons ce que cela donne.
Approche d'une fonction par une fonction
Puissances
2500
y = 1,6532x1,2483
2000
Nombres premiers
1500
Puissance (Nombres
premiers)
1000
500
0
0
100
200
300
On voit qu’elle se rapproche assez bien de la courbe des nombres
premiers, mais à partir du 250ième nombre premier, elle prend des
valeurs beaucoup trop élevées par rapport à la courbe des nombres
premiers, d’autant plus que l’échantillon est faible, car ils ne constituent
que les nombres premiers inférieurs à 2000.
La courbe linéaire :
La fonction linéaire est tout simplement une fonction affine de la
forme f(x) = ax+b. Il est peu probable qu’une fonction de ce type nous
mène au résultat voulu. De plus, elle aurait déjà été découverte. Mais
regardons quand même ce que cela donne.
Approche d'une fonction par une fonction Linéaire
2500
y = 6,7634x - 113,64
2000
Nombres premiers
1500
Linéaire (Nombres
premiers)
1000
500
0
0
100
200
300
En effet, elle ne se confond pas beaucoup avec la courbe C, elle
est peu précise, et cet écart de précision augmentera plus l’échantillon
sera grand.
8
La courbe polynomiale de second degrés :
La fonction polynôme de second degrés est une fonction du type
f(x)=ax²+bx+c, ce type de fonctions est assez extensible :
Approche d'une fonction par une fonction Pôlynomiale de
second degrès
2500
y = 0,0046x2 + 5,354x - 41,998
2000
Nombres premiers
Polynomial
(Nombres premiers)
1500
1000
500
0
0
100
200
300
On voit nettement que cette courbe est semblable à celle des nombre
premier. On pourrait donc penser que , si les nombres premiers avaient
une courbe représentative, une de ses approximations les plus précises
serait une fonction polynomiale.
La courbe polynomiale de degrés quatre :
Essayons de confirmer le résultat précédent, en ajoutant 2 degrés
supplémentaires. La fonction sera donc du type
f(x)=ax4+bx3+cx²+dx+e.
Approche d'une fonction par une fonction Polynomiale de
degrès 4
2500
y =1E-07x4 - 7E-05x3 + 0,0223x2 +
3,8597x -12,192
2000
Nombres premiers
1500
Polynomial
(Nombres premiers)
1000
500
0
0
100
200
300
La courbe de degrés 4 se rapproche plus que celle de degrés 2.
L’extensibilité des fonctions polynomiales augmente en fonction du
degrés de la fonction.
Plus le degrés est élevé, plus notre approximation sera précise.
9
Bilan sur ces approximations :
On peut conclure de nos approximations que la fonction qui se rapproche le plus
de la "vraie" fonction est polynomiale, on pense donc que la fonction la plus proche de la
fonction des nombres premiers est une fonction polynomiale de degrés élevé.
Notre travail est cependant limité :
-Notre échantillon ne représente que 300 nombres premiers. L’étude d’un échantillon
plus grand aurait donné des résultats plus précis.
-Aussi, nous avons seulement conjecturé, sans aucune généralisation car nous n’avons
rien trouvé de pertinent, mais il faut passer par des travaux intuitifs et expérimentaux
avant de pouvoir émettre quelque hypothèse.
La fonction qui se rapproche le plus de la fonction des nombres premiers est donc :
(selon nos travaux)
f(x) = - 1E-7x4 - 7E-5x3 + 0.0223x² + 3.8597x -12.192

Etude des incréments :
Il s’agit de l’étude de l’écart entre chaque nombre premier.
L’incrément du
n ième nombre premier Pn est l’espace entre ce nombre et le prochain
nombre premier moins l’espace entre ce nombre et le nombre premier précédent.
On le calcule ainsi :
I n   Pn1  Pn    Pn  Pn1 
Ci-dessous : représentation graphique de ces incréments jusqu’au 30ième nombre premier
incréments
6
incrément
4
2
0
-2
0
5
10
15
20
25
30
-4
-6
nièm e nom bre prem ier
La moyenne de cette série est
1
(proche de 0), et la moyenne des valeurs absolues est
26
2,25.
On remarque un "schéma-type" qui se répète en se déformant un peu : d’abord une série
de "-2 ; 2" avec un palier à 2, puis un "-4 ; 4" suivi d’un palier à –2.
L’erreur est située entre le 3ème et le 12ème nombre premier. Comme toujours, nous
n’obtenons que des tendances, rien d’exact ni rien de généralisable.
10

Etude de la densité :
Nous allons étudier ici la densité des nombres premiers, le nombre de nombre
premiers qui se trouvent de 1 jusqu'à n. (De 1 à 5 par exemple, il y a 2, 3 et 5 : Donc 3
nombres premiers.)
Nous allons analyser plus précisément la densité avec la formule
n
, qui nous donne
ln(n)  1
approximativement le nombre de nombres premiers entre 1 et n.
Avec EXCEL.
Comparons dans un tableau les informations fournies par cette formule avec les "vraies"
valeurs :
n
ln(n)  1
n
100
500
1500
…
10000
27,78
95,88
237,6
…
1217,9763
Vraies valeurs
26
96
235
…
1127
Variation
1,78
-0,12
2,6
…
90,9763
% d'erreur
1,78
0,024
0,1733333
…
0,909763
Nous avons représenté l'écart entre la valeur fournie par la formule avec la "vraie"
valeur; puis nous avons représenté cette variation par une marge d'erreur en %.
Voici des représentations graphiques qui offrent une meilleure visualisation :
Nombre de
nombres premiers
Nombre de nombres premiers avant n
1400
1200
1000
800
600
400
200
0
Formule
Valeur exacte
0
2000
4000
6000
n
8000
10000
12000
% d'erreur de la Formule
2
% d'erreur
1,5
1
0,5
0
-0,5
0
2000
4000
6000
8000
10000
12000
n
11
On remarque que la formule donne des valeurs légèrement supérieures aux données
exactes. Aussi, le % d'erreur varie fortement au début puis se stabilise a 1% dès lors
qu'on prend des valeurs de n supérieures à 2000.
Sachant cela, il est possible de créer une autre formule qui serait plus précise :
n
0,95n

ln(n)  1 100
D'une manière analogue à précédemment, nous obtenons ce tableau :
n
ln(n)  1
n
1500
2000
2500
…
9000
223,35
283,988
342,6
…
1024,928
Vraies valeurs
235
291
348
…
1025
Variation
11,65
7,012
5,4
…
0,072
% d'erreur
0,7766667
0,3506
0,216
…
0,0008
Qui donne sous forme graphique :
% d'erreur avec la nouvelle formule
% d'erreur
1
0,8
0,6
0,4
0,2
0
0
2000
4000
6000
8000
10000
n
Nous avons ici une meilleure précision, la marge d'erreur avoisine les 0%.
Cette formule est un exemple des formules concernant la densité des nombres
premiers. Nous en avons élaboré une qui est précise mais son seul intérêt réside dans
l'étude du comportement global des nombres premiers. Le fait que cette formule n'est
pas absolument exacte nous empêche de l'utiliser afin de "trouver" des nombres
premiers.
12
C) Jusqu’où les recherches sont-elles arrivées ?
Grâce à la puissance de calcul des ordinateurs, il est possible de réaliser des
calculs jusqu’alors infaisables "à la main" car trop longs à faire.
Le but des recherches est double :
- Trouver le nombre premier supérieur au plus grand connu.
- Trouver le type de croissance ou même mieux l’expression (bien que
théoriquement impossible) de la fonction  (n ) qui associe à tout entier n le nombre de
nombres premiers inférieurs à n ou encore mieux la fonction que nous nommons P(n)
qui associe à n le nième nombre premier.
On a donc inventé de nombreuses manières de trouver de grands nombres
premiers pour subvenir à nos besoins. Mis à part les "vieilles" méthodes telles que le
crible d’Eratosthène, des tests plus rapides, ont été mis au point.
La plupart sont des tests probabilistes qui ne sont donc pas sûrs à 100% ou qui
demandent des vérifications supplémentaires. Ils utilisent en majorité les propriétés du
petit théorème de Fermat :

Le test de Fermat :
On obtiendra ici soit "nombre non-premier" ou bien "peut-être premier".
On prend a < p, a est appelé la "valeur de base" du test.
a p1  1  0 p
Si cette relation n’est pas vérifiée, alors p est composé (il est le produit de
nombres premiers), on peut être sur que p n’est pas premier.
Si elle est vérifiée, on ne peut pas dire si p est premier ou non, car la réciproque
ne marche pas : en effet, certains nombres non-premiers vérifient aussi cette propriété,
ils sont appelés nombres "pseudo-premiers" et ils sont très rares.
On sait donc seulement qu’il y a une forte probabilité que p soit premier.
En recommençant le test avec d’autres valeurs de base a, on augmente la probabilité
que p soir premier si l’on trouve 1 plus souvent.

Le test de "Miller-Rabin" :
On obtiendra ici soit "nombre non-premier" ou bien "peut-être premier".
On décompose l’exposant n-1 sous la forme « (2^k)e, avec e impair( ?) et on
considère la suite :
p0  a e ; p1  a 2 e ; p2  a 4 e ;...; pk  a k 1 , tous ces calculs étant effectués mod n.
Chaque
pi , i > 0 est égal au carré du précédent : pi  ( pi 1 ) . Or si n est premier, le
2
dernier terme de la suite vaut 1 (petit théorème de Fermat) et l’équation x²=1 (mod n)
a seulement deux solutions : 1 et –1.
13
On en déduit donc que deux cas et seulement 2 sont possibles pour la suite des
pi
lorsque n est premier :
SOIT :
p0  1 et donc i, pi  1
OU BIEN : Il existe i < k tel que
pi  1 , et donc j  i, p j  1 .
Si aucune de ces deux propriétés n'est vérifiée, alors n n’est pas premier.
Si l’une des deux est vérifiée, encore une fois, on peut juste affirmer qu’il y a une forte
probabilité que n soit premier.
Remarque : si l’une des propriétés est vérifiée alors que n est composé, on dit
alors que a est "menteur" (pour ce n) et que n est fortement pseudo-premier.

Le test de Lucas-Lehmer :
Ce test sert à vérifier si un nombre de Mersenne est premier ou non.
Son énoncé est le suivant :
Soit la suite
S1  4
S n telle que : 
2
Sn  ( Sn1 )  2
Pour n>2, le nombre de Mersenne
Mn
est premier

Mn
Il est aussi possible de commencer avec
divise
Sn
S1  10
ou d’autres valeurs selon n.
C’est une méthode utilisée aujourd’hui pour tester la primalité des plus grands nombres
encore en phase de "test". (Le plus grand nombre premier trouvé à ce jour a été criblé
avec cette méthode.)
Finalement, la seule méthode qui vérifie à 100% la primalité d’un nombre est la
méthode la plus lourde : vérifier si un entier n est divisible par d’autres nombres que 1 et
n. Il faut procéder en prenant chaque entier inférieur à n et vérifier si il divise n ou non.
De nombreuses méthodes sont utilisées afin de réduire le nombre de calculs nécessaires
à effectuer (comme par exemple le crible d’Eratosthène mais en version grandement
optimisée ou encore le test de Lucas-Lehmer). Aussi, pour rendre le calcul plus rapide sur
un ordinateur, on utilise des algorithmes.

Utilisation d’Algorithmes :
Afin d’économiser beaucoup de temps, on met tous les calculs à faire sous forme
d’algorithme (une boucle que l’ordinateur répètera jusqu’à un moment donné).
14

Le premier exemple qui vient à l’esprit est alors un algorithme qui, pour
vérifier la primalité d’un entier n effectuerait des divisions successives de n
par 2 ; 3 ; … ; E( n ). Ainsi, si aucun des restes des division n’est nul, alors
n est premier.
Choisir p, p entier naturel.
i=2
Tant que i  E ( p )
Si i divise p
Si i ne divise pas p
Alors p n’est pas premier.
On ajoute 2 à i et on
recommence l’algorithme.
FIN de l’algorithme.
Si lorsque i > E ( p ) on n’a pas trouvé i tel que i divise p,
alors p est premier.
L’inconvénient de cet algorithme est sa lourdeur, en effet, le nombre de calculs à
effectuer pour un nombre très grand est bien trop élevé et donc il est peu rentable.

Un autre algorithme qui lui est plus rentable est un algorithme basé sur le
test de Lucas-Lehmer. Il permet de déterminer si un nombre
premier ou non.
Soit la suite
S n définie par :
Alors 2 n  1 est premier si
2n 1
est
S1  4

2
n
Sn1   Sn   2 mod 2  1
S n1  0
Choisir n, n entier naturel et n>2
i=4
Tant que i  n
Si
Alors
Sn1  0
2n 1
est premier.
Si
Sn1  0
On ajoute 1 à i et on
recommence l’algorithme.
FIN de l’algorithme.
Si on n'a pas trouvé
Sn1  0 , alors
2 n  1 est peut-être premier.
Grâce à cet algorithme, le plus grand nombre premier qui a passé le test de primalité à
ce jour (supposé le 40ème nombre de Mersenne) à été découvert le 17 novembre 2003 :
M 20 996 011  220 996 011  1
15
Le fait de protéger des informations a toujours été d'une très grande importance,
lors d’une guerre par exemple. Un des premiers codages était utilisé par Jules César, il
cryptait chaque lettre en lui associant la deuxième lettre suivante, par exemple la lettre A
par C, B par D ... Mais, évidemment, il était assez aisé de comprendre le code, et donc
de "casser le codage".
Les techniques de codage ont évolué avec les moyens de communication et
maintenant l'une des meilleures cryptographies connues, est un algorithme de
chiffrement à clef publique. Celui-ci utilise des nombres premiers très grands, qui de
par leur taille rendront le décryptage pirate extrêmement long, d'où l'importance de faire
des recherches sur les nombres premiers pour en trouver de très grands.
Le premier algorithme de chiffrement à clef publique a été développé par
R.Merckle et M.Hellman en 1977, et, en 1978, l'algorithme à clé publique de Rivest,
Shamir, et Adelman (d'où son nom RSA) apparaît. Cet algorithme sert encore
aujourd’hui à protéger les données concernant l’armement nucléaire des armées
américaines et russes ...
A) Fonctionnement du cryptage RSA
Ce cryptage repose sur une fonction qui va crypter un message et sa
fonction inverse qui les décryptera. On aura donc F(clair)=crypté et
G(crypté)=clair
Aussi, F(G(clair))=clair.
Le fait que le passage de G(crypté)=clair soit beaucoup plus laborieux
que F(clair)=crypté est la base de cette cryptographie. Il est facile de multiplier
deux nombres pour obtenir un produit, mais difficile de factoriser ce produit et de
retrouver les deux grands nombres premiers qui le composent.
Afin d’illustrer le fonctionnement, prenons deux personnes :
Bob : C’est le récepteur des messages. Il ne pourra qu’en recevoir et non en envoyer.
Il pourra recevoir des messages grâce à sa clé publique qu’il aura créée.
Alice : C’est elle qui va envoyer des messages en utilisant la clé publique de Bob.
1) Clés : Dans un premier temps, Bob va créer ses clés.
Créer 4 nombres p,q, e et d :
o
p et q sont deux grands nombres premiers distincts. (Plus ils sont grands,
plus le cryptage sera sur.)
e est un entier premier avec le produit (p-1)(q-1).
o
d est tel que
o
e  d  1 mod( p 1)(q 1) . Autrement dit, ed-1 est un
multiple de (p-1)(q-1).
16
Ainsi, le couple (n,e) sera la clé publique de Bob. Il la rendra publique dans un
annuaire afin que les personnes désirant lui transmettre un message puissent le coder.
Le couple (n,d) sera sa clé privée. Il la gardera secrète et l’utilisera pour décoder ses
messages.
2) Envoi d'un message : Alice veut envoyer un message codé à Bob. Elle le
représente sous la forme d'un ou plusieurs entiers M compris entre 0 et n-1.
Pour représenter son message avec les entiers M elle associera chaque lettre de
l'alphabet au nombre correspondant à sa position. Donc B=02, C=03, etc.
On prendra A=27 et non 1 car sinon la valeur de A resterait la même. (En effet,
n  Z,1n  1 ).
Alice possède la clé publique (n,e) de Bob. Elle calcule C tel que
C  M e  mod n
pour
chaque lettre. C'est donc une suite de nombres créés ainsi qu'elle envoie à Bob.
3) Réception du message codé : Bob reçoit les nombres C, et il trouve grâce à sa
clé privée chaque lettre correspondant au nombre C :
M  C d  mod n .
B) Mettons cela en pratique
1) Créons nos clés
Prenons p=3 et q=11. Nous avons donc n=33.
(p-1)(q-1)=2x10=20
On prend ensuite e=7 car 7 et 20 sont premiers entre eux.
e  d  1 mod( p 1)(q 1)
,
7  d  1mod 20
On peut donc résoudre l'équation 7d-1=20 , donc d=3
Notre clé publique est donc (33,7) et la clé privée (33,3).
2) Cryptons le mot "TPE" (le rôle d'Alice)
T=20 , P=16 , E=05. Chaque lettre suivie d'une prime correspondra à cette même
lettre codée.
17
T '  T e  mod n
Pour trouver T', Nous multiplierons la partie entière de
En soustrayant le résultat obtenu à
Te
Te
n
puis la multiplierons par 33.
nous obtenons T'.
Application numérique:
T : 20^7=1280000000
1280000000/33=38787878,79
38787878*33=1279999974
1280000000-1279999974=26
Donc T=26=Z
P :16^7=268435456
268435456/33=8134407,758
8134407*33=268435431
268435456-268435431=25
Donc P=25=Y
E : 5^7=78125
78125/33=2367,424242
2367*33=78111
78125-78111=14
Donc E=14=N
Nous avons donc le mot "TPE" crypté :
"TPE" correspond à 26 25 14 , également "ZYN" sous forme de "mot".
2) Décryptons le mot "ZYN" (le rôle de Bob)
Z=26 , Y=25 , N=14
D'une manière analogue que précédemment, nous effectuons le calcul
Z '  Z d  mod n
18
Application numérique :
Z : 26^3=17576
17576/33=532,60606...
532*33=17556
17576-17556=20
Donc Z=20=T
Y : 25^3=15625
15625/33=473,4848...
473*33=15609
15625-15609=16
Donc Y=16=P
N : 14^3=2744
2744/33=83,1515...
83*33=2739
2744-2739=5
Donc N=5=E
Nous avons bien retrouvé notre mot du début "TPE", qui ne pouvait être décodé
seulement que par Bob.
3) Comment pouvoir "casser" le code ?
Mettons nous dans la peau d'un espion qui aurait intercepté un message crypté M' et qui
voudrait, sans avoir la clé privée (n,d), décoder le message.
Tout l'intérêt du système RSA repose sur le fait qu'à l'heure actuelle il est pratiquement
impossible de retrouver dans un temps raisonnable p et q à partir de n si celui-ci est très
grand (ou alors, si c'est possible, les cryptanalystes qui ont trouvé la méthode la gardent
secrète). Bob est donc la seule personne à pouvoir calculer d dans un temps court.
Donc le seul moyen pour l'espion de décoder le message est de factoriser le nombre n de
la forme n=p*q , ce qui est extrêmement long avec des nombres premiers de l'ordre de
10^10000 ou même encore plus.
Dans notre application, il est aisé de voir que n=33 est le produit de 3 et de 11.
En ayant la clé publique (33,7) et en faisant le calcul
e  d  1 mod( p 1)(q 1) ,
on retrouve la valeur de d (3) et alors le message est décryptable avec la même
d
méthode que celle de Bob :
.
M'M
mod n
19
Téléchargement