Le chiffrement RSA est considéré comme l’une des procédures de clé publique les plus sûres et les mieux décrites. L’idée de chiffrer en utilisant une clé de chiffrement publique et une clé de déchiffrement secrète est basée sur les cryptologues Whitfield Diffie et Martin Hellman. Publiées en 1976, avec l’échange de clés Diffie-Hellman, elles permettent à deux partenaires de communication de s’accorder sur une clé secrète via un canal non sécurisé. Les chercheurs se sont appuyés sur le puzzle Merkles développé par Ralph Merkle. C’est ce qu’on appelle aussi l’échange de clés Diffie-Hellman-Merkle (DHM).
Les cryptogènes utilisaient des fonctions mathématiques unidirectionnelles, faciles à exécuter mais qui ne peuvent être inversées, là encore, très difficilement. Aujourd’hui encore, l’échange de clés qui porte leur nom est toujours utilisé pour négocier des clés secrètes dans les cryptosystèmes symétriques. Le concept de la trappe est un autre mérite du duo de recherche. Dans la publication de l’échange de clés Diffie-Hellman, des abréviations cachées sont déjà mentionnées : elles devraient permettre d’accélérer l’inversion d’une fonction unidirectionnelle. Diffie et Hellmann n’ont fourni aucune preuve concrète, mais leur théorie de la trappe a encouragé de nombreux cryptologues à mener leurs propres enquêtes.
Rivest, Shamir et Adleman ont également cherché des abréviations pour les fonctions à sens unique, à l’origine avec l’objectif de réfuter la théorie de la trappe porte. Cependant, leurs recherches se sont développées dans une direction différente et ont abouti à la méthode de chiffrement qui a finalement été nommée d’après eux. Aujourd’hui, RSA est considéré comme le premier algorithme, publié scientifiquement, qui permet la transmission de données chiffrées sans échange de clé secrète.
Le chiffrement RSA utilise un algorithme basé sur la multiplication de grands nombres premiers. Bien qu’il n’y ait généralement pas de problème à multiplier deux nombres premiers par 100, 200 ou 300 chiffres, il n’y a toujours pas d’algorithme efficace capable de décomposer le résultat d’une telle opération de calcul en ses facteurs premiers dans l’étape inverse. La factorisation en nombres premiers peut être illustrée par l’exemple ci-dessous.
Si vous multipliez les nombres premiers 14.629 et 30.491, vous obtenez le produit 446.052.839, qui n’a que quatre diviseurs : 1, lui-même et les deux nombres premiers qui ont été multipliés. Si vous supprimez les deux premiers diviseurs, puisque chaque nombre est divisible par 1 et par lui-même, vous obtenez les valeurs initiales 14.629 et 30.491.
Ce schéma est la base de la génération des clés RSA. Les clés publiques et privées représentent deux paires de nombres :
- Clé publique : (e, N)
- Clé privée : (d, N)
N est le module RSA. Ceci est contenu dans les deux clés et les résultats du produit de deux nombres premiers très grands p et q (N = p x q) sélectionnés au hasard.
Pour générer la clé publique, vous avez également besoin de e, un nombre qui est choisi au hasard avec certaines restrictions. Si vous combinez N et e, vous obtenez la clé publique accessible à chaque abonné de communication en texte clair.
Pour générer la clé privée, N et d sont nécessaires. d est une valeur résultant des nombres premiers p et q générés aléatoirement ainsi que du nombre aléatoire e, qui sont calculés sur la base de la fonction phi d’Euler (φ).
Les nombres premiers inclus dans le calcul de la clé privée doivent être tenus secrets afin de garantir la sécurité du chiffrement RSA. Le produit des deux nombres premiers, d’autre part, peut être utilisé en texte clair dans la clé publique, puisqu’il est supposé qu’il n’y a pas d’algorithme efficace aujourd’hui qui peut décomposer le produit de nombres premiers très grands en ses facteurs dans le temps pertinent. Il n’est donc pas possible de calculer p et q à partir de N. Sauf si vous pouvez raccourcir le calcul. Une telle trappe représente la valeur d, qui n’est connue que du propriétaire de la clé privée.
La sécurité de l’algorithme RSA dépend fortement du progrès technique. La puissance de calcul des ordinateurs double tous les deux ans. Il n’est donc pas exclu qu’une méthode efficace de factorisation primaire soit disponible dans un avenir prévisible à l’échelle habituelle. Dans ce cas, RSA offre la possibilité d’adapter l’algorithme au développement technique en utilisant des nombres premiers encore plus grands pour calculer les clés.