TP/Projet : L’algorithme RSA
Introduction
Dans ce TP/Projet nous allons impl´ementer l’algorithme RSA.
Le syst`eme de chiffrement RSA a ´et´e invent´e par trois math´ematiciens :
Ron Rivest, Adi Shamir et Len Adleman, en 1977.
L’algorithme RSA est un outil puissant permettant de chiffrer des don-
n´ees personnelles. Il est aujourd’hui l’algorithme de chiffrement le plus utilis´e
(cartes bancaires, transactions, messageries, ...).
Ce TP/Projet ca s’organiser en trois partie :
G´en´eration des cl´es.
— Chiffrement.
— D´echiffrement.
Le r´esultat attendu est le mˆeme que la d´emonstration faite en cours. Le
choix du langage est laiss´e libre mais une pr´ef´erence est donn´ee au langage
C.
Rappel du cours sur le fonctionnement global
Cr´eation des cl´es
1. Choisir deux nombres premiers pet q.
2. Calculer n=pqet φ= (p1)(q1)
3. Choisir epremier avec φ
4. Calculer d, inverse de emodulo φ(utliser l’algorithme d’euclide ´etendu).
Le couple (n, e) est la cl´e publique, et le couple (n, d) est la cl´e priv´ee.
Les cofficients de B´ezout
Etienne B´ezout a d´emonte que deux nombres a et b sont premiers entre
eux, si et seulement s’il existe des solutions u et v telles que au+bv= 1
(avec uet ventiers). Dans notre cas, φet esont premiers entre eux, nous
cherchons donc udans l’´equation eu+φv= 1. Ces valeurs sont appel´ees
coefficients de B´ezout.
1
L’algorithme d’euclide ´etendu
L’algorithme d’euclide ´etendu permet, `a partir de deux entiers de calculer
non seulement le PGCD de ces deux nombres mais ´egalement un des couples
(u, v) de l’´equation pr´ec´edente.
L’algorithme est le suivant :
(int r, int u, int v) = euclide(int a, int b) {
// r = PGCD(a, b) et r = au + bv
r=a;u=1;v=0;
int rp = b; int up = 0; int vp = 1;
int q, rs, us, vs;
while (rp != 0) {
q=r/rp;
rs=r;us=u;vs=v;
r=rp;u=up;v=vp;
rp=rs-q*rp;up=us-q*up;vp=vs-q*vp;
}
return (r,u,v)
}
Dans notre cas, 2 <d<φ, donc si dne convient pas il faut simplement
lui ajouter φ.
Chiffrement
Chiffrer chaque caract`ere cdu texte avec caract`ere chiffr´e = cemod n.
D´echiffrement
D´echiffrer chaque caract`ere cdu texte avec caract`ere d´echiffr´e = cd
mod n.
Remarques
Quels sont les deux probl`emes r´esultants de cette impl´ementation ?
Corriger votre programme en cons´equence.
2
1 / 2 100%