Pour créer notre clé privée, on va calculer un nombre U, qui va nous permettre "d'inverser la fonction de chiffrement" très facilement (On verra dans quelques chapitres comment faire). C'est ce nombre qui sera important, et secret !
Pour calculer U, on va reprendre les nombres C et M, calculés lors de la création de la clé publique.
Un mathématicien, du nom d'
Etienne Bézout, a démontré que deux nombres
a et
b sont premiers entre eux, si et seulement s'il existe des solutions
u et
v telles que

(u et v étant des nombres entiers). Or, on a dit peu avant que C et M devaient être premiers entre eux. Il existe donc deux nombres entiers
u et
v qui répondent à l'équation.
Nous allons chercher U, tel que
(Note : la valeur de V ne nous servira pas)
Comment trouver U ?
Pour trouver U, il faut utiliser un algorithme spécial. Le but de ce chapitre n'est pas de vous montrer comment fonctionne cet algorithme, mais plutôt ce que l'on peut faire avec. On va donc utiliser un petit programme qui permet de trouver la valeur de U cherchée.
Le programme est disponible pour GNU/Linux
(cf un peu pour loin pour l'installation), et
ici pour Windows.
- Sous GNU/Linux, nous allons devoir compiler ce programme. Pour ce faire il faut auparavant avoir installé la bibliothèque GMP. (C'est la bibliothèque que l'on utilisera dans toute la partie II du tutoriel. Il faudra donc installer la bibliothèque GMP à un moment où un autre
(Pour Windows, j'expliquerais comment faire dans le chapitre I de la partie II))
Ouvrez une console et copiez-y ce code, ça fera tout pour vous 
Code : Console - Installation du programme : GNU/Linux | cd ~
mkdir RSA
cd RSA
wget http://ftp.sunet.se/pub/gnu/gmp/gmp-4.2.2.tar.gz
tar xfz gmp-4.2.2.tar.gz
cd gmp-4.2.2
./configure --enable-cxx
make
make check
sudo make install
cd ..
rm gmp-4.2.2 gmp-4.2.2.tar.gz
cd /usr/lib/
sudo ln -s /usr/local/lib/libgmpxx.so.4 libgmpxx.so.4
cd ~/RSA
wget http://tuxweb79.free.fr/Bezout_linux.zip
unzip Bezout_linux.zip
cd Bezout
make
chmod +x bezout |
Ceci aura pour effet de compiler, puis d'attribuer les droits d'exécution au programme (en ayant installé la bibliothèque GMP avant...) ;
- Sous windows, vous extrayez l'archive .zip. Le programme est déjà compilé, il vous suffit de le lancer depuis la ligne de commande en faisant : démarrer > exécuter > "cmd" puis :
Code : Console - Installation du programme : Windows | cd chemin/vers/le/dossier/du/programme/ |
Comment fonctionne le programme ?
Il vous suffit de lancer le programme avec comme arguments C et M, comme ceci.
Code : Console - Programme Bezout
Sous Windows, au lieu de taper "./bezout", il faut taper "Bezout.exe".
Dans mon cas, j'ai :
Code : Console - Programme Bezout | ./bezout 7 4992
PGCD = 1
u = -713
v = 1 |
Ainsi, je connais U.
U = -713 n'est pas acceptable !
Comment ça ? c'est pas bon ?!
Bah.. pas tout à fait. L'algorithme du système RSA a besoin d'un U tel que

, or là, on voit clairement que U est inférieur à 2 (dans mon exemple, mais ça arrive souvent

)
Comment faire pour y remédier ?
En appliquant la formule suivante (avec U
0 la solution trouvée précédemment) :

. On peut trouver d'autres solutions à l'équation précédente correspondant à nos besoins. Il suffit de faire varier l'entier K pour obtenir une valeur dans l'intervale
![]2 ; M[](cgi-bin/mimetex.cgi?%5D2%20%3B%20M%5B)
.
On pose U une valeur de
tel que
.
Trouver directement un U valable grâce au programme précédent
Pour trouver directement un U qui convient, il suffit de lancer le programme Bezout, avec l'option "-rsa". Voici ce que j'obtiens dans mon cas :
Code : Console - Programme Bezout | ./bezout -rsa 7 4992
4279 |
Je retiens U = 4279.
Ca y est !
Voilà, notre clé privée est (U, N). J'ai (U = 4279 et N = 5141) comme clé privée