Cryptographie : code RSA

Nicolas Maillard

On cherche à coder un document pour assurer sa confidentialité. On s'intéresse ici à l'un des codes dits ``à clé publique'' les plus employés pour l'instant : le code RSA (algorithme trouvé par Rivest, Shamir et Adlemann en 1978). Il repose sur le calcul modulaire.

L'algorithme est le suivant : le (futur) destinataire d'un message crypté part d'un nombre entier produit de deux (grands) nombres premiers n = pq. Il détermine ensuite deux nombres d et e vérifiant :

displaymath16

La clé de codage (qu'il rend publique à tout le monde) est alors le couple (n,e), et le codage d'un entier x est le nombre

displaymath19

Le décodage de y par le destinataire se fait à l'aide de la clé (connue de lui seul) (n,d). Il n'a qu'à calculer :

displaymath22

On montre ``facilement'' que z = x et que l'on retrouve donc le message de départ (exemple : tex2html_wrap_inline51 . tex2html_wrap_inline53 . Or tex2html_wrap_inline55 donc on peut prendre ici d = e= 11. Si on veut crypter l'entier x=2 il vient tex2html_wrap_inline61 qui est la valeur codée de 2. Pour décoder on calcule tex2html_wrap_inline65 et on retrouve bien la valeur de x).

Le secret dans le code vient de la difficulté, étant donné un (grand) nombre entier n, d'en déduire une factorisation n=pq. La donnée de n et e ne permet donc pas avec les moyens actuels de trouver la clé d de décodage.

Le travail demandé est le suivant : implémenter une version parallèle de RSA pour crypter/décrypter un fichier de caractères. Quelques éléments de réflexion :



Nicolas Maillard
Thu Oct 1 13:36:25 MET DST 1998