Générateur Clés RSA

Générer des paires de clés RSA

warning
Important : Sauvegardez bien votre clé privée. Elle ne sera pas stockée.
Comprendre Cryptographie asymetrique RSA
TL;DR

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 :

  1. 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)
  2. Calculer le module n = p x q (il fait partie de la cle publique et de la cle privee)
  3. Calculer l’indicatrice phi(n) = (p-1)(q-1)
  4. Choisir l’exposant public e (presque toujours 65537, qui offre un bon equilibre entre securite et performance)
  5. Calculer l’exposant prive d tel que (d x e) mod phi(n) = 1 (l’inverse multiplicatif modulaire)
  6. 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.

RSA Key Pair: Encryption and Digital Signatures Two primes p and q are combined to generate the public key (n, e) and private key (n, d). The public key encrypts and verifies signatures. The private key decrypts and creates signatures. Key Generation prime p prime q n = p x q Public Key (n, e=65537) Private Key (n, d) Encryption Plaintext Public Key Ciphertext Private Key Plaintext Digital Signature Document Priv Key Sig Pub Key Verified Public key encrypts and verifies. Private key decrypts and signs.

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

AlgorithmeTaille de cleNiveau de securiteTaille de signaturePerformance
RSA-10241024 bitsObsolete (~80 bits)128 octetsRapide
RSA-20482048 bitsMinimum (~112 bits)256 octetsModeree
RSA-30723072 bitsPost-2030 (~128 bits)384 octetsPlus lente
RSA-40964096 bitsHaute securite (~140 bits)512 octetsLente
ECDSA P-256256 bits~128 bits64 octetsRapide
Ed25519256 bits~128 bits64 octetsLa 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

Cle publique RSA 2048 bits valide Valide

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-----
Cle invalide (Base64 corrompu) Invalide

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-----