Chiffrement et algorithme RSA : tout comprendre à Rivest Shamir Adleman
Learn SplunkRSA est un algorithme cryptographique répandu et sécurisé qui permet de chiffrer et déchiffrer les données. Il offre une méthode sûre pour transmettre des données sensibles sur Internet. Malgré quelques vulnérabilités, RSA est toujours employé dans de nombreuses applications, notamment pour appliquer des signatures numériques afin d’authentifier la source d’un message.
Cet article décrit ce qu’est RSA, son fonctionnement et ses principales applications. Il s’intéresse également aux vulnérabilités de sécurité de RSA et propose des pistes pour les atténuer.
Qu’est-ce que RSA ?
Rivest Shamir Adleman (RSA) est un célèbre algorithme de clé publique ou de cryptographie asymétrique. Il protège les données sensibles en les chiffrant et en les déchiffrant à l’aide d’une paire de clés : une clé publique et une clé privée.
Une brève histoire de RSA
Inventé en 1977 par Ron Rivest, Adi Shamir et Leonard Adleman du Massachusetts Institute of Technology, l’algorithme RSA tire son nom de leurs initiales.
Le domaine des réseaux informatiques, en pleine expansion à l’époque, avait besoin d’une solution pour sécuriser les communications numériques. C’est dans cette optique que RSA a été développé en 1977. RSA a pour principal objectif d’assurer la transmission sécurisée des données sur des réseaux non sécurisés, afin de permettre des communications privées via Internet et d’autres systèmes électroniques.
Dans les systèmes cryptographiques traditionnels, la distribution sécurisée des clés était un véritable défi. Il fallait que les deux parties échangent une clé secrète avant d’envoyer ou de recevoir un message. Avec RSA, la cryptographie par clé publique permet aux utilisateurs de diffuser librement leur clé publique tout en préservant la confidentialité de leur clé privée. Cette approche résout le problème de la distribution des clés et permet aux utilisateurs de communiquer en toute sécurité, sans avoir à échanger leurs clés dans un premier temps.
RSA aujourd’hui
Pour toutes ces raisons, RSA est l’un des mécanismes de chiffrement les plus employés au monde. Mais en raison de la complexité des calculs qu’il impose, RSA n’est pas adapté au chiffrement de grandes quantités de données.
Pour parvenir à cet objectif, on utilise RSA pour chiffrer une clé symétrique. Cette clé est ensuite utilisée pour chiffrer les données réelles, quel que soit leur volume. Cette approche hybride utilise à la fois la cryptographie asymétrique et symétrique pour maximiser l’efficacité du chiffrement.
(Lisez notre introduction à AES, une autre norme de chiffrement courante.)
Comment fonctionne RSA ?
RSA repose sur la factorisation de grands nombres entiers. Vous devez d’abord choisir deux grands nombres premiers pour la paire de clés, qui seront difficiles à factoriser. Ces nombres premiers doivent donc être sélectionnés de façon aléatoire et distants d’une différence conséquente. Imaginons que vous avez choisi les deux nombres premiers p et q.
L’algorithme calcule leur produit : n = p*q. Les valeurs de p et q doivent rester secrètes, tandis que n, qui sera utilisé comme module des clés publiques et privées, doit être rendu public.
Ensuite, on calcule la fonction indicatrice de Carmichael en utilisant p et q, puis on sélectionne l’entier e, dont la valeur sera utilisée comme exposant public. L’étape suivante consiste à calculer la valeur de d, qui fera office d’exposant privé.
Comment se déroulent le chiffrement et le déchiffrement avec RSA ?
La clé publique correspond à la paire (n, e), tandis que la clé privée correspond à la paire (n, d).
- Chiffrement. Lors du chiffrement d’un message, l’expéditeur utilise la clé publique (n, e) du destinataire pour calculer le texte chiffré selon la formule m^e mod n. Le m représente le message en clair.
- Déchiffrement. Pour déchiffrer un message chiffré par RSA, le destinataire utilise sa clé publique (n, d) pour calculer le message en clair, selon la formule c^d mod n.
Peut-on casser RSA ?
RSA s’appuie sur la difficulté de factoriser les grands nombres premiers (nous y reviendrons plus tard). La sécurité de RSA dépend de la longueur de la clé. Si RSA est actuellement considéré comme sécurisé, il reste vulnérable aux menaces à venir, à commencer par celle de l’informatique quantique.
Les algorithmes quantiques, et notamment l’algorithme de Shor, peuvent rapidement factoriser de grands nombres, ce qui rendrait RSA obsolète. Contre les attaques traditionnelles, RSA est sûr lorsque la clé est longue (2048 bits ou plus). Toutefois, les progrès accomplis dans la puissance de calcul pourraient mettre sa fiabilité à l’épreuve à l’avenir.
Que se passe-t-il si quelqu’un parvient à casser RSA ? Le principal danger réside naturellement dans l’exposition de données sensibles (informations financières ou personnelles, par exemple). Les signatures numériques ne seront plus fiables, et les systèmes financiers et juridiques en souffriront.
Pour gérer ce risque, la cryptographie post-quantique, notamment illustrée par le chiffrement basé sur un réseau de treillis fait actuellement l’objet d’études comme solution pour garantir la sécurité des données dans un mode où RSA est vulnérable.
Applications et scénarios d’utilisation de RSA
RSA est employé dans de nombreuses applications de sécurité de l’information et de cryptographie. Voici quelques applications courantes :
Signatures numériques
Une signature numérique est une technique qui permet au destinataire d’un message de vérifier son authenticité, son intégrité et sa non-répudiation. Elle prouve que le message n’a pas été altéré pendant son transport.
Pour créer une signature numérique, l’expéditeur commence par générer une valeur hash du message en utilisant une fonction de hachage cryptographique. Il le signe ensuite en appliquant l’algorithme RSA avec la clé privée, pour obtenir en sortie la signature numérique. Le destinataire peut ensuite appliquer l’algorithme RSA à la signature numérique en utilisant la clé publique de l’expéditeur.
Vous pouvez également vérifier la signature en la comparant à la valeur hash générée sur le message.
Certificats numériques
RSA est largement employé pour créer des certificats numériques, et notamment des certificats SSL. Ces certificats peuvent être utilisés pour vérifier l’identité des individus ou des organisations qui exploitent des sites web.
Les certificats numériques utilisent RSA pour chiffrer la signature numérique de l’émetteur, signature qui peut ensuite être vérifiée à l’aide de sa clé publique. Le certificat numérique comprend des informations telles que le nom de domaine et l’organisation qui exploite le site web, afin de prouver la légitimité du site auprès des visiteurs.
Protocoles de communication sécurisés
RSA chiffre la communication entre les deux parties sur un réseau non sécurisé tel qu’Internet. On utilise par exemple RSA avec le protocole TLS (sécurité de la couche de transport) pour établir une connexion sécurisée entre les serveurs web et les navigateurs web. RSA contribue également à sécuriser les communications par e-mail en offrant une méthode pour chiffrer et déchiffrer les messages.
On l’emploie également pour créer des réseaux privés virtuels (VPN). Les VPN utilisent TLS pour établir la liaison entre les deux parties qui échangent des informations. La poignée de main TLS dépend de l’algorithme RSA pour authentifier l’identité des deux parties impliquées dans l’échange.
Échange de clé sécurisé
RSA permet également à deux parties d’échanger une clé de façon sécurisée, même si elles n’ont encore jamais partagé de clé secrète. Les deux parties impliquées génèrent une paire de clés publique-privée à l’aide de l’algorithme RSA.
- L’expéditeur génère une clé symétrique, la chiffre à l’aide de la clé publique du destinataire et lui envoie la clé chiffrée.
- Le destinataire la déchiffre ensuite à l’aide de sa clé privée.
L’expéditeur et le destinataire possèdent la même clé symétrique, utilisable pour sécuriser les communications.
Vulnérabilités de l’algorithme RSA
L’algorithme RSA est difficile à casser dès lors qu’il respecte les recommandations. Plusieurs vulnérabilités ont été mises au jour dans RSA ces dernières années, parmi lesquelles :
Attaques par canal latéral
Une attaque par canal latéral cible les vulnérabilités qui émergent lorsqu’un système informatique traite les données (temps d’exécution du programme, consommation électrique, rayonnement électromagnétique) plutôt que le logiciel ou le code lui-même.
Un adversaire peut notamment extraire des informations du rayonnement électromagnétique émis par un ordinateur lorsqu’il réalise des opérations cryptographiques.
L’analyse de la puissance et le chronométrage sont deux exemples courants d’attaque par canal latéral contre le chiffrement RSA :
- Les attaques par analyse de la puissance s’expliquent par les opérations de calcul intensives propres à RSA, qui peuvent entraîner des variations dans la consommation électrique.
- Les attaques par chronométrage consistent à mesurer le temps nécessaire à un appareil pour réaliser le chiffrement RSA.
Des acteurs malveillants peuvent utiliser ces données pour déduire la clé secrète utilisée pour le chiffrement. Il faut donc prendre des mesures de défense adaptées pour éviter les attaques par canal latéral.
Longueur de clé insuffisante
La sécurité de l’algorithme RSA dépend en grande partie des grands nombres premiers utilisés pour le processus de génération de la clé. Plus la clé est longue, plus il est difficile de factoriser le produit de deux grands nombres premiers.
On recommande d’augmenter la longueur de la clé lorsque la puissance de calcul augmente. Des ordinateurs robustes peuvent factoriser de grands nombres avec une relative facilité et dans des délais assez courts. Ils sont donc capables de casser les clés les plus courtes.
Il est désormais possible de casser une clé RSA de 1024 bits. Longtemps recommandée, cette longueur n’est plus considérée comme valide. La bonne pratique recommande désormais une longueur minimale de 2048 bits.
Faiblesses propres aux nombres premiers
Les faiblesses des nombres premiers sont de deux ordres :
- caractère aléatoire,
- proximité.
Nature aléatoire des nombres premiers. Le processus de génération de clé avec l’algorithme RSA repose sur la génération de nombres premiers aléatoires, qui sont ensuite multipliés pour produire les clés publiques et privées.
Imaginons qu’une entreprise utilise un générateur de nombre aléatoire médiocre, ou un algorithme qui génère des nombres aléatoires faciles à prédire ou à factoriser. Des acteurs malveillants pourraient alors deviner le modèle utilisé pour générer les nombres premiers et factoriser très simplement les clés.
Proximité des nombres premiers. La sécurité de la clé RSA peut également être compromise si les deux nombres premiers utilisés sont trop proches l’un de l’autre, ou si la valeur de l’un d’entre eux est trop faible. Dans ces situations, des adversaires n’auront aucun mal à déterminer les facteurs du modules RSA, ce qui leur permettra de casser le chiffrement et d’accéder à la clé privée.
Perte et vol de clés
Une clé perdue, volée ou compromise peut être directement exploitée par des adversaires qui pourront ainsi lire les messages chiffrés à l’aide de la clé publique correspondante. Il est donc essentiel de gérer correctement les clés pour éviter des vulnérabilités de ce type.
Attaques des défauts
Dans les attaques de défauts, les malfaiteurs introduisent délibérément des défauts dans le matériel ou le logiciel employé pour mettre en œuvre l’application cryptographique. Ils peuvent, par exemple, employer un laser ou une inversion de bits pour créer une faille dans les fonctions cryptographiques et affaiblir la clé en faisant en sorte que sa valeur soit plus prévisible.
Sans contre-mesures adaptées, les implémentations de RSA peuvent être vulnérables à ce type d’attaques de défauts.
Éviter les vulnérabilités de RSA
Vous pouvez faire plusieurs choses pour atténuer les vulnérabilités de RSA.
- Utilisez un générateur de nombres premiers robustes pour que les nombres premiers soient imprévisibles et difficiles à deviner pour des adversaires.
- Évitez les nombres premiers trop petits ou trop proches l’un de l’autre.
- Créez des clés RSA d’une longueur minimale de 2048 bits.
- Prenez les mesures nécessaires pour vous protéger contre les attaques de défauts, notamment en utilisant du matériel inviolable.
- Gérez et sécurisez correctement les clés RSA, notamment en les renouvelant régulièrement et en employant des clés différentes selon l’application.
- Maintenez l’algorithme RSA à jour en vous informant régulièrement sur les vulnérabilités et les évolutions.
RSA en bref
RSA est un algorithme cryptographique très répandu dont la création remonte à 1977. Il s’appuie sur des paires de clés publiques et privées pour chiffrer les données et les déchiffrer. Si RSA est utile dans de nombreuses applications, la complexité des calculs empêche de l’utiliser pour chiffrer des messages ou des fichiers volumineux. Actuellement, RSA est utilisé pour créer des signatures numériques et des certificats visant à sécuriser l’authentification, la communication, l’accès web, les e-mails et l’échange de clés.
RSA présente un certain nombre de vulnérabilités : attaques par canal latéral, clé de longueur insuffisante, faiblesses dans les nombres premiers, attaques de défauts et risques liés aux clés perdues ou volées. Les entreprises qui utilisent RSA dans des applications cryptographiques ont donc tout intérêt à suivre les recommandations décrites dans cet article.
Articles similaires

LLM et SLM : les différences entre grands et petits modèles de langage

Services gérés et services professionnels
