Générateur Clés RSA
Générer des paires de clés RSA
RSA utilise une paire de cles mathematiquement liees -- une cle publique que tout le monde peut utiliser pour chiffrer, et une cle privee que vous seul pouvez utiliser pour dechiffrer. La securite repose sur la difficulte de factoriser de grands nombres premiers.
Qu’est-ce que RSA ?
RSA (Rivest-Shamir-Adleman) est un algorithme cryptographique asymetrique qui utilise une paire de cles mathematiquement liees : une cle publique et une cle privee. Contrairement au chiffrement symetrique (ou les deux parties partagent la meme cle secrete), RSA permet a n’importe qui de chiffrer un message a l’aide de la cle publique du destinataire, mais seul le destinataire peut le dechiffrer avec sa cle privee correspondante.
La cryptographie asymetrique a resolu l’un des plus anciens problemes de la cryptographie : la distribution des cles. Avant RSA et les algorithmes similaires, deux parties devaient echanger un secret partage de maniere securisee avant de pouvoir communiquer de facon confidentielle. RSA elimine cette exigence — vous pouvez publier votre cle publique au monde entier, et n’importe qui peut vous envoyer un message chiffre sans jamais vous avoir rencontre.
RSA est l’un des algorithmes cryptographiques les plus largement deployes de l’histoire. Il securise les connexions HTTPS, les sessions SSH, le chiffrement des emails (PGP/S/MIME), les signatures numeriques, la signature de code et d’innombrables autres protocoles. Bien qu’il ait pres de 50 ans, RSA reste sur lorsqu’il est utilise avec des cles suffisamment grandes, bien que les alternatives modernes a courbe elliptique soient de plus en plus preferees pour les nouveaux systemes.
Fonctionnement de la generation de cles
La generation de cles RSA repose sur la difficulte mathematique de factoriser le produit de deux grands nombres premiers. Si multiplier deux nombres premiers est trivial, retrouver les nombres premiers originaux a partir de leur produit est calculatoirement infaisable pour des nombres suffisamment grands.
Le processus de generation de cles fonctionne comme suit :
- Choisir deux grands nombres premiers aleatoires, p et q (chacun fait generalement la moitie de la taille de cle souhaitee, soit environ 1024 bits pour une cle de 2048 bits)
- Calculer le module n = p x q (il fait partie de la cle publique et de la cle privee)
- Calculer l’indicatrice phi(n) = (p-1)(q-1)
- Choisir l’exposant public e (presque toujours 65537, qui offre un bon equilibre entre securite et performance)
- Calculer l’exposant prive d tel que (d x e) mod phi(n) = 1 (l’inverse multiplicatif modulaire)
- Supprimer p et q — les nombres premiers individuels ne doivent jamais etre stockes ni reveles
La cle publique est la paire (n, e). La cle privee est la paire (n, d). La securite de RSA repose entierement sur le fait que retrouver d a partir de (n, e) necessite de factoriser n, ce qui est calculatoirement infaisable pour un n suffisamment grand.
Chiffrement vs signatures numeriques
RSA prend en charge deux operations fondamentales qui utilisent la paire de cles dans des directions opposees.
Chiffrement
Dans le chiffrement RSA, l’expediteur utilise la cle publique du destinataire pour chiffrer un message. Seul le destinataire, qui detient la cle privee correspondante, peut le dechiffrer. Cela assure la confidentialite — personne d’autre ne peut lire le message.
En pratique, RSA est rarement utilise pour chiffrer des donnees directement. Le chiffrement RSA est limite aux donnees plus petites que la taille de la cle (par exemple, 245 octets pour une cle de 2048 bits avec le remplissage OAEP). A la place, RSA est utilise dans un schema de chiffrement hybride : une cle symetrique aleatoire (par exemple AES-256) chiffre les donnees reelles, et RSA chiffre la cle symetrique. Cela combine les avantages de distribution de cles de RSA avec la vitesse et la flexibilite du chiffrement symetrique.
Signatures numeriques
Lors de la signature numerique, le signataire utilise sa cle privee pour creer une signature sur un message (en fait sur un hachage du message). Toute personne disposant de la cle publique du signataire peut verifier la signature, confirmant que (a) le message a ete signe par le detenteur de la cle privee, et (b) le message n’a pas ete altere.
Les signatures numeriques fournissent trois proprietes :
- Authentification : Prouve l’identite du signataire
- Integrite : Prouve que le message n’a pas ete modifie
- Non-repudiation : Le signataire ne peut pas nier avoir signe (utile dans les contextes juridiques et contractuels)
Taille de cle et comparaison des algorithmes
| Algorithme | Taille de cle | Niveau de securite | Taille de signature | Performance |
|---|---|---|---|---|
| RSA-1024 | 1024 bits | Obsolete (~80 bits) | 128 octets | Rapide |
| RSA-2048 | 2048 bits | Minimum (~112 bits) | 256 octets | Moderee |
| RSA-3072 | 3072 bits | Post-2030 (~128 bits) | 384 octets | Plus lente |
| RSA-4096 | 4096 bits | Haute securite (~140 bits) | 512 octets | Lente |
| ECDSA P-256 | 256 bits | ~128 bits | 64 octets | Rapide |
| Ed25519 | 256 bits | ~128 bits | 64 octets | La plus rapide |
Ed25519 atteint la meme securite que RSA-3072 avec des cles 12 fois plus petites et des operations nettement plus rapides. Pour les nouveaux projets, Ed25519 est le choix recommande pour les signatures numeriques, et X25519 (ECDH) pour l’echange de cles.
Cas d’utilisation courants
- TLS/SSL (HTTPS) : Les cles RSA sont utilisees dans les certificats X.509 pour authentifier les serveurs et etablir des connexions chiffrees. Lors d’un handshake TLS, la cle RSA du serveur peut etre utilisee pour l’echange de cles ou la signature numerique selon la suite de chiffrement
- Authentification SSH : Les cles SSH (generalement RSA ou Ed25519) permettent la connexion sans mot de passe aux serveurs distants. Votre cle publique est placee sur le serveur, et votre cle privee reste sur votre machine locale
- Signature de code : Les editeurs de logiciels signent les binaires avec des cles RSA pour prouver leur authenticite. Les systemes d’exploitation verifient ces signatures avant d’installer ou d’executer le code
- Chiffrement des emails PGP/GPG : Les paires de cles RSA permettent le chiffrement de bout en bout des emails. Vous publiez votre cle publique pour que d’autres puissent chiffrer des messages a votre intention, et vous signez les messages sortants avec votre cle privee
- Signature JWT (RS256) : Les JWT signes avec RSA (algorithme RS256) utilisent la cle privee pour signer et la cle publique pour verifier. Cela est utile dans les systemes distribues ou de nombreux services doivent verifier les jetons mais un seul service les emet
- Signature de documents : Les signatures numeriques PDF et XML utilisent RSA pour fournir des signatures juridiquement contraignantes et inviolables sur les contrats, factures et documents officiels
- Echange de cles : Bien que RSA puisse chiffrer directement des cles symetriques, les protocoles modernes (TLS 1.3) preferent l’echange de cles Diffie-Hellman ephemere pour la confidentialite persistante, utilisant RSA uniquement pour l’authentification
Essayez ces exemples
Une cle publique RSA encodee en PEM au format PKCS#8. Le contenu Base64 encode le module (n) et l'exposant public (e, generalement 65537). Cette cle peut etre librement partagee pour le chiffrement et la verification de signatures.
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Z3VS5JJcds3xfn/ygWe
GNlBSMpjSMGRlMHKbFMoepKqnOgEnyNJBPMzWiKRGhpE5JsuhJRNxJHR3OSGM4Pe
+14ktHBBh0VhpGkdOW5Y5E7fGECJO1GxaRE2qBVMlBMn+BNEQ0VPwJmBJL3CwZ1
q6Twv3BQKL2+9jFnhOOGlFk7mPKACQJeBm5N+eXzqBLeIOHQJmkgJnN8k0hm5NU
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
-----END PUBLIC KEY----- Les en-tetes PEM sont presents mais le contenu n'est pas du Base64 valide, la cle ne peut donc pas etre decodee. Les causes frequentes incluent les erreurs de copier-coller, la corruption des sauts de ligne ou les problemes d'encodage de fichier.
-----BEGIN PUBLIC KEY-----
THIS_IS_NOT_VALID_BASE64!!!
-----END PUBLIC KEY-----