RSA est un algorithme de chiffrement asymétrique, il sera utilisé dans PGP pour
créé des clés temporaires. Nous allons étudier son principe de fonctionnement à
travers un exemple.
Le principe du codage par factorisation restant le même quelle que soit la taille du
nombre, nous allons nous contenter ici dun tout petit nombre, qui constituerait un
gros secret pour un élève de CM2, mais pas pour un espion.
Le colonel Dupond, adepte du cryptage RSA, a donc donné à tous ses agents la clé N=391 et le facteur k=3. N est un nombre composé par le produit des deux facteurs premiers 17 et 23 (17x23=391). On prends ses deux facteurs diminués de 1 : 17-1=2x2x2x2 et 23-1=2x11. Le PGCD de ces deux nombres est donc 2. On considère alors lindicateur dEuler L(N)=16x22, dont on prend la moitié Z, soit 176.
A partir de ce nombre, on cherche les nombres de la forme m.Z+1, le premier étant (1x176)+1=177, le second (2x176)+1=353, et ainsi de suite. Il faut ensuite décomposer ce m.Z+1, ce qui difficile, parfois même impossible. Ici 177=3x59, mais 353 est premier. Nous nous contenterons donc de 3x59 (k=3 et k=59).
Le colonel Dupont envoie donc à tous ses honorables correspondants le nombre clef 391 et le facteur 3. Il garde pour lui seul k=59. Justement, Durand doit passer le voir sous peu et veut lui dire « arrive le 8 ». Un message ultra-secret quil va coder avec 3 et 391. Pour commencer il convertit son texte en chiffres en prenant par exemple a=01, b=02, ..., espace=00, 0=30, 1=31, 2=32, ..., ce qui lui donne 0118180922050012050038.
Il regroupe ce nombre en tranches ayant moins de chiffres que la clef 391, donc en tranches de deux chiffres : 01 18 18 09 ... Chacun de ses nombres représente la variable texte ou T. Il va maintenant effectuer lopération C=T^3 (mod 391) pour obtenir la succesion 1 358 358 338 91 ... 132. Ajoutant des 0 si nécessaire pour navoir que des nombres de trois chiffres comme la clef, il note 001358358338091...000132, et cest cette suite de chiffres quil envoie au colonel.
Celui-ci possède la clef k=59, va maintenant utiliser la congruence T=C^59 (mod 391) après avoir découpé le message en tranches de trois chiffres puisque la clef N en a trois. Il va ainsi retrouver 01 pour 001, 18 pour 358 - car 358^59 (mod 391) donne 18 - et ainsi de suite. Il ne lui reste plus quà prendre son tableau de correspondance alphabétique pour recueillir « arrive le 8 ». Bien entendu, codage et décodage se font sur ordinateur vu la longueur des opérations.
Ladversaire, bien quil connaisse la clef publique 391 et la facteur 3, ne peut décrypter le message car il lui faudrait avoir la clef secrète k=59. Et pour avoir celle-ci, il devrait décomposer N en facteur premiers, ce qui est certes facile avec 391, mais impossible actuellement - à moins dy consacrer des siècles ou de recourir à la divination - avec un nombre de 150 à 200 chiffres. Il pourrait certes tenter de calculer un racine k-ième modulo N, mais cela est virtuellement impossible car il nexiste aucun algorithme permettant de faire cette opération en un temps raisonnable pour N composé.
En contrepartie, le calcul dune puissance modulo N est à la portée de tout ordinateur, ou même dune calculatrice de poche programmable. Pour le moment, la sécurité du cryptage RSA repose sur la puissance des ordinateurs et sur les connaissances en arithmétique. Tout progrès dans un domaine comme dans lautre peut obliger à allonger la clef, où à chercher une autre fonction qui soit facile dans un sens, et quasiment impraticable dans lautre.
Article extrait de Sciences&Vie n°953, février 1997.
RSA sont les initiales de Rivest Shamir Adelman, les inventeurs de ce procedé