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