Le chiffrement symétrique achoppe sur un problème qu’il ne peut résoudre par lui-même : les deux parties doivent partager une clé secrète, or comment la convoyer sûrement sans disposer déjà d’un canal sûr ? La cryptographie asymétrique dénoue ce cercle. À chaque entité on associe désormais un couple de clés : une clé publique , que l’on diffuse sans réserve pour chiffrer, et une clé privée , jalousement gardée pour déchiffrer. La première ne permet pas de retrouver la seconde — toute la sécurité tient dans cette dissymétrie.
Fonctions à sens unique à trappe
Le procédé repose sur une classe de fonctions particulières : faciles à calculer dans un sens, difficiles à inverser sans un secret, mais faciles à inverser dès qu’on le détient. Ce secret, c’est la trappe.
Définition
Une fonction à sens unique à trappe est une fonction aisée à évaluer, dont l’inversion est calculatoirement infaisable sans une information privilégiée — la trappe —, et redevient aisée avec celle-ci.
Ainsi le chiffrement est-il efficace pour quiconque, mais le déchiffrement supposé infaisable pour qui ne possède pas . C’est cette clé privée qui joue le rôle de trappe.
Les prérequis arithmétiques
RSA ne se comprend qu’armé de quelques résultats d’arithmétique modulaire, que je rappelle sans les démontrer.
La division euclidienne garantit, pour avec , une écriture unique avec . Le théorème de Bézout assure l’existence de tels que ; c’est lui qui, appliqué à l’algorithme d’Euclide étendu, fournit l’inverse modulaire dont RSA a besoin. Deux entiers sont congrus modulo , noté , lorsque divise ; la congruence est compatible avec l’addition et la multiplication, et admet un inverse modulo dès que .
Enfin, deux résultats sont au cœur de la justification de RSA. Le petit théorème de Fermat énonce que pour premier ne divisant pas . Et pour produit de deux premiers distincts, l’indicatrice d’Euler vaut , avec dès que .
RSA
RSA tire sa sécurité de la difficulté de factoriser un grand entier — retrouver et à partir de leur seul produit .
Génération des clés
On choisit deux grands premiers distincts et , puis l’on calcule et . On élit ensuite un exposant public tel que et , et l’on en déduit l’exposant privé vérifiant
La clé publique est le couple , la clé privée l’exposant (ou ). C’est ici que fait office de trappe : sans connaître et , on ne sait pas le calculer, donc pas remonter à .
Chiffrer et déchiffrer
Pour un clair , on chiffre et déchiffre par exponentiation modulaire :
l’exactitude découlant de , conséquence directe du théorème d’Euler.
L’exponentiation modulaire rapide
Calculer naïvement — par multiplications successives — est hors de portée pour les exposants en jeu. On recourt à l’exponentiation rapide (dite par carrés) : en décomposant en base 2 et en n’effectuant que des mises au carré et des multiplications modulo , la complexité devient logarithmique en . Quelques dizaines d’opérations remplacent alors des milliers.
RSA en pratique
RSA reste bien plus lent qu’un chiffrement symétrique. On ne l’emploie donc presque jamais pour chiffrer les données elles-mêmes, mais pour transporter une clé symétrique : c’est le principe du chiffrement hybride, RSA scellant la clé, AES chiffrant le trafic.
sequenceDiagram Alice->>Bob: Clé AES chiffrée avec RSA (k_pub de Bob) Bob->>Bob: Déchiffrement avec k_priv Alice->>Bob: Données chiffrées avec AES
Fragilités
RSA « brut » (textbook RSA) ne doit jamais être déployé tel quel. Il devient vulnérable dès que et sont trop proches, que l’exposant est trop petit, ou en l’absence de bourrage sécurisé ; une implémentation naïve ouvre par ailleurs la porte aux attaques par canaux auxiliaires. On l’assortit donc systématiquement d’un schéma de padding (OAEP pour le chiffrement, PSS pour la signature).
Signature et intégrité
En inversant les rôles de et , RSA fournit un mécanisme de signature. Le signataire calcule avec sa clé privée ; quiconque possède la clé publique vérifie en calculant et en le comparant à .
Signer directement le message est toutefois périlleux. La bonne pratique est le Hash-and-Sign : on ne signe que l’empreinte produite par une fonction de hachage, soit . On se prémunit ainsi contre la malléabilité et les attaques algébriques exploitant la structure multiplicative de RSA.
Signature contre MAC
Signature numérique et code d’authentification de message assurent tous deux l’intégrité et l’authenticité, mais dans des modèles de confiance opposés.
| MAC | Signature |
|---|---|
| clé secrète partagée | paire clé publique / privée |
| pas de non-répudiation | non-répudiation |
| symétrique | asymétrique |
| les deux parties peuvent forger | seul le signataire peut produire |
La non-répudiation est la propriété propre à la signature : puisque seul le détenteur de la clé privée a pu produire , il ne peut nier l’avoir fait.
Distribuer les clés publiques : la PKI
Reste une question que l’asymétrie ne résout pas d’elle-même : à qui appartient réellement une clé publique donnée ? Sans réponse, l’attaque de l’homme du milieu guette — l’adversaire substitue sa propre clé et intercepte tout.
La réponse tient dans les certificats et l’infrastructure qui les gère.
Définition
Un certificat numérique lie une identité à une clé publique. Il est signé par une autorité de confiance, borné dans le temps et révocable.
Deux modèles de confiance coexistent : le modèle hiérarchique (X.509), où la confiance descend d’autorités racines, et la toile de confiance (OpenPGP), où elle se tisse entre pairs. Un certificat X.509 contient l’identité du sujet, sa clé publique, une période de validité, les usages autorisés, et la signature de l’autorité de certification (AC).
L’AC vérifie les identités, signe les certificats et propage ainsi la confiance — laquelle est transitive : je fais confiance à un certificat parce que je fais confiance à l’AC qui l’a signé. C’est aussi la faille structurelle du modèle, puisque la compromission d’une AC racine compromet tout ce qu’elle a validé.
Définition
Une PKI (Public Key Infrastructure) est l’ensemble organisationnel et technique qui gère le cycle de vie des certificats : création, publication, validation, révocation.
Elle articule plusieurs organes : l’autorité de certification (AC), l’autorité d’enregistrement (AE) qui instruit les demandes, le service de publication (SP), le service de validation (SV), et — plus contestable — un éventuel service de séquestre des clés, dont la seule existence affaiblit la confidentialité.
Un certificat se valide en remontant une chaîne de certification jusqu’à une AC racine de confiance :
flowchart TB Root[AC Racine] AC1[AC Intermédiaire] User[Certificat utilisateur] Root --> AC1 AC1 --> User
et son émission suit le circuit organisationnel de la PKI :
sequenceDiagram Alice->>AE: Demande de certificat AE->>AC: Identité validée AC->>AC: Signature du certificat AC->>SP: Publication SP->>Alice: Certificat disponible