Feuille de TP 2 - Codage RSA L'objet de cette feuille de TP est de donner une application à la cryptographie des résultats obtenus dans la partie "Arithmétique" du cours. Plus précisément, nous introduisons les principes de la méthode de Ron Rivest, Adi Shamir et Len Adleman, dite "méthode RSA". Il faut faire le TP en parallèle avec les s de la Feuille "TP 2 - s préliminaires" : 1 (Classes modulo n) 2 (Indicatrice d'euler) 5 (Petit Théorème de Fermat) 6 (Principe Codage RSA) 7 (Echange de clés) 0. PB (2007-09-30-mat231_tp02.mws) 1. Initialisation Dans une première approche, et pour limiter le temps de calcul, on choisira des nombres pas trop grands. NB : On note as un nombre destiné à rester secret et Np un nombre destiné à être public. On choisit deux nombres premiers a et b de l'ordre de 200 et 300.nombres premiers a et b de l'ordre de 200 et 300. Mettre en oeuvre cette étape avec des nombres premiers a et b de l'ordre de 200 et 300 (voir 6). Trouver l'inverse cs (secret) de Cp modulo fs (Voir 6, Question 1)
2. Codage et décodage d'un nombre plus petit que (Np-1) Ecrire une procédure de codage et une procédure de décodage (voir 6, Question 2, fonctions C et D). Vérifier que ces procédures correspondent à des fonctions inverses l'une de l'autre. 3. Avec des nombres plus grands... Recommencer ce qui vient d'être fait avec des nombres premiers initiaux plus grands, par exemple de l'ordre de 500. Introduire un contrôle de temps d'exécution. Conclusion. 4. Transmission de messages cryptés Transmission de messages cryptés Décrire une procédure possible de transmission de messages cryptés basée sur ce qui précède et sur les s 6 et 7 de la Feuille "TP 2 - s préliminaires". a) En utilisant un contrôle de temps d'exécution, appliquer la fonction nextprime de MAPLE à des grands nombres : nombres d'une trentaine de chiffres, nombres de la forme a 10 n + b où a et b ont une vingtaine de chiffres et où n en a une centaine. b) En utilisant un contrôle de temps d'exécution, appliquer la fonction ifactor de MAPLE à des grands nombres (nombres d'une vingtaine de chiffres, trentaine de chiffres et cinquantaine de chiffres). c) Sur quelle hypothèse de travail peut-on baser la sécurité des transmission par la méthode décrite dans l'exercice précédent.
4. Calcul d'une puissance Montrer que le calcul brutal de a n modulo m nécessite de l'ordre de n opérations. Donner un algorithme, basé sur l'écriture de n en base 2, nécessitant de l'ordre de ln( n ) opérations. Faire des tests de rapidité d'exécution avec MAPLE. Références
Université Joseph Fourier L2 MAT231 2007-2008 2007-10-15-mat231_feuille_exos_04.tex (24 octobre 2007) Feuille d exercice n o 4 Certains des exercices de cette Feuille sont nécessaires à la compréhension de la deuxième feuille de TP. Notations. Pour n N, on note R n := { 0, 1,..., n 1 }. Étant donnés deux entiers u, v avec v > 0, on désigne par irem(u, v) le reste de la division euclidienne de u par v. On note Z n l espace quotient de Z par la relation d équivalence (mod n), c est-à-dire l ensemble des classes modulo n. On note e n : Z Z n l application qui à un entier x associe sa classe modulo n. On rappelle que Z n est en bijection avec R n par la formule e n (x) = e n (irem(x, n)). On note également 0, 1,... les éléments de Z n, voire plus simplement encore 0, 1,..., (n 1) quand il n y a pas d ambiguïté. On notera en particulier 0, la classe de l entier 0, et 1, la classe de l entier 1. Les questions suivies de la mention [Facultatif ] ne sont pas nécessaires à la compréhension du TP. 4.1 (Classes modulo n) Soit n N. 1. Étant donnés x, y N, montrer que e n (x + y) ne dépend que de e n (x) et de e n (y). En déduire que l on peut ainsi définir une addition (encore notée +) sur Z n. 2. Étant donnés x, y N, montrer que e n (x y) ne dépend que de e n (x) et de e n (y). En déduire que l on peut ainsi définir une multiplication (encore notée ) sur Z n. 3. Montrer que (Z n, +, ) est un anneau commutatif. [ Facultatif] 4. Montrer que les anneaux Z 6, Z 12 admettent des diviseurs de 0 (ils ne sont pas intègres), c est-à-dire des éléments non nuls α, β vérifiant α β = 0. Donner une condition générale pour que Z n admette des diviseurs de 0. 5. Montrer qu un élément α de Z n est inversible (pour la multiplication) si et seulement s il existe m α (c est-à-dire un entier m dont la classe modulo n est α) tel que pgcd(m, n) = 1. Déterminer l inverse de α au moyen de m. 6. Monter que Z p est un corps si et seulement si p est un nombre premier.
MAT 231 2007-2008 2 s complémentaires. Les deux exercices suivants complètent l 4.1. Ils ne sont pas nécessaires à la compréhension du TP. 4.2 (Classes modulo n, suite) Étant donnés α Z n et k N, on notera kα l élément α + + α (k fois), avec la convention que 0α = 0, la classe 0). On dira qu un élement α engendre Z n si tout élément de Z n est de la forme kα pour un certain k N. 1. Montrer que 1 engendre Z n pour tout n N. Plus généralement, montrer que α est un générateur de Z n si et seulement si α est inversible (pour la multiplication) dans Z n. 2. Soient m, n N. Étant donné α Z mn, montrer que le couple (e m (x), e n (x)) ne dépend pas du choix de x α. En déduire que l on peut ainsi définir une application Φ de Z mn dans Z m Z n. 3. On suppose que pgcd(m, n) = 1. Montrer que Φ est bijective. 4. On suppose toujours que pgcd(m, n) = 1. On se donne (α, β) Z m Z n et x Z un représentant de α, y Z un représentant de β. On se donne également u, v des entiers tels que mu + nv = 1. Montrer que l application (x, y) xnv + ymu permet de construire l application Ψ qui est l inverse de l application Φ définie à la question 2. 4.3 Résoudre les équations suivantes (que l on peut voir comme des congruences ou comme des équations dans un certain Z n ). 1. 6 x 4 (mod 10). 2. 3 x 1 (mod 2 4 ). 3. x 2 (mod 3) et x 3 (mod 5). 4.4 (Indicatrice d Euler) Soit n N. On note P n l ensemble On définit la fonction indicatrice d Euler par P n := {r N 1 r n et pgcd(r, n) = 1}. ϕ(n) = Card(P n ). 1. Calculer ϕ(p) pour p premier. 2. Calculer ϕ(p α ) pour p premier. 3. Calculer ϕ(pq) pour p, q premiers. 4. Plus généralement, montrer que ϕ(mn) = ϕ(m)ϕ(n) pour tous m, n N, premiers entre eux. [ Facultatif] 5. Pour m N, exprimer ϕ(m) en fonction de la décomposition en facteurs premiers de m. [ Facultatif] 6. Montrer que ϕ(n) est le nombre d éléments inversibles pour la multiplication dans Z n. [ Facultatif] 4.5 (Petit théorème de Fermat) Soit p un nombre premier. 1. Montrer que p divise le coefficient du binôme C k p pour tout k tel que k 0 et k p. 2. Montrer que a p a 0 (mod p) c est-à-dire que p divise a p a pour tout entier a N. [ Indication : Récurrence sur a.]
MAT 231 2007-2008 3 4.6 (Principe codage RSA) Soient a, b deux nombres premiers distincts. On considère leur produit N := a b et on choisit un nombre C qui vérifie 1 C ϕ(n) et pgcd(c, ϕ(n)) = 1. 1. Montrer qu il existe un nombre s vérifiant 1 s < ϕ(n) et s C 1 (mod ϕ(n)). 2. On définit deux applications C et D de R N dans lui-même par C(M) := irem(m C, N) et D(M) := irem(m s, N). Montrer que ces deux applications sont inverses l une de l autre. Indications. Établir l identité (x m y m ) = (x y) ( x m 1 +x m 2 y +x m 2 y 2 + xy m 2 + y m 1). Étant donné M R N et P := C(M), appliquer l identité précédente à P s M sc puis montrer que N divise M sc M à l aide du petit théorème de Fermat. Les nombres N, C sont les clés publiques du codage RSA. Le nombre s est la clé secrète. L exercice suivant fournit une manière d échanger une clé secrète commune. 4.7 (Échange de clés) On reprend les notations de l 4.6. Soient deux correspondants Alice et Bob. Alice fournit les clés publiques N et C. Elle choisit x R N et envoie le nombre X := irem(c x, N) à Bob. Bob choisit y R N et calcule m := irem(x y, N) et Y := irem(c y, N). Il envoie alors Y à Alice. Montrer que m = irem(y x, N). Alice et Bob disposent maintenant d une clé secrète commune m.