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 premiersp etq.
2. Calculern=p∗q etφ= (p−1)(q−1) 3. Choisirepremier avec φ
4. Calculerd, inverse deemoduloφ(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´emontr´e que deux nombres a et b sont premiers entre eux, si et seulement s’il existe des solutions u et v telles quea∗u+b∗v= 1 (avec u et v entiers). Dans notre cas, φ ete sont premiers entre eux, nous cherchons doncu dans l’´equation e∗u+φ∗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`erec du texte avec caract`ere chiffr´e =ce mod n.
D´echiffrement
D´echiffrer chaque caract`ere c du 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