• Aucun résultat trouvé

TP/Projet : L’algorithme RSA Introduction

N/A
N/A
Protected

Academic year: 2022

Partager "TP/Projet : L’algorithme RSA Introduction"

Copied!
2
0
0

Texte intégral

(1)

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

(2)

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

Références

Documents relatifs

Le chiffrement demande de pouvoir vérifier que de « très grands » nombres sont des nombres premiers, pour pouvoir trouver p et q, mais aussi que le produit de ces deux très

28  dans  l’emploi  à  « moyen  terme » 37 ,  suivant  l’idée  d’une  transition  entre  les  parcours  social 

En effet, les algorithmes de factorisation sont très lents (de l’ordre de milliers d’années pour des entiers aussi grands), jusqu’au jour où on en trouvera de plus rapides…

Ecrire un pro- gramme de codage et de décodage avec groupement (on commencera par compléter le message original par des espaces pour qu’il soit un multiple de 8 caractères, en Xcas

Dans la pratique, il sers le plus souvent ` a transmettre une clef servant ` a d´ echiffrer un message cod´ e selon une autre m´ ethode plus rapide, typiquement une m´ ethode

Dans un fichier nomm´e minimal standard.txt mettre les 60 premiers entiers g´en´er´es par middle standard `a partir de la valeur initiale 1..

(5) D´ eterminer le nombre de multiplications effectu´ ees par l’algorithme d’exponentiation rapide modulaire. (6) Coder l’algorithme

On a vu pr´ecedement que les nombres de Carmickael seraient d´etect´es comme probablement premier par ce test or ils ne sont par premiers. N´eanmoins les nombres ce Carmickael