L'algorithme RSA Matthias VIRY Ce qui fait la force de cet algorithme, c'est avant tout sa simplicité. Comme nous allons le voir, il est basé sur la théorie de congruences et sur la factorisation des grands nombres entiers, ce qui rend cet algorithme extrêmement calculatoire mais facile à assimiler. Pour illustrer le fonctionnement des algorithmes à clé publique comme RSA, nous allons imaginer une situation dans laquelle 3 personnages vont intervenir :
Le principe des algorithmes à clé publique est assez simple. Le problème majeur des cryptages classiques, c'est que la personne qui crypte le message doit fournir à son destinataire le moyen de le décrypter. Si on prend pour exemple l'algorithme de Jules César, il faut que le centurion sache de combien de lettres il faudra qu'il décale l'ordre de l'alphabet pour comprendre ce qu'a voulu dire Jules. C'est là où se situe le problème. D'une façon ou d'une autre il va bien falloir communiquer par des voies par toujours très sûres, la façon de décoder le message. Et c'est précisément à ce moment là, qu'un éventuel espion peut intervenir pour s'emparer du code de décryptage. Les algorithmes à clé publique présentent l'avantage de ne pas avoir ce défaut. Je veux dire par-là que la personne qui crypte son message ne sait pas comment le décrypter mais seule la personne à qui est destiné le message sait comment le déchiffrer. Exemple : Pour coder son message, Jacques va utiliser ce que l'on va appeler par la suite la clé publique de Bill. La clé publique est un ensemble de lettres et de chiffres qui vont permettre à quiconque veut envoyer des messages confidentiels à Bill de les crypter. Cela veut dire que tout le monde peut connaître cette clé publique, on s'en fout ce qui compte, c'est que c'est qu'elle permet de crypter des messages uniquement pour Bill. Et il n'y a que Bill qui détient ce que l'on appelle la clé privée et qui pourra servir à déchiffrer ce qui à été codé avec sa clé publique. Il n'y a donc à aucun moment transmission du moyen de décrypter. Donc Jacques a la clé publique de Bill. Il écrit alors son message avec son transportable et en quelques cliques de "bulot" passe à la "moulinette" la clé publique de Bill et ressort non pas avec un gros "coin !!! ", mais avec un fichier totalement incompréhensible, même pour lui. Il "pute on zizo" son modem qu'il a pour 7 ans et hop! il envoie son fichier à l'adresse Bill@WhiteHouse.Gov. Mais au même moment, grâce à ses écoutes secrètes, Boris intercepte le Mail de Jacques. Mais pas de chance, Boris ne comprend que le russe et se demande en quelle langue est rédigé ce message. Il met alors ses meilleurs agents sur le coup et pendant ce temps, quelque part aux Etats Unis, Bill reçoit tranquillement son mail qu'il va de ce pas décrypter en trois coups de "mouse" grâce à sa clé privée. Voilà comment fonctionne de façon abstraite un algorithme à clé publique. Maintenant nous allons entrer dans le vif du sujet. RSA est basé sur 2 principes mathématiques fondamentaux : la factorisation des grands entiers et l'arithmétique des congruences. Mais déjà là, je sens qu'il y en a qui décrochent. Rassurez-vous, j'ai seulement dit cela pour les Matheux, qui, s'ils désirent vraiment entrer dans l'intimité de cet algorithme, devront lire le superbe ouvrage : "Cryptographie : méthodes et pratique" aux éditions Thomson Publishing. Je vous épargnerai donc les discours sur de magnifiques notions mathématiques qui sont cachées derière cet algorithme. Nous allons maintenant voir en détails la façon de calculer les clés publiques et privées et la façon de crypter et décrypter des messages. Reprenons notre exemple : Pour pouvoir communiquer sa clé publique, Bill a du la calculer. Comment s'y est-il pris ? 1ère
Etape : La base de l'algorithme RSA, c'est le
nombre n. Ce nombre doit être le produit de deux nombres
premiers p et q, très grands et ayant sensiblement le même
nombre de chiffres. Pourquoi ?. La raison en est simple.
La puissance du cryptage RSA est basée sur la difficulté
de factoriser un grand entier. En bref, si un jour quelqu'un
arrive à factoriser le n qui a servi à constituer vos
clés, c'est à dire à découvrir les nombres p et q,
alors il n'aura aucun mal à reconstituer votre clé privée...
C'est pour cela que l'on choisit des nombres premiers p
et q d'environ 100 chiffres, pour rendre la factorisation
hors de portée, même des meilleurs ordinateurs. Pour
notre exemple, Bill vous simplifie la vie, il va choisir
: 2ème
Etape : Une fois n calculé, Bill cherche à déterminer
la fonction d'Euler Phi associée à n avec la formule : Phi = ( p - 1 ) x ( q - 1 )
Phi = 46 x 70 = 3220 3ème
Etape : Il
reste à calculer la clé privée. Et c'est à partir d'ici
que cela devient un peu plus délicat. En effet, si l'on
voulait aller au bout des choses, cela impliquerait l'utilisation
de notions mathématiques relativement pointues. Je vais
essayer de vous éviter cela. En gros, pour calculer la
clé privée d, il faut résoudre l'équation suivante :
d = e-1 mod ( Phi ) qui provient de la
relation : ed = -1 mod ( Phi ). En effet, c'est
cette dernière relation qui garantit la bijectivité du
cryptage. Pour déterminer d on va utiliser l'algorithme
d'Euclide étendu qui sera décrit un peu plus loin. On
obtient alors : d = e-1
mod ( Phi ) d = 79-1 mod (
3220 ) d
= 1019 Le
Cryptage Le Décryptage
|