Cryptage RSA
RSA a été le premier algorithme à clé publique pratique, celui qui permettait à deux personnes d'échanger un secret sans jamais se rencontrer en personne. Quarante-huit ans plus tard, il sécurise toujours une fraction substantielle des poignées de main TLS, signe chaque message PGP et sous-tend de nombreux schémas de signature de code. Lentement remplacé par des courbes elliptiques, mais pas disparu.
Le corps complet de l’article est fourni en anglais ci-dessous.
RSA est un système de cryptographie à clé publique introduit en 1977 par Ron Rivest, Adi Shamir et Leonard Adleman au MIT. Le brevet a expiré en 2000, après quoi il s'est étendu à pratiquement toutes les bibliothèques cryptographiques. RSA permet deux opérations complémentaires : le chiffrement avec une clé publique afin que seule la clé privée puisse déchiffrer, et la signature avec une clé privée pour que toute personne possédant la clé publique puisse vérifier.
Le calcul, en bref, la sécurité de
RSA repose sur la difficulté de prendre en compte de grands nombres. Génération de clé :
- Choisissez deux grands nombres premiers aléatoires p et q (généralement 2 048 bits chacun).
- Calculez n = p × q. Il s'agit du module, public.
- Calculez le total d'Euler : φ(n) = (p-1)(q-1).
- Choisissez une petite e coprime à φ(n). Généralement 65537 (=2^16+1).
- Calculez d = e^(-1) mod φ(n). Il s'agit de la clé privée.
La clé publique est la paire (n, e) ; la clé privée est d.
Pour chiffrer un message m : texte chiffré c = m^e mod n. Pour décrypter : m = c^d mod n. Toute personne possédant la clé publique peut chiffrer ; seule une personne possédant la clé privée peut déchiffrer. Pour signer, inverser : s = m^d mod n, vérifier avec m = s^e mod n.
Pourquoi ça marche
L'astuce : calculer d nécessite de connaître φ(n), ce qui nécessite de prendre en compte n dans p × q. La factorisation d'un semi-premier de 2 048 bits nécessite plus de calcul que l'humanité n'en a. Vérifier n = p × q quand vous connaissez déjà p et q est trivial. L'asymétrie - multiplication facile, factorisation dure - constitue le fondement même du RSA.
Tailles de clé
- RSA-1024 - brisé en principe par des adversaires disposant de ressources suffisantes ; Le NIST l'a interdit pour les nouveaux déploiements depuis 2014.
- RSA-2048 — référence actuelle. Considéré comme sûr à moyen terme contre les adversaires classiques.
- RSA-3072 — recommandé pour les nouveaux déploiements selon le calendrier de transition 2030 du NIST.
- RSA-4096 — courant pour la signature de code où la clé a un horizon de 10 à 20 ans. Plus lent mais de manière prudente.
RSA en pratique
RSA ne chiffre presque jamais directement les messages volumineux. C'est lent : le chiffrement d'un kilo-octet nécessite des milliers d'exponentiations modulaires. Au lieu de cela, RSA est utilisé dans le chiffrement hybride : générer une clé AES aléatoire, chiffrer les données avec AES, chiffrer uniquement la clé AES avec RSA. Le côté décryptage RSA déchiffre la clé, puis AES déchiffre les données. Chaque négociation TLS RSA fonctionne de cette façon ; chaque e-mail crypté par PGP fonctionne de cette façon.
Padding Matters
Plain (« manuel ») RSA — chiffrer m directement sans remplissage — est catastrophiquement dangereux. De nombreuses attaques exploitent la malléabilité, l’absence de caractère aléatoire et des cas extrêmes comme le petit m. Le vrai RSA utilise des schémas de remplissage :
- PKCS#1 v1.5 padding – remplissage d'origine ; vulnérable à l'attaque de Bleichenbacher si les implémentations révèlent si le remplissage est valide. Toujours largement déployé.
- OAEP (Remplissage de chiffrement asymétrique optimal) — remplissage moderne ; résistant aux attaques par texte chiffré choisi. Utilisez-le pour le nouveau cryptage RSA.
- PSS (Schéma de signature probabiliste) — remplissage de signature moderne ; supérieur à PKCS#1 v1.5 pour la signature.
Le schéma de remplissage fait partie du protocole déployé et n'est pas facultatif. Les erreurs dans la mise en œuvre du remplissage sont la source la plus courante de vulnérabilités RSA dans les systèmes réels. Retrait lent de
RSA.
RSA est remplacé pour deux raisons :
- Taille de la clé. Les clés RSA-3072 sont plus grandes que l'équivalent. clés à courbe elliptique de 10×. La prise de contact TLS et les coûts de stockage s'additionnent à grande échelle.
- Résistance quantique. Un ordinateur quantique suffisamment grand prendrait en compte RSA via l'algorithme de Shor en temps polynomial. ECC est également vulnérable, mais les alternatives résistantes aux quantiques sont plus faciles à déployer.
TLS 1.3 a obsolète l'échange de clés RSA en faveur de ECDHE. La signature moderne des autorités de certification passe à ECDSA. RSA persiste pour la compatibilité de la base installée (PGP, JWT, cartes à puce, signature de code) et le restera pendant des années.
La question post-quantique
Même si les ordinateurs quantiques capables de briser le RSA sont dans plusieurs décennies, des données cryptées ayant une valeur à long terme sont collectées aujourd'hui en supposant qu'elles pourront être déchiffrées plus tard. Câbles gouvernementaux, dossiers médicaux, propriété intellectuelle : « récoltez maintenant, décryptez plus tard » est le modèle de menace actuel. Les standards post-quantiques du NIST (CRYSTALS-Kyber pour l'encapsulation des clés, CRYSTALS-Dilithium pour les signatures) sont déployés aux côtés de RSA dans des configurations hybrides. Les déploiements purement RSA pour les données confidentielles à long terme sont de plus en plus considérés comme inadéquats.
Questions fréquemment posées
- Le RSA est-il toujours sécurisé en 2026 ?
- Contre les adversaires classiques, RSA-2048 et plus restent sécurisés. Le chiffre n’a aucune rupture pratique connue. Contre les futurs adversaires quantiques, le RSA est cassable en temps polynomial une fois qu’un matériel quantique suffisamment important existera – probablement dans 5 à 20 ans. Les données confidentielles à long terme devraient déjà migrer vers des systèmes hybrides post-quantiques.
- Pourquoi RSA est-il si lent par rapport à AES ?
- RSA est un algorithme à clé publique (asymétrique) basé sur une énorme exponentiation modulaire ; AES est un algorithme symétrique fonctionnant sur des blocs de 128 bits avec accélération matérielle. AES est environ 1 000 fois plus rapide par octet. C'est pourquoi presque tous les systèmes réels utilisent RSA uniquement pour échanger une clé de session, puis chiffrer les données en masse avec AES.
- Quelle est la différence entre le cryptage RSA et les signatures RSA ?
- Ils utilisent les mêmes calculs dans des directions opposées. Chiffrement : chiffrer avec la clé publique, déchiffrer avec la clé privée. Signature : « chiffrer » avec la clé privée (appelée signature), « déchiffrer » avec la clé publique (appelée vérification). Les primitives cryptographiques diffèrent dans les détails (remplissage) et vous ne devez jamais utiliser la même clé pour les deux : des clés de signature et de chiffrement distinctes sont standard.
- Pourquoi 65537 est-il utilisé comme exposant public RSA ?
- Il s'agit d'un nombre premier de Fermat (2^16 + 1), suffisamment petit pour rendre le cryptage/vérification rapide (seulement 17 multiplications), avec une représentation binaire clairsemée qui permet un calcul efficace. Des valeurs plus grandes ou plus petites fonctionnent mais sont plus lentes ou présentent des risques de vulnérabilité subtils. 65537 est devenu universel par convention.
- Puis-je générer ma propre clé RSA en toute sécurité ?
- Utilisez une bibliothèque bien testée (OpenSSL, libsodium, GnuPG) et un CSPRNG. Ne lancez jamais votre propre test de primalité et n'implémentez jamais RSA à partir de zéro : les modes de défaillance sont subtils et catastrophiques. Générer une clé via <code>ssh-keygen -t rsa -b 3072</code> ou équivalent est très bien ; écrire les mathématiques vous-même ne l’est pas.