Le plus célèbre des codes à clé publique est dû à Ron Rivest, Adi Shamir et Leonard Adleman du MIT.
La clé publique est connue de tous et est utilisée pour coder les messages. Par contre un message codé
par la clé publique ne peut être décodé que par quelqu'un qui connaît la clé privée.
Les clés sont constituées de la façon suivante.
- Choisir deux (grands) nombres premiers et .
- Calculer : les opérations s'effectueront modulo .
- Calculer
.
- Choisir un entier inférieur à
et premier avec
: c'est l'exposant de la clé publique.
- Calculer l'inverse de pour la multiplication modulo
(il existe et est unique puisque et sont
premiers entre eux : calcul par l'algorithme d'Euclide).
L'entier est l'exposant de la clé privée.
La clé publique se compose de l'entier et de l'exposant , connus de tous. La clé privée est l'exposant qui doit être
tenu secret. Évidemment, quelqu'un qui connaît peut théoriquement
retrouver ses deux facteurs premiers et et donc calculer
puis connaissant . La sécurité du système repose sur le fait que la décomposition d'un nombre
en produit de facteurs premiers est très coûteuse en temps de calcul : il est virtuellement impossible
de décomposer un nombre produit de deux très grands facteurs premiers.
Cela n'empêche pas les utilisateurs de changer assez souvent de clé par mesure de sécurité.
Voici comment fonctionnent le codage et le décodage.
Le message à transmettre est d'abord transformé en un entier (par exemple par concaténation des codes ascii
des caractères qui le composent). Notons cet entier qui est censé être inférieur à .
Le codage le transforme en modulo . Pour décoder, il faut connaître
et calculer modulo . Miracle, on retrouve .
Vous pouvez nous croire sur parole, mais ce serait dommage, car la démonstration
est parfaitement à votre portée.
Définition 9
On appelle caractéristique d'Euler la fonction qui à un entier fait correspondre le nombre d'entiers
premiers avec , compris entre et . On note cette fonction .
Si est premier, alors
, puisque tout entier strictement inférieur à est premier avec .
Si est le produit des 2 nombres premiers et , alors
. Pourquoi ? Vous pouvez trouver tout seul :
comptez les multiples de puis les multiples de , entre et
(ne comptez pas deux fois).
Voici maintenant la généralisation du petit théorème de Fermat,
que nous vous avons posé en exercice.
Théorème 9
Soit un entier et un entier premier avec . Alors
.
Cela aussi, vous pouvez le démontrer vous-mêmes : considérez
le sous-ensemble de
, noté , constitué
des
entiers premiers avec compris
entre et . Montrez ensuite
que l'application qui à associe modulo
est une bijection de sur lui-même (raisonnez par l'absurde
et utilisez le lemme de Gauss).
Cela signifie que
est égal à .
Maintenant faites le produit modulo
de tous les éléments de chacun des deux ensembles :
Allez, vous y êtes presque : un dernier coup de lemme de Gauss peut-être ?
Après un tel effort, vérifier que le codage RSA fonctionne, c'est presque du repos :
Puisque
, il existe un entier tel que
. Alors :
.
Euh... à condition que soit premier avec , pour pouvoir
appliquer le théorème ci-dessus à . Si n'est pas premier avec , il est divisible par ou par , mais pas les deux
(car il est inférieur à ). Supposons
qu'il soit divisible par et écrivons :
, où est premier avec et avec .
Allez, vous allez encore devoir travailler : montrez d'abord que
, puis que
. Maintenant, vous pouvez en déduire que
.
Recollez les morceaux :
. Vous y êtes, le message est bien décodé !
Par pure bonté d'âme, nous vous dispensons de recommencer ce qui précède si est multiple de : merci qui ?
© UJF Grenoble, 2011
Mentions légales