Leçon
La théorie — RSA : chiffrement jouet
RSA, c’est une seule opération employée deux fois. Chiffrer, c’est me mod n ; déchiffrer, cd mod n — la même exponentiation modulaire, avec un autre exposant. L’astuce consiste à choisir le couple de sorte que l’appliquer deux fois redonne le message, alors que connaître l’un des exposants n’apprend rien sur l’autre. Tout ce qu’affiche le panneau est la recherche de ce couple. Publié par Rivest, Shamir et Adleman en 1978 — et, comme on ne l’a su qu’à la déclassification par le GCHQ en 1997, trouvé quatre ans plus tôt par Clifford Cocks et laissé dans un tiroir.
Ce que signifie chaque symbole
n- le module,
p·q. Public. Le secret, ce sont ses facteurs, pas le nombre lui-même. φ(n)- l’indicatrice d’Euler,
(p−1)(q−1). Le panneau peut l’afficher parce qu’on lui a donné p et q ; un attaquant ne disposant que de n ne le peut pas, et passer de n à φ est aussi difficile que factoriser. e- l’exposant public. N’importe quel nombre premier avec φ(n) convient — c’est pourquoi il change quand on change un nombre premier.
d- l’exposant privé,
e⁻¹ mod φ(n). Un seul inverse modulaire — immédiat si l’on connaît φ, et tout l’enjeu sinon.
D’où vient la formule
- Multipliez les nombres premiers :
n = p·q. Aux valeurs par défaut, 61 · 53 = 3233. Ce nombre est publié. Retrouver 61 et 53 à partir de 3233 prend un instant à la main, et c’est la raison honnête pour laquelle on parle ici d’un jouet. - Calculez
φ(n) = (p−1)(q−1)= 60 · 52 = 3120. C’est le pivot de tout le schéma : n est public, φ(n) ne l’est pas, et le seul chemin connu de l’un à l’autre passe par la factorisation. - Choisissez
epremier avec φ(n), puis résolveze·d ≡ 1 (mod φ(n))en d. Le panneau montre7⁻¹ mod 3120 = 1783. Notez ce que cette étape n’est pas : elle n’est pas difficile. Connaissant φ, c’est un unique inverse modulaire. Le secret de d repose entièrement sur le secret de φ. - Pourquoi l’aller-retour fonctionne : par construction
e·d = 1 + kφ(n), doncmed = m1+kφ(n) ≡ m (mod n)— le théorème d’Euler. Le déchiffrement n’est pas une opération inverse inventée à part ; c’est la même exponentiation, avec l’exposant qui défait la première.
Comment lire ce que vous voyez
La ligne à surveiller est e, car ce n’est pas une constante. Aux nombres premiers par défaut elle affiche 7 ; changez p en 67 et elle devient 5. La raison est dans la ligne au-dessus : e doit être premier avec φ(n), et φ est passé de 3120 à 3432. Comparez ensuite les deux exposants à l’écran — e = 7 contre d = 1783. Le public est minuscule, le privé non, et ni l’un ni l’autre n’est un hasard : e est choisi petit exprès pour que le chiffrement soit bon marché, et d est ce que l’inverse donne. La dernière ligne est la preuve que cela a marché : m′ = 42, le nombre que vous avez tapé.
- Suppose
- Que le message est un nombre plus petit que n. Avec n = 3233, il n’y a rien à chiffrer au-dessus de 3232 — voilà pourquoi le vrai RSA ne chiffre jamais un message directement : il chiffre une clé symétrique complétée de quelques centaines de bits et laisse un chiffrement plus rapide transporter le texte. On suppose aussi p ≠ q, et que vous ne réutilisez jamais un nombre premier dans un second module : deux modules partageant un facteur sont brisés tous les deux par un seul PGCD.
- Ne tient plus quand
- Vous pouvez casser cette page sans rien factoriser. Mettez p = 67, q = 53 et le message à 3. Le panneau choisit e = 5 et affiche comme chiffré 243 — qui n’est que 3⁵. Comme 3⁵ est plus petit que n = 3551, la réduction modulaire n’a jamais eu lieu : le chiffré est une puissance ordinaire, et la racine cinquième de 243 vaut 3. Pas de clé, pas de factorisation, message retrouvé. Essayez m = 5 : vous obtenez 3125, soit 5⁵ ; à m = 8 la puissance dépasse enfin n et le chiffré devient un 809 inexploitable. Ce n’est pas un défaut de cette page — c’est la raison pour laquelle personne ne chiffre un nombre nu. Le vrai RSA complète d’abord le message par de l’aléa structuré, ce que spécifie la RFC 8017 et ce qui fait d’une exponentiation un cryptosystème.
Problèmes entièrement résolus
-
Une paire de clés RSA pour p = 61 et q = 53 5 étapes
Générez la paire de clés RSA pour p = 61 et q = 53, puis chiffrez m = 42. Tous les nombres ci-dessous découlent de ces trois valeurs, y compris l'exposant public.
-
Le module est rendu public et l'indicatrice d'Euler est détruite, mais tous deux ne sont qu'à une multiplication près des nombres premiers. φ(n) compte les entiers inférieurs à n qui ne partagent aucun facteur avec lui, ce qui, pour un produit de deux nombres premiers distincts, vaut (p − 1)(q − 1).
-
L'exposant public doit être inversible modulo φ, c'est-à-dire premier avec lui. En factorisant φ, les candidats de petite taille s'éliminent d'eux-mêmes, laissant 7 comme plus petit exposant impair disponible. Les vraies clés utilisent 65537, mais cette valeur est supérieure à ce φ, l'outil se rabat donc sur le plus petit entier premier avec lui.
-
Inverser 7 modulo 3120 relève simplement de l'algorithme d'Euclide étendu. Trois divisions permettent d'atteindre un reste égal à 1, et remonter ces trois mêmes étapes exprime ce 1 comme une combinaison de 3120 et de 7.
-
Le coefficient de 7 dans cette combinaison est négatif, et un inverse négatif est rendu positif en lui ajoutant une fois le module. Le chiffrement est alors une simple exponentiation modulaire, effectuée par deux élévations au carré successives plutôt qu'en multipliant 42 par lui-même sept fois.
-
Le déchiffrement n'a jamais besoin d'être vérifié par force brute, et pour des tailles de clés réalistes, ce serait d'ailleurs impossible. Les deux exposants ont été construits pour que leur produit soit égal à un plus un multiple de φ, et le théorème d'Euler conclut pour tout m premier avec n — ce qui est le cas de 42.
Réponse
L'outil affiche n = 3233, φ = 3120, d = 1783 et c = 240, puis confirme que 240 se déchiffre bien en 42. Ce qu'il faut retenir, c'est ce qu'est réellement φ. Ce n'est pas un second secret aux côtés de p et q — c'est le même secret écrit différemment. Connaissant n et φ, on a p + q = n − φ + 1 = 114 et pq = 3233, une équation du second degré dont le discriminant est un carré parfait, ce qui redonne 61 et 53 en une seule ligne. Ainsi, un générateur de clés qui divulgue φ divulgue la factorisation tout aussi complètement que s'il avait affiché les nombres premiers ; c'est pourquoi φ est calculé une fois, utilisé pour trouver d, puis éliminé.
-
-
Factorisation de 3233 en 61 × 53 pour déjouer la sécurité RSA 6 étapes
Le panneau factorise 3233 en 61 × 53 avant que vous ayez fini de lire la page. Cette factorisation est toute la sécurité de RSA, apparemment brisée à l'instant. Calculez ce qui rend le même problème impossible une taille de clé plus loin.
-
Les deux nombres dont part le panneau : le module, et l'indicatrice d'Euler qui découle des deux facteurs premiers.
-
Un attaquant n'a besoin que d'un fait : le plus petit facteur premier ne peut pas dépasser la racine carrée du module. Tout ce qui serait plus grand exigerait un partenaire plus petit que lui.
-
La recherche parcourt donc les nombres premiers jusqu'à 56, et il y en a seize. Le seizième est 53. Seize divisions, ce n'est pas de la sécurité, c'est une erreur d'arrondi.
-
Mettez maintenant un module que l'on emploie réellement. 2048 bits, c'est n voisin de 2²⁰⁴⁸, dont la racine carrée vaut 2¹⁰²⁴, soit environ 10³⁰⁸.
-
Chiffrez-le. À un milliard de divisions d'essai par seconde, cela fait 10²⁹⁹ secondes, contre un univers vieux d'environ 4 × 10¹⁷ secondes.
-
Le temps est la mauvaise unité pour un nombre pareil ; comparez-le plutôt à quelque chose de physique.
Réponse
Seize divisions contre 10³⁰⁸. Or, 10³⁰⁸ représente 10²²⁸ fois le nombre d'atomes de l'univers observable : vous ne pourriez donc même pas stocker le compteur. L'essentiel réside dans la forme plutôt que dans la taille. Le travail de l'attaquant croît en √n tandis que la clé croît en log n, de sorte qu'ajouter deux bits à votre clé double l'effort nécessaire pour la casser, tout en ne vous coûtant que deux bits. Cette asymétrie est l'essence même du système. La réponse instantanée de l'outil n'a rien d'une faille, c'est au contraire la démonstration elle-même. En effet, 3233 illustre précisément l'apparence d'un module lorsqu'on n'a pas laissé à l'asymétrie la place de s'exprimer.
-
Références (4)
- The idea RSA is an instance of — public keys, two years earlier: W. Diffie & M. Hellman, "New directions in cryptography." IEEE Transactions on Information Theory 22(6), 644–654, 1976.
- What real RSA wraps round the message, and why the bare exponentiation on this page is not a cryptosystem: K. Moriarty (Ed.), B. Kaliski, J. Jonsson & A. Rusch, "PKCS #1: RSA Cryptography Specifications Version 2.2." RFC 8017, November 2016 — RSAES-OAEP in §7.1.
- The scheme the tool walks through, including e·d ≡ 1 mod φ(n): R. L. Rivest, A. Shamir and L. Adleman, "A method for obtaining digital signatures and public-key cryptosystems." Communications of the ACM 21(2), 120–126, 1978.
- Why the security rests on factoring rather than on hiding d: A. J. Menezes, P. C. van Oorschot and S. A. Vanstone, Handbook of Applied Cryptography, §8.2. CRC Press, 1996. ISBN 978-0-8493-8523-0.